diff options
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | asm/field_camera.s | 1330 | ||||
-rw-r--r-- | asm/field_door.s | 613 | ||||
-rw-r--r-- | asm/field_ground_effect.s | 1890 | ||||
-rw-r--r-- | asm/field_map_obj.s (renamed from asm/rom4.s) | 12760 | ||||
-rw-r--r-- | asm/field_player_avatar.s | 4636 | ||||
-rw-r--r-- | asm/fieldmap.s | 1998 | ||||
-rw-r--r-- | asm/metatile_behavior.s | 2345 | ||||
-rw-r--r-- | ld_script.txt | 8 |
9 files changed, 12827 insertions, 12761 deletions
@@ -55,7 +55,13 @@ asm/rom_804373C.o \ asm/load_save.o \ asm/trade.o \ asm/berry_blender.o \ -asm/rom4.o \ +asm/fieldmap.o \ +asm/metatile_behavior.o \ +asm/field_camera.o \ +asm/field_door.o \ +asm/field_player_avatar.o \ +asm/field_map_obj.o \ +asm/field_ground_effect.o \ asm/rom_8065394.o \ asm/rom_806936C.o \ asm/party_menu.o \ diff --git a/asm/field_camera.s b/asm/field_camera.s new file mode 100644 index 000000000..20187f062 --- /dev/null +++ b/asm/field_camera.s @@ -0,0 +1,1330 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start move_tilemap_camera_to_upper_left_corner_ +move_tilemap_camera_to_upper_left_corner_: @ 80579BC + movs r1, 0 + strb r1, [r0, 0x2] + strb r1, [r0, 0x3] + strb r1, [r0] + strb r1, [r0, 0x1] + movs r1, 0x1 + strb r1, [r0, 0x4] + bx lr + thumb_func_end move_tilemap_camera_to_upper_left_corner_ + + thumb_func_start tilemap_move_something +tilemap_move_something: @ 80579CC + ldrb r3, [r0, 0x2] + adds r3, r1 + strb r3, [r0, 0x2] + ldrb r1, [r0, 0x2] + movs r3, 0x1F + ands r1, r3 + strb r1, [r0, 0x2] + ldrb r1, [r0, 0x3] + adds r1, r2 + strb r1, [r0, 0x3] + ldrb r1, [r0, 0x3] + ands r1, r3 + strb r1, [r0, 0x3] + bx lr + thumb_func_end tilemap_move_something + + thumb_func_start coords8_add +coords8_add: @ 80579E8 + ldrb r3, [r0] + adds r3, r1 + strb r3, [r0] + ldrb r1, [r0, 0x1] + adds r1, r2 + strb r1, [r0, 0x1] + bx lr + thumb_func_end coords8_add + + thumb_func_start move_tilemap_camera_to_upper_left_corner +move_tilemap_camera_to_upper_left_corner: @ 80579F8 + push {r4-r6,lr} + sub sp, 0x8 + ldr r0, _08057A44 @ =gUnknown_03000590 + bl move_tilemap_camera_to_upper_left_corner_ + mov r0, sp + movs r6, 0 + strh r6, [r0] + ldr r4, _08057A48 @ =gBG2TilemapBuffer + ldr r5, _08057A4C @ =0x01000400 + adds r1, r4, 0 + adds r2, r5, 0 + bl CpuSet + mov r0, sp + adds r0, 0x2 + strh r6, [r0] + ldr r2, _08057A50 @ =0xfffff800 + adds r1, r4, r2 + adds r2, r5, 0 + bl CpuSet + add r0, sp, 0x4 + ldr r2, _08057A54 @ =0x00003014 + adds r1, r2, 0 + strh r1, [r0] + movs r1, 0x80 + lsls r1, 4 + adds r4, r1 + adds r1, r4, 0 + adds r2, r5, 0 + bl CpuSet + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08057A44: .4byte gUnknown_03000590 +_08057A48: .4byte gBG2TilemapBuffer +_08057A4C: .4byte 0x01000400 +_08057A50: .4byte 0xfffff800 +_08057A54: .4byte 0x00003014 + thumb_func_end move_tilemap_camera_to_upper_left_corner + + thumb_func_start sub_8057A58 +sub_8057A58: @ 8057A58 + push {r4-r7,lr} + ldr r5, _08057AE8 @ =gBGHOffsetRegs + ldr r1, [r5, 0x4] + ldr r6, _08057AEC @ =gUnknown_03000590 + ldr r4, _08057AF0 @ =gUnknown_03000598 + ldrh r0, [r4] + ldrb r2, [r6] + adds r0, r2 + strh r0, [r1] + ldr r3, _08057AF4 @ =gBGVOffsetRegs + ldr r1, [r3, 0x4] + ldr r2, _08057AF8 @ =gUnknown_0300059A + ldrh r0, [r2] + ldrb r7, [r6, 0x1] + adds r0, r7 + adds r0, 0x8 + strh r0, [r1] + ldr r1, [r5, 0x8] + ldrh r0, [r4] + ldrb r7, [r6] + adds r0, r7 + strh r0, [r1] + ldr r1, [r3, 0x8] + ldrh r0, [r2] + ldrb r7, [r6, 0x1] + adds r0, r7 + adds r0, 0x8 + strh r0, [r1] + ldr r1, [r5, 0xC] + ldrh r0, [r4] + ldrb r4, [r6] + adds r0, r4 + strh r0, [r1] + ldr r1, [r3, 0xC] + ldrh r0, [r2] + ldrb r7, [r6, 0x1] + adds r0, r7 + adds r0, 0x8 + strh r0, [r1] + ldrb r0, [r6, 0x4] + cmp r0, 0 + beq _08057AE0 + ldr r0, _08057AFC @ =0x040000d4 + ldr r2, _08057B00 @ =gBG1TilemapBuffer + str r2, [r0] + ldr r1, _08057B04 @ =0x0600e800 + str r1, [r0, 0x4] + ldr r3, _08057B08 @ =0x80000400 + str r3, [r0, 0x8] + ldr r1, [r0, 0x8] + movs r4, 0x80 + lsls r4, 4 + adds r1, r2, r4 + str r1, [r0] + ldr r1, _08057B0C @ =0x0600e000 + str r1, [r0, 0x4] + str r3, [r0, 0x8] + ldr r1, [r0, 0x8] + movs r7, 0x80 + lsls r7, 5 + adds r2, r7 + str r2, [r0] + ldr r1, _08057B10 @ =0x0600f000 + str r1, [r0, 0x4] + str r3, [r0, 0x8] + ldr r0, [r0, 0x8] + movs r0, 0 + strb r0, [r6, 0x4] +_08057AE0: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057AE8: .4byte gBGHOffsetRegs +_08057AEC: .4byte gUnknown_03000590 +_08057AF0: .4byte gUnknown_03000598 +_08057AF4: .4byte gBGVOffsetRegs +_08057AF8: .4byte gUnknown_0300059A +_08057AFC: .4byte 0x040000d4 +_08057B00: .4byte gBG1TilemapBuffer +_08057B04: .4byte 0x0600e800 +_08057B08: .4byte 0x80000400 +_08057B0C: .4byte 0x0600e000 +_08057B10: .4byte 0x0600f000 + thumb_func_end sub_8057A58 + + thumb_func_start sub_8057B14 +sub_8057B14: @ 8057B14 + push {r4,lr} + ldr r3, _08057B34 @ =gUnknown_03000590 + ldr r2, _08057B38 @ =gUnknown_03000598 + ldrh r2, [r2] + ldrb r4, [r3] + adds r2, r4 + strh r2, [r0] + ldr r0, _08057B3C @ =gUnknown_0300059A + ldrh r0, [r0] + ldrb r3, [r3, 0x1] + adds r0, r3 + adds r0, 0x8 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08057B34: .4byte gUnknown_03000590 +_08057B38: .4byte gUnknown_03000598 +_08057B3C: .4byte gUnknown_0300059A + thumb_func_end sub_8057B14 + + thumb_func_start DrawWholeMapView +DrawWholeMapView: @ 8057B40 + push {lr} + ldr r1, _08057B60 @ =gSaveBlock1 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r2, 0x2 + ldrsh r1, [r1, r2] + ldr r2, _08057B64 @ =gMapHeader + ldr r2, [r2] + bl DrawWholeMapViewInternal + ldr r1, _08057B68 @ =gUnknown_03000590 + movs r0, 0x1 + strb r0, [r1, 0x4] + pop {r0} + bx r0 + .align 2, 0 +_08057B60: .4byte gSaveBlock1 +_08057B64: .4byte gMapHeader +_08057B68: .4byte gUnknown_03000590 + thumb_func_end DrawWholeMapView + + thumb_func_start DrawWholeMapViewInternal +DrawWholeMapViewInternal: @ 8057B6C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + mov r9, r1 + mov r8, r2 + movs r1, 0 +_08057B80: + ldr r2, _08057BEC @ =gUnknown_03000590 + ldrb r0, [r2, 0x3] + adds r0, r1, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _08057B94 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_08057B94: + lsls r6, r0, 5 + movs r4, 0 + adds r7, r1, 0x2 + str r7, [sp] + lsrs r5, r1, 1 +_08057B9E: + ldr r1, _08057BEC @ =gUnknown_03000590 + ldrb r0, [r1, 0x2] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _08057BB2 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_08057BB2: + adds r1, r6, r0 + lsls r1, 16 + lsrs r1, 16 + lsrs r2, r4, 1 + add r2, r10 + mov r0, r8 + mov r7, r9 + adds r3, r7, r5 + bl DrawMetatileAt + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08057B9E + ldr r1, [sp] + lsls r0, r1, 24 + lsrs r1, r0, 24 + cmp r1, 0x1F + bls _08057B80 + 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 +_08057BEC: .4byte gUnknown_03000590 + thumb_func_end DrawWholeMapViewInternal + + thumb_func_start RedrawMapSlicesForCameraUpdate +RedrawMapSlicesForCameraUpdate: @ 8057BF0 + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r1, 0 + adds r7, r2, 0 + ldr r0, _08057C38 @ =gMapHeader + ldr r4, [r0] + cmp r6, 0 + ble _08057C08 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8057D48 +_08057C08: + cmp r6, 0 + bge _08057C14 + adds r0, r5, 0 + adds r1, r4, 0 + bl RedrawMapSliceEast +_08057C14: + cmp r7, 0 + ble _08057C20 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_8057C3C +_08057C20: + cmp r7, 0 + bge _08057C2C + adds r0, r5, 0 + adds r1, r4, 0 + bl RedrawMapSliceSouth +_08057C2C: + movs r0, 0x1 + strb r0, [r5, 0x4] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057C38: .4byte gMapHeader + thumb_func_end RedrawMapSlicesForCameraUpdate + + thumb_func_start sub_8057C3C +sub_8057C3C: @ 8057C3C + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + mov r8, r1 + ldrb r0, [r5, 0x3] + adds r0, 0x1C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _08057C58 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_08057C58: + lsls r7, r0, 5 + movs r4, 0 + ldr r6, _08057CA0 @ =gSaveBlock1 +_08057C5E: + ldrb r0, [r5, 0x2] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _08057C70 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_08057C70: + adds r1, r7, r0 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + ldrsh r2, [r6, r0] + lsrs r0, r4, 1 + adds r2, r0 + movs r0, 0x2 + ldrsh r3, [r6, r0] + adds r3, 0xE + mov r0, r8 + bl DrawMetatileAt + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08057C5E + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057CA0: .4byte gSaveBlock1 + thumb_func_end sub_8057C3C + + thumb_func_start RedrawMapSliceSouth +RedrawMapSliceSouth: @ 8057CA4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + mov r8, r1 + ldrb r0, [r5, 0x3] + lsls r7, r0, 5 + movs r4, 0 + ldr r6, _08057CF0 @ =gSaveBlock1 +_08057CB6: + ldrb r0, [r5, 0x2] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _08057CC8 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_08057CC8: + adds r1, r7, r0 + movs r0, 0 + ldrsh r2, [r6, r0] + lsrs r0, r4, 1 + adds r2, r0 + movs r0, 0x2 + ldrsh r3, [r6, r0] + mov r0, r8 + bl DrawMetatileAt + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08057CB6 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057CF0: .4byte gSaveBlock1 + thumb_func_end RedrawMapSliceSouth + + thumb_func_start RedrawMapSliceEast +RedrawMapSliceEast: @ 8057CF4 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + mov r8, r1 + ldrb r6, [r5, 0x2] + movs r4, 0 +_08057D02: + ldrb r0, [r5, 0x3] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _08057D14 + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_08057D14: + lsls r1, r0, 5 + adds r1, r6 + lsls r1, 16 + lsrs r1, 16 + ldr r0, _08057D44 @ =gSaveBlock1 + movs r3, 0 + ldrsh r2, [r0, r3] + movs r7, 0x2 + ldrsh r3, [r0, r7] + lsrs r0, r4, 1 + adds r3, r0 + mov r0, r8 + bl DrawMetatileAt + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08057D02 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057D44: .4byte gSaveBlock1 + thumb_func_end RedrawMapSliceEast + + thumb_func_start sub_8057D48 +sub_8057D48: @ 8057D48 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + mov r8, r1 + ldrb r0, [r6, 0x2] + adds r0, 0x1C + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x1F + bls _08057D66 + adds r0, r5, 0 + subs r0, 0x20 + lsls r0, 24 + lsrs r5, r0, 24 +_08057D66: + movs r4, 0 + ldr r7, _08057DAC @ =gSaveBlock1 +_08057D6A: + ldrb r0, [r6, 0x3] + adds r0, r4, r0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1F + bls _08057D7C + subs r0, 0x20 + lsls r0, 24 + lsrs r0, 24 +_08057D7C: + lsls r1, r0, 5 + adds r1, r5 + lsls r1, 16 + lsrs r1, 16 + movs r0, 0 + ldrsh r2, [r7, r0] + adds r2, 0xE + movs r0, 0x2 + ldrsh r3, [r7, r0] + lsrs r0, r4, 1 + adds r3, r0 + mov r0, r8 + bl DrawMetatileAt + adds r0, r4, 0x2 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1F + bls _08057D6A + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057DAC: .4byte gSaveBlock1 + thumb_func_end sub_8057D48 + + thumb_func_start CurrentMapDrawMetatileAt +CurrentMapDrawMetatileAt: @ 8057DB0 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r6, _08057DE4 @ =gUnknown_03000590 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl MapPosToBgTilemapOffset + adds r1, r0, 0 + cmp r1, 0 + blt _08057DDC + ldr r0, _08057DE8 @ =gMapHeader + ldr r0, [r0] + lsls r1, 16 + lsrs r1, 16 + adds r2, r4, 0 + adds r3, r5, 0 + bl DrawMetatileAt + movs r0, 0x1 + strb r0, [r6, 0x4] +_08057DDC: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08057DE4: .4byte gUnknown_03000590 +_08057DE8: .4byte gMapHeader + thumb_func_end CurrentMapDrawMetatileAt + + thumb_func_start DrawDoorMetatileAt +DrawDoorMetatileAt: @ 8057DEC + push {r4-r6,lr} + adds r3, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + ldr r6, _08057E1C @ =gUnknown_03000590 + adds r0, r6, 0 + adds r1, r3, 0 + adds r2, r4, 0 + bl MapPosToBgTilemapOffset + cmp r0, 0 + blt _08057E14 + lsls r2, r0, 16 + lsrs r2, 16 + movs r0, 0x1 + adds r1, r5, 0 + bl DrawMetatile + movs r0, 0x1 + strb r0, [r6, 0x4] +_08057E14: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08057E1C: .4byte gUnknown_03000590 + thumb_func_end DrawDoorMetatileAt + + thumb_func_start DrawMetatileAt +DrawMetatileAt: @ 8057E20 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + adds r6, r2, 0 + adds r7, r3, 0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + adds r0, r6, 0 + adds r1, r7, 0 + bl MapGridGetMetatileIdAt + lsls r0, 16 + lsrs r4, r0, 16 + movs r0, 0x80 + lsls r0, 3 + cmp r4, r0 + bls _08057E48 + movs r4, 0 +_08057E48: + ldr r0, _08057E54 @ =0x000001ff + cmp r4, r0 + bhi _08057E58 + ldr r0, [r5, 0x10] + ldr r5, [r0, 0xC] + b _08057E64 + .align 2, 0 +_08057E54: .4byte 0x000001ff +_08057E58: + ldr r0, [r5, 0x14] + ldr r5, [r0, 0xC] + ldr r1, _08057E84 @ =0xfffffe00 + adds r0, r4, r1 + lsls r0, 16 + lsrs r4, r0, 16 +_08057E64: + adds r0, r6, 0 + adds r1, r7, 0 + bl MapGridGetMetatileLayerTypeAt + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 4 + adds r1, r5, r1 + mov r2, r8 + bl DrawMetatile + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08057E84: .4byte 0xfffffe00 + thumb_func_end DrawMetatileAt + + thumb_func_start DrawMetatile +DrawMetatile: @ 8057E88 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r1, 0 + lsls r2, 16 + lsrs r6, r2, 16 + cmp r0, 0x1 + beq _08057F28 + cmp r0, 0x1 + bgt _08057EA6 + cmp r0, 0 + bne _08057EA4 + b _08057FA0 +_08057EA4: + b _08058010 +_08057EA6: + cmp r0, 0x2 + beq _08057EAC + b _08058010 +_08057EAC: + ldr r0, _08057F24 @ =gBG0TilemapBuffer + mov r12, r0 + lsls r1, r6, 1 + mov r9, r1 + movs r5, 0xC0 + lsls r5, 5 + add r5, r12 + adds r1, r5 + ldrh r0, [r7] + movs r2, 0 + mov r8, r2 + strh r0, [r1] + adds r4, r6, 0x1 + lsls r4, 1 + adds r1, r4, r5 + ldrh r0, [r7, 0x2] + strh r0, [r1] + adds r3, r6, 0 + adds r3, 0x20 + lsls r3, 1 + adds r1, r3, r5 + ldrh r0, [r7, 0x4] + strh r0, [r1] + adds r2, r6, 0 + adds r2, 0x21 + lsls r2, 1 + adds r5, r2, r5 + ldrh r0, [r7, 0x6] + strh r0, [r5] + movs r1, 0x80 + lsls r1, 5 + add r1, r12 + mov r5, r9 + adds r0, r5, r1 + mov r5, r8 + strh r5, [r0] + adds r0, r4, r1 + strh r5, [r0] + adds r0, r3, r1 + strh r5, [r0] + adds r1, r2, r1 + strh r5, [r1] + movs r5, 0x80 + lsls r5, 4 + add r5, r12 + add r9, r5 + ldrh r0, [r7, 0x8] + mov r1, r9 + strh r0, [r1] + adds r4, r5 + ldrh r0, [r7, 0xA] + strh r0, [r4] + adds r3, r5 + ldrh r0, [r7, 0xC] + strh r0, [r3] + adds r2, r5 + ldrh r0, [r7, 0xE] + strh r0, [r2] + b _08058010 + .align 2, 0 +_08057F24: .4byte gBG0TilemapBuffer +_08057F28: + ldr r2, _08057F98 @ =gBG0TilemapBuffer + mov r12, r2 + lsls r3, r6, 1 + mov r8, r3 + movs r2, 0xC0 + lsls r2, 5 + add r2, r12 + adds r1, r3, r2 + ldrh r0, [r7] + movs r5, 0 + mov r9, r5 + strh r0, [r1] + adds r5, r6, 0x1 + lsls r5, 1 + adds r1, r5, r2 + ldrh r0, [r7, 0x2] + strh r0, [r1] + adds r4, r6, 0 + adds r4, 0x20 + lsls r4, 1 + adds r1, r4, r2 + ldrh r0, [r7, 0x4] + strh r0, [r1] + adds r3, r6, 0 + adds r3, 0x21 + lsls r3, 1 + adds r2, r3, r2 + ldrh r0, [r7, 0x6] + strh r0, [r2] + movs r1, 0x80 + lsls r1, 5 + add r1, r12 + mov r0, r8 + adds r2, r0, r1 + ldrh r0, [r7, 0x8] + strh r0, [r2] + adds r2, r5, r1 + ldrh r0, [r7, 0xA] + strh r0, [r2] + adds r2, r4, r1 + ldrh r0, [r7, 0xC] + strh r0, [r2] + adds r1, r3, r1 + ldrh r0, [r7, 0xE] + strh r0, [r1] + ldr r1, _08057F9C @ =gBG1TilemapBuffer + add r8, r1 + mov r0, r9 + mov r2, r8 + strh r0, [r2] + adds r5, r1 + strh r0, [r5] + adds r4, r1 + strh r0, [r4] + adds r3, r1 + b _0805800E + .align 2, 0 +_08057F98: .4byte gBG0TilemapBuffer +_08057F9C: .4byte gBG1TilemapBuffer +_08057FA0: + ldr r1, _0805801C @ =gBG0TilemapBuffer + mov r9, r1 + lsls r2, r6, 1 + mov r8, r2 + movs r1, 0xC0 + lsls r1, 5 + add r1, r9 + adds r0, r2, r1 + ldr r2, _08058020 @ =0x00003014 + strh r2, [r0] + adds r5, r6, 0x1 + lsls r5, 1 + adds r0, r5, r1 + strh r2, [r0] + adds r4, r6, 0 + adds r4, 0x20 + lsls r4, 1 + adds r0, r4, r1 + strh r2, [r0] + adds r3, r6, 0 + adds r3, 0x21 + lsls r3, 1 + adds r1, r3, r1 + strh r2, [r1] + movs r1, 0x80 + lsls r1, 5 + add r1, r9 + mov r0, r8 + adds r2, r0, r1 + ldrh r0, [r7] + strh r0, [r2] + adds r2, r5, r1 + ldrh r0, [r7, 0x2] + strh r0, [r2] + adds r2, r4, r1 + ldrh r0, [r7, 0x4] + strh r0, [r2] + adds r1, r3, r1 + ldrh r0, [r7, 0x6] + strh r0, [r1] + movs r2, 0x80 + lsls r2, 4 + add r2, r9 + add r8, r2 + ldrh r0, [r7, 0x8] + mov r1, r8 + strh r0, [r1] + adds r5, r2 + ldrh r0, [r7, 0xA] + strh r0, [r5] + adds r4, r2 + ldrh r0, [r7, 0xC] + strh r0, [r4] + adds r3, r2 + ldrh r0, [r7, 0xE] +_0805800E: + strh r0, [r3] +_08058010: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805801C: .4byte gBG0TilemapBuffer +_08058020: .4byte 0x00003014 + thumb_func_end DrawMetatile + + thumb_func_start MapPosToBgTilemapOffset +MapPosToBgTilemapOffset: @ 8058024 + push {r4,r5,lr} + adds r3, r0, 0 + ldr r4, _08058054 @ =gSaveBlock1 + movs r5, 0 + ldrsh r0, [r4, r5] + subs r1, r0 + lsls r1, 1 + cmp r1, 0x1F + bhi _0805804C + ldrb r0, [r3, 0x2] + adds r1, r0 + cmp r1, 0x1F + ble _08058040 + subs r1, 0x20 +_08058040: + movs r5, 0x2 + ldrsh r0, [r4, r5] + subs r0, r2, r0 + lsls r2, r0, 1 + cmp r2, 0x1F + bls _08058058 +_0805804C: + movs r0, 0x1 + negs r0, r0 + b _08058066 + .align 2, 0 +_08058054: .4byte gSaveBlock1 +_08058058: + ldrb r0, [r3, 0x3] + adds r2, r0 + cmp r2, 0x1F + ble _08058062 + subs r2, 0x20 +_08058062: + lsls r0, r2, 5 + adds r0, r1 +_08058066: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end MapPosToBgTilemapOffset + + thumb_func_start CameraUpdateCallback +CameraUpdateCallback: @ 805806C + push {lr} + adds r3, r0, 0 + ldr r2, [r3, 0x4] + cmp r2, 0 + beq _0805808C + ldr r1, _08058090 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r2, 0x32 + ldrsh r1, [r0, r2] + str r1, [r3, 0x8] + movs r1, 0x34 + ldrsh r0, [r0, r1] + str r0, [r3, 0xC] +_0805808C: + pop {r0} + bx r0 + .align 2, 0 +_08058090: .4byte gSprites + thumb_func_end CameraUpdateCallback + + thumb_func_start ResetCameraUpdateInfo +ResetCameraUpdateInfo: @ 8058094 + ldr r1, _080580A8 @ =gUnknown_03004880 + movs r0, 0 + str r0, [r1, 0x8] + str r0, [r1, 0xC] + str r0, [r1, 0x10] + str r0, [r1, 0x14] + str r0, [r1, 0x4] + str r0, [r1] + bx lr + .align 2, 0 +_080580A8: .4byte gUnknown_03004880 + thumb_func_end ResetCameraUpdateInfo + + thumb_func_start InitCameraUpdateCallback +InitCameraUpdateCallback: @ 80580AC + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r4, _080580E0 @ =gUnknown_03004880 + ldr r1, [r4, 0x4] + cmp r1, 0 + beq _080580C8 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _080580E4 @ =gSprites + adds r0, r1 + bl DestroySprite +_080580C8: + adds r0, r5, 0 + bl AddCameraObject + lsls r0, 24 + lsrs r0, 24 + str r0, [r4, 0x4] + ldr r0, _080580E8 @ =CameraUpdateCallback + str r0, [r4] + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_080580E0: .4byte gUnknown_03004880 +_080580E4: .4byte gSprites +_080580E8: .4byte CameraUpdateCallback + thumb_func_end InitCameraUpdateCallback + + thumb_func_start CameraUpdate +CameraUpdate: @ 80580EC + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r6, _080581EC @ =gUnknown_03004880 + ldr r1, [r6] + cmp r1, 0 + beq _08058100 + adds r0, r6, 0 + bl _call_via_r1 +_08058100: + ldr r7, [r6, 0x8] + ldr r0, [r6, 0xC] + mov r8, r0 + movs r4, 0 + movs r5, 0 + ldr r1, [r6, 0x10] + ldr r0, [r6, 0x14] + cmp r1, 0 + bne _0805811E + cmp r7, 0 + beq _0805811E + subs r4, 0x1 + cmp r7, 0 + ble _0805811E + movs r4, 0x1 +_0805811E: + cmp r0, 0 + bne _08058132 + mov r2, r8 + cmp r2, 0 + beq _08058132 + movs r5, 0x1 + negs r5, r5 + cmp r2, 0 + ble _08058132 + movs r5, 0x1 +_08058132: + cmp r1, 0 + beq _08058144 + cmn r1, r7 + bne _08058144 + movs r4, 0x1 + negs r4, r4 + cmp r7, 0 + ble _08058144 + movs r4, 0x1 +_08058144: + cmp r0, 0 + beq _08058158 + mov r3, r8 + cmn r0, r3 + bne _08058158 + movs r4, 0x1 + negs r4, r4 + cmp r3, 0 + ble _08058158 + movs r4, 0x1 +_08058158: + ldr r2, _080581EC @ =gUnknown_03004880 + ldr r0, [r2, 0x10] + adds r1, r0, r7 + str r1, [r2, 0x10] + adds r0, r1, 0 + cmp r1, 0 + bge _08058168 + adds r0, 0xF +_08058168: + asrs r0, 4 + lsls r0, 4 + subs r0, r1, r0 + str r0, [r2, 0x10] + ldr r0, [r2, 0x14] + mov r3, r8 + adds r1, r0, r3 + str r1, [r2, 0x14] + adds r0, r1, 0 + cmp r1, 0 + bge _08058180 + adds r0, 0xF +_08058180: + asrs r0, 4 + lsls r0, 4 + subs r0, r1, r0 + str r0, [r2, 0x14] + cmp r4, 0 + bne _08058190 + cmp r5, 0 + beq _080581C6 +_08058190: + adds r0, r4, 0 + adds r1, r5, 0 + bl CameraMove + adds r0, r4, 0 + adds r1, r5, 0 + bl UpdateFieldObjectsForCameraUpdate + adds r0, r4, 0 + adds r1, r5, 0 + bl RotatingGatePuzzleCameraUpdate + bl ResetBerryTreeSparkleFlags + ldr r6, _080581F0 @ =gUnknown_03000590 + lsls r4, 1 + lsls r5, 1 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl tilemap_move_something + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl RedrawMapSlicesForCameraUpdate +_080581C6: + ldr r0, _080581F0 @ =gUnknown_03000590 + adds r1, r7, 0 + mov r2, r8 + bl coords8_add + ldr r1, _080581F4 @ =gUnknown_0300489C + ldrh r0, [r1] + subs r0, r7 + strh r0, [r1] + ldr r1, _080581F8 @ =gUnknown_03004898 + ldrh r0, [r1] + mov r2, r8 + subs r0, r2 + strh r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080581EC: .4byte gUnknown_03004880 +_080581F0: .4byte gUnknown_03000590 +_080581F4: .4byte gUnknown_0300489C +_080581F8: .4byte gUnknown_03004898 + thumb_func_end CameraUpdate + + thumb_func_start camera_move_and_redraw +camera_move_and_redraw: @ 80581FC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl CameraMove + lsls r0, r4, 16 + asrs r0, 16 + lsls r1, r5, 16 + asrs r1, 16 + bl UpdateFieldObjectsForCameraUpdate + bl DrawWholeMapView + ldr r1, _08058230 @ =gUnknown_0300489C + lsls r4, 4 + ldrh r0, [r1] + subs r0, r4 + strh r0, [r1] + ldr r1, _08058234 @ =gUnknown_03004898 + lsls r5, 4 + ldrh r0, [r1] + subs r0, r5 + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08058230: .4byte gUnknown_0300489C +_08058234: .4byte gUnknown_03004898 + thumb_func_end camera_move_and_redraw + + thumb_func_start SetCameraPanningCallback +SetCameraPanningCallback: @ 8058238 + ldr r1, _08058240 @ =gUnknown_030005A0 + str r0, [r1] + bx lr + .align 2, 0 +_08058240: .4byte gUnknown_030005A0 + thumb_func_end SetCameraPanningCallback + + thumb_func_start SetCameraPanning +SetCameraPanning: @ 8058244 + ldr r2, _08058254 @ =gUnknown_03000598 + strh r0, [r2] + ldr r0, _08058258 @ =gUnknown_0300059A + lsls r1, 16 + asrs r1, 16 + adds r1, 0x20 + strh r1, [r0] + bx lr + .align 2, 0 +_08058254: .4byte gUnknown_03000598 +_08058258: .4byte gUnknown_0300059A + thumb_func_end SetCameraPanning + + thumb_func_start InstallCameraPanAheadCallback +InstallCameraPanAheadCallback: @ 805825C + ldr r1, _08058278 @ =gUnknown_030005A0 + ldr r0, _0805827C @ =CameraPanningCB_PanAhead + str r0, [r1] + ldr r1, _08058280 @ =gUnknown_0300059C + movs r0, 0 + strb r0, [r1] + ldr r1, _08058284 @ =gUnknown_03000598 + movs r0, 0 + strh r0, [r1] + ldr r1, _08058288 @ =gUnknown_0300059A + movs r0, 0x20 + strh r0, [r1] + bx lr + .align 2, 0 +_08058278: .4byte gUnknown_030005A0 +_0805827C: .4byte CameraPanningCB_PanAhead +_08058280: .4byte gUnknown_0300059C +_08058284: .4byte gUnknown_03000598 +_08058288: .4byte gUnknown_0300059A + thumb_func_end InstallCameraPanAheadCallback + + thumb_func_start UpdateCameraPanning +UpdateCameraPanning: @ 805828C + push {lr} + ldr r0, _080582BC @ =gUnknown_030005A0 + ldr r0, [r0] + cmp r0, 0 + beq _0805829A + bl _call_via_r0 +_0805829A: + ldr r2, _080582C0 @ =gSpriteCoordOffsetX + ldr r0, _080582C4 @ =gUnknown_0300489C + ldr r1, _080582C8 @ =gUnknown_03000598 + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r1 + strh r0, [r2] + ldr r2, _080582CC @ =gSpriteCoordOffsetY + ldr r0, _080582D0 @ =gUnknown_03004898 + ldr r1, _080582D4 @ =gUnknown_0300059A + ldrh r0, [r0] + ldrh r1, [r1] + subs r0, r1 + subs r0, 0x8 + strh r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_080582BC: .4byte gUnknown_030005A0 +_080582C0: .4byte gSpriteCoordOffsetX +_080582C4: .4byte gUnknown_0300489C +_080582C8: .4byte gUnknown_03000598 +_080582CC: .4byte gSpriteCoordOffsetY +_080582D0: .4byte gUnknown_03004898 +_080582D4: .4byte gUnknown_0300059A + thumb_func_end UpdateCameraPanning + + thumb_func_start CameraPanningCB_PanAhead +CameraPanningCB_PanAhead: @ 80582D8 + push {lr} + ldr r0, _080582E8 @ =gUnknown_0202E854 + ldrb r0, [r0] + cmp r0, 0 + bne _080582EC + bl InstallCameraPanAheadCallback + b _08058374 + .align 2, 0 +_080582E8: .4byte gUnknown_0202E854 +_080582EC: + ldr r0, _08058304 @ =gPlayerAvatar + ldrb r0, [r0, 0x3] + cmp r0, 0x1 + bne _0805830C + ldr r0, _08058308 @ =gUnknown_0300059C + ldrb r1, [r0] + movs r2, 0x1 + eors r1, r2 + strb r1, [r0] + cmp r1, 0 + beq _08058374 + b _08058312 + .align 2, 0 +_08058304: .4byte gPlayerAvatar +_08058308: .4byte gUnknown_0300059C +_0805830C: + ldr r1, _08058334 @ =gUnknown_0300059C + movs r0, 0 + strb r0, [r1] +_08058312: + bl player_get_direction_upper_nybble + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0805833C + ldr r2, _08058338 @ =gUnknown_0300059A + ldrh r3, [r2] + movs r0, 0 + ldrsh r1, [r2, r0] + movs r0, 0x8 + negs r0, r0 + cmp r1, r0 + ble _08058374 + subs r0, r3, 0x2 + b _08058372 + .align 2, 0 +_08058334: .4byte gUnknown_0300059C +_08058338: .4byte gUnknown_0300059A +_0805833C: + cmp r0, 0x1 + bne _08058358 + ldr r1, _08058354 @ =gUnknown_0300059A + ldrh r2, [r1] + movs r3, 0 + ldrsh r0, [r1, r3] + cmp r0, 0x47 + bgt _08058374 + adds r0, r2, 0x2 + strh r0, [r1] + b _08058374 + .align 2, 0 +_08058354: .4byte gUnknown_0300059A +_08058358: + ldr r2, _08058368 @ =gUnknown_0300059A + ldrh r0, [r2] + movs r3, 0 + ldrsh r1, [r2, r3] + cmp r1, 0x1F + bgt _0805836C + adds r0, 0x2 + b _08058372 + .align 2, 0 +_08058368: .4byte gUnknown_0300059A +_0805836C: + cmp r1, 0x20 + ble _08058374 + subs r0, 0x2 +_08058372: + strh r0, [r2] +_08058374: + pop {r0} + bx r0 + thumb_func_end CameraPanningCB_PanAhead + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_door.s b/asm/field_door.s new file mode 100644 index 000000000..535874fbe --- /dev/null +++ b/asm/field_door.s @@ -0,0 +1,613 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_8058378 +sub_8058378: @ 8058378 + push {lr} + ldr r1, _08058388 @ =0x06007f00 + movs r2, 0x40 + bl CpuFastSet + pop {r0} + bx r0 + .align 2, 0 +_08058388: .4byte 0x06007f00 + thumb_func_end sub_8058378 + + thumb_func_start door_build_blockdef +door_build_blockdef: @ 805838C + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + movs r4, 0 + adds r1, r6, 0 +_08058398: + ldrb r0, [r2] + lsls r0, 28 + lsrs r3, r0, 16 + adds r2, 0x1 + adds r0, r5, r4 + orrs r3, r0 + strh r3, [r1] + adds r1, 0x2 + adds r4, 0x1 + cmp r4, 0x3 + ble _08058398 + cmp r4, 0x7 + bgt _080583C6 + lsls r0, r4, 1 + adds r1, r0, r6 +_080583B6: + ldrb r0, [r2] + lsls r3, r0, 12 + adds r2, 0x1 + strh r3, [r1] + adds r1, 0x2 + adds r4, 0x1 + cmp r4, 0x7 + ble _080583B6 +_080583C6: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end door_build_blockdef + + thumb_func_start sub_80583CC +sub_80583CC: @ 80583CC + push {r4-r6,lr} + sub sp, 0x10 + adds r5, r0, 0 + adds r6, r1, 0 + adds r4, r2, 0 + movs r1, 0xFE + lsls r1, 2 + mov r0, sp + bl door_build_blockdef + subs r1, r6, 0x1 + adds r0, r5, 0 + mov r2, sp + bl DrawDoorMetatileAt + movs r1, 0xFF + lsls r1, 2 + adds r4, 0x4 + mov r0, sp + adds r2, r4, 0 + bl door_build_blockdef + adds r0, r5, 0 + adds r1, r6, 0 + mov r2, sp + bl DrawDoorMetatileAt + add sp, 0x10 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80583CC + + thumb_func_start sub_805840C +sub_805840C: @ 805840C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + subs r1, r5, 0x1 + bl CurrentMapDrawMetatileAt + adds r0, r4, 0 + adds r1, r5, 0 + bl CurrentMapDrawMetatileAt + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_805840C + + thumb_func_start sub_8058428 +sub_8058428: @ 8058428 + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + ldrh r1, [r4, 0x2] + ldr r0, _08058444 @ =0x0000ffff + cmp r1, r0 + bne _08058448 + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_805840C + b _0805845C + .align 2, 0 +_08058444: .4byte 0x0000ffff +_08058448: + ldrh r1, [r4, 0x2] + ldr r0, [r5, 0x4] + adds r0, r1 + bl sub_8058378 + ldr r2, [r5, 0x8] + adds r0, r6, 0 + adds r1, r7, 0 + bl sub_80583CC +_0805845C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8058428 + + thumb_func_start sub_8058464 +sub_8058464: @ 8058464 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + movs r1, 0xA + ldrsh r0, [r4, r1] + cmp r0, 0 + bne _0805848A + movs r2, 0x8 + ldrsh r1, [r4, r2] + lsls r1, 2 + adds r1, r5, r1 + movs r0, 0xC + ldrsh r2, [r4, r0] + movs r0, 0xE + ldrsh r3, [r4, r0] + adds r0, r6, 0 + bl sub_8058428 +_0805848A: + movs r2, 0xA + ldrsh r1, [r4, r2] + movs r2, 0x8 + ldrsh r0, [r4, r2] + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0] + cmp r1, r0 + bne _080584B8 + movs r0, 0 + strh r0, [r4, 0xA] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldrb r0, [r0] + cmp r0, 0 + bne _080584BE + movs r0, 0 + b _080584C0 +_080584B8: + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] +_080584BE: + movs r0, 0x1 +_080584C0: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8058464 + + thumb_func_start task50_overworld_door +task50_overworld_door: @ 80584C8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r2, r4, 2 + adds r2, r4 + lsls r2, 3 + ldr r0, _080584FC @ =gTasks + 0x8 + adds r2, r0 + ldrh r1, [r2] + lsls r1, 16 + ldrh r0, [r2, 0x2] + orrs r1, r0 + ldrh r0, [r2, 0x4] + lsls r0, 16 + ldrh r3, [r2, 0x6] + orrs r0, r3 + bl sub_8058464 + cmp r0, 0 + bne _080584F6 + adds r0, r4, 0 + bl DestroyTask +_080584F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080584FC: .4byte gTasks + 0x8 + thumb_func_end task50_overworld_door + + thumb_func_start door_frame_last +door_frame_last: @ 8058500 + push {lr} + adds r1, r0, 0 + b _08058508 +_08058506: + adds r1, 0x4 +_08058508: + ldrb r0, [r1] + cmp r0, 0 + bne _08058506 + subs r0, r1, 0x4 + pop {r1} + bx r1 + thumb_func_end door_frame_last + + thumb_func_start door_find +door_find: @ 8058514 + push {lr} + adds r2, r0, 0 + lsls r1, 16 + lsrs r1, 16 + b _0805852A +_0805851E: + ldrh r0, [r2] + cmp r0, r1 + bne _08058528 + adds r0, r2, 0 + b _08058532 +_08058528: + adds r2, 0xC +_0805852A: + ldr r0, [r2, 0x4] + cmp r0, 0 + bne _0805851E + movs r0, 0 +_08058532: + pop {r1} + bx r1 + thumb_func_end door_find + + thumb_func_start task_overworld_door_add_if_inactive +task_overworld_door_add_if_inactive: @ 8058538 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r5, r1, 0 + adds r7, r2, 0 + mov r8, r3 + ldr r4, _08058584 @ =task50_overworld_door + adds r0, r4, 0 + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0805858C + adds r0, r4, 0 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r2, _08058588 @ =gTasks + 0x8 + adds r1, r2 + strh r7, [r1, 0xC] + mov r2, r8 + strh r2, [r1, 0xE] + strh r5, [r1, 0x2] + lsrs r2, r5, 16 + strh r2, [r1] + strh r6, [r1, 0x6] + lsrs r2, r6, 16 + strh r2, [r1, 0x4] + lsls r0, 24 + asrs r0, 24 + b _08058590 + .align 2, 0 +_08058584: .4byte task50_overworld_door +_08058588: .4byte gTasks + 0x8 +_0805858C: + movs r0, 0x1 + negs r0, r0 +_08058590: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end task_overworld_door_add_if_inactive + + thumb_func_start sub_805859C +sub_805859C: @ 805859C + push {lr} + adds r0, r1, 0 + adds r1, r2, 0 + bl sub_805840C + pop {r0} + bx r0 + thumb_func_end sub_805859C + + thumb_func_start sub_80585AC +sub_80585AC: @ 80585AC + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r0, r5, 0 + adds r1, r6, 0 + bl MapGridGetMetatileIdAt + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl door_find + adds r4, r0, 0 + cmp r4, 0 + beq _080585E2 + ldr r1, _080585E8 @ =gUnknown_0830F87C + adds r0, r1, 0 + bl door_frame_last + adds r1, r0, 0 + adds r0, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8058428 +_080585E2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080585E8: .4byte gUnknown_0830F87C + thumb_func_end sub_80585AC + + thumb_func_start sub_80585EC +sub_80585EC: @ 80585EC + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r0, r5, 0 + adds r1, r6, 0 + bl MapGridGetMetatileIdAt + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl door_find + cmp r0, 0 + beq _08058620 + ldr r1, _0805861C @ =gUnknown_0830F87C + adds r2, r5, 0 + adds r3, r6, 0 + bl task_overworld_door_add_if_inactive + lsls r0, 24 + asrs r0, 24 + b _08058624 + .align 2, 0 +_0805861C: .4byte gUnknown_0830F87C +_08058620: + movs r0, 0x1 + negs r0, r0 +_08058624: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80585EC + + thumb_func_start sub_805862C +sub_805862C: @ 805862C + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r0, r5, 0 + adds r1, r6, 0 + bl MapGridGetMetatileIdAt + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl door_find + cmp r0, 0 + beq _08058660 + ldr r1, _0805865C @ =gUnknown_0830F890 + adds r2, r5, 0 + adds r3, r6, 0 + bl task_overworld_door_add_if_inactive + lsls r0, 24 + asrs r0, 24 + b _08058664 + .align 2, 0 +_0805865C: .4byte gUnknown_0830F890 +_08058660: + movs r0, 0x1 + negs r0, r0 +_08058664: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_805862C + + thumb_func_start cur_mapdata_get_door_x2_at +cur_mapdata_get_door_x2_at: @ 805866C + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + adds r1, r2, 0 + bl MapGridGetMetatileIdAt + adds r1, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r0, r4, 0 + bl door_find + cmp r0, 0 + beq _08058690 + ldrb r0, [r0, 0x2] + lsls r0, 24 + asrs r0, 24 + b _08058694 +_08058690: + movs r0, 0x1 + negs r0, r0 +_08058694: + pop {r4} + pop {r1} + bx r1 + thumb_func_end cur_mapdata_get_door_x2_at + + thumb_func_start unref_sub_805869C +unref_sub_805869C: @ 805869C + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _080586B0 @ =gDoorAnimGraphicsTable + adds r1, r3, 0 + bl sub_80585EC + pop {r0} + bx r0 + .align 2, 0 +_080586B0: .4byte gDoorAnimGraphicsTable + thumb_func_end unref_sub_805869C + + thumb_func_start sub_80586B4 +sub_80586B4: @ 80586B4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl sub_8056EAC + lsls r0, 24 + cmp r0, 0 + beq _080586D6 + ldr r0, _080586DC @ =gDoorAnimGraphicsTable + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80585AC +_080586D6: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080586DC: .4byte gDoorAnimGraphicsTable + thumb_func_end sub_80586B4 + + thumb_func_start sub_80586E0 +sub_80586E0: @ 80586E0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl sub_8056EAC + lsls r0, 24 + cmp r0, 0 + beq _08058702 + ldr r0, _08058708 @ =gDoorAnimGraphicsTable + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805859C +_08058702: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08058708: .4byte gDoorAnimGraphicsTable + thumb_func_end sub_80586E0 + + thumb_func_start sub_805870C +sub_805870C: @ 805870C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl sub_8056EAC + lsls r0, 24 + cmp r0, 0 + beq _08058738 + ldr r0, _08058734 @ =gDoorAnimGraphicsTable + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_805862C + lsls r0, 24 + asrs r0, 24 + b _0805873C + .align 2, 0 +_08058734: .4byte gDoorAnimGraphicsTable +_08058738: + movs r0, 0x1 + negs r0, r0 +_0805873C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_805870C + + thumb_func_start task_overworld_door_add_if_role_69_for_opening_door_at +task_overworld_door_add_if_role_69_for_opening_door_at: @ 8058744 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl sub_8056EAC + lsls r0, 24 + cmp r0, 0 + beq _08058770 + ldr r0, _0805876C @ =gDoorAnimGraphicsTable + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_80585EC + lsls r0, 24 + asrs r0, 24 + b _08058774 + .align 2, 0 +_0805876C: .4byte gDoorAnimGraphicsTable +_08058770: + movs r0, 0x1 + negs r0, r0 +_08058774: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end task_overworld_door_add_if_role_69_for_opening_door_at + + thumb_func_start sub_805877C +sub_805877C: @ 805877C + push {lr} + ldr r0, _0805878C @ =task50_overworld_door + bl FuncIsActiveTask + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_0805878C: .4byte task50_overworld_door + thumb_func_end sub_805877C + + thumb_func_start sub_8058790 +sub_8058790: @ 8058790 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _080587A8 @ =gDoorAnimGraphicsTable + adds r1, r3, 0 + bl cur_mapdata_get_door_x2_at + lsls r0, 24 + cmp r0, 0 + beq _080587AC + movs r0, 0x12 + b _080587AE + .align 2, 0 +_080587A8: .4byte gDoorAnimGraphicsTable +_080587AC: + movs r0, 0x8 +_080587AE: + pop {r1} + bx r1 + thumb_func_end sub_8058790 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s new file mode 100644 index 000000000..0b7e8a983 --- /dev/null +++ b/asm/field_ground_effect.s @@ -0,0 +1,1890 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start GetAllGroundEffectFlags_OnSpawn +GetAllGroundEffectFlags_OnSpawn: @ 80635F0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectUpdateMetatileBehaviors + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_Reflection + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_TallGrassOnSpawn + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_LongGrassOnSpawn + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_SandHeap + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_ShallowFlowingWater + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_ShortGrass + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_HotSprings + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetAllGroundEffectFlags_OnSpawn + + thumb_func_start GetAllGroundEffectFlags_OnBeginStep +GetAllGroundEffectFlags_OnBeginStep: @ 8063638 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectUpdateMetatileBehaviors + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_Reflection + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_TallGrassOnBeginStep + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_LongGrassOnBeginStep + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_Tracks + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_SandHeap + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_ShallowFlowingWater + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_Puddle + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_ShortGrass + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_HotSprings + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetAllGroundEffectFlags_OnBeginStep + + thumb_func_start GetAllGroundEffectFlags_OnFinishStep +GetAllGroundEffectFlags_OnFinishStep: @ 8063690 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + bl FieldObjectUpdateMetatileBehaviors + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_ShallowFlowingWater + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_SandHeap + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_Puddle + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_Ripple + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_ShortGrass + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_HotSprings + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_Seaweed + adds r0, r4, 0 + adds r1, r5, 0 + bl GetGroundEffectFlags_JumpLanding + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetAllGroundEffectFlags_OnFinishStep + + thumb_func_start FieldObjectUpdateMetatileBehaviors +FieldObjectUpdateMetatileBehaviors: @ 80636E0 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x14 + ldrsh r0, [r4, r1] + movs r2, 0x16 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileBehaviorAt + strb r0, [r4, 0x1F] + movs r1, 0x10 + ldrsh r0, [r4, r1] + movs r2, 0x12 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileBehaviorAt + strb r0, [r4, 0x1E] + pop {r4} + pop {r0} + bx r0 + thumb_func_end FieldObjectUpdateMetatileBehaviors + + thumb_func_start GetGroundEffectFlags_Reflection +GetGroundEffectFlags_Reflection: @ 8063708 + push {r4,r5,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r0, _0806374C @ =gUnknown_08376008 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + adds r0, r4, 0 + bl FieldObjectCheckForReflectiveSurface + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0 + beq _08063750 + ldrb r1, [r4, 0x2] + lsls r0, r1, 30 + cmp r0, 0 + blt _0806375A + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, 0x2] + subs r0, r2, 0x1 + lsls r0, 2 + add r0, sp + ldr r1, [r5] + ldr r0, [r0] + orrs r1, r0 + str r1, [r5] + b _0806375A + .align 2, 0 +_0806374C: .4byte gUnknown_08376008 +_08063750: + ldrb r1, [r4, 0x2] + movs r0, 0x3 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_0806375A: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_Reflection + + thumb_func_start GetGroundEffectFlags_TallGrassOnSpawn +GetGroundEffectFlags_TallGrassOnSpawn: @ 8063764 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl MetatileBehavior_IsTallGrass + lsls r0, 24 + cmp r0, 0 + beq _0806377C + ldr r0, [r4] + movs r1, 0x1 + orrs r0, r1 + str r0, [r4] +_0806377C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_TallGrassOnSpawn + + thumb_func_start GetGroundEffectFlags_TallGrassOnBeginStep +GetGroundEffectFlags_TallGrassOnBeginStep: @ 8063784 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl MetatileBehavior_IsTallGrass + lsls r0, 24 + cmp r0, 0 + beq _0806379C + ldr r0, [r4] + movs r1, 0x2 + orrs r0, r1 + str r0, [r4] +_0806379C: + pop {r4} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_TallGrassOnBeginStep + + thumb_func_start GetGroundEffectFlags_LongGrassOnSpawn +GetGroundEffectFlags_LongGrassOnSpawn: @ 80637A4 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl MetatileBehavior_IsLongGrass + lsls r0, 24 + cmp r0, 0 + beq _080637BC + ldr r0, [r4] + movs r1, 0x4 + orrs r0, r1 + str r0, [r4] +_080637BC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_LongGrassOnSpawn + + thumb_func_start GetGroundEffectFlags_LongGrassOnBeginStep +GetGroundEffectFlags_LongGrassOnBeginStep: @ 80637C4 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl MetatileBehavior_IsLongGrass + lsls r0, 24 + cmp r0, 0 + beq _080637DC + ldr r0, [r4] + movs r1, 0x8 + orrs r0, r1 + str r0, [r4] +_080637DC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_LongGrassOnBeginStep + + thumb_func_start GetGroundEffectFlags_Tracks +GetGroundEffectFlags_Tracks: @ 80637E4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsDeepSand + lsls r0, 24 + cmp r0, 0 + beq _080637FE + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 1 + b _0806381A +_080637FE: + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsSandOrDeepSand + lsls r0, 24 + cmp r0, 0 + bne _08063816 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsUnusedFootprintMetatile + lsls r0, 24 + cmp r0, 0 + beq _0806381E +_08063816: + ldr r0, [r5] + movs r1, 0x80 +_0806381A: + orrs r0, r1 + str r0, [r5] +_0806381E: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_Tracks + + thumb_func_start GetGroundEffectFlags_SandHeap +GetGroundEffectFlags_SandHeap: @ 8063824 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsDeepSand + lsls r0, 24 + cmp r0, 0 + beq _08063862 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsDeepSand + lsls r0, 24 + cmp r0, 0 + beq _08063862 + ldrb r1, [r4, 0x2] + lsls r0, r1, 27 + cmp r0, 0 + blt _0806386C + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + movs r1, 0x10 + orrs r0, r1 + strb r0, [r4, 0x2] + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 4 + orrs r0, r1 + str r0, [r5] + b _0806386C +_08063862: + ldrb r1, [r4, 0x2] + movs r0, 0x11 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_0806386C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_SandHeap + + thumb_func_start GetGroundEffectFlags_ShallowFlowingWater +GetGroundEffectFlags_ShallowFlowingWater: @ 8063874 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsShallowFlowingWater + lsls r0, 24 + cmp r0, 0 + beq _08063892 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsShallowFlowingWater + lsls r0, 24 + cmp r0, 0 + bne _080638AA +_08063892: + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsPacifidlogLog + lsls r0, 24 + cmp r0, 0 + beq _080638C8 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsPacifidlogLog + lsls r0, 24 + cmp r0, 0 + beq _080638C8 +_080638AA: + ldrb r1, [r4, 0x2] + lsls r0, r1, 28 + cmp r0, 0 + blt _080638D2 + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4, 0x2] + ldr r0, [r5] + movs r1, 0x40 + orrs r0, r1 + str r0, [r5] + b _080638D2 +_080638C8: + ldrb r1, [r4, 0x2] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_080638D2: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_ShallowFlowingWater + + thumb_func_start GetGroundEffectFlags_Puddle +GetGroundEffectFlags_Puddle: @ 80638D8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsPuddle + lsls r0, 24 + cmp r0, 0 + beq _08063900 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsPuddle + lsls r0, 24 + cmp r0, 0 + beq _08063900 + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 3 + orrs r0, r1 + str r0, [r5] +_08063900: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_Puddle + + thumb_func_start GetGroundEffectFlags_Ripple +GetGroundEffectFlags_Ripple: @ 8063908 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl MetatileBehavior_HasRipples + lsls r0, 24 + cmp r0, 0 + beq _08063922 + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 2 + orrs r0, r1 + str r0, [r4] +_08063922: + pop {r4} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_Ripple + + thumb_func_start GetGroundEffectFlags_ShortGrass +GetGroundEffectFlags_ShortGrass: @ 8063928 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsShortGrass + lsls r0, 24 + cmp r0, 0 + beq _08063966 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsShortGrass + lsls r0, 24 + cmp r0, 0 + beq _08063966 + ldrb r1, [r4, 0x2] + lsls r0, r1, 29 + cmp r0, 0 + blt _08063970 + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4, 0x2] + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 10 + orrs r0, r1 + str r0, [r5] + b _08063970 +_08063966: + ldrb r1, [r4, 0x2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_08063970: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_ShortGrass + + thumb_func_start GetGroundEffectFlags_HotSprings +GetGroundEffectFlags_HotSprings: @ 8063978 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x1E] + bl MetatileBehavior_IsHotSprings + lsls r0, 24 + cmp r0, 0 + beq _080639B6 + ldrb r0, [r4, 0x1F] + bl MetatileBehavior_IsHotSprings + lsls r0, 24 + cmp r0, 0 + beq _080639B6 + ldrb r1, [r4, 0x2] + lsls r0, r1, 26 + cmp r0, 0 + blt _080639C0 + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + movs r1, 0x20 + orrs r0, r1 + strb r0, [r4, 0x2] + ldr r0, [r5] + movs r1, 0x80 + lsls r1, 11 + orrs r0, r1 + str r0, [r5] + b _080639C0 +_080639B6: + ldrb r1, [r4, 0x2] + movs r0, 0x21 + negs r0, r0 + ands r0, r1 + strb r0, [r4, 0x2] +_080639C0: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_HotSprings + + thumb_func_start GetGroundEffectFlags_Seaweed +GetGroundEffectFlags_Seaweed: @ 80639C8 + push {r4,lr} + adds r4, r1, 0 + ldrb r0, [r0, 0x1E] + bl MetatileBehavior_IsSeaweed + lsls r0, 24 + cmp r0, 0 + beq _080639E2 + ldr r0, [r4] + movs r1, 0x80 + lsls r1, 12 + orrs r0, r1 + str r0, [r4] +_080639E2: + pop {r4} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_Seaweed + + thumb_func_start GetGroundEffectFlags_JumpLanding +GetGroundEffectFlags_JumpLanding: @ 80639E8 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r6, r1, 0 + ldr r0, [r7] + ldr r1, _08063A24 @ =0x02000020 + ands r0, r1 + cmp r0, 0x20 + bne _08063A3A @ Is player landing after jumping? + movs r5, 0 + ldr r0, _08063A28 @ =gJumpLanding_MetatileFunctionPointers + mov r8, r0 +_08063A02: + lsls r4, r5, 2 + mov r0, r8 + adds r1, r4, r0 + ldrb r0, [r7, 0x1E] @ Load metatile behavior + ldr r1, [r1] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _08063A30 + ldr r0, _08063A2C @ =gJumpLanding_Bitmasks + adds r0, r4, r0 + ldr r1, [r6] + ldr r0, [r0] + orrs r1, r0 + str r1, [r6] + b _08063A3A + .align 2, 0 +_08063A24: .4byte 0x02000020 +_08063A28: .4byte gJumpLanding_MetatileFunctionPointers +_08063A2C: .4byte gJumpLanding_Bitmasks +_08063A30: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x5 + bls _08063A02 +_08063A3A: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end GetGroundEffectFlags_JumpLanding + + thumb_func_start FieldObjectCheckForReflectiveSurface +FieldObjectCheckForReflectiveSurface: @ 8063A44 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + adds r5, r0, 0 + ldrb r0, [r5, 0x5] + bl GetFieldObjectGraphicsInfo + movs r2, 0x8 + ldrsh r1, [r0, r2] + adds r1, 0x8 + lsls r1, 12 + lsrs r1, 16 + str r1, [sp] + movs r1, 0xA + ldrsh r0, [r0, r1] + adds r0, 0x8 + lsls r0, 12 + movs r4, 0 + lsrs r2, r0, 16 + str r2, [sp, 0x4] + asrs r0, 16 + cmp r4, r0 + blt _08063A7A + b _08063B80 +_08063A7A: + movs r0, 0x1 + mov r10, r0 +_08063A7E: + movs r1, 0x10 + ldrsh r0, [r5, r1] + movs r2, 0x12 + ldrsh r1, [r5, r2] + add r1, r10 + lsls r4, 16 + asrs r6, r4, 16 + adds r1, r6 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl GetReflectionTypeByMetatileBehavior + lsls r0, 24 + lsrs r0, 24 + mov r9, r4 + cmp r0, 0 + bne _08063B82 + movs r1, 0x14 + ldrsh r0, [r5, r1] + movs r2, 0x16 + ldrsh r1, [r5, r2] + add r1, r10 + adds r1, r6 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl GetReflectionTypeByMetatileBehavior + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08063B82 + movs r2, 0x1 + ldr r1, [sp] + lsls r0, r1, 16 + asrs r1, r0, 16 + mov r8, r0 + cmp r2, r1 + bge _08063B6E + movs r0, 0x80 + lsls r0, 9 + asrs r7, r0, 16 +_08063AD8: + movs r1, 0x10 + ldrsh r0, [r5, r1] + lsls r1, r2, 16 + asrs r4, r1, 16 + adds r0, r4 + movs r2, 0x12 + ldrsh r1, [r5, r2] + adds r1, r7 + adds r1, r6 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl GetReflectionTypeByMetatileBehavior + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08063B82 + movs r1, 0x10 + ldrsh r0, [r5, r1] + subs r0, r4 + movs r2, 0x12 + ldrsh r1, [r5, r2] + adds r1, r7 + adds r1, r6 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl GetReflectionTypeByMetatileBehavior + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08063B82 + movs r1, 0x14 + ldrsh r0, [r5, r1] + adds r0, r4 + movs r2, 0x16 + ldrsh r1, [r5, r2] + adds r1, r7 + adds r1, r6 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl GetReflectionTypeByMetatileBehavior + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08063B82 + movs r1, 0x14 + ldrsh r0, [r5, r1] + subs r0, r4 + movs r2, 0x16 + ldrsh r1, [r5, r2] + adds r1, r7 + adds r1, r6 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl GetReflectionTypeByMetatileBehavior + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08063B82 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r0, r8 + blt _08063AD8 +_08063B6E: + movs r1, 0x80 + lsls r1, 9 + add r1, r9 + lsrs r4, r1, 16 + ldr r2, [sp, 0x4] + lsls r0, r2, 16 + cmp r1, r0 + bge _08063B80 + b _08063A7E +_08063B80: + movs r0, 0 +_08063B82: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end FieldObjectCheckForReflectiveSurface + + thumb_func_start GetReflectionTypeByMetatileBehavior +GetReflectionTypeByMetatileBehavior: @ 8063B94 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl MetatileBehavior_IsIce + lsls r0, 24 + cmp r0, 0 + beq _08063BAA + movs r0, 0x1 + b _08063BBC +_08063BAA: + adds r0, r4, 0 + bl MetatileBehavior_IsReflective + lsls r0, 24 + cmp r0, 0 + bne _08063BBA + movs r0, 0 + b _08063BBC +_08063BBA: + movs r0, 0x2 +_08063BBC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetReflectionTypeByMetatileBehavior + + thumb_func_start GetLedgeJumpDirection +GetLedgeJumpDirection: @ 8063BC4 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 16 + lsrs r1, 16 + lsls r2, 24 + lsrs r4, r2, 24 + cmp r4, 0 + beq _08063C0A + cmp r4, 0x4 + bls _08063BE0 + subs r0, r4, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 +_08063BE0: + subs r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r3, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08063C10 @ =gUnknown_08376040 + lsls r1, r4, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08063C14 +_08063C0A: + movs r0, 0 + b _08063C1A + .align 2, 0 +_08063C10: .4byte gUnknown_08376040 +_08063C14: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r0, 24 +_08063C1A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetLedgeJumpDirection + + thumb_func_start FieldObjectSetSpriteOamTableForLongGrass +FieldObjectSetSpriteOamTableForLongGrass: @ 8063C20 + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r1, 0 + ldrb r0, [r5] + lsls r0, 27 + cmp r0, 0 + blt _08063C74 + ldrb r0, [r5, 0x1E] + bl MetatileBehavior_IsLongGrass + lsls r0, 24 + cmp r0, 0 + beq _08063C74 + ldrb r0, [r5, 0x1F] + bl MetatileBehavior_IsLongGrass + lsls r0, 24 + cmp r0, 0 + beq _08063C74 + adds r4, 0x42 + ldrb r1, [r4] + movs r6, 0x40 + negs r6, r6 + adds r0, r6, 0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, 0xB] + lsrs r0, 4 + bl ZCoordToPriority + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08063C74 + ldrb r0, [r4] + adds r1, r6, 0 + ands r1, r0 + movs r0, 0x5 + orrs r1, r0 + strb r1, [r4] +_08063C74: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end FieldObjectSetSpriteOamTableForLongGrass + + thumb_func_start IsZCoordMismatchAt +IsZCoordMismatchAt: @ 8063C7C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 16 + lsrs r0, r1, 16 + lsls r2, 16 + lsrs r1, r2, 16 + cmp r4, 0 + beq _08063CAA + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl MapGridGetZCoordAt + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _08063CAA + cmp r0, 0xF + beq _08063CAA + cmp r0, r4 + bne _08063CAE +_08063CAA: + movs r0, 0 + b _08063CB0 +_08063CAE: + movs r0, 0x1 +_08063CB0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end IsZCoordMismatchAt + + thumb_func_start FieldObjectUpdateZCoordAndPriority +FieldObjectUpdateZCoordAndPriority: @ 8063CB8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x3] + lsls r0, 29 + cmp r0, 0 + blt _08063D06 + adds r0, r4, 0 + bl FieldObjectUpdateZCoord + ldr r1, _08063D0C @ =gFieldObjectPriorities_08376070 + ldrb r2, [r4, 0xB] + lsls r2, 24 + lsrs r0, r2, 28 + adds r0, r1 + ldrb r0, [r0] + adds r4, r5, 0 + adds r4, 0x42 + movs r1, 0x3F + ands r1, r0 + ldrb r3, [r4] + movs r0, 0x40 + negs r0, r0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4] + ldr r0, _08063D10 @ =gFieldObjectPriorities_08376060 + lsrs r2, 28 + adds r2, r0 + movs r0, 0x3 + ldrb r1, [r2] + ands r1, r0 + lsls r1, 2 + ldrb r2, [r5, 0x5] + movs r0, 0xD + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, 0x5] +_08063D06: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08063D0C: .4byte gFieldObjectPriorities_08376070 +_08063D10: .4byte gFieldObjectPriorities_08376060 + thumb_func_end FieldObjectUpdateZCoordAndPriority + + thumb_func_start InitObjectPriorityByZCoord +InitObjectPriorityByZCoord: @ 8063D14 + push {r4,lr} + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08063D58 @ =gFieldObjectPriorities_08376070 + adds r2, r1, r2 + ldrb r2, [r2] + movs r3, 0x42 + adds r3, r0 + mov r12, r3 + movs r3, 0x3F + ands r3, r2 + mov r2, r12 + ldrb r4, [r2] + movs r2, 0x40 + negs r2, r2 + ands r2, r4 + orrs r2, r3 + mov r3, r12 + strb r2, [r3] + ldr r2, _08063D5C @ =gFieldObjectPriorities_08376060 + adds r1, r2 + movs r3, 0x3 + ldrb r2, [r1] + ands r2, r3 + lsls r2, 2 + ldrb r3, [r0, 0x5] + movs r1, 0xD + negs r1, r1 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x5] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08063D58: .4byte gFieldObjectPriorities_08376070 +_08063D5C: .4byte gFieldObjectPriorities_08376060 + thumb_func_end InitObjectPriorityByZCoord + + thumb_func_start ZCoordToPriority +ZCoordToPriority: @ 8063D60 + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08063D6C @ =gFieldObjectPriorities_08376060 + adds r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08063D6C: .4byte gFieldObjectPriorities_08376060 + thumb_func_end ZCoordToPriority + + thumb_func_start FieldObjectUpdateZCoord +FieldObjectUpdateZCoord: @ 8063D70 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x10 + ldrsh r0, [r4, r1] + movs r2, 0x12 + ldrsh r1, [r4, r2] + bl MapGridGetZCoordAt + lsls r0, 24 + lsrs r5, r0, 24 + movs r1, 0x14 + ldrsh r0, [r4, r1] + movs r2, 0x16 + ldrsh r1, [r4, r2] + bl MapGridGetZCoordAt + lsls r0, 24 + lsrs r0, 24 + cmp r5, 0xF + beq _08063DBE + cmp r0, 0xF + beq _08063DBE + movs r3, 0xF + adds r0, r5, 0 + ands r0, r3 + ldrb r1, [r4, 0xB] + movs r2, 0x10 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, 0xB] + cmp r5, 0 + beq _08063DBE + cmp r5, 0xF + beq _08063DBE + lsls r0, r5, 4 + ands r2, r3 + orrs r2, r0 + strb r2, [r4, 0xB] +_08063DBE: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end FieldObjectUpdateZCoord + + thumb_func_start SetObjectSubpriorityByZCoord +SetObjectSubpriorityByZCoord: @ 8063DC4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + lsls r2, 24 + lsrs r2, 24 + adds r3, r1, 0 + adds r3, 0x29 + movs r5, 0 + ldrsb r5, [r3, r5] + ldrh r4, [r1, 0x22] + ldr r3, _08063E04 @ =gSpriteCoordOffsetY + subs r4, r5 + ldrh r3, [r3] + adds r4, r3 + adds r4, 0x8 + movs r3, 0xFF + ands r4, r3 + lsrs r4, 4 + movs r3, 0x10 + subs r3, r4 + lsls r3, 17 + ldr r4, _08063E08 @ =gUnknown_08376050 + adds r0, r4 + lsrs r3, 16 + ldrb r0, [r0] + adds r3, r0 + adds r2, r3 + adds r1, 0x43 + strb r2, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08063E04: .4byte gSpriteCoordOffsetY +_08063E08: .4byte gUnknown_08376050 + thumb_func_end SetObjectSubpriorityByZCoord + + thumb_func_start FieldObjectUpdateSubpriority +FieldObjectUpdateSubpriority: @ 8063E0C + push {lr} + adds r2, r0, 0 + ldrb r0, [r2, 0x3] + lsls r0, 29 + cmp r0, 0 + blt _08063E22 + ldrb r0, [r2, 0xB] + lsrs r0, 4 + movs r2, 0x1 + bl SetObjectSubpriorityByZCoord +_08063E22: + pop {r0} + bx r0 + thumb_func_end FieldObjectUpdateSubpriority + + thumb_func_start AreZCoordsCompatible +AreZCoordsCompatible: @ 8063E28 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r0, 0 + beq _08063E3E + cmp r1, 0 + beq _08063E3E + cmp r0, r1 + bne _08063E42 +_08063E3E: + movs r0, 0x1 + b _08063E44 +_08063E42: + movs r0, 0 +_08063E44: + pop {r1} + bx r1 + thumb_func_end AreZCoordsCompatible + + thumb_func_start GroundEffect_SpawnOnTallGrass +GroundEffect_SpawnOnTallGrass: @ 8063E48 + push {lr} + ldr r3, _08063E8C @ =gUnknown_0202FF84 + movs r2, 0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, 0x12 + ldrsh r1, [r0, r2] + str r1, [r3, 0x4] + ldrb r1, [r0, 0xB] + lsrs r1, 4 + str r1, [r3, 0x8] + movs r1, 0x2 + str r1, [r3, 0xC] + ldrb r1, [r0, 0x8] + lsls r1, 8 + ldrb r2, [r0, 0x9] + orrs r1, r2 + str r1, [r3, 0x10] + ldrb r0, [r0, 0xA] + str r0, [r3, 0x14] + ldr r1, _08063E90 @ =gSaveBlock1 + ldrb r0, [r1, 0x5] + lsls r0, 8 + ldrb r1, [r1, 0x4] + orrs r0, r1 + str r0, [r3, 0x18] + movs r0, 0x1 + str r0, [r3, 0x1C] + movs r0, 0x4 + bl FieldEffectStart + pop {r0} + bx r0 + .align 2, 0 +_08063E8C: .4byte gUnknown_0202FF84 +_08063E90: .4byte gSaveBlock1 + thumb_func_end GroundEffect_SpawnOnTallGrass + + thumb_func_start sub_8063E94 +sub_8063E94: @ 8063E94 + push {lr} + ldr r3, _08063ED8 @ =gUnknown_0202FF84 + movs r2, 0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, 0x12 + ldrsh r1, [r0, r2] + str r1, [r3, 0x4] + ldrb r1, [r0, 0xB] + lsrs r1, 4 + str r1, [r3, 0x8] + movs r1, 0x2 + str r1, [r3, 0xC] + ldrb r1, [r0, 0x8] + lsls r1, 8 + ldrb r2, [r0, 0x9] + orrs r1, r2 + str r1, [r3, 0x10] + ldrb r0, [r0, 0xA] + str r0, [r3, 0x14] + ldr r1, _08063EDC @ =gSaveBlock1 + ldrb r0, [r1, 0x5] + lsls r0, 8 + ldrb r1, [r1, 0x4] + orrs r0, r1 + str r0, [r3, 0x18] + movs r0, 0 + str r0, [r3, 0x1C] + movs r0, 0x4 + bl FieldEffectStart + pop {r0} + bx r0 + .align 2, 0 +_08063ED8: .4byte gUnknown_0202FF84 +_08063EDC: .4byte gSaveBlock1 + thumb_func_end sub_8063E94 + + thumb_func_start sub_8063EE0 +sub_8063EE0: @ 8063EE0 + push {lr} + ldr r3, _08063F24 @ =gUnknown_0202FF84 + movs r2, 0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, 0x12 + ldrsh r1, [r0, r2] + str r1, [r3, 0x4] + ldrb r1, [r0, 0xB] + lsrs r1, 4 + str r1, [r3, 0x8] + movs r1, 0x2 + str r1, [r3, 0xC] + ldrb r1, [r0, 0x8] + lsls r1, 8 + ldrb r2, [r0, 0x9] + orrs r1, r2 + str r1, [r3, 0x10] + ldrb r0, [r0, 0xA] + str r0, [r3, 0x14] + ldr r1, _08063F28 @ =gSaveBlock1 + ldrb r0, [r1, 0x5] + lsls r0, 8 + ldrb r1, [r1, 0x4] + orrs r0, r1 + str r0, [r3, 0x18] + movs r0, 0x1 + str r0, [r3, 0x1C] + movs r0, 0x11 + bl FieldEffectStart + pop {r0} + bx r0 + .align 2, 0 +_08063F24: .4byte gUnknown_0202FF84 +_08063F28: .4byte gSaveBlock1 + thumb_func_end sub_8063EE0 + + thumb_func_start sub_8063F2C +sub_8063F2C: @ 8063F2C + push {lr} + ldr r3, _08063F70 @ =gUnknown_0202FF84 + movs r2, 0x10 + ldrsh r1, [r0, r2] + str r1, [r3] + movs r2, 0x12 + ldrsh r1, [r0, r2] + str r1, [r3, 0x4] + ldrb r1, [r0, 0xB] + lsrs r1, 4 + str r1, [r3, 0x8] + movs r1, 0x2 + str r1, [r3, 0xC] + ldrb r1, [r0, 0x8] + lsls r1, 8 + ldrb r2, [r0, 0x9] + orrs r1, r2 + str r1, [r3, 0x10] + ldrb r0, [r0, 0xA] + str r0, [r3, 0x14] + ldr r1, _08063F74 @ =gSaveBlock1 + ldrb r0, [r1, 0x5] + lsls r0, 8 + ldrb r1, [r1, 0x4] + orrs r0, r1 + str r0, [r3, 0x18] + movs r0, 0 + str r0, [r3, 0x1C] + movs r0, 0x11 + bl FieldEffectStart + pop {r0} + bx r0 + .align 2, 0 +_08063F70: .4byte gUnknown_0202FF84 +_08063F74: .4byte gSaveBlock1 + thumb_func_end sub_8063F2C + + thumb_func_start GroundEffect_WaterReflection +GroundEffect_WaterReflection: @ 8063F78 + push {lr} + movs r2, 0 + bl SetUpReflection + pop {r0} + bx r0 + thumb_func_end GroundEffect_WaterReflection + + thumb_func_start GroundEffect_IceReflection +GroundEffect_IceReflection: @ 8063F84 + push {lr} + movs r2, 0x1 + bl SetUpReflection + pop {r0} + bx r0 + thumb_func_end GroundEffect_IceReflection + + thumb_func_start GroundEffect_FlowingWater +GroundEffect_FlowingWater: @ 8063F90 + push {lr} + adds r1, r0, 0 + movs r0, 0x22 + bl oe_exec_and_other_stuff + pop {r0} + bx r0 + thumb_func_end GroundEffect_FlowingWater + + thumb_func_start sub_8063FA0 +sub_8063FA0: @ 8063FA0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x5] + bl GetFieldObjectGraphicsInfo + ldr r1, _08063FC8 @ =gUnknown_08376080 + ldrb r0, [r0, 0xD] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0 + bl _call_via_r3 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08063FC8: .4byte gUnknown_08376080 + thumb_func_end sub_8063FA0 + + thumb_func_start sub_8063FCC +sub_8063FCC: @ 8063FCC + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4, 0x5] + bl GetFieldObjectGraphicsInfo + ldr r1, _08063FF4 @ =gUnknown_08376080 + ldrb r0, [r0, 0xD] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + movs r2, 0x1 + bl _call_via_r3 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08063FF4: .4byte gUnknown_08376080 + thumb_func_end sub_8063FCC + + thumb_func_start nullsub_50 +nullsub_50: @ 8063FF8 + bx lr + thumb_func_end nullsub_50 + + thumb_func_start DoTracksGroundEffect_Footprints +DoTracksGroundEffect_Footprints: @ 8063FFC + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + lsls r4, r2, 24 + lsrs r4, 24 + ldr r1, _08064044 @ =gSandFootprints_FieldEffectData + mov r0, sp + movs r2, 0x4 + bl memcpy + ldr r1, _08064048 @ =gUnknown_0202FF84 + movs r2, 0x14 + ldrsh r0, [r5, r2] + str r0, [r1] + movs r2, 0x16 + ldrsh r0, [r5, r2] + str r0, [r1, 0x4] + movs r0, 0x95 + str r0, [r1, 0x8] + movs r0, 0x2 + str r0, [r1, 0xC] + ldrb r0, [r5, 0x18] + lsls r0, 28 + lsrs r0, 28 + str r0, [r1, 0x10] + lsls r4, 1 + mov r1, sp + adds r0, r1, r4 + ldrb r0, [r0] + bl FieldEffectStart + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08064044: .4byte gSandFootprints_FieldEffectData +_08064048: .4byte gUnknown_0202FF84 + thumb_func_end DoTracksGroundEffect_Footprints + + thumb_func_start DoTracksGroundEffect_BikeTireTracks +DoTracksGroundEffect_BikeTireTracks: @ 806404C + push {r4,lr} + adds r4, r0, 0 + ldr r1, [r4, 0x10] + ldr r0, [r4, 0x14] + cmp r1, r0 + beq _0806408E + ldr r2, _08064094 @ =gUnknown_0202FF84 + movs r1, 0x14 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, 0x16 + ldrsh r0, [r4, r1] + str r0, [r2, 0x4] + movs r0, 0x95 + str r0, [r2, 0x8] + movs r0, 0x2 + str r0, [r2, 0xC] + ldr r3, _08064098 @ =gBikeTireTracks_Transitions + ldrb r1, [r4, 0x18] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + adds r0, 0x20 + ldrb r0, [r0] + lsls r0, 2 + subs r0, 0x5 + adds r1, r0 + adds r1, r3 + ldrb r0, [r1] + str r0, [r2, 0x10] + movs r0, 0x23 + bl FieldEffectStart +_0806408E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064094: .4byte gUnknown_0202FF84 +_08064098: .4byte gBikeTireTracks_Transitions + thumb_func_end DoTracksGroundEffect_BikeTireTracks + + thumb_func_start GroundEffect_Ripple +GroundEffect_Ripple: @ 806409C + push {lr} + bl DoRippleFieldEffect + pop {r0} + bx r0 + thumb_func_end GroundEffect_Ripple + + thumb_func_start GroundEffect_StepOnPuddle +GroundEffect_StepOnPuddle: @ 80640A8 + push {lr} + adds r1, r0, 0 + movs r0, 0xF + bl oe_exec_and_other_stuff + pop {r0} + bx r0 + thumb_func_end GroundEffect_StepOnPuddle + + thumb_func_start GroundEffect_SandPile +GroundEffect_SandPile: @ 80640B8 + push {lr} + adds r1, r0, 0 + movs r0, 0x27 + bl oe_exec_and_other_stuff + pop {r0} + bx r0 + thumb_func_end GroundEffect_SandPile + + thumb_func_start GroundEffect_JumpOnTallGrass +GroundEffect_JumpOnTallGrass: @ 80640C8 + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r6, r1, 0 + ldr r1, _0806411C @ =gUnknown_0202FF84 + movs r2, 0x10 + ldrsh r0, [r5, r2] + str r0, [r1] + movs r4, 0x12 + ldrsh r0, [r5, r4] + str r0, [r1, 0x4] + ldrb r0, [r5, 0xB] + lsrs r0, 4 + str r0, [r1, 0x8] + movs r0, 0x2 + str r0, [r1, 0xC] + movs r0, 0xC + bl FieldEffectStart + ldrb r0, [r5, 0x8] + ldrb r1, [r5, 0x9] + ldrb r2, [r5, 0xA] + movs r7, 0x10 + ldrsh r3, [r5, r7] + movs r7, 0x12 + ldrsh r4, [r5, r7] + str r4, [sp] + bl sub_8126FF0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + bne _08064112 + adds r0, r5, 0 + adds r1, r6, 0 + bl GroundEffect_SpawnOnTallGrass +_08064112: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0806411C: .4byte gUnknown_0202FF84 + thumb_func_end GroundEffect_JumpOnTallGrass + + thumb_func_start GroundEffect_JumpOnLongGrass +GroundEffect_JumpOnLongGrass: @ 8064120 + push {lr} + ldr r2, _08064144 @ =gUnknown_0202FF84 + movs r3, 0x10 + ldrsh r1, [r0, r3] + str r1, [r2] + movs r3, 0x12 + ldrsh r1, [r0, r3] + str r1, [r2, 0x4] + ldrb r0, [r0, 0xB] + lsrs r0, 4 + str r0, [r2, 0x8] + movs r0, 0x2 + str r0, [r2, 0xC] + movs r0, 0x12 + bl FieldEffectStart + pop {r0} + bx r0 + .align 2, 0 +_08064144: .4byte gUnknown_0202FF84 + thumb_func_end GroundEffect_JumpOnLongGrass + + thumb_func_start GroundEffect_JumpOnShallowWater +GroundEffect_JumpOnShallowWater: @ 8064148 + push {r4,lr} + ldr r3, _08064174 @ =gUnknown_0202FF84 + movs r4, 0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, 0x12 + ldrsh r2, [r0, r4] + str r2, [r3, 0x4] + ldrb r0, [r0, 0xB] + lsrs r0, 4 + str r0, [r3, 0x8] + ldrb r0, [r1, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r3, 0xC] + movs r0, 0x10 + bl FieldEffectStart + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08064174: .4byte gUnknown_0202FF84 + thumb_func_end GroundEffect_JumpOnShallowWater + + thumb_func_start GroundEffect_JumpOnWater +GroundEffect_JumpOnWater: @ 8064178 + push {r4,lr} + ldr r3, _080641A4 @ =gUnknown_0202FF84 + movs r4, 0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, 0x12 + ldrsh r2, [r0, r4] + str r2, [r3, 0x4] + ldrb r0, [r0, 0xB] + lsrs r0, 4 + str r0, [r3, 0x8] + ldrb r0, [r1, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r3, 0xC] + movs r0, 0xE + bl FieldEffectStart + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080641A4: .4byte gUnknown_0202FF84 + thumb_func_end GroundEffect_JumpOnWater + + thumb_func_start GroundEffect_JumpLandingDust +GroundEffect_JumpLandingDust: @ 80641A8 + push {r4,lr} + ldr r3, _080641D4 @ =gUnknown_0202FF84 + movs r4, 0x10 + ldrsh r2, [r0, r4] + str r2, [r3] + movs r4, 0x12 + ldrsh r2, [r0, r4] + str r2, [r3, 0x4] + ldrb r0, [r0, 0xB] + lsrs r0, 4 + str r0, [r3, 0x8] + ldrb r0, [r1, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r3, 0xC] + movs r0, 0xA + bl FieldEffectStart + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080641D4: .4byte gUnknown_0202FF84 + thumb_func_end GroundEffect_JumpLandingDust + + thumb_func_start GroundEffect_ShortGrass +GroundEffect_ShortGrass: @ 80641D8 + push {lr} + adds r1, r0, 0 + movs r0, 0x29 + bl oe_exec_and_other_stuff + pop {r0} + bx r0 + thumb_func_end GroundEffect_ShortGrass + + thumb_func_start GroundEffect_HotSprings +GroundEffect_HotSprings: @ 80641E8 + push {lr} + adds r1, r0, 0 + movs r0, 0x2A + bl oe_exec_and_other_stuff + pop {r0} + bx r0 + thumb_func_end GroundEffect_HotSprings + + thumb_func_start GroundEffect_Seaweed +GroundEffect_Seaweed: @ 80641F8 + push {lr} + ldr r2, _08064214 @ =gUnknown_0202FF84 + movs r3, 0x10 + ldrsh r1, [r0, r3] + str r1, [r2] + movs r1, 0x12 + ldrsh r0, [r0, r1] + str r0, [r2, 0x4] + movs r0, 0x35 + bl FieldEffectStart + pop {r0} + bx r0 + .align 2, 0 +_08064214: .4byte gUnknown_0202FF84 + thumb_func_end GroundEffect_Seaweed + + thumb_func_start sub_8064218 +sub_8064218: @ 8064218 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + movs r4, 0 + ldr r0, _08064258 @ =gUnknown_083760A0 + mov r8, r0 +_0806422A: + movs r0, 0x1 + ands r0, r5 + cmp r0, 0 + beq _08064240 + lsls r0, r4, 2 + add r0, r8 + ldr r2, [r0] + adds r0, r7, 0 + adds r1, r6, 0 + bl _call_via_r2 +_08064240: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + lsrs r5, 1 + cmp r4, 0x13 + bls _0806422A + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08064258: .4byte gUnknown_083760A0 + thumb_func_end sub_8064218 + + thumb_func_start filters_out_some_ground_effects +filters_out_some_ground_effects: @ 806425C + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + ldrb r0, [r2] + lsls r0, 27 + cmp r0, 0 + bge _0806428A + ldrb r1, [r2, 0x2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + adds r1, 0x8 + ands r0, r1 + subs r1, 0x18 + ands r0, r1 + strb r0, [r2, 0x2] + ldr r0, [r3] + ldr r1, _08064290 @ =0xfff9f7bd + ands r0, r1 + str r0, [r3] +_0806428A: + pop {r0} + bx r0 + .align 2, 0 +_08064290: .4byte 0xfff9f7bd + thumb_func_end filters_out_some_ground_effects + + thumb_func_start FilterOutStepOnPuddleGroundEffectIfJumping +FilterOutStepOnPuddleGroundEffectIfJumping: @ 8064294 + push {lr} + adds r2, r1, 0 + ldrb r0, [r0] + lsls r0, 26 + cmp r0, 0 + bge _080642A8 + ldr r0, [r2] + ldr r1, _080642AC @ =0xfffffbff + ands r0, r1 + str r0, [r2] +_080642A8: + pop {r0} + bx r0 + .align 2, 0 +_080642AC: .4byte 0xfffffbff + thumb_func_end FilterOutStepOnPuddleGroundEffectIfJumping + + thumb_func_start DoGroundEffects_OnSpawn +DoGroundEffects_OnSpawn: @ 80642B0 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + lsls r0, 29 + cmp r0, 0 + bge _080642F4 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + bl FieldObjectUpdateZCoordAndPriority + adds r0, r4, 0 + mov r1, sp + bl GetAllGroundEffectFlags_OnSpawn + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetSpriteOamTableForLongGrass + ldr r2, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064218 + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r4] +_080642F4: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end DoGroundEffects_OnSpawn + + thumb_func_start DoGroundEffects_OnBeginStep +DoGroundEffects_OnBeginStep: @ 80642FC + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + lsls r0, 29 + cmp r0, 0 + bge _08064348 + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + bl FieldObjectUpdateZCoordAndPriority + adds r0, r4, 0 + mov r1, sp + bl GetAllGroundEffectFlags_OnBeginStep + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetSpriteOamTableForLongGrass + adds r0, r4, 0 + mov r1, sp + bl filters_out_some_ground_effects + ldr r2, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064218 + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + movs r1, 0x11 + negs r1, r1 + ands r0, r1 + strb r0, [r4] +_08064348: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end DoGroundEffects_OnBeginStep + + thumb_func_start DoGroundEffects_OnFinishStep +DoGroundEffects_OnFinishStep: @ 8064350 + push {r4,r5,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + lsls r0, 28 + cmp r0, 0 + bge _0806439C + movs r0, 0 + str r0, [sp] + adds r0, r4, 0 + bl FieldObjectUpdateZCoordAndPriority + adds r0, r4, 0 + mov r1, sp + bl GetAllGroundEffectFlags_OnFinishStep + adds r0, r4, 0 + adds r1, r5, 0 + bl FieldObjectSetSpriteOamTableForLongGrass + adds r0, r4, 0 + mov r1, sp + bl FilterOutStepOnPuddleGroundEffectIfJumping + ldr r2, [sp] + adds r0, r4, 0 + adds r1, r5, 0 + bl sub_8064218 + ldrb r1, [r4] + movs r0, 0x9 + negs r0, r0 + ands r0, r1 + movs r1, 0x21 + negs r1, r1 + ands r0, r1 + strb r0, [r4] +_0806439C: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end DoGroundEffects_OnFinishStep + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/rom4.s b/asm/field_map_obj.s index 6509a591d..58533b91e 100644 --- a/asm/rom4.s +++ b/asm/field_map_obj.s @@ -1,10888 +1,11 @@ .include "constants/gba_constants.s" + .include "constants/species_constants.s" .include "asm/macros.s" .syntax unified .text - thumb_func_start mapconnection_get_mapheader -mapconnection_get_mapheader: @ 8055F90 - push {lr} - ldrb r2, [r0, 0x8] - ldrb r1, [r0, 0x9] - adds r0, r2, 0 - bl get_mapheader_by_bank_and_number - pop {r1} - bx r1 - thumb_func_end mapconnection_get_mapheader - - thumb_func_start not_trainer_hill_battle_pyramid -not_trainer_hill_battle_pyramid: @ 8055FA0 - push {r4,lr} - ldr r4, _08055FBC @ =gMapHeader - adds r0, r4, 0 - bl mapheader_copy_mapdata_with_padding - ldr r0, [r4, 0x4] - bl sub_80BB970 - bl mapheader_run_script_with_tag_x1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08055FBC: .4byte gMapHeader - thumb_func_end not_trainer_hill_battle_pyramid - - thumb_func_start sub_8055FC0 -sub_8055FC0: @ 8055FC0 - push {r4,lr} - ldr r4, _08055FF0 @ =gMapHeader - adds r0, r4, 0 - bl mapheader_copy_mapdata_with_padding - movs r0, 0 - bl sub_80BBCCC - ldr r0, [r4, 0x4] - bl sub_80BB970 - bl sub_8056670 - bl mapheader_run_script_with_tag_x1 - ldr r1, _08055FF4 @ =gUnknown_03004870 - ldr r0, [r1] - ldr r1, [r1, 0x4] - bl UpdateTVScreensOnMap - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08055FF0: .4byte gMapHeader -_08055FF4: .4byte gUnknown_03004870 - thumb_func_end sub_8055FC0 - - thumb_func_start mapheader_copy_mapdata_with_padding -mapheader_copy_mapdata_with_padding: @ 8055FF8 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r5, [r6] - ldr r0, _08056044 @ =0x03ff03ff - str r0, [sp] - ldr r4, _08056048 @ =gUnknown_02029828 - ldr r2, _0805604C @ =0x01001400 - mov r0, sp - adds r1, r4, 0 - bl CpuFastSet - ldr r2, _08056050 @ =gUnknown_03004870 - str r4, [r2, 0x8] - ldr r1, [r5] - adds r1, 0xF - str r1, [r2] - ldr r0, [r5, 0x4] - adds r0, 0xE - str r0, [r2, 0x4] - muls r1, r0 - movs r0, 0xA0 - lsls r0, 6 - cmp r1, r0 - bgt _0805603A - ldr r0, [r5, 0xC] - ldrh r1, [r5] - ldrh r2, [r5, 0x4] - bl map_copy_with_padding - adds r0, r6, 0 - bl sub_80560AC -_0805603A: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08056044: .4byte 0x03ff03ff -_08056048: .4byte gUnknown_02029828 -_0805604C: .4byte 0x01001400 -_08056050: .4byte gUnknown_03004870 - thumb_func_end mapheader_copy_mapdata_with_padding - - thumb_func_start map_copy_with_padding -map_copy_with_padding: @ 8056054 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r2, 16 - lsrs r2, 16 - ldr r0, _080560A8 @ =gUnknown_03004870 - ldr r4, [r0, 0x8] - ldr r1, [r0] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 1 - adds r0, 0xE - adds r4, r0 - cmp r2, 0 - beq _0805609C - mov r0, r8 - lsls r6, r0, 1 - adds r5, r2, 0 - movs r0, 0x1E - adds r0, r6 - mov r9, r0 -_08056088: - adds r0, r7, 0 - adds r1, r4, 0 - mov r2, r8 - bl CpuSet - add r4, r9 - adds r7, r6 - subs r5, 0x1 - cmp r5, 0 - bne _08056088 -_0805609C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080560A8: .4byte gUnknown_03004870 - thumb_func_end map_copy_with_padding - - thumb_func_start sub_80560AC -sub_80560AC: @ 80560AC - push {r4-r7,lr} - adds r6, r0, 0 - ldr r0, [r6, 0xC] - ldr r1, [r0] - ldr r5, [r0, 0x4] - ldr r2, _080560E0 @ =gUnknown_0202E850 - ldr r0, _080560E4 @ =gUnknown_08308E28 - ldr r0, [r0] - str r0, [r2] - cmp r1, 0 - ble _0805612C - adds r4, r2, 0 - adds r7, r1, 0 -_080560C6: - adds r0, r5, 0 - bl mapconnection_get_mapheader - adds r1, r0, 0 - ldr r2, [r5, 0x4] - ldrb r0, [r5] - cmp r0, 0x2 - beq _080560FE - cmp r0, 0x2 - bgt _080560E8 - cmp r0, 0x1 - beq _080560F2 - b _08056124 - .align 2, 0 -_080560E0: .4byte gUnknown_0202E850 -_080560E4: .4byte gUnknown_08308E28 -_080560E8: - cmp r0, 0x3 - beq _0805610A - cmp r0, 0x4 - beq _08056116 - b _08056124 -_080560F2: - adds r0, r6, 0 - bl sub_8056198 - ldrb r0, [r4] - movs r1, 0x1 - b _08056120 -_080560FE: - adds r0, r6, 0 - bl sub_8056200 - ldrb r0, [r4] - movs r1, 0x2 - b _08056120 -_0805610A: - adds r0, r6, 0 - bl sub_8056260 - ldrb r0, [r4] - movs r1, 0x4 - b _08056120 -_08056116: - adds r0, r6, 0 - bl sub_80562C0 - ldrb r0, [r4] - movs r1, 0x8 -_08056120: - orrs r0, r1 - strb r0, [r4] -_08056124: - subs r7, 0x1 - adds r5, 0xC - cmp r7, 0 - bne _080560C6 -_0805612C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80560AC - - thumb_func_start sub_8056134 -sub_8056134: @ 8056134 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, [sp, 0x18] - ldr r4, [r2] - ldr r7, [r4] - adds r2, r7, 0 - muls r2, r5 - adds r2, r3 - lsls r2, 1 - ldr r3, [r4, 0xC] - adds r6, r3, r2 - ldr r3, _08056190 @ =gUnknown_03004870 - ldr r2, [r3] - muls r1, r2 - adds r1, r0 - lsls r1, 1 - ldr r0, [r3, 0x8] - adds r5, r0, r1 - ldr r0, [sp, 0x20] - cmp r0, 0 - ble _08056186 - adds r4, r0, 0 - ldr r3, _08056194 @ =0x001fffff - mov r8, r3 -_08056166: - adds r0, r6, 0 - adds r1, r5, 0 - ldr r2, [sp, 0x1C] - mov r3, r8 - ands r2, r3 - bl CpuSet - ldr r0, _08056190 @ =gUnknown_03004870 - ldr r0, [r0] - lsls r0, 1 - adds r5, r0 - lsls r0, r7, 1 - adds r6, r0 - subs r4, 0x1 - cmp r4, 0 - bne _08056166 -_08056186: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08056190: .4byte gUnknown_03004870 -_08056194: .4byte 0x001fffff - thumb_func_end sub_8056134 - - thumb_func_start sub_8056198 -sub_8056198: @ 8056198 - push {r4-r7,lr} - sub sp, 0xC - adds r3, r0, 0 - adds r5, r1, 0 - cmp r5, 0 - beq _080561F2 - ldr r0, [r5] - ldr r4, [r0] - adds r2, 0x7 - ldr r0, [r3] - ldr r0, [r0, 0x4] - adds r7, r0, 0x7 - cmp r2, 0 - bge _080561CC - negs r6, r2 - adds r2, r4 - ldr r0, _080561C8 @ =gUnknown_03004870 - ldr r3, [r0] - cmp r2, r3 - bge _080561C2 - adds r3, r2, 0 -_080561C2: - movs r2, 0 - b _080561DC - .align 2, 0 -_080561C8: .4byte gUnknown_03004870 -_080561CC: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _080561FC @ =gUnknown_03004870 - ldr r1, [r1] - subs r3, r1, r2 - cmp r0, r1 - bge _080561DC - adds r3, r4, 0 -_080561DC: - movs r0, 0 - str r0, [sp] - str r3, [sp, 0x4] - movs r0, 0x7 - str r0, [sp, 0x8] - adds r0, r2, 0 - adds r1, r7, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8056134 -_080561F2: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080561FC: .4byte gUnknown_03004870 - thumb_func_end sub_8056198 - - thumb_func_start sub_8056200 -sub_8056200: @ 8056200 - push {r4-r7,lr} - sub sp, 0xC - adds r5, r1, 0 - cmp r5, 0 - beq _08056254 - ldr r0, [r5] - ldr r4, [r0] - ldr r0, [r0, 0x4] - adds r2, 0x7 - subs r7, r0, 0x7 - cmp r2, 0 - bge _08056230 - negs r6, r2 - adds r2, r4 - ldr r0, _0805622C @ =gUnknown_03004870 - ldr r3, [r0] - cmp r2, r3 - bge _08056226 - adds r3, r2, 0 -_08056226: - movs r2, 0 - b _08056240 - .align 2, 0 -_0805622C: .4byte gUnknown_03004870 -_08056230: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _0805625C @ =gUnknown_03004870 - ldr r1, [r1] - subs r3, r1, r2 - cmp r0, r1 - bge _08056240 - adds r3, r4, 0 -_08056240: - str r7, [sp] - str r3, [sp, 0x4] - movs r0, 0x7 - str r0, [sp, 0x8] - adds r0, r2, 0 - movs r1, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8056134 -_08056254: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805625C: .4byte gUnknown_03004870 - thumb_func_end sub_8056200 - - thumb_func_start sub_8056260 -sub_8056260: @ 8056260 - push {r4-r7,lr} - sub sp, 0xC - adds r5, r1, 0 - cmp r5, 0 - beq _080562B4 - ldr r0, [r5] - ldr r1, [r0] - ldr r4, [r0, 0x4] - adds r2, 0x7 - subs r7, r1, 0x7 - cmp r2, 0 - bge _08056290 - negs r6, r2 - adds r1, r2, r4 - ldr r0, _0805628C @ =gUnknown_03004870 - ldr r3, [r0, 0x4] - cmp r1, r3 - bge _08056286 - adds r3, r1, 0 -_08056286: - movs r2, 0 - b _080562A0 - .align 2, 0 -_0805628C: .4byte gUnknown_03004870 -_08056290: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _080562BC @ =gUnknown_03004870 - ldr r1, [r1, 0x4] - subs r3, r1, r2 - cmp r0, r1 - bge _080562A0 - adds r3, r4, 0 -_080562A0: - str r6, [sp] - movs r0, 0x7 - str r0, [sp, 0x4] - str r3, [sp, 0x8] - movs r0, 0 - adds r1, r2, 0 - adds r2, r5, 0 - adds r3, r7, 0 - bl sub_8056134 -_080562B4: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080562BC: .4byte gUnknown_03004870 - thumb_func_end sub_8056260 - - thumb_func_start sub_80562C0 -sub_80562C0: @ 80562C0 - push {r4-r7,lr} - sub sp, 0xC - adds r3, r0, 0 - adds r5, r1, 0 - cmp r5, 0 - beq _08056318 - ldr r0, [r5] - ldr r4, [r0, 0x4] - ldr r0, [r3] - ldr r0, [r0] - adds r7, r0, 0x7 - adds r2, 0x7 - cmp r2, 0 - bge _080562F4 - negs r6, r2 - adds r1, r2, r4 - ldr r0, _080562F0 @ =gUnknown_03004870 - ldr r3, [r0, 0x4] - cmp r1, r3 - bge _080562EA - adds r3, r1, 0 -_080562EA: - movs r2, 0 - b _08056304 - .align 2, 0 -_080562F0: .4byte gUnknown_03004870 -_080562F4: - movs r6, 0 - adds r0, r2, r4 - ldr r1, _08056320 @ =gUnknown_03004870 - ldr r1, [r1, 0x4] - subs r3, r1, r2 - cmp r0, r1 - bge _08056304 - adds r3, r4, 0 -_08056304: - str r6, [sp] - movs r0, 0x8 - str r0, [sp, 0x4] - str r3, [sp, 0x8] - adds r0, r7, 0 - adds r1, r2, 0 - adds r2, r5, 0 - movs r3, 0 - bl sub_8056134 -_08056318: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08056320: .4byte gUnknown_03004870 - thumb_func_end sub_80562C0 - - thumb_func_start MapGridGetZCoordAt -MapGridGetZCoordAt: @ 8056324 - push {r4,lr} - adds r2, r0, 0 - adds r4, r1, 0 - cmp r2, 0 - blt _08056354 - ldr r1, _08056350 @ =gUnknown_03004870 - ldr r3, [r1] - cmp r2, r3 - bge _08056354 - cmp r4, 0 - blt _08056354 - ldr r0, [r1, 0x4] - cmp r4, r0 - bge _08056354 - adds r0, r3, 0 - muls r0, r4 - adds r0, r2, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _08056376 - .align 2, 0 -_08056350: .4byte gUnknown_03004870 -_08056354: - ldr r0, _08056380 @ =gMapHeader - ldr r3, [r0] - adds r1, r2, 0x1 - movs r2, 0x1 - ands r1, r2 - adds r0, r4, 0x1 - ands r0, r2 - lsls r0, 1 - adds r1, r0 - ldr r0, [r3, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r1, [r1] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r1, r0 -_08056376: - ldr r0, _08056384 @ =0x000003ff - cmp r1, r0 - beq _08056388 - lsrs r0, r1, 12 - b _0805638A - .align 2, 0 -_08056380: .4byte gMapHeader -_08056384: .4byte 0x000003ff -_08056388: - movs r0, 0 -_0805638A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MapGridGetZCoordAt - - thumb_func_start MapGridIsImpassableAt -MapGridIsImpassableAt: @ 8056390 - push {r4,lr} - adds r2, r0, 0 - adds r4, r1, 0 - cmp r2, 0 - blt _080563C0 - ldr r1, _080563BC @ =gUnknown_03004870 - ldr r3, [r1] - cmp r2, r3 - bge _080563C0 - cmp r4, 0 - blt _080563C0 - ldr r0, [r1, 0x4] - cmp r4, r0 - bge _080563C0 - adds r0, r3, 0 - muls r0, r4 - adds r0, r2, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - b _080563E2 - .align 2, 0 -_080563BC: .4byte gUnknown_03004870 -_080563C0: - ldr r0, _080563F4 @ =gMapHeader - ldr r3, [r0] - adds r1, r2, 0x1 - movs r2, 0x1 - ands r1, r2 - adds r0, r4, 0x1 - ands r0, r2 - lsls r0, 1 - adds r1, r0 - ldr r0, [r3, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r1, [r1] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r1, r0 -_080563E2: - ldr r0, _080563F8 @ =0x000003ff - cmp r1, r0 - beq _080563FC - movs r0, 0xC0 - lsls r0, 4 - ands r1, r0 - lsrs r0, r1, 10 - b _080563FE - .align 2, 0 -_080563F4: .4byte gMapHeader -_080563F8: .4byte 0x000003ff -_080563FC: - movs r0, 0x1 -_080563FE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MapGridIsImpassableAt - - thumb_func_start MapGridGetMetatileIdAt -MapGridGetMetatileIdAt: @ 8056404 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - cmp r5, 0 - blt _08056434 - ldr r1, _08056430 @ =gUnknown_03004870 - ldr r2, [r1] - cmp r5, r2 - bge _08056434 - cmp r6, 0 - blt _08056434 - ldr r0, [r1, 0x4] - cmp r6, r0 - bge _08056434 - adds r0, r2, 0 - muls r0, r6 - adds r0, r5, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r4, [r0] - b _08056458 - .align 2, 0 -_08056430: .4byte gUnknown_03004870 -_08056434: - ldr r0, _08056464 @ =gMapHeader - ldr r3, [r0] - adds r1, r5, 0x1 - movs r2, 0x1 - ands r1, r2 - adds r0, r6, 0x1 - ands r0, r2 - lsls r0, 1 - adds r1, r0 - ldr r0, [r3, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r1, [r1] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - adds r4, r0, 0 - orrs r4, r1 -_08056458: - ldr r0, _08056468 @ =0x000003ff - cmp r4, r0 - beq _0805646C - ands r4, r0 - adds r0, r4, 0 - b _08056490 - .align 2, 0 -_08056464: .4byte gMapHeader -_08056468: .4byte 0x000003ff -_0805646C: - ldr r0, _08056498 @ =gMapHeader - ldr r3, [r0] - adds r1, r5, 0x1 - movs r2, 0x1 - ands r1, r2 - adds r0, r6, 0x1 - ands r0, r2 - lsls r0, 1 - adds r1, r0 - ldr r0, [r3, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - movs r2, 0xC0 - lsls r2, 4 - adds r1, r2, 0 - orrs r0, r1 - ands r0, r4 -_08056490: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08056498: .4byte gMapHeader - thumb_func_end MapGridGetMetatileIdAt - - thumb_func_start MapGridGetMetatileBehaviorAt -MapGridGetMetatileBehaviorAt: @ 805649C - push {lr} - bl MapGridGetMetatileIdAt - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - adds r1, r0, 0 - movs r0, 0xFF - ands r0, r1 - pop {r1} - bx r1 - thumb_func_end MapGridGetMetatileBehaviorAt - - thumb_func_start MapGridGetMetatileLayerTypeAt -MapGridGetMetatileLayerTypeAt: @ 80564B4 - push {lr} - bl MapGridGetMetatileIdAt - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - adds r1, r0, 0 - movs r0, 0xF0 - lsls r0, 8 - ands r0, r1 - lsrs r0, 12 - pop {r1} - bx r1 - thumb_func_end MapGridGetMetatileLayerTypeAt - - thumb_func_start MapGridSetMetatileIdAt -MapGridSetMetatileIdAt: @ 80564D0 - push {r4,r5,lr} - adds r3, r0, 0 - lsls r2, 16 - lsrs r5, r2, 16 - cmp r3, 0 - blt _08056508 - ldr r2, _08056510 @ =gUnknown_03004870 - ldr r4, [r2] - cmp r3, r4 - bge _08056508 - cmp r1, 0 - blt _08056508 - ldr r0, [r2, 0x4] - cmp r1, r0 - bge _08056508 - muls r1, r4 - adds r1, r3, r1 - ldr r0, [r2, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - movs r2, 0xF0 - lsls r2, 8 - ands r2, r0 - ldr r0, _08056514 @ =0x00000fff - ands r0, r5 - orrs r2, r0 - strh r2, [r1] -_08056508: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08056510: .4byte gUnknown_03004870 -_08056514: .4byte 0x00000fff - thumb_func_end MapGridSetMetatileIdAt - - thumb_func_start MapGridSetMetatileEntryAt -MapGridSetMetatileEntryAt: @ 8056518 - push {r4,r5,lr} - adds r3, r0, 0 - lsls r2, 16 - lsrs r5, r2, 16 - cmp r3, 0 - blt _08056544 - ldr r2, _0805654C @ =gUnknown_03004870 - ldr r4, [r2] - cmp r3, r4 - bge _08056544 - cmp r1, 0 - blt _08056544 - ldr r0, [r2, 0x4] - cmp r1, r0 - bge _08056544 - adds r0, r4, 0 - muls r0, r1 - adds r0, r3, r0 - ldr r1, [r2, 0x8] - lsls r0, 1 - adds r0, r1 - strh r5, [r0] -_08056544: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805654C: .4byte gUnknown_03004870 - thumb_func_end MapGridSetMetatileEntryAt - - thumb_func_start GetBehaviorByMetatileId -GetBehaviorByMetatileId: @ 8056550 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - adds r3, r2, 0 - ldr r0, _0805656C @ =0x000001ff - cmp r2, r0 - bhi _08056574 - ldr r0, _08056570 @ =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x10] - ldr r1, [r0, 0x10] - lsls r0, r2, 1 - b _08056592 - .align 2, 0 -_0805656C: .4byte 0x000001ff -_08056570: .4byte gMapHeader -_08056574: - ldr r0, _08056580 @ =0x000003ff - cmp r2, r0 - bls _08056584 - movs r0, 0xFF - b _08056596 - .align 2, 0 -_08056580: .4byte 0x000003ff -_08056584: - ldr r0, _0805659C @ =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x14] - ldr r1, [r0, 0x10] - lsls r0, r3, 1 - adds r0, r1 - ldr r1, _080565A0 @ =0xfffffc00 -_08056592: - adds r0, r1 - ldrh r0, [r0] -_08056596: - pop {r1} - bx r1 - .align 2, 0 -_0805659C: .4byte gMapHeader -_080565A0: .4byte 0xfffffc00 - thumb_func_end GetBehaviorByMetatileId - - thumb_func_start save_serialize_map -save_serialize_map: @ 80565A4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r5, _0805660C @ =gSaveBlock1 + 0x34 - ldr r0, _08056610 @ =gUnknown_03004870 - ldr r0, [r0] - mov r8, r0 - adds r0, r5, 0 - subs r0, 0x34 - movs r1, 0 - ldrsh r6, [r0, r1] - movs r2, 0x2 - ldrsh r0, [r0, r2] - adds r1, r0, 0 - adds r1, 0xE - cmp r0, r1 - bge _080565FE - mov r12, r1 - ldr r1, _08056614 @ =gUnknown_02029828 - mov r9, r1 - lsls r7, r6, 1 -_080565D0: - adds r1, r6, 0 - adds r3, r1, 0 - adds r3, 0xF - adds r4, r0, 0x1 - cmp r1, r3 - bge _080565F8 - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - lsls r0, 1 - add r0, r9 - adds r2, r7, r0 - subs r1, r3, r1 -_080565EA: - ldrh r0, [r2] - strh r0, [r5] - adds r5, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _080565EA -_080565F8: - adds r0, r4, 0 - cmp r0, r12 - blt _080565D0 -_080565FE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805660C: .4byte gSaveBlock1 + 0x34 -_08056610: .4byte gUnknown_03004870 -_08056614: .4byte gUnknown_02029828 - thumb_func_end save_serialize_map - - thumb_func_start sub_8056618 -sub_8056618: @ 8056618 - push {r4,lr} - movs r2, 0 - movs r1, 0 - ldr r4, _0805663C @ =gSaveBlock1 + 0x34 - ldr r3, _08056640 @ =0x000001ff -_08056622: - lsls r0, r1, 1 - adds r0, r4 - ldrh r0, [r0] - orrs r2, r0 - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r3 - bls _08056622 - cmp r2, 0 - beq _08056644 - movs r0, 0 - b _08056646 - .align 2, 0 -_0805663C: .4byte gSaveBlock1 + 0x34 -_08056640: .4byte 0x000001ff -_08056644: - movs r0, 0x1 -_08056646: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8056618 - - thumb_func_start sav2_mapdata_clear -sav2_mapdata_clear: @ 805664C - push {lr} - sub sp, 0x4 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r1, _08056668 @ =gSaveBlock1 + 0x34 - ldr r2, _0805666C @ =0x01000100 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08056668: .4byte gSaveBlock1 + 0x34 -_0805666C: .4byte 0x01000100 - thumb_func_end sav2_mapdata_clear - - thumb_func_start sub_8056670 -sub_8056670: @ 8056670 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r5, _080566E4 @ =gSaveBlock1 + 0x34 - bl sub_8056618 - cmp r0, 0 - bne _080566D6 - ldr r0, _080566E8 @ =gUnknown_03004870 - ldr r0, [r0] - mov r8, r0 - adds r0, r5, 0 - subs r0, 0x34 - movs r1, 0 - ldrsh r6, [r0, r1] - movs r2, 0x2 - ldrsh r0, [r0, r2] - adds r1, r0, 0 - adds r1, 0xE - cmp r0, r1 - bge _080566D2 - mov r12, r1 - ldr r1, _080566EC @ =gUnknown_02029828 - mov r9, r1 - lsls r7, r6, 1 -_080566A4: - adds r1, r6, 0 - adds r3, r1, 0 - adds r3, 0xF - adds r4, r0, 0x1 - cmp r1, r3 - bge _080566CC - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - lsls r0, 1 - add r0, r9 - adds r2, r7, r0 - subs r1, r3, r1 -_080566BE: - ldrh r0, [r5] - strh r0, [r2] - adds r5, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bne _080566BE -_080566CC: - adds r0, r4, 0 - cmp r0, r12 - blt _080566A4 -_080566D2: - bl sav2_mapdata_clear -_080566D6: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080566E4: .4byte gSaveBlock1 + 0x34 -_080566E8: .4byte gUnknown_03004870 -_080566EC: .4byte gUnknown_02029828 - thumb_func_end sub_8056670 - - thumb_func_start sub_80566F0 -sub_80566F0: @ 80566F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - ldr r0, _08056734 @ =gSaveBlock1 + 0x34 - mov r10, r0 - ldr r0, _08056738 @ =gUnknown_03004870 - ldr r0, [r0] - str r0, [sp] - movs r3, 0 - mov r9, r3 - mov r8, r3 - mov r0, r10 - subs r0, 0x34 - movs r6, 0 - ldrsh r4, [r0, r6] - str r4, [sp, 0x4] - movs r3, 0x2 - ldrsh r5, [r0, r3] - movs r7, 0xF - movs r4, 0xE - mov r12, r4 - cmp r1, 0x2 - beq _08056746 - cmp r1, 0x2 - bgt _0805673C - cmp r1, 0x1 - beq _0805674E - b _08056766 - .align 2, 0 -_08056734: .4byte gSaveBlock1 + 0x34 -_08056738: .4byte gUnknown_03004870 -_0805673C: - cmp r2, 0x3 - beq _08056758 - cmp r2, 0x4 - beq _08056760 - b _08056766 -_08056746: - adds r5, 0x1 - movs r6, 0xD - mov r12, r6 - b _08056766 -_0805674E: - movs r0, 0x1 - mov r8, r0 - movs r1, 0xD - mov r12, r1 - b _08056766 -_08056758: - ldr r3, [sp, 0x4] - adds r3, 0x1 - str r3, [sp, 0x4] - b _08056764 -_08056760: - movs r4, 0x1 - mov r9, r4 -_08056764: - movs r7, 0xE -_08056766: - movs r1, 0 - cmp r1, r12 - bge _080567A8 -_0805676C: - adds r4, r1, 0x1 - cmp r7, 0 - beq _080567A2 - adds r0, r1, r5 - ldr r6, [sp] - adds r2, r6, 0 - muls r2, r0 - add r1, r8 - lsls r0, r1, 4 - subs r0, r1 - add r0, r9 - ldr r1, [sp, 0x4] - adds r2, r1, r2 - adds r3, r7, 0 - lsls r2, 1 - ldr r6, _080567BC @ =gUnknown_02029828 - adds r2, r6 - lsls r0, 1 - mov r6, r10 - adds r1, r0, r6 -_08056794: - ldrh r0, [r1] - strh r0, [r2] - adds r1, 0x2 - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bne _08056794 -_080567A2: - adds r1, r4, 0 - cmp r1, r12 - blt _0805676C -_080567A8: - bl sav2_mapdata_clear - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080567BC: .4byte gUnknown_02029828 - thumb_func_end sub_80566F0 - - thumb_func_start GetMapBorderIdAt -GetMapBorderIdAt: @ 80567C0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - cmp r4, 0 - blt _080567FC - ldr r1, _080567F4 @ =gUnknown_03004870 - ldr r2, [r1] - cmp r4, r2 - bge _080567FC - cmp r5, 0 - blt _080567FC - ldr r0, [r1, 0x4] - cmp r5, r0 - bge _080567FC - adds r0, r2, 0 - muls r0, r5 - adds r0, r4, r0 - ldr r1, [r1, 0x8] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _080567F8 @ =0x000003ff - cmp r1, r0 - beq _08056894 - b _08056824 - .align 2, 0 -_080567F4: .4byte gUnknown_03004870 -_080567F8: .4byte 0x000003ff -_080567FC: - ldr r0, _08056840 @ =gMapHeader - ldr r3, [r0] - adds r1, r4, 0x1 - movs r2, 0x1 - ands r1, r2 - adds r0, r5, 0x1 - ands r0, r2 - lsls r0, 1 - adds r1, r0 - ldr r0, [r3, 0x8] - lsls r1, 1 - adds r1, r0 - ldrh r1, [r1] - movs r2, 0xC0 - lsls r2, 4 - adds r0, r2, 0 - orrs r0, r1 - ldr r1, _08056844 @ =0x000003ff - cmp r0, r1 - beq _08056894 -_08056824: - ldr r1, _08056848 @ =gUnknown_03004870 - ldr r0, [r1] - subs r0, 0x8 - cmp r4, r0 - blt _08056850 - ldr r0, _0805684C @ =gUnknown_0202E850 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08056894 - movs r0, 0x4 - b _080568A6 - .align 2, 0 -_08056840: .4byte gMapHeader -_08056844: .4byte 0x000003ff -_08056848: .4byte gUnknown_03004870 -_0805684C: .4byte gUnknown_0202E850 -_08056850: - cmp r4, 0x6 - bgt _08056868 - ldr r0, _08056864 @ =gUnknown_0202E850 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08056894 - movs r0, 0x3 - b _080568A6 - .align 2, 0 -_08056864: .4byte gUnknown_0202E850 -_08056868: - ldr r0, [r1, 0x4] - subs r0, 0x7 - cmp r5, r0 - blt _08056884 - ldr r0, _08056880 @ =gUnknown_0202E850 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08056894 - movs r0, 0x1 - b _080568A6 - .align 2, 0 -_08056880: .4byte gUnknown_0202E850 -_08056884: - cmp r5, 0x6 - bgt _080568A4 - ldr r0, _0805689C @ =gUnknown_0202E850 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080568A0 -_08056894: - movs r0, 0x1 - negs r0, r0 - b _080568A6 - .align 2, 0 -_0805689C: .4byte gUnknown_0202E850 -_080568A0: - movs r0, 0x2 - b _080568A6 -_080568A4: - movs r0, 0 -_080568A6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetMapBorderIdAt - - thumb_func_start GetPostCameraMoveMapBorderId -GetPostCameraMoveMapBorderId: @ 80568AC - push {r4,lr} - adds r3, r1, 0 - ldr r1, _080568D0 @ =gSaveBlock1 - movs r4, 0 - ldrsh r2, [r1, r4] - adds r0, 0x7 - adds r2, r0 - movs r0, 0x2 - ldrsh r1, [r1, r0] - adds r3, 0x7 - adds r1, r3 - adds r0, r2, 0 - bl GetMapBorderIdAt - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080568D0: .4byte gSaveBlock1 - thumb_func_end GetPostCameraMoveMapBorderId - - thumb_func_start CanCameraMoveInDirection -CanCameraMoveInDirection: @ 80568D4 - push {r4,r5,lr} - ldr r4, _08056908 @ =gSaveBlock1 - movs r1, 0 - ldrsh r3, [r4, r1] - ldr r2, _0805690C @ =gUnknown_0821664C - lsls r0, 3 - adds r1, r0, r2 - ldr r1, [r1] - adds r1, 0x7 - adds r3, r1 - movs r5, 0x2 - ldrsh r1, [r4, r5] - adds r2, 0x4 - adds r0, r2 - ldr r0, [r0] - adds r0, 0x7 - adds r1, r0 - adds r0, r3, 0 - bl GetMapBorderIdAt - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _08056910 - movs r0, 0x1 - b _08056912 - .align 2, 0 -_08056908: .4byte gSaveBlock1 -_0805690C: .4byte gUnknown_0821664C -_08056910: - movs r0, 0 -_08056912: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end CanCameraMoveInDirection - - thumb_func_start sub_8056918 -sub_8056918: @ 8056918 - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - bl mapconnection_get_mapheader - adds r3, r0, 0 - cmp r4, 0x2 - beq _08056978 - cmp r4, 0x2 - bgt _08056936 - cmp r4, 0x1 - beq _08056964 - b _08056988 -_08056936: - cmp r4, 0x3 - beq _08056950 - cmp r4, 0x4 - bne _08056988 - ldr r1, _0805694C @ =gSaveBlock1 - negs r0, r6 - strh r0, [r1] - ldr r2, [r5, 0x4] - ldrh r0, [r1, 0x2] - subs r0, r2 - b _08056986 - .align 2, 0 -_0805694C: .4byte gSaveBlock1 -_08056950: - ldr r1, _08056960 @ =gSaveBlock1 - ldr r0, [r3] - ldr r0, [r0] - strh r0, [r1] - ldr r2, [r5, 0x4] - ldrh r0, [r1, 0x2] - subs r0, r2 - b _08056986 - .align 2, 0 -_08056960: .4byte gSaveBlock1 -_08056964: - ldr r1, _08056974 @ =gSaveBlock1 - ldr r2, [r5, 0x4] - ldrh r0, [r1] - subs r0, r2 - strh r0, [r1] - negs r0, r7 - b _08056986 - .align 2, 0 -_08056974: .4byte gSaveBlock1 -_08056978: - ldr r1, _08056990 @ =gSaveBlock1 - ldr r2, [r5, 0x4] - ldrh r0, [r1] - subs r0, r2 - strh r0, [r1] - ldr r0, [r3] - ldr r0, [r0, 0x4] -_08056986: - strh r0, [r1, 0x2] -_08056988: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08056990: .4byte gSaveBlock1 - thumb_func_end sub_8056918 - - thumb_func_start CameraMove -CameraMove: @ 8056994 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - str r1, [sp] - ldr r1, _080569D4 @ =gUnknown_0202E844 - ldrb r0, [r1] - movs r1, 0x2 - negs r1, r1 - ands r1, r0 - ldr r2, _080569D4 @ =gUnknown_0202E844 - strb r1, [r2] - mov r0, r10 - ldr r1, [sp] - bl GetPostCameraMoveMapBorderId - adds r7, r0, 0 - adds r0, r7, 0x1 - cmp r0, 0x1 - bhi _080569DC - ldr r0, _080569D8 @ =gSaveBlock1 - ldrh r1, [r0] - add r1, r10 - strh r1, [r0] - ldrh r1, [r0, 0x2] - ldr r2, [sp] - adds r1, r2 - strh r1, [r0, 0x2] - b _08056A42 - .align 2, 0 -_080569D4: .4byte gUnknown_0202E844 -_080569D8: .4byte gSaveBlock1 -_080569DC: - bl save_serialize_map - ldr r5, _08056A5C @ =gSaveBlock1 - movs r0, 0 - ldrsh r6, [r5, r0] - movs r2, 0x2 - ldrsh r1, [r5, r2] - mov r8, r1 - lsls r0, r7, 24 - lsrs r0, 24 - mov r9, r0 - adds r1, r6, 0 - mov r2, r8 - bl sub_8056A64 - adds r4, r0, 0 - adds r1, r7, 0 - mov r2, r10 - ldr r3, [sp] - bl sub_8056918 - ldrb r0, [r4, 0x8] - ldrb r1, [r4, 0x9] - bl sub_80538F0 - ldr r1, _08056A60 @ =gUnknown_0202E844 - ldrb r0, [r1] - movs r1, 0x1 - orrs r0, r1 - ldr r2, _08056A60 @ =gUnknown_0202E844 - strb r0, [r2] - movs r1, 0 - ldrsh r0, [r5, r1] - subs r6, r0 - str r6, [r2, 0x4] - movs r2, 0x2 - ldrsh r0, [r5, r2] - mov r1, r8 - subs r1, r0 - ldr r2, _08056A60 @ =gUnknown_0202E844 - str r1, [r2, 0x8] - ldrh r0, [r5] - add r0, r10 - strh r0, [r5] - ldrh r0, [r5, 0x2] - ldr r1, [sp] - adds r0, r1 - strh r0, [r5, 0x2] - mov r0, r9 - bl sub_80566F0 -_08056A42: - ldr r0, _08056A60 @ =gUnknown_0202E844 - ldrb r0, [r0] - lsls r0, 31 - lsrs r0, 31 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08056A5C: .4byte gSaveBlock1 -_08056A60: .4byte gUnknown_0202E844 - thumb_func_end CameraMove - - thumb_func_start sub_8056A64 -sub_8056A64: @ 8056A64 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r1 - mov r8, r2 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08056AA0 @ =gMapHeader - ldr r0, [r0, 0xC] - ldr r7, [r0] - ldr r4, [r0, 0x4] - movs r5, 0 - cmp r5, r7 - bge _08056AAC -_08056A82: - ldrb r0, [r4] - cmp r0, r6 - bne _08056AA4 - adds r0, r6, 0 - mov r1, r9 - mov r2, r8 - adds r3, r4, 0 - bl sub_8056ABC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08056AA4 - adds r0, r4, 0 - b _08056AAE - .align 2, 0 -_08056AA0: .4byte gMapHeader -_08056AA4: - adds r5, 0x1 - adds r4, 0xC - cmp r5, r7 - blt _08056A82 -_08056AAC: - movs r0, 0 -_08056AAE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8056A64 - - thumb_func_start sub_8056ABC -sub_8056ABC: @ 8056ABC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r1, 0 - mov r8, r2 - adds r5, r3, 0 - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - adds r0, r5, 0 - bl mapconnection_get_mapheader - adds r2, r0, 0 - cmp r4, 0x1 - blt _08056B14 - cmp r4, 0x2 - bgt _08056AF4 - ldr r0, _08056AF0 @ =gMapHeader - ldr r0, [r0] - ldr r1, [r0] - ldr r0, [r2] - ldr r2, [r0] - ldr r3, [r5, 0x4] - adds r0, r7, 0 - b _08056B06 - .align 2, 0 -_08056AF0: .4byte gMapHeader -_08056AF4: - cmp r6, 0x4 - bgt _08056B14 - ldr r0, _08056B10 @ =gMapHeader - ldr r0, [r0] - ldr r1, [r0, 0x4] - ldr r0, [r2] - ldr r2, [r0, 0x4] - ldr r3, [r5, 0x4] - mov r0, r8 -_08056B06: - bl sub_8056B20 - lsls r0, 24 - lsrs r0, 24 - b _08056B16 - .align 2, 0 -_08056B10: .4byte gMapHeader -_08056B14: - movs r0, 0 -_08056B16: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8056ABC - - thumb_func_start sub_8056B20 -sub_8056B20: @ 8056B20 - push {r4,lr} - adds r4, r0, 0 - adds r0, r2, 0 - adds r2, r3, 0 - cmp r3, 0 - bge _08056B2E - movs r3, 0 -_08056B2E: - adds r2, r0, r2 - cmp r2, r1 - bge _08056B36 - adds r1, r2, 0 -_08056B36: - cmp r3, r4 - bgt _08056B42 - cmp r4, r1 - bgt _08056B42 - movs r0, 0x1 - b _08056B44 -_08056B42: - movs r0, 0 -_08056B44: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8056B20 - - thumb_func_start sub_8056B4C -sub_8056B4C: @ 8056B4C - push {lr} - cmp r0, 0 - blt _08056B5A - cmp r0, r1 - bge _08056B5A - movs r0, 0x1 - b _08056B5C -_08056B5A: - movs r0, 0 -_08056B5C: - pop {r1} - bx r1 - thumb_func_end sub_8056B4C - - thumb_func_start sub_8056B60 -sub_8056B60: @ 8056B60 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - bl mapconnection_get_mapheader - adds r1, r0, 0 - ldrb r0, [r4] - cmp r0, 0x1 - blt _08056B98 - cmp r0, 0x2 - bgt _08056B86 - ldr r0, [r4, 0x4] - subs r0, r5, r0 - ldr r1, [r1] - ldr r1, [r1] - bl sub_8056B4C - b _08056B9A -_08056B86: - cmp r0, 0x4 - bgt _08056B98 - ldr r0, [r4, 0x4] - subs r0, r6, r0 - ldr r1, [r1] - ldr r1, [r1, 0x4] - bl sub_8056B4C - b _08056B9A -_08056B98: - movs r0, 0 -_08056B9A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8056B60 - - thumb_func_start sub_8056BA0 -sub_8056BA0: @ 8056BA0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _08056BC0 @ =gMapHeader - ldr r0, [r2, 0xC] - cmp r0, 0 - bne _08056BC8 - b _08056C3E - .align 2, 0 -_08056BC0: .4byte gMapHeader -_08056BC4: - adds r0, r4, 0 - b _08056C40 -_08056BC8: - ldr r7, [r0] - ldr r4, [r0, 0x4] - movs r6, 0 - cmp r6, r7 - bge _08056C3E - lsls r0, r1, 16 - asrs r5, r0, 16 - mov r9, r2 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - mov r10, r0 -_08056BE0: - ldrb r1, [r4] - adds r3, r1, 0 - subs r0, r1, 0x5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08056C36 - cmp r1, 0x2 - bne _08056BF6 - cmp r5, 0x6 - bgt _08056C36 -_08056BF6: - cmp r1, 0x1 - bne _08056C06 - mov r2, r9 - ldr r0, [r2] - ldr r0, [r0, 0x4] - adds r0, 0x7 - cmp r5, r0 - blt _08056C36 -_08056C06: - mov r0, r8 - lsls r2, r0, 16 - cmp r1, 0x3 - bne _08056C14 - mov r1, r10 - cmp r1, 0x6 - bgt _08056C36 -_08056C14: - cmp r3, 0x4 - bne _08056C26 - asrs r1, r2, 16 - mov r3, r9 - ldr r0, [r3] - ldr r0, [r0] - adds r0, 0x7 - cmp r1, r0 - blt _08056C36 -_08056C26: - asrs r1, r2, 16 - subs r1, 0x7 - adds r0, r4, 0 - subs r2, r5, 0x7 - bl sub_8056B60 - cmp r0, 0x1 - beq _08056BC4 -_08056C36: - adds r6, 0x1 - adds r4, 0xC - cmp r6, r7 - blt _08056BE0 -_08056C3E: - movs r0, 0 -_08056C40: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8056BA0 - - thumb_func_start sub_8056C50 -sub_8056C50: @ 8056C50 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - ldr r2, _08056C64 @ =gSaveBlock1 - subs r0, 0x7 - strh r0, [r2] - subs r1, 0x7 - strh r1, [r2, 0x2] - bx lr - .align 2, 0 -_08056C64: .4byte gSaveBlock1 - thumb_func_end sub_8056C50 - - thumb_func_start sav1_camera_get_focus_coords -sav1_camera_get_focus_coords: @ 8056C68 - ldr r3, _08056C78 @ =gSaveBlock1 - ldrh r2, [r3] - adds r2, 0x7 - strh r2, [r0] - ldrh r0, [r3, 0x2] - adds r0, 0x7 - strh r0, [r1] - bx lr - .align 2, 0 -_08056C78: .4byte gSaveBlock1 - thumb_func_end sav1_camera_get_focus_coords - - thumb_func_start unref_sub_8056C7C -unref_sub_8056C7C: @ 8056C7C - ldr r2, _08056C84 @ =gSaveBlock1 - strh r0, [r2] - strh r1, [r2, 0x2] - bx lr - .align 2, 0 -_08056C84: .4byte gSaveBlock1 - thumb_func_end unref_sub_8056C7C - - thumb_func_start GetCameraCoords -GetCameraCoords: @ 8056C88 - ldr r3, _08056C94 @ =gSaveBlock1 - ldrh r2, [r3] - strh r2, [r0] - ldrh r0, [r3, 0x2] - strh r0, [r1] - bx lr - .align 2, 0 -_08056C94: .4byte gSaveBlock1 - thumb_func_end GetCameraCoords - - thumb_func_start sub_8056C98 -sub_8056C98: @ 8056C98 - push {lr} - adds r2, r0, 0 - cmp r2, 0 - beq _08056CB8 - ldrb r0, [r2] - cmp r0, 0 - bne _08056CB2 - ldr r0, [r2, 0x4] - movs r2, 0x80 - lsls r2, 5 - bl CpuFastSet - b _08056CB8 -_08056CB2: - ldr r0, [r2, 0x4] - bl LZ77UnCompVram -_08056CB8: - pop {r0} - bx r0 - thumb_func_end sub_8056C98 - - thumb_func_start sub_8056CBC -sub_8056CBC: @ 8056CBC - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - cmp r4, 0 - beq _08056D1E - ldrb r1, [r4, 0x1] - cmp r1, 0 - bne _08056CEE - mov r0, sp - strh r1, [r0] - lsls r1, r5, 16 - lsrs r1, 16 - movs r2, 0x2 - bl LoadPalette - ldr r0, [r4, 0x8] - adds r0, 0x2 - adds r1, r5, 0x1 - lsls r1, 16 - lsrs r1, 16 - subs r2, r6, 0x2 - lsls r2, 16 - b _08056CFC -_08056CEE: - cmp r1, 0x1 - bne _08056D04 - ldr r0, [r4, 0x8] - adds r0, 0xC0 - lsls r1, r5, 16 - lsrs r1, 16 - lsls r2, r6, 16 -_08056CFC: - lsrs r2, 16 - bl LoadPalette - b _08056D1E -_08056D04: - ldr r0, [r4, 0x8] - movs r4, 0x80 - lsls r4, 18 - adds r1, r4, 0 - bl LZ77UnCompVram - lsls r1, r5, 16 - lsrs r1, 16 - lsls r2, r6, 16 - lsrs r2, 16 - adds r0, r4, 0 - bl LoadPalette -_08056D1E: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8056CBC - - thumb_func_start sub_8056D28 -sub_8056D28: @ 8056D28 - push {lr} - movs r1, 0xC0 - lsls r1, 19 - ldr r0, [r0, 0x10] - bl sub_8056C98 - pop {r0} - bx r0 - thumb_func_end sub_8056D28 - - thumb_func_start sub_8056D38 -sub_8056D38: @ 8056D38 - push {lr} - ldr r1, _08056D48 @ =0x06004000 - ldr r0, [r0, 0x14] - bl sub_8056C98 - pop {r0} - bx r0 - .align 2, 0 -_08056D48: .4byte 0x06004000 - thumb_func_end sub_8056D38 - - thumb_func_start apply_map_tileset1_palette -apply_map_tileset1_palette: @ 8056D4C - push {lr} - ldr r0, [r0, 0x10] - movs r1, 0 - movs r2, 0xC0 - bl sub_8056CBC - pop {r0} - bx r0 - thumb_func_end apply_map_tileset1_palette - - thumb_func_start apply_map_tileset2_palette -apply_map_tileset2_palette: @ 8056D5C - push {lr} - ldr r0, [r0, 0x14] - movs r1, 0x60 - movs r2, 0xC0 - bl sub_8056CBC - pop {r0} - bx r0 - thumb_func_end apply_map_tileset2_palette - - thumb_func_start copy_map_tileset1_tileset2_to_vram -copy_map_tileset1_tileset2_to_vram: @ 8056D6C - push {r4,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _08056D7E - bl sub_8056D28 - adds r0, r4, 0 - bl sub_8056D38 -_08056D7E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end copy_map_tileset1_tileset2_to_vram - - thumb_func_start apply_map_tileset1_tileset2_palette -apply_map_tileset1_tileset2_palette: @ 8056D84 - push {r4,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _08056D96 - bl apply_map_tileset1_palette - adds r0, r4, 0 - bl apply_map_tileset2_palette -_08056D96: - pop {r4} - pop {r0} - bx r0 - thumb_func_end apply_map_tileset1_tileset2_palette - - thumb_func_start sub_8056D9C -sub_8056D9C: @ 8056D9C - movs r0, 0x1 - bx lr - thumb_func_end sub_8056D9C - - thumb_func_start sub_8056DA0 -sub_8056DA0: @ 8056DA0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08056DB8 @ =gUnknown_08308E2C - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08056DBC - movs r0, 0 - b _08056DBE - .align 2, 0 -_08056DB8: .4byte gUnknown_08308E2C -_08056DBC: - movs r0, 0x1 -_08056DBE: - pop {r1} - bx r1 - thumb_func_end sub_8056DA0 - - thumb_func_start MetatileBehavior_IsJumpEast -MetatileBehavior_IsJumpEast: @ 8056DC4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x38 - beq _08056DD2 - movs r0, 0 - b _08056DD4 -_08056DD2: - movs r0, 0x1 -_08056DD4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsJumpEast - - thumb_func_start MetatileBehavior_IsJumpWest -MetatileBehavior_IsJumpWest: @ 8056DD8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x39 - beq _08056DE6 - movs r0, 0 - b _08056DE8 -_08056DE6: - movs r0, 0x1 -_08056DE8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsJumpWest - - thumb_func_start MetatileBehavior_IsJumpNorth -MetatileBehavior_IsJumpNorth: @ 8056DEC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3A - beq _08056DFA - movs r0, 0 - b _08056DFC -_08056DFA: - movs r0, 0x1 -_08056DFC: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsJumpNorth - - thumb_func_start MetatileBehavior_IsJumpSouth -MetatileBehavior_IsJumpSouth: @ 8056E00 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - beq _08056E0E - movs r0, 0 - b _08056E10 -_08056E0E: - movs r0, 0x1 -_08056E10: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsJumpSouth - - thumb_func_start sub_8056E14 -sub_8056E14: @ 8056E14 - push {lr} - lsls r0, 24 - movs r1, 0xFE - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _08056E28 - movs r0, 0 - b _08056E2A -_08056E28: - movs r0, 0x1 -_08056E2A: - pop {r1} - bx r1 - thumb_func_end sub_8056E14 - - thumb_func_start MetatileBehavior_IsSandOrDeepSand -MetatileBehavior_IsSandOrDeepSand: @ 8056E30 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x21 - beq _08056E3E - cmp r0, 0x6 - bne _08056E42 -_08056E3E: - movs r0, 0x1 - b _08056E44 -_08056E42: - movs r0, 0 -_08056E44: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSandOrDeepSand - - thumb_func_start MetatileBehavior_IsDeepSand -MetatileBehavior_IsDeepSand: @ 8056E48 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - beq _08056E56 - movs r0, 0 - b _08056E58 -_08056E56: - movs r0, 0x1 -_08056E58: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsDeepSand - - thumb_func_start MetatileBehavior_IsReflective -MetatileBehavior_IsReflective: @ 8056E5C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _08056E7A - cmp r0, 0x16 - beq _08056E7A - cmp r0, 0x1A - beq _08056E7A - cmp r0, 0x20 - beq _08056E7A - cmp r0, 0x14 - beq _08056E7A - cmp r0, 0x2B - bne _08056E7E -_08056E7A: - movs r0, 0x1 - b _08056E80 -_08056E7E: - movs r0, 0 -_08056E80: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsReflective - - thumb_func_start MetatileBehavior_IsIce -MetatileBehavior_IsIce: @ 8056E84 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x20 - beq _08056E92 - movs r0, 0 - b _08056E94 -_08056E92: - movs r0, 0x1 -_08056E94: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsIce - - thumb_func_start is_tile_x69_2_warp_door -is_tile_x69_2_warp_door: @ 8056E98 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x69 - beq _08056EA6 - movs r0, 0 - b _08056EA8 -_08056EA6: - movs r0, 0x1 -_08056EA8: - pop {r1} - bx r1 - thumb_func_end is_tile_x69_2_warp_door - - thumb_func_start sub_8056EAC -sub_8056EAC: @ 8056EAC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8D - beq _08056EBA - cmp r0, 0x69 - bne _08056EBE -_08056EBA: - movs r0, 0x1 - b _08056EC0 -_08056EBE: - movs r0, 0 -_08056EC0: - pop {r1} - bx r1 - thumb_func_end sub_8056EAC - - thumb_func_start MetatileBehavior_IsEscalator -MetatileBehavior_IsEscalator: @ 8056EC4 - push {lr} - lsls r0, 24 - movs r1, 0x96 - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _08056ED8 - movs r0, 0 - b _08056EDA -_08056ED8: - movs r0, 0x1 -_08056EDA: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsEscalator - - thumb_func_start unref_sub_8056EE0 -unref_sub_8056EE0: @ 8056EE0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _08056EEE - movs r0, 0 - b _08056EF0 -_08056EEE: - movs r0, 0x1 -_08056EF0: - pop {r1} - bx r1 - thumb_func_end unref_sub_8056EE0 - - thumb_func_start MetatileBehavior_IsLadder -MetatileBehavior_IsLadder: @ 8056EF4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x61 - beq _08056F02 - movs r0, 0 - b _08056F04 -_08056F02: - movs r0, 0x1 -_08056F04: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsLadder - - thumb_func_start sub_8056F08 -sub_8056F08: @ 8056F08 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x60 - beq _08056F1A - cmp r0, 0x6C - beq _08056F1A - cmp r0, 0x6E - bne _08056F1E -_08056F1A: - movs r0, 0x1 - b _08056F20 -_08056F1E: - movs r0, 0 -_08056F20: - pop {r1} - bx r1 - thumb_func_end sub_8056F08 - - thumb_func_start sub_8056F24 -sub_8056F24: @ 8056F24 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6E - beq _08056F32 - movs r0, 0 - b _08056F34 -_08056F32: - movs r0, 0x1 -_08056F34: - pop {r1} - bx r1 - thumb_func_end sub_8056F24 - - thumb_func_start MetatileBehavior_IsSurfableWaterOrUnderwater -MetatileBehavior_IsSurfableWaterOrUnderwater: @ 8056F38 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08056F50 @ =gUnknown_08308E2C - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08056F54 - movs r0, 0 - b _08056F56 - .align 2, 0 -_08056F50: .4byte gUnknown_08308E2C -_08056F54: - movs r0, 0x1 -_08056F56: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSurfableWaterOrUnderwater - - thumb_func_start MetatileBehavior_IsEastArrowWarp -MetatileBehavior_IsEastArrowWarp: @ 8056F5C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x62 - beq _08056F6A - movs r0, 0 - b _08056F6C -_08056F6A: - movs r0, 0x1 -_08056F6C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsEastArrowWarp - - thumb_func_start MetatileBehavior_IsWestArrowWarp -MetatileBehavior_IsWestArrowWarp: @ 8056F70 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x63 - beq _08056F7E - movs r0, 0 - b _08056F80 -_08056F7E: - movs r0, 0x1 -_08056F80: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWestArrowWarp - - thumb_func_start MetatileBehavior_IsNorthArrowWarp -MetatileBehavior_IsNorthArrowWarp: @ 8056F84 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x64 - beq _08056F92 - cmp r0, 0x1B - bne _08056F96 -_08056F92: - movs r0, 0x1 - b _08056F98 -_08056F96: - movs r0, 0 -_08056F98: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsNorthArrowWarp - - thumb_func_start MetatileBehavior_IsSouthArrowWarp -MetatileBehavior_IsSouthArrowWarp: @ 8056F9C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x65 - beq _08056FAE - cmp r0, 0x6D - beq _08056FAE - cmp r0, 0x1C - bne _08056FB2 -_08056FAE: - movs r0, 0x1 - b _08056FB4 -_08056FB2: - movs r0, 0 -_08056FB4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSouthArrowWarp - - thumb_func_start unref_sub_8056FB8 -unref_sub_8056FB8: @ 8056FB8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - adds r0, r4, 0 - bl MetatileBehavior_IsEastArrowWarp - lsls r0, 24 - cmp r0, 0 - bne _08056FF0 - adds r0, r4, 0 - bl MetatileBehavior_IsWestArrowWarp - lsls r0, 24 - cmp r0, 0 - bne _08056FF0 - adds r0, r4, 0 - bl MetatileBehavior_IsNorthArrowWarp - lsls r0, 24 - cmp r0, 0 - bne _08056FF0 - adds r0, r4, 0 - bl MetatileBehavior_IsSouthArrowWarp - lsls r0, 24 - cmp r0, 0 - beq _08056FF2 -_08056FF0: - movs r5, 0x1 -_08056FF2: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end unref_sub_8056FB8 - - thumb_func_start sub_8056FFC -sub_8056FFC: @ 8056FFC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xC0 - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x8 - bls _08057032 - adds r0, r1, 0 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08057032 - cmp r1, 0xD0 - beq _08057032 - cmp r1, 0xD2 - beq _08057032 - cmp r1, 0x13 - beq _08057032 - cmp r1, 0x20 - beq _08057032 - cmp r1, 0xBB - beq _08057032 - cmp r1, 0xBC - bne _08057036 -_08057032: - movs r0, 0x1 - b _08057038 -_08057036: - movs r0, 0 -_08057038: - pop {r1} - bx r1 - thumb_func_end sub_8056FFC - - thumb_func_start MetatileBehavior_IsIce_2 -MetatileBehavior_IsIce_2: @ 805703C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x20 - beq _0805704A - movs r0, 0 - b _0805704C -_0805704A: - movs r0, 0x1 -_0805704C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsIce_2 - - thumb_func_start MetatileBehavior_IsTrickHouseSlipperyFloor -MetatileBehavior_IsTrickHouseSlipperyFloor: @ 8057050 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x48 - beq _0805705E - movs r0, 0 - b _08057060 -_0805705E: - movs r0, 0x1 -_08057060: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsTrickHouseSlipperyFloor - - thumb_func_start MetatileBehavior_0x05 -MetatileBehavior_0x05: @ 8057064 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - beq _08057072 - movs r0, 0 - b _08057074 -_08057072: - movs r0, 0x1 -_08057074: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_0x05 - - thumb_func_start MetatileBehavior_IsWalkNorth -MetatileBehavior_IsWalkNorth: @ 8057078 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x42 - beq _08057086 - movs r0, 0 - b _08057088 -_08057086: - movs r0, 0x1 -_08057088: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWalkNorth - - thumb_func_start MetatileBehavior_IsWalkSouth -MetatileBehavior_IsWalkSouth: @ 805708C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x43 - beq _0805709A - movs r0, 0 - b _0805709C -_0805709A: - movs r0, 0x1 -_0805709C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWalkSouth - - thumb_func_start MetatileBehavior_IsWalkWest -MetatileBehavior_IsWalkWest: @ 80570A0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x41 - beq _080570AE - movs r0, 0 - b _080570B0 -_080570AE: - movs r0, 0x1 -_080570B0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWalkWest - - thumb_func_start MetatileBehavior_IsWalkEast -MetatileBehavior_IsWalkEast: @ 80570B4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080570C2 - movs r0, 0 - b _080570C4 -_080570C2: - movs r0, 0x1 -_080570C4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWalkEast - - thumb_func_start MetatileBehavior_IsNorthwardCurrent -MetatileBehavior_IsNorthwardCurrent: @ 80570C8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x52 - beq _080570D6 - movs r0, 0 - b _080570D8 -_080570D6: - movs r0, 0x1 -_080570D8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsNorthwardCurrent - - thumb_func_start MetatileBehavior_IsSouthwardCurrent -MetatileBehavior_IsSouthwardCurrent: @ 80570DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x53 - beq _080570EA - movs r0, 0 - b _080570EC -_080570EA: - movs r0, 0x1 -_080570EC: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSouthwardCurrent - - thumb_func_start MetatileBehavior_IsWestwardCurrent -MetatileBehavior_IsWestwardCurrent: @ 80570F0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x51 - beq _080570FE - movs r0, 0 - b _08057100 -_080570FE: - movs r0, 0x1 -_08057100: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWestwardCurrent - - thumb_func_start MetatileBehavior_IsEastwardCurrent -MetatileBehavior_IsEastwardCurrent: @ 8057104 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x50 - beq _08057112 - movs r0, 0 - b _08057114 -_08057112: - movs r0, 0x1 -_08057114: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsEastwardCurrent - - thumb_func_start MetatileBehavior_IsSlideNorth -MetatileBehavior_IsSlideNorth: @ 8057118 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x46 - beq _08057126 - movs r0, 0 - b _08057128 -_08057126: - movs r0, 0x1 -_08057128: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSlideNorth - - thumb_func_start MetatileBehavior_IsSlideSouth -MetatileBehavior_IsSlideSouth: @ 805712C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x47 - beq _0805713A - movs r0, 0 - b _0805713C -_0805713A: - movs r0, 0x1 -_0805713C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSlideSouth - - thumb_func_start MetatileBehavior_IsSlideWest -MetatileBehavior_IsSlideWest: @ 8057140 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x45 - beq _0805714E - movs r0, 0 - b _08057150 -_0805714E: - movs r0, 0x1 -_08057150: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSlideWest - - thumb_func_start MetatileBehavior_IsSlideEast -MetatileBehavior_IsSlideEast: @ 8057154 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x44 - beq _08057162 - movs r0, 0 - b _08057164 -_08057162: - movs r0, 0x1 -_08057164: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSlideEast - - thumb_func_start MetatileBehavior_IsCounter -MetatileBehavior_IsCounter: @ 8057168 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x80 - beq _08057176 - movs r0, 0 - b _08057178 -_08057176: - movs r0, 0x1 -_08057178: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsCounter - - thumb_func_start MetatileBehavior_IsPlayerFacingTVScreen -MetatileBehavior_IsPlayerFacingTVScreen: @ 805717C - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x2 - bne _0805718E - cmp r0, 0x86 - beq _08057192 -_0805718E: - movs r0, 0 - b _08057194 -_08057192: - movs r0, 0x1 -_08057194: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsPlayerFacingTVScreen - - thumb_func_start MetatileBehavior_IsPC -MetatileBehavior_IsPC: @ 8057198 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x83 - beq _080571A6 - movs r0, 0 - b _080571A8 -_080571A6: - movs r0, 0x1 -_080571A8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsPC - - thumb_func_start is_tile_x84 -is_tile_x84: @ 80571AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x84 - beq _080571BA - movs r0, 0 - b _080571BC -_080571BA: - movs r0, 0x1 -_080571BC: - pop {r1} - bx r1 - thumb_func_end is_tile_x84 - - thumb_func_start sub_80571C0 -sub_80571C0: @ 80571C0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x91 - beq _080571E2 - cmp r0, 0x93 - beq _080571E2 - cmp r0, 0x95 - beq _080571E2 - cmp r0, 0x97 - beq _080571E2 - cmp r0, 0x99 - beq _080571E2 - cmp r0, 0x9B - beq _080571E2 - cmp r0, 0x9D - bne _080571E6 -_080571E2: - movs r0, 0x1 - b _080571E8 -_080571E6: - movs r0, 0 -_080571E8: - pop {r1} - bx r1 - thumb_func_end sub_80571C0 - - thumb_func_start sub_80571EC -sub_80571EC: @ 80571EC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x90 - beq _08057202 - cmp r0, 0x92 - beq _08057202 - cmp r0, 0x94 - beq _08057202 - cmp r0, 0x9A - bne _08057206 -_08057202: - movs r0, 0x1 - b _08057208 -_08057206: - movs r0, 0 -_08057208: - pop {r1} - bx r1 - thumb_func_end sub_80571EC - - thumb_func_start sub_805720C -sub_805720C: @ 805720C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x96 - beq _0805721A - cmp r0, 0x9C - bne _0805721E -_0805721A: - movs r0, 0x1 - b _08057220 -_0805721E: - movs r0, 0 -_08057220: - pop {r1} - bx r1 - thumb_func_end sub_805720C - - thumb_func_start is_tile_x98 -is_tile_x98: @ 8057224 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x98 - beq _08057232 - movs r0, 0 - b _08057234 -_08057232: - movs r0, 0x1 -_08057234: - pop {r1} - bx r1 - thumb_func_end is_tile_x98 - - thumb_func_start sub_8057238 -sub_8057238: @ 8057238 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB0 - beq _08057246 - movs r0, 0 - b _08057248 -_08057246: - movs r0, 0x1 -_08057248: - pop {r1} - bx r1 - thumb_func_end sub_8057238 - - thumb_func_start sub_805724C -sub_805724C: @ 805724C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB1 - beq _0805725A - movs r0, 0 - b _0805725C -_0805725A: - movs r0, 0x1 -_0805725C: - pop {r1} - bx r1 - thumb_func_end sub_805724C - - thumb_func_start unref_sub_8057260 -unref_sub_8057260: @ 8057260 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB2 - beq _0805726E - movs r0, 0 - b _08057270 -_0805726E: - movs r0, 0x1 -_08057270: - pop {r1} - bx r1 - thumb_func_end unref_sub_8057260 - - thumb_func_start sub_8057274 -sub_8057274: @ 8057274 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB3 - beq _08057282 - movs r0, 0 - b _08057284 -_08057282: - movs r0, 0x1 -_08057284: - pop {r1} - bx r1 - thumb_func_end sub_8057274 - - thumb_func_start sub_8057288 -sub_8057288: @ 8057288 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB9 - beq _08057296 - movs r0, 0 - b _08057298 -_08057296: - movs r0, 0x1 -_08057298: - pop {r1} - bx r1 - thumb_func_end sub_8057288 - - thumb_func_start sub_805729C -sub_805729C: @ 805729C - push {lr} - lsls r0, 24 - cmp r0, 0 - beq _080572A8 - movs r0, 0 - b _080572AA -_080572A8: - movs r0, 0x1 -_080572AA: - pop {r1} - bx r1 - thumb_func_end sub_805729C - - thumb_func_start sub_80572B0 -sub_80572B0: @ 80572B0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB7 - beq _080572BE - movs r0, 0 - b _080572C0 -_080572BE: - movs r0, 0x1 -_080572C0: - pop {r1} - bx r1 - thumb_func_end sub_80572B0 - - thumb_func_start unref_sub_80572C4 -unref_sub_80572C4: @ 80572C4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB2 - beq _080572D2 - movs r0, 0 - b _080572D4 -_080572D2: - movs r0, 0x1 -_080572D4: - pop {r1} - bx r1 - thumb_func_end unref_sub_80572C4 - - thumb_func_start sub_80572D8 -sub_80572D8: @ 80572D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB5 - beq _080572E6 - movs r0, 0 - b _080572E8 -_080572E6: - movs r0, 0x1 -_080572E8: - pop {r1} - bx r1 - thumb_func_end sub_80572D8 - - thumb_func_start sub_80572EC -sub_80572EC: @ 80572EC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC3 - beq _080572FA - movs r0, 0 - b _080572FC -_080572FA: - movs r0, 0x1 -_080572FC: - pop {r1} - bx r1 - thumb_func_end sub_80572EC - - thumb_func_start sub_8057300 -sub_8057300: @ 8057300 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC2 - beq _0805730E - movs r0, 0 - b _08057310 -_0805730E: - movs r0, 0x1 -_08057310: - pop {r1} - bx r1 - thumb_func_end sub_8057300 - - thumb_func_start sub_8057314 -sub_8057314: @ 8057314 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB8 - beq _08057322 - movs r0, 0 - b _08057324 -_08057322: - movs r0, 0x1 -_08057324: - pop {r1} - bx r1 - thumb_func_end sub_8057314 - - thumb_func_start sub_8057328 -sub_8057328: @ 8057328 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBE - beq _08057336 - movs r0, 0 - b _08057338 -_08057336: - movs r0, 0x1 -_08057338: - pop {r1} - bx r1 - thumb_func_end sub_8057328 - - thumb_func_start sub_805733C -sub_805733C: @ 805733C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBD - beq _0805734A - movs r0, 0 - b _0805734C -_0805734A: - movs r0, 0x1 -_0805734C: - pop {r1} - bx r1 - thumb_func_end sub_805733C - - thumb_func_start sub_8057350 -sub_8057350: @ 8057350 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBA - beq _0805735E - movs r0, 0 - b _08057360 -_0805735E: - movs r0, 0x1 -_08057360: - pop {r1} - bx r1 - thumb_func_end sub_8057350 - - thumb_func_start sub_8057364 -sub_8057364: @ 8057364 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBF - beq _08057372 - movs r0, 0 - b _08057374 -_08057372: - movs r0, 0x1 -_08057374: - pop {r1} - bx r1 - thumb_func_end sub_8057364 - - thumb_func_start sub_8057378 -sub_8057378: @ 8057378 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC4 - beq _08057386 - movs r0, 0 - b _08057388 -_08057386: - movs r0, 0x1 -_08057388: - pop {r1} - bx r1 - thumb_func_end sub_8057378 - - thumb_func_start sub_805738C -sub_805738C: @ 805738C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC5 - beq _0805739A - movs r0, 0 - b _0805739C -_0805739A: - movs r0, 0x1 -_0805739C: - pop {r1} - bx r1 - thumb_func_end sub_805738C - - thumb_func_start MetatileBehavior_HasRipples -MetatileBehavior_HasRipples: @ 80573A0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _080573B2 - cmp r0, 0x16 - beq _080573B2 - cmp r0, 0x14 - bne _080573B6 -_080573B2: - movs r0, 0x1 - b _080573B8 -_080573B6: - movs r0, 0 -_080573B8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_HasRipples - - thumb_func_start MetatileBehavior_IsPuddle -MetatileBehavior_IsPuddle: @ 80573BC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x16 - beq _080573CA - movs r0, 0 - b _080573CC -_080573CA: - movs r0, 0x1 -_080573CC: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsPuddle - - thumb_func_start MetatileBehavior_IsTallGrass -MetatileBehavior_IsTallGrass: @ 80573D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080573DE - movs r0, 0 - b _080573E0 -_080573DE: - movs r0, 0x1 -_080573E0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsTallGrass - - thumb_func_start MetatileBehavior_IsLongGrass -MetatileBehavior_IsLongGrass: @ 80573E4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _080573F2 - movs r0, 0 - b _080573F4 -_080573F2: - movs r0, 0x1 -_080573F4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsLongGrass - - thumb_func_start MetatileBehavior_IsBerryTreeSoil -MetatileBehavior_IsBerryTreeSoil: @ 80573F8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA0 - beq _08057406 - movs r0, 0 - b _08057408 -_08057406: - movs r0, 0x1 -_08057408: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsBerryTreeSoil - - thumb_func_start MetatileBehavior_IsAsh -MetatileBehavior_IsAsh: @ 805740C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x24 - beq _0805741A - movs r0, 0 - b _0805741C -_0805741A: - movs r0, 0x1 -_0805741C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsAsh - - thumb_func_start MetatileBehavior_IsUnusedFootprintMetatile -MetatileBehavior_IsUnusedFootprintMetatile: @ 8057420 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x25 - beq _0805742E - movs r0, 0 - b _08057430 -_0805742E: - movs r0, 0x1 -_08057430: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsUnusedFootprintMetatile - - thumb_func_start MetatileBehavior_IsBridge -MetatileBehavior_IsBridge: @ 8057434 - push {lr} - lsls r0, 24 - movs r1, 0x90 - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x3 - bls _08057448 - movs r0, 0 - b _0805744A -_08057448: - movs r0, 0x1 -_0805744A: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsBridge - - thumb_func_start sub_8057450 -sub_8057450: @ 8057450 - push {lr} - lsls r0, 24 - movs r1, 0x90 - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x3 - bls _08057462 - movs r0, 0 -_08057462: - pop {r1} - bx r1 - thumb_func_end sub_8057450 - - thumb_func_start MetatileBehavior_IsLandWildEncounter -MetatileBehavior_IsLandWildEncounter: @ 8057468 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - bne _0805748C - adds r0, r4, 0 - bl sub_8056DA0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805748C - movs r0, 0x1 - b _0805748E -_0805748C: - movs r0, 0 -_0805748E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsLandWildEncounter - - thumb_func_start MetatileBehavior_IsWaterWildEncounter -MetatileBehavior_IsWaterWildEncounter: @ 8057494 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080574BA - adds r0, r4, 0 - bl sub_8056DA0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080574BA - movs r0, 0x1 - b _080574BC -_080574BA: - movs r0, 0 -_080574BC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWaterWildEncounter - - thumb_func_start sub_80574C4 -sub_80574C4: @ 80574C4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - beq _080574D2 - movs r0, 0 - b _080574D4 -_080574D2: - movs r0, 0x1 -_080574D4: - pop {r1} - bx r1 - thumb_func_end sub_80574C4 - - thumb_func_start sub_80574D8 -sub_80574D8: @ 80574D8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xC - beq _080574E6 - movs r0, 0 - b _080574E8 -_080574E6: - movs r0, 0x1 -_080574E8: - pop {r1} - bx r1 - thumb_func_end sub_80574D8 - - thumb_func_start sub_80574EC -sub_80574EC: @ 80574EC - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xEF - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x1 - bls _08057502 - cmp r1, 0x14 - bne _08057506 -_08057502: - movs r0, 0x1 - b _08057508 -_08057506: - movs r0, 0 -_08057508: - pop {r1} - bx r1 - thumb_func_end sub_80574EC - - thumb_func_start sub_805750C -sub_805750C: @ 805750C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x19 - beq _0805751A - cmp r0, 0x2A - bne _0805751E -_0805751A: - movs r0, 0x1 - b _08057520 -_0805751E: - movs r0, 0 -_08057520: - pop {r1} - bx r1 - thumb_func_end sub_805750C - - thumb_func_start MetatileBehavior_IsShallowFlowingWater -MetatileBehavior_IsShallowFlowingWater: @ 8057524 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x17 - beq _08057536 - cmp r0, 0x1B - beq _08057536 - cmp r0, 0x1C - bne _0805753A -_08057536: - movs r0, 0x1 - b _0805753C -_0805753A: - movs r0, 0 -_0805753C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsShallowFlowingWater - - thumb_func_start sub_8057540 -sub_8057540: @ 8057540 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x26 - beq _0805754E - movs r0, 0 - b _08057550 -_0805754E: - movs r0, 0x1 -_08057550: - pop {r1} - bx r1 - thumb_func_end sub_8057540 - - thumb_func_start sub_8057554 -sub_8057554: @ 8057554 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x27 - beq _08057562 - movs r0, 0 - b _08057564 -_08057562: - movs r0, 0x1 -_08057564: - pop {r1} - bx r1 - thumb_func_end sub_8057554 - - thumb_func_start sub_8057568 -sub_8057568: @ 8057568 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x15 - beq _0805757A - cmp r0, 0x11 - beq _0805757A - cmp r0, 0x12 - bne _0805757E -_0805757A: - movs r0, 0x1 - b _08057580 -_0805757E: - movs r0, 0 -_08057580: - pop {r1} - bx r1 - thumb_func_end sub_8057568 - - thumb_func_start unref_sub_8057584 -unref_sub_8057584: @ 8057584 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x18 - beq _08057592 - cmp r0, 0x1A - bne _08057596 -_08057592: - movs r0, 0x1 - b _08057598 -_08057596: - movs r0, 0 -_08057598: - pop {r1} - bx r1 - thumb_func_end unref_sub_8057584 - - thumb_func_start sub_805759C -sub_805759C: @ 805759C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - cmp r0, 0 - beq _080575BE - adds r0, r4, 0 - bl MetatileBehavior_IsWaterfall - lsls r0, 24 - cmp r0, 0 - bne _080575BE - movs r0, 0x1 - b _080575C0 -_080575BE: - movs r0, 0 -_080575C0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805759C - - thumb_func_start MetatileBehavior_IsEastBlocked -MetatileBehavior_IsEastBlocked: @ 80575C8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x30 - beq _080575E2 - cmp r0, 0x34 - beq _080575E2 - cmp r0, 0x36 - beq _080575E2 - cmp r0, 0xC1 - beq _080575E2 - cmp r0, 0xBE - bne _080575E6 -_080575E2: - movs r0, 0x1 - b _080575E8 -_080575E6: - movs r0, 0 -_080575E8: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsEastBlocked - - thumb_func_start MetatileBehavior_IsWestBlocked -MetatileBehavior_IsWestBlocked: @ 80575EC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x31 - beq _08057606 - cmp r0, 0x35 - beq _08057606 - cmp r0, 0x37 - beq _08057606 - cmp r0, 0xC1 - beq _08057606 - cmp r0, 0xBE - bne _0805760A -_08057606: - movs r0, 0x1 - b _0805760C -_0805760A: - movs r0, 0 -_0805760C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWestBlocked - - thumb_func_start MetatileBehavior_IsNorthBlocked -MetatileBehavior_IsNorthBlocked: @ 8057610 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x32 - beq _08057626 - cmp r0, 0x34 - beq _08057626 - cmp r0, 0x35 - beq _08057626 - cmp r0, 0xC0 - bne _0805762A -_08057626: - movs r0, 0x1 - b _0805762C -_0805762A: - movs r0, 0 -_0805762C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsNorthBlocked - - thumb_func_start MetatileBehavior_IsSouthBlocked -MetatileBehavior_IsSouthBlocked: @ 8057630 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x33 - beq _08057646 - cmp r0, 0x36 - beq _08057646 - cmp r0, 0x37 - beq _08057646 - cmp r0, 0xC0 - bne _0805764A -_08057646: - movs r0, 0x1 - b _0805764C -_0805764A: - movs r0, 0 -_0805764C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSouthBlocked - - thumb_func_start MetatileBehavior_IsShortGrass -MetatileBehavior_IsShortGrass: @ 8057650 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x7 - beq _0805765E - movs r0, 0 - b _08057660 -_0805765E: - movs r0, 0x1 -_08057660: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsShortGrass - - thumb_func_start MetatileBehavior_IsHotSprings -MetatileBehavior_IsHotSprings: @ 8057664 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x28 - beq _08057672 - movs r0, 0 - b _08057674 -_08057672: - movs r0, 0x1 -_08057674: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsHotSprings - - thumb_func_start MetatileBehavior_IsWaterfall -MetatileBehavior_IsWaterfall: @ 8057678 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - beq _08057686 - movs r0, 0 - b _08057688 -_08057686: - movs r0, 0x1 -_08057688: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsWaterfall - - thumb_func_start MetatileBehavior_IsFortreeBridge -MetatileBehavior_IsFortreeBridge: @ 805768C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x78 - beq _0805769A - movs r0, 0 - b _0805769C -_0805769A: - movs r0, 0x1 -_0805769C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsFortreeBridge - - thumb_func_start sub_80576A0 -sub_80576A0: @ 80576A0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x74 - beq _080576AE - movs r0, 0 - b _080576B0 -_080576AE: - movs r0, 0x1 -_080576B0: - pop {r1} - bx r1 - thumb_func_end sub_80576A0 - - thumb_func_start sub_80576B4 -sub_80576B4: @ 80576B4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x75 - beq _080576C2 - movs r0, 0 - b _080576C4 -_080576C2: - movs r0, 0x1 -_080576C4: - pop {r1} - bx r1 - thumb_func_end sub_80576B4 - - thumb_func_start sub_80576C8 -sub_80576C8: @ 80576C8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x76 - beq _080576D6 - movs r0, 0 - b _080576D8 -_080576D6: - movs r0, 0x1 -_080576D8: - pop {r1} - bx r1 - thumb_func_end sub_80576C8 - - thumb_func_start sub_80576DC -sub_80576DC: @ 80576DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - beq _080576EA - movs r0, 0 - b _080576EC -_080576EA: - movs r0, 0x1 -_080576EC: - pop {r1} - bx r1 - thumb_func_end sub_80576DC - - thumb_func_start MetatileBehavior_IsPacifidlogLog -MetatileBehavior_IsPacifidlogLog: @ 80576F0 - push {lr} - lsls r0, 24 - movs r1, 0x8C - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x3 - bls _08057704 - movs r0, 0 - b _08057706 -_08057704: - movs r0, 0x1 -_08057706: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsPacifidlogLog - - thumb_func_start is_tile_x8C -is_tile_x8C: @ 805770C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8C - beq _0805771A - movs r0, 0 - b _0805771C -_0805771A: - movs r0, 0x1 -_0805771C: - pop {r1} - bx r1 - thumb_func_end is_tile_x8C - - thumb_func_start is_tile_x85 -is_tile_x85: @ 8057720 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x85 - beq _0805772E - movs r0, 0 - b _08057730 -_0805772E: - movs r0, 0x1 -_08057730: - pop {r1} - bx r1 - thumb_func_end is_tile_x85 - - thumb_func_start is_tile_x8B -is_tile_x8B: @ 8057734 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8B - beq _08057742 - movs r0, 0 - b _08057744 -_08057742: - movs r0, 0x1 -_08057744: - pop {r1} - bx r1 - thumb_func_end is_tile_x8B - - thumb_func_start is_tile_x8A -is_tile_x8A: @ 8057748 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8A - beq _08057756 - movs r0, 0 - b _08057758 -_08057756: - movs r0, 0x1 -_08057758: - pop {r1} - bx r1 - thumb_func_end is_tile_x8A - - thumb_func_start is_tile_x87 -is_tile_x87: @ 805775C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x87 - beq _0805776A - movs r0, 0 - b _0805776C -_0805776A: - movs r0, 0x1 -_0805776C: - pop {r1} - bx r1 - thumb_func_end is_tile_x87 - - thumb_func_start MetatileBehavior_0xBB -MetatileBehavior_0xBB: @ 8057770 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBB - beq _0805777E - movs r0, 0 - b _08057780 -_0805777E: - movs r0, 0x1 -_08057780: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_0xBB - - thumb_func_start MetatileBehavior_0xBC -MetatileBehavior_0xBC: @ 8057784 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xBC - beq _08057792 - movs r0, 0 - b _08057794 -_08057792: - movs r0, 0x1 -_08057794: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_0xBC - - thumb_func_start sub_8057798 -sub_8057798: @ 8057798 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x29 - beq _080577A6 - movs r0, 0 - b _080577A8 -_080577A6: - movs r0, 0x1 -_080577A8: - pop {r1} - bx r1 - thumb_func_end sub_8057798 - - thumb_func_start is_role_x68 -is_role_x68: @ 80577AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x68 - beq _080577BA - movs r0, 0 - b _080577BC -_080577BA: - movs r0, 0x1 -_080577BC: - pop {r1} - bx r1 - thumb_func_end is_role_x68 - - thumb_func_start MetatileBehavior_IsAquaHideoutWarp -MetatileBehavior_IsAquaHideoutWarp: @ 80577C0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x67 - beq _080577CE - movs r0, 0 - b _080577D0 -_080577CE: - movs r0, 0x1 -_080577D0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsAquaHideoutWarp - - thumb_func_start MetatileBehavior_IsSurfableFishableWater -MetatileBehavior_IsSurfableFishableWater: @ 80577D4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _080577F8 - cmp r0, 0x15 - beq _080577F8 - cmp r0, 0x11 - beq _080577F8 - cmp r0, 0x12 - beq _080577F8 - cmp r0, 0x14 - beq _080577F8 - subs r0, 0x50 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _080577FC -_080577F8: - movs r0, 0x1 - b _080577FE -_080577FC: - movs r0, 0 -_080577FE: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSurfableFishableWater - - thumb_func_start sub_8057804 -sub_8057804: @ 8057804 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - beq _08057812 - movs r0, 0 - b _08057814 -_08057812: - movs r0, 0x1 -_08057814: - pop {r1} - bx r1 - thumb_func_end sub_8057804 - - thumb_func_start sub_8057818 -sub_8057818: @ 8057818 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x66 - beq _08057826 - movs r0, 0 - b _08057828 -_08057826: - movs r0, 0x1 -_08057828: - pop {r1} - bx r1 - thumb_func_end sub_8057818 - - thumb_func_start sub_805782C -sub_805782C: @ 805782C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD2 - beq _0805783A - movs r0, 0 - b _0805783C -_0805783A: - movs r0, 0x1 -_0805783C: - pop {r1} - bx r1 - thumb_func_end sub_805782C - - thumb_func_start MetatileBehavior_IsMuddySlope -MetatileBehavior_IsMuddySlope: @ 8057840 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD0 - beq _0805784E - movs r0, 0 - b _08057850 -_0805784E: - movs r0, 0x1 -_08057850: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsMuddySlope - - thumb_func_start MetatileBehavior_IsBumpySlope -MetatileBehavior_IsBumpySlope: @ 8057854 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD1 - beq _08057862 - movs r0, 0 - b _08057864 -_08057862: - movs r0, 0x1 -_08057864: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsBumpySlope - - thumb_func_start MetatileBehavior_IsIsolatedVerticalRail -MetatileBehavior_IsIsolatedVerticalRail: @ 8057868 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD3 - beq _08057876 - movs r0, 0 - b _08057878 -_08057876: - movs r0, 0x1 -_08057878: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsIsolatedVerticalRail - - thumb_func_start MetatileBehavior_IsIsolatedHorizontalRail -MetatileBehavior_IsIsolatedHorizontalRail: @ 805787C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD4 - beq _0805788A - movs r0, 0 - b _0805788C -_0805788A: - movs r0, 0x1 -_0805788C: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsIsolatedHorizontalRail - - thumb_func_start MetatileBehavior_IsVerticalRail -MetatileBehavior_IsVerticalRail: @ 8057890 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD5 - beq _0805789E - movs r0, 0 - b _080578A0 -_0805789E: - movs r0, 0x1 -_080578A0: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsVerticalRail - - thumb_func_start MetatileBehavior_IsHorizontalRail -MetatileBehavior_IsHorizontalRail: @ 80578A4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD6 - beq _080578B2 - movs r0, 0 - b _080578B4 -_080578B2: - movs r0, 0x1 -_080578B4: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsHorizontalRail - - thumb_func_start MetatileBehavior_IsSeaweed -MetatileBehavior_IsSeaweed: @ 80578B8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x22 - beq _080578C6 - cmp r0, 0x2A - bne _080578CA -_080578C6: - movs r0, 0x1 - b _080578CC -_080578CA: - movs r0, 0 -_080578CC: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsSeaweed - - thumb_func_start MetatileBehavior_IsRunningDisallowed -MetatileBehavior_IsRunningDisallowed: @ 80578D0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA - beq _080578EC - cmp r0, 0x3 - beq _080578EC - cmp r0, 0x28 - beq _080578EC - bl MetatileBehavior_IsPacifidlogLog - lsls r0, 24 - cmp r0, 0 - beq _080578F0 -_080578EC: - movs r0, 0x1 - b _080578F2 -_080578F0: - movs r0, 0 -_080578F2: - pop {r1} - bx r1 - thumb_func_end MetatileBehavior_IsRunningDisallowed - - thumb_func_start sub_80578F8 -sub_80578F8: @ 80578F8 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - movs r2, 0xFE - lsls r2, 24 - adds r0, r2 - lsrs r0, 24 - cmp r0, 0x1 - bls _08057912 - cmp r1, 0x24 - beq _08057912 - cmp r1, 0x9 - bne _08057916 -_08057912: - movs r0, 0x1 - b _08057918 -_08057916: - movs r0, 0 -_08057918: - pop {r1} - bx r1 - thumb_func_end sub_80578F8 - - thumb_func_start sub_805791C -sub_805791C: @ 805791C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8E - beq _0805792A - movs r0, 0 - b _0805792C -_0805792A: - movs r0, 0x1 -_0805792C: - pop {r1} - bx r1 - thumb_func_end sub_805791C - - thumb_func_start sub_8057930 -sub_8057930: @ 8057930 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE0 - beq _0805793E - movs r0, 0 - b _08057940 -_0805793E: - movs r0, 0x1 -_08057940: - pop {r1} - bx r1 - thumb_func_end sub_8057930 - - thumb_func_start sub_8057944 -sub_8057944: @ 8057944 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE1 - beq _08057952 - movs r0, 0 - b _08057954 -_08057952: - movs r0, 0x1 -_08057954: - pop {r1} - bx r1 - thumb_func_end sub_8057944 - - thumb_func_start sub_8057958 -sub_8057958: @ 8057958 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE2 - beq _08057966 - movs r0, 0 - b _08057968 -_08057966: - movs r0, 0x1 -_08057968: - pop {r1} - bx r1 - thumb_func_end sub_8057958 - - thumb_func_start sub_805796C -sub_805796C: @ 805796C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE3 - beq _0805797A - movs r0, 0 - b _0805797C -_0805797A: - movs r0, 0x1 -_0805797C: - pop {r1} - bx r1 - thumb_func_end sub_805796C - - thumb_func_start sub_8057980 -sub_8057980: @ 8057980 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE4 - beq _0805798E - movs r0, 0 - b _08057990 -_0805798E: - movs r0, 0x1 -_08057990: - pop {r1} - bx r1 - thumb_func_end sub_8057980 - - thumb_func_start sub_8057994 -sub_8057994: @ 8057994 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE5 - beq _080579A2 - movs r0, 0 - b _080579A4 -_080579A2: - movs r0, 0x1 -_080579A4: - pop {r1} - bx r1 - thumb_func_end sub_8057994 - - thumb_func_start sub_80579A8 -sub_80579A8: @ 80579A8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE6 - beq _080579B6 - movs r0, 0 - b _080579B8 -_080579B6: - movs r0, 0x1 -_080579B8: - pop {r1} - bx r1 - thumb_func_end sub_80579A8 - - thumb_func_start move_tilemap_camera_to_upper_left_corner_ -move_tilemap_camera_to_upper_left_corner_: @ 80579BC - movs r1, 0 - strb r1, [r0, 0x2] - strb r1, [r0, 0x3] - strb r1, [r0] - strb r1, [r0, 0x1] - movs r1, 0x1 - strb r1, [r0, 0x4] - bx lr - thumb_func_end move_tilemap_camera_to_upper_left_corner_ - - thumb_func_start tilemap_move_something -tilemap_move_something: @ 80579CC - ldrb r3, [r0, 0x2] - adds r3, r1 - strb r3, [r0, 0x2] - ldrb r1, [r0, 0x2] - movs r3, 0x1F - ands r1, r3 - strb r1, [r0, 0x2] - ldrb r1, [r0, 0x3] - adds r1, r2 - strb r1, [r0, 0x3] - ldrb r1, [r0, 0x3] - ands r1, r3 - strb r1, [r0, 0x3] - bx lr - thumb_func_end tilemap_move_something - - thumb_func_start coords8_add -coords8_add: @ 80579E8 - ldrb r3, [r0] - adds r3, r1 - strb r3, [r0] - ldrb r1, [r0, 0x1] - adds r1, r2 - strb r1, [r0, 0x1] - bx lr - thumb_func_end coords8_add - - thumb_func_start move_tilemap_camera_to_upper_left_corner -move_tilemap_camera_to_upper_left_corner: @ 80579F8 - push {r4-r6,lr} - sub sp, 0x8 - ldr r0, _08057A44 @ =gUnknown_03000590 - bl move_tilemap_camera_to_upper_left_corner_ - mov r0, sp - movs r6, 0 - strh r6, [r0] - ldr r4, _08057A48 @ =gBG2TilemapBuffer - ldr r5, _08057A4C @ =0x01000400 - adds r1, r4, 0 - adds r2, r5, 0 - bl CpuSet - mov r0, sp - adds r0, 0x2 - strh r6, [r0] - ldr r2, _08057A50 @ =0xfffff800 - adds r1, r4, r2 - adds r2, r5, 0 - bl CpuSet - add r0, sp, 0x4 - ldr r2, _08057A54 @ =0x00003014 - adds r1, r2, 0 - strh r1, [r0] - movs r1, 0x80 - lsls r1, 4 - adds r4, r1 - adds r1, r4, 0 - adds r2, r5, 0 - bl CpuSet - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08057A44: .4byte gUnknown_03000590 -_08057A48: .4byte gBG2TilemapBuffer -_08057A4C: .4byte 0x01000400 -_08057A50: .4byte 0xfffff800 -_08057A54: .4byte 0x00003014 - thumb_func_end move_tilemap_camera_to_upper_left_corner - - thumb_func_start sub_8057A58 -sub_8057A58: @ 8057A58 - push {r4-r7,lr} - ldr r5, _08057AE8 @ =gBGHOffsetRegs - ldr r1, [r5, 0x4] - ldr r6, _08057AEC @ =gUnknown_03000590 - ldr r4, _08057AF0 @ =gUnknown_03000598 - ldrh r0, [r4] - ldrb r2, [r6] - adds r0, r2 - strh r0, [r1] - ldr r3, _08057AF4 @ =gBGVOffsetRegs - ldr r1, [r3, 0x4] - ldr r2, _08057AF8 @ =gUnknown_0300059A - ldrh r0, [r2] - ldrb r7, [r6, 0x1] - adds r0, r7 - adds r0, 0x8 - strh r0, [r1] - ldr r1, [r5, 0x8] - ldrh r0, [r4] - ldrb r7, [r6] - adds r0, r7 - strh r0, [r1] - ldr r1, [r3, 0x8] - ldrh r0, [r2] - ldrb r7, [r6, 0x1] - adds r0, r7 - adds r0, 0x8 - strh r0, [r1] - ldr r1, [r5, 0xC] - ldrh r0, [r4] - ldrb r4, [r6] - adds r0, r4 - strh r0, [r1] - ldr r1, [r3, 0xC] - ldrh r0, [r2] - ldrb r7, [r6, 0x1] - adds r0, r7 - adds r0, 0x8 - strh r0, [r1] - ldrb r0, [r6, 0x4] - cmp r0, 0 - beq _08057AE0 - ldr r0, _08057AFC @ =0x040000d4 - ldr r2, _08057B00 @ =gBG1TilemapBuffer - str r2, [r0] - ldr r1, _08057B04 @ =0x0600e800 - str r1, [r0, 0x4] - ldr r3, _08057B08 @ =0x80000400 - str r3, [r0, 0x8] - ldr r1, [r0, 0x8] - movs r4, 0x80 - lsls r4, 4 - adds r1, r2, r4 - str r1, [r0] - ldr r1, _08057B0C @ =0x0600e000 - str r1, [r0, 0x4] - str r3, [r0, 0x8] - ldr r1, [r0, 0x8] - movs r7, 0x80 - lsls r7, 5 - adds r2, r7 - str r2, [r0] - ldr r1, _08057B10 @ =0x0600f000 - str r1, [r0, 0x4] - str r3, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r0, 0 - strb r0, [r6, 0x4] -_08057AE0: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08057AE8: .4byte gBGHOffsetRegs -_08057AEC: .4byte gUnknown_03000590 -_08057AF0: .4byte gUnknown_03000598 -_08057AF4: .4byte gBGVOffsetRegs -_08057AF8: .4byte gUnknown_0300059A -_08057AFC: .4byte 0x040000d4 -_08057B00: .4byte gBG1TilemapBuffer -_08057B04: .4byte 0x0600e800 -_08057B08: .4byte 0x80000400 -_08057B0C: .4byte 0x0600e000 -_08057B10: .4byte 0x0600f000 - thumb_func_end sub_8057A58 - - thumb_func_start sub_8057B14 -sub_8057B14: @ 8057B14 - push {r4,lr} - ldr r3, _08057B34 @ =gUnknown_03000590 - ldr r2, _08057B38 @ =gUnknown_03000598 - ldrh r2, [r2] - ldrb r4, [r3] - adds r2, r4 - strh r2, [r0] - ldr r0, _08057B3C @ =gUnknown_0300059A - ldrh r0, [r0] - ldrb r3, [r3, 0x1] - adds r0, r3 - adds r0, 0x8 - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08057B34: .4byte gUnknown_03000590 -_08057B38: .4byte gUnknown_03000598 -_08057B3C: .4byte gUnknown_0300059A - thumb_func_end sub_8057B14 - - thumb_func_start DrawWholeMapView -DrawWholeMapView: @ 8057B40 - push {lr} - ldr r1, _08057B60 @ =gSaveBlock1 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - ldr r2, _08057B64 @ =gMapHeader - ldr r2, [r2] - bl DrawWholeMapViewInternal - ldr r1, _08057B68 @ =gUnknown_03000590 - movs r0, 0x1 - strb r0, [r1, 0x4] - pop {r0} - bx r0 - .align 2, 0 -_08057B60: .4byte gSaveBlock1 -_08057B64: .4byte gMapHeader -_08057B68: .4byte gUnknown_03000590 - thumb_func_end DrawWholeMapView - - thumb_func_start DrawWholeMapViewInternal -DrawWholeMapViewInternal: @ 8057B6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r10, r0 - mov r9, r1 - mov r8, r2 - movs r1, 0 -_08057B80: - ldr r2, _08057BEC @ =gUnknown_03000590 - ldrb r0, [r2, 0x3] - adds r0, r1, r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1F - bls _08057B94 - subs r0, 0x20 - lsls r0, 24 - lsrs r0, 24 -_08057B94: - lsls r6, r0, 5 - movs r4, 0 - adds r7, r1, 0x2 - str r7, [sp] - lsrs r5, r1, 1 -_08057B9E: - ldr r1, _08057BEC @ =gUnknown_03000590 - ldrb r0, [r1, 0x2] - adds r0, r4, r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1F - bls _08057BB2 - subs r0, 0x20 - lsls r0, 24 - lsrs r0, 24 -_08057BB2: - adds r1, r6, r0 - lsls r1, 16 - lsrs r1, 16 - lsrs r2, r4, 1 - add r2, r10 - mov r0, r8 - mov r7, r9 - adds r3, r7, r5 - bl DrawMetatileAt - adds r0, r4, 0x2 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1F - bls _08057B9E - ldr r1, [sp] - lsls r0, r1, 24 - lsrs r1, r0, 24 - cmp r1, 0x1F - bls _08057B80 - 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 -_08057BEC: .4byte gUnknown_03000590 - thumb_func_end DrawWholeMapViewInternal - - thumb_func_start RedrawMapSlicesForCameraUpdate -RedrawMapSlicesForCameraUpdate: @ 8057BF0 - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r1, 0 - adds r7, r2, 0 - ldr r0, _08057C38 @ =gMapHeader - ldr r4, [r0] - cmp r6, 0 - ble _08057C08 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8057D48 -_08057C08: - cmp r6, 0 - bge _08057C14 - adds r0, r5, 0 - adds r1, r4, 0 - bl RedrawMapSliceEast -_08057C14: - cmp r7, 0 - ble _08057C20 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8057C3C -_08057C20: - cmp r7, 0 - bge _08057C2C - adds r0, r5, 0 - adds r1, r4, 0 - bl RedrawMapSliceSouth -_08057C2C: - movs r0, 0x1 - strb r0, [r5, 0x4] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08057C38: .4byte gMapHeader - thumb_func_end RedrawMapSlicesForCameraUpdate - - thumb_func_start sub_8057C3C -sub_8057C3C: @ 8057C3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - mov r8, r1 - ldrb r0, [r5, 0x3] - adds r0, 0x1C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1F - bls _08057C58 - subs r0, 0x20 - lsls r0, 24 - lsrs r0, 24 -_08057C58: - lsls r7, r0, 5 - movs r4, 0 - ldr r6, _08057CA0 @ =gSaveBlock1 -_08057C5E: - ldrb r0, [r5, 0x2] - adds r0, r4, r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1F - bls _08057C70 - subs r0, 0x20 - lsls r0, 24 - lsrs r0, 24 -_08057C70: - adds r1, r7, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - ldrsh r2, [r6, r0] - lsrs r0, r4, 1 - adds r2, r0 - movs r0, 0x2 - ldrsh r3, [r6, r0] - adds r3, 0xE - mov r0, r8 - bl DrawMetatileAt - adds r0, r4, 0x2 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1F - bls _08057C5E - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08057CA0: .4byte gSaveBlock1 - thumb_func_end sub_8057C3C - - thumb_func_start RedrawMapSliceSouth -RedrawMapSliceSouth: @ 8057CA4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - mov r8, r1 - ldrb r0, [r5, 0x3] - lsls r7, r0, 5 - movs r4, 0 - ldr r6, _08057CF0 @ =gSaveBlock1 -_08057CB6: - ldrb r0, [r5, 0x2] - adds r0, r4, r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1F - bls _08057CC8 - subs r0, 0x20 - lsls r0, 24 - lsrs r0, 24 -_08057CC8: - adds r1, r7, r0 - movs r0, 0 - ldrsh r2, [r6, r0] - lsrs r0, r4, 1 - adds r2, r0 - movs r0, 0x2 - ldrsh r3, [r6, r0] - mov r0, r8 - bl DrawMetatileAt - adds r0, r4, 0x2 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1F - bls _08057CB6 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08057CF0: .4byte gSaveBlock1 - thumb_func_end RedrawMapSliceSouth - - thumb_func_start RedrawMapSliceEast -RedrawMapSliceEast: @ 8057CF4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - mov r8, r1 - ldrb r6, [r5, 0x2] - movs r4, 0 -_08057D02: - ldrb r0, [r5, 0x3] - adds r0, r4, r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1F - bls _08057D14 - subs r0, 0x20 - lsls r0, 24 - lsrs r0, 24 -_08057D14: - lsls r1, r0, 5 - adds r1, r6 - lsls r1, 16 - lsrs r1, 16 - ldr r0, _08057D44 @ =gSaveBlock1 - movs r3, 0 - ldrsh r2, [r0, r3] - movs r7, 0x2 - ldrsh r3, [r0, r7] - lsrs r0, r4, 1 - adds r3, r0 - mov r0, r8 - bl DrawMetatileAt - adds r0, r4, 0x2 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1F - bls _08057D02 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08057D44: .4byte gSaveBlock1 - thumb_func_end RedrawMapSliceEast - - thumb_func_start sub_8057D48 -sub_8057D48: @ 8057D48 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - mov r8, r1 - ldrb r0, [r6, 0x2] - adds r0, 0x1C - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1F - bls _08057D66 - adds r0, r5, 0 - subs r0, 0x20 - lsls r0, 24 - lsrs r5, r0, 24 -_08057D66: - movs r4, 0 - ldr r7, _08057DAC @ =gSaveBlock1 -_08057D6A: - ldrb r0, [r6, 0x3] - adds r0, r4, r0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1F - bls _08057D7C - subs r0, 0x20 - lsls r0, 24 - lsrs r0, 24 -_08057D7C: - lsls r1, r0, 5 - adds r1, r5 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0 - ldrsh r2, [r7, r0] - adds r2, 0xE - movs r0, 0x2 - ldrsh r3, [r7, r0] - lsrs r0, r4, 1 - adds r3, r0 - mov r0, r8 - bl DrawMetatileAt - adds r0, r4, 0x2 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1F - bls _08057D6A - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08057DAC: .4byte gSaveBlock1 - thumb_func_end sub_8057D48 - - thumb_func_start CurrentMapDrawMetatileAt -CurrentMapDrawMetatileAt: @ 8057DB0 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r6, _08057DE4 @ =gUnknown_03000590 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl MapPosToBgTilemapOffset - adds r1, r0, 0 - cmp r1, 0 - blt _08057DDC - ldr r0, _08057DE8 @ =gMapHeader - ldr r0, [r0] - lsls r1, 16 - lsrs r1, 16 - adds r2, r4, 0 - adds r3, r5, 0 - bl DrawMetatileAt - movs r0, 0x1 - strb r0, [r6, 0x4] -_08057DDC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08057DE4: .4byte gUnknown_03000590 -_08057DE8: .4byte gMapHeader - thumb_func_end CurrentMapDrawMetatileAt - - thumb_func_start DrawDoorMetatileAt -DrawDoorMetatileAt: @ 8057DEC - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - ldr r6, _08057E1C @ =gUnknown_03000590 - adds r0, r6, 0 - adds r1, r3, 0 - adds r2, r4, 0 - bl MapPosToBgTilemapOffset - cmp r0, 0 - blt _08057E14 - lsls r2, r0, 16 - lsrs r2, 16 - movs r0, 0x1 - adds r1, r5, 0 - bl DrawMetatile - movs r0, 0x1 - strb r0, [r6, 0x4] -_08057E14: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08057E1C: .4byte gUnknown_03000590 - thumb_func_end DrawDoorMetatileAt - - thumb_func_start DrawMetatileAt -DrawMetatileAt: @ 8057E20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - adds r6, r2, 0 - adds r7, r3, 0 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - adds r0, r6, 0 - adds r1, r7, 0 - bl MapGridGetMetatileIdAt - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0x80 - lsls r0, 3 - cmp r4, r0 - bls _08057E48 - movs r4, 0 -_08057E48: - ldr r0, _08057E54 @ =0x000001ff - cmp r4, r0 - bhi _08057E58 - ldr r0, [r5, 0x10] - ldr r5, [r0, 0xC] - b _08057E64 - .align 2, 0 -_08057E54: .4byte 0x000001ff -_08057E58: - ldr r0, [r5, 0x14] - ldr r5, [r0, 0xC] - ldr r1, _08057E84 @ =0xfffffe00 - adds r0, r4, r1 - lsls r0, 16 - lsrs r4, r0, 16 -_08057E64: - adds r0, r6, 0 - adds r1, r7, 0 - bl MapGridGetMetatileLayerTypeAt - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 4 - adds r1, r5, r1 - mov r2, r8 - bl DrawMetatile - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08057E84: .4byte 0xfffffe00 - thumb_func_end DrawMetatileAt - - thumb_func_start DrawMetatile -DrawMetatile: @ 8057E88 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r1, 0 - lsls r2, 16 - lsrs r6, r2, 16 - cmp r0, 0x1 - beq _08057F28 - cmp r0, 0x1 - bgt _08057EA6 - cmp r0, 0 - bne _08057EA4 - b _08057FA0 -_08057EA4: - b _08058010 -_08057EA6: - cmp r0, 0x2 - beq _08057EAC - b _08058010 -_08057EAC: - ldr r0, _08057F24 @ =gBG0TilemapBuffer - mov r12, r0 - lsls r1, r6, 1 - mov r9, r1 - movs r5, 0xC0 - lsls r5, 5 - add r5, r12 - adds r1, r5 - ldrh r0, [r7] - movs r2, 0 - mov r8, r2 - strh r0, [r1] - adds r4, r6, 0x1 - lsls r4, 1 - adds r1, r4, r5 - ldrh r0, [r7, 0x2] - strh r0, [r1] - adds r3, r6, 0 - adds r3, 0x20 - lsls r3, 1 - adds r1, r3, r5 - ldrh r0, [r7, 0x4] - strh r0, [r1] - adds r2, r6, 0 - adds r2, 0x21 - lsls r2, 1 - adds r5, r2, r5 - ldrh r0, [r7, 0x6] - strh r0, [r5] - movs r1, 0x80 - lsls r1, 5 - add r1, r12 - mov r5, r9 - adds r0, r5, r1 - mov r5, r8 - strh r5, [r0] - adds r0, r4, r1 - strh r5, [r0] - adds r0, r3, r1 - strh r5, [r0] - adds r1, r2, r1 - strh r5, [r1] - movs r5, 0x80 - lsls r5, 4 - add r5, r12 - add r9, r5 - ldrh r0, [r7, 0x8] - mov r1, r9 - strh r0, [r1] - adds r4, r5 - ldrh r0, [r7, 0xA] - strh r0, [r4] - adds r3, r5 - ldrh r0, [r7, 0xC] - strh r0, [r3] - adds r2, r5 - ldrh r0, [r7, 0xE] - strh r0, [r2] - b _08058010 - .align 2, 0 -_08057F24: .4byte gBG0TilemapBuffer -_08057F28: - ldr r2, _08057F98 @ =gBG0TilemapBuffer - mov r12, r2 - lsls r3, r6, 1 - mov r8, r3 - movs r2, 0xC0 - lsls r2, 5 - add r2, r12 - adds r1, r3, r2 - ldrh r0, [r7] - movs r5, 0 - mov r9, r5 - strh r0, [r1] - adds r5, r6, 0x1 - lsls r5, 1 - adds r1, r5, r2 - ldrh r0, [r7, 0x2] - strh r0, [r1] - adds r4, r6, 0 - adds r4, 0x20 - lsls r4, 1 - adds r1, r4, r2 - ldrh r0, [r7, 0x4] - strh r0, [r1] - adds r3, r6, 0 - adds r3, 0x21 - lsls r3, 1 - adds r2, r3, r2 - ldrh r0, [r7, 0x6] - strh r0, [r2] - movs r1, 0x80 - lsls r1, 5 - add r1, r12 - mov r0, r8 - adds r2, r0, r1 - ldrh r0, [r7, 0x8] - strh r0, [r2] - adds r2, r5, r1 - ldrh r0, [r7, 0xA] - strh r0, [r2] - adds r2, r4, r1 - ldrh r0, [r7, 0xC] - strh r0, [r2] - adds r1, r3, r1 - ldrh r0, [r7, 0xE] - strh r0, [r1] - ldr r1, _08057F9C @ =gBG1TilemapBuffer - add r8, r1 - mov r0, r9 - mov r2, r8 - strh r0, [r2] - adds r5, r1 - strh r0, [r5] - adds r4, r1 - strh r0, [r4] - adds r3, r1 - b _0805800E - .align 2, 0 -_08057F98: .4byte gBG0TilemapBuffer -_08057F9C: .4byte gBG1TilemapBuffer -_08057FA0: - ldr r1, _0805801C @ =gBG0TilemapBuffer - mov r9, r1 - lsls r2, r6, 1 - mov r8, r2 - movs r1, 0xC0 - lsls r1, 5 - add r1, r9 - adds r0, r2, r1 - ldr r2, _08058020 @ =0x00003014 - strh r2, [r0] - adds r5, r6, 0x1 - lsls r5, 1 - adds r0, r5, r1 - strh r2, [r0] - adds r4, r6, 0 - adds r4, 0x20 - lsls r4, 1 - adds r0, r4, r1 - strh r2, [r0] - adds r3, r6, 0 - adds r3, 0x21 - lsls r3, 1 - adds r1, r3, r1 - strh r2, [r1] - movs r1, 0x80 - lsls r1, 5 - add r1, r9 - mov r0, r8 - adds r2, r0, r1 - ldrh r0, [r7] - strh r0, [r2] - adds r2, r5, r1 - ldrh r0, [r7, 0x2] - strh r0, [r2] - adds r2, r4, r1 - ldrh r0, [r7, 0x4] - strh r0, [r2] - adds r1, r3, r1 - ldrh r0, [r7, 0x6] - strh r0, [r1] - movs r2, 0x80 - lsls r2, 4 - add r2, r9 - add r8, r2 - ldrh r0, [r7, 0x8] - mov r1, r8 - strh r0, [r1] - adds r5, r2 - ldrh r0, [r7, 0xA] - strh r0, [r5] - adds r4, r2 - ldrh r0, [r7, 0xC] - strh r0, [r4] - adds r3, r2 - ldrh r0, [r7, 0xE] -_0805800E: - strh r0, [r3] -_08058010: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805801C: .4byte gBG0TilemapBuffer -_08058020: .4byte 0x00003014 - thumb_func_end DrawMetatile - - thumb_func_start MapPosToBgTilemapOffset -MapPosToBgTilemapOffset: @ 8058024 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r4, _08058054 @ =gSaveBlock1 - movs r5, 0 - ldrsh r0, [r4, r5] - subs r1, r0 - lsls r1, 1 - cmp r1, 0x1F - bhi _0805804C - ldrb r0, [r3, 0x2] - adds r1, r0 - cmp r1, 0x1F - ble _08058040 - subs r1, 0x20 -_08058040: - movs r5, 0x2 - ldrsh r0, [r4, r5] - subs r0, r2, r0 - lsls r2, r0, 1 - cmp r2, 0x1F - bls _08058058 -_0805804C: - movs r0, 0x1 - negs r0, r0 - b _08058066 - .align 2, 0 -_08058054: .4byte gSaveBlock1 -_08058058: - ldrb r0, [r3, 0x3] - adds r2, r0 - cmp r2, 0x1F - ble _08058062 - subs r2, 0x20 -_08058062: - lsls r0, r2, 5 - adds r0, r1 -_08058066: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end MapPosToBgTilemapOffset - - thumb_func_start CameraUpdateCallback -CameraUpdateCallback: @ 805806C - push {lr} - adds r3, r0, 0 - ldr r2, [r3, 0x4] - cmp r2, 0 - beq _0805808C - ldr r1, _08058090 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r2, 0x32 - ldrsh r1, [r0, r2] - str r1, [r3, 0x8] - movs r1, 0x34 - ldrsh r0, [r0, r1] - str r0, [r3, 0xC] -_0805808C: - pop {r0} - bx r0 - .align 2, 0 -_08058090: .4byte gSprites - thumb_func_end CameraUpdateCallback - - thumb_func_start ResetCameraUpdateInfo -ResetCameraUpdateInfo: @ 8058094 - ldr r1, _080580A8 @ =gUnknown_03004880 - movs r0, 0 - str r0, [r1, 0x8] - str r0, [r1, 0xC] - str r0, [r1, 0x10] - str r0, [r1, 0x14] - str r0, [r1, 0x4] - str r0, [r1] - bx lr - .align 2, 0 -_080580A8: .4byte gUnknown_03004880 - thumb_func_end ResetCameraUpdateInfo - - thumb_func_start InitCameraUpdateCallback -InitCameraUpdateCallback: @ 80580AC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _080580E0 @ =gUnknown_03004880 - ldr r1, [r4, 0x4] - cmp r1, 0 - beq _080580C8 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080580E4 @ =gSprites - adds r0, r1 - bl DestroySprite -_080580C8: - adds r0, r5, 0 - bl AddCameraObject - lsls r0, 24 - lsrs r0, 24 - str r0, [r4, 0x4] - ldr r0, _080580E8 @ =CameraUpdateCallback - str r0, [r4] - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080580E0: .4byte gUnknown_03004880 -_080580E4: .4byte gSprites -_080580E8: .4byte CameraUpdateCallback - thumb_func_end InitCameraUpdateCallback - - thumb_func_start CameraUpdate -CameraUpdate: @ 80580EC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r6, _080581EC @ =gUnknown_03004880 - ldr r1, [r6] - cmp r1, 0 - beq _08058100 - adds r0, r6, 0 - bl _call_via_r1 -_08058100: - ldr r7, [r6, 0x8] - ldr r0, [r6, 0xC] - mov r8, r0 - movs r4, 0 - movs r5, 0 - ldr r1, [r6, 0x10] - ldr r0, [r6, 0x14] - cmp r1, 0 - bne _0805811E - cmp r7, 0 - beq _0805811E - subs r4, 0x1 - cmp r7, 0 - ble _0805811E - movs r4, 0x1 -_0805811E: - cmp r0, 0 - bne _08058132 - mov r2, r8 - cmp r2, 0 - beq _08058132 - movs r5, 0x1 - negs r5, r5 - cmp r2, 0 - ble _08058132 - movs r5, 0x1 -_08058132: - cmp r1, 0 - beq _08058144 - cmn r1, r7 - bne _08058144 - movs r4, 0x1 - negs r4, r4 - cmp r7, 0 - ble _08058144 - movs r4, 0x1 -_08058144: - cmp r0, 0 - beq _08058158 - mov r3, r8 - cmn r0, r3 - bne _08058158 - movs r4, 0x1 - negs r4, r4 - cmp r3, 0 - ble _08058158 - movs r4, 0x1 -_08058158: - ldr r2, _080581EC @ =gUnknown_03004880 - ldr r0, [r2, 0x10] - adds r1, r0, r7 - str r1, [r2, 0x10] - adds r0, r1, 0 - cmp r1, 0 - bge _08058168 - adds r0, 0xF -_08058168: - asrs r0, 4 - lsls r0, 4 - subs r0, r1, r0 - str r0, [r2, 0x10] - ldr r0, [r2, 0x14] - mov r3, r8 - adds r1, r0, r3 - str r1, [r2, 0x14] - adds r0, r1, 0 - cmp r1, 0 - bge _08058180 - adds r0, 0xF -_08058180: - asrs r0, 4 - lsls r0, 4 - subs r0, r1, r0 - str r0, [r2, 0x14] - cmp r4, 0 - bne _08058190 - cmp r5, 0 - beq _080581C6 -_08058190: - adds r0, r4, 0 - adds r1, r5, 0 - bl CameraMove - adds r0, r4, 0 - adds r1, r5, 0 - bl UpdateFieldObjectsForCameraUpdate - adds r0, r4, 0 - adds r1, r5, 0 - bl RotatingGatePuzzleCameraUpdate - bl ResetBerryTreeSparkleFlags - ldr r6, _080581F0 @ =gUnknown_03000590 - lsls r4, 1 - lsls r5, 1 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl tilemap_move_something - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl RedrawMapSlicesForCameraUpdate -_080581C6: - ldr r0, _080581F0 @ =gUnknown_03000590 - adds r1, r7, 0 - mov r2, r8 - bl coords8_add - ldr r1, _080581F4 @ =gUnknown_0300489C - ldrh r0, [r1] - subs r0, r7 - strh r0, [r1] - ldr r1, _080581F8 @ =gUnknown_03004898 - ldrh r0, [r1] - mov r2, r8 - subs r0, r2 - strh r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080581EC: .4byte gUnknown_03004880 -_080581F0: .4byte gUnknown_03000590 -_080581F4: .4byte gUnknown_0300489C -_080581F8: .4byte gUnknown_03004898 - thumb_func_end CameraUpdate - - thumb_func_start camera_move_and_redraw -camera_move_and_redraw: @ 80581FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl CameraMove - lsls r0, r4, 16 - asrs r0, 16 - lsls r1, r5, 16 - asrs r1, 16 - bl UpdateFieldObjectsForCameraUpdate - bl DrawWholeMapView - ldr r1, _08058230 @ =gUnknown_0300489C - lsls r4, 4 - ldrh r0, [r1] - subs r0, r4 - strh r0, [r1] - ldr r1, _08058234 @ =gUnknown_03004898 - lsls r5, 4 - ldrh r0, [r1] - subs r0, r5 - strh r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08058230: .4byte gUnknown_0300489C -_08058234: .4byte gUnknown_03004898 - thumb_func_end camera_move_and_redraw - - thumb_func_start SetCameraPanningCallback -SetCameraPanningCallback: @ 8058238 - ldr r1, _08058240 @ =gUnknown_030005A0 - str r0, [r1] - bx lr - .align 2, 0 -_08058240: .4byte gUnknown_030005A0 - thumb_func_end SetCameraPanningCallback - - thumb_func_start SetCameraPanning -SetCameraPanning: @ 8058244 - ldr r2, _08058254 @ =gUnknown_03000598 - strh r0, [r2] - ldr r0, _08058258 @ =gUnknown_0300059A - lsls r1, 16 - asrs r1, 16 - adds r1, 0x20 - strh r1, [r0] - bx lr - .align 2, 0 -_08058254: .4byte gUnknown_03000598 -_08058258: .4byte gUnknown_0300059A - thumb_func_end SetCameraPanning - - thumb_func_start InstallCameraPanAheadCallback -InstallCameraPanAheadCallback: @ 805825C - ldr r1, _08058278 @ =gUnknown_030005A0 - ldr r0, _0805827C @ =CameraPanningCB_PanAhead - str r0, [r1] - ldr r1, _08058280 @ =gUnknown_0300059C - movs r0, 0 - strb r0, [r1] - ldr r1, _08058284 @ =gUnknown_03000598 - movs r0, 0 - strh r0, [r1] - ldr r1, _08058288 @ =gUnknown_0300059A - movs r0, 0x20 - strh r0, [r1] - bx lr - .align 2, 0 -_08058278: .4byte gUnknown_030005A0 -_0805827C: .4byte CameraPanningCB_PanAhead -_08058280: .4byte gUnknown_0300059C -_08058284: .4byte gUnknown_03000598 -_08058288: .4byte gUnknown_0300059A - thumb_func_end InstallCameraPanAheadCallback - - thumb_func_start UpdateCameraPanning -UpdateCameraPanning: @ 805828C - push {lr} - ldr r0, _080582BC @ =gUnknown_030005A0 - ldr r0, [r0] - cmp r0, 0 - beq _0805829A - bl _call_via_r0 -_0805829A: - ldr r2, _080582C0 @ =gSpriteCoordOffsetX - ldr r0, _080582C4 @ =gUnknown_0300489C - ldr r1, _080582C8 @ =gUnknown_03000598 - ldrh r0, [r0] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldr r2, _080582CC @ =gSpriteCoordOffsetY - ldr r0, _080582D0 @ =gUnknown_03004898 - ldr r1, _080582D4 @ =gUnknown_0300059A - ldrh r0, [r0] - ldrh r1, [r1] - subs r0, r1 - subs r0, 0x8 - strh r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_080582BC: .4byte gUnknown_030005A0 -_080582C0: .4byte gSpriteCoordOffsetX -_080582C4: .4byte gUnknown_0300489C -_080582C8: .4byte gUnknown_03000598 -_080582CC: .4byte gSpriteCoordOffsetY -_080582D0: .4byte gUnknown_03004898 -_080582D4: .4byte gUnknown_0300059A - thumb_func_end UpdateCameraPanning - - thumb_func_start CameraPanningCB_PanAhead -CameraPanningCB_PanAhead: @ 80582D8 - push {lr} - ldr r0, _080582E8 @ =gUnknown_0202E854 - ldrb r0, [r0] - cmp r0, 0 - bne _080582EC - bl InstallCameraPanAheadCallback - b _08058374 - .align 2, 0 -_080582E8: .4byte gUnknown_0202E854 -_080582EC: - ldr r0, _08058304 @ =gPlayerAvatar - ldrb r0, [r0, 0x3] - cmp r0, 0x1 - bne _0805830C - ldr r0, _08058308 @ =gUnknown_0300059C - ldrb r1, [r0] - movs r2, 0x1 - eors r1, r2 - strb r1, [r0] - cmp r1, 0 - beq _08058374 - b _08058312 - .align 2, 0 -_08058304: .4byte gPlayerAvatar -_08058308: .4byte gUnknown_0300059C -_0805830C: - ldr r1, _08058334 @ =gUnknown_0300059C - movs r0, 0 - strb r0, [r1] -_08058312: - bl player_get_direction_upper_nybble - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805833C - ldr r2, _08058338 @ =gUnknown_0300059A - ldrh r3, [r2] - movs r0, 0 - ldrsh r1, [r2, r0] - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - ble _08058374 - subs r0, r3, 0x2 - b _08058372 - .align 2, 0 -_08058334: .4byte gUnknown_0300059C -_08058338: .4byte gUnknown_0300059A -_0805833C: - cmp r0, 0x1 - bne _08058358 - ldr r1, _08058354 @ =gUnknown_0300059A - ldrh r2, [r1] - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0x47 - bgt _08058374 - adds r0, r2, 0x2 - strh r0, [r1] - b _08058374 - .align 2, 0 -_08058354: .4byte gUnknown_0300059A -_08058358: - ldr r2, _08058368 @ =gUnknown_0300059A - ldrh r0, [r2] - movs r3, 0 - ldrsh r1, [r2, r3] - cmp r1, 0x1F - bgt _0805836C - adds r0, 0x2 - b _08058372 - .align 2, 0 -_08058368: .4byte gUnknown_0300059A -_0805836C: - cmp r1, 0x20 - ble _08058374 - subs r0, 0x2 -_08058372: - strh r0, [r2] -_08058374: - pop {r0} - bx r0 - thumb_func_end CameraPanningCB_PanAhead - - thumb_func_start sub_8058378 -sub_8058378: @ 8058378 - push {lr} - ldr r1, _08058388 @ =0x06007f00 - movs r2, 0x40 - bl CpuFastSet - pop {r0} - bx r0 - .align 2, 0 -_08058388: .4byte 0x06007f00 - thumb_func_end sub_8058378 - - thumb_func_start door_build_blockdef -door_build_blockdef: @ 805838C - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - movs r4, 0 - adds r1, r6, 0 -_08058398: - ldrb r0, [r2] - lsls r0, 28 - lsrs r3, r0, 16 - adds r2, 0x1 - adds r0, r5, r4 - orrs r3, r0 - strh r3, [r1] - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x3 - ble _08058398 - cmp r4, 0x7 - bgt _080583C6 - lsls r0, r4, 1 - adds r1, r0, r6 -_080583B6: - ldrb r0, [r2] - lsls r3, r0, 12 - adds r2, 0x1 - strh r3, [r1] - adds r1, 0x2 - adds r4, 0x1 - cmp r4, 0x7 - ble _080583B6 -_080583C6: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end door_build_blockdef - - thumb_func_start sub_80583CC -sub_80583CC: @ 80583CC - push {r4-r6,lr} - sub sp, 0x10 - adds r5, r0, 0 - adds r6, r1, 0 - adds r4, r2, 0 - movs r1, 0xFE - lsls r1, 2 - mov r0, sp - bl door_build_blockdef - subs r1, r6, 0x1 - adds r0, r5, 0 - mov r2, sp - bl DrawDoorMetatileAt - movs r1, 0xFF - lsls r1, 2 - adds r4, 0x4 - mov r0, sp - adds r2, r4, 0 - bl door_build_blockdef - adds r0, r5, 0 - adds r1, r6, 0 - mov r2, sp - bl DrawDoorMetatileAt - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80583CC - - thumb_func_start sub_805840C -sub_805840C: @ 805840C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - subs r1, r5, 0x1 - bl CurrentMapDrawMetatileAt - adds r0, r4, 0 - adds r1, r5, 0 - bl CurrentMapDrawMetatileAt - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_805840C - - thumb_func_start sub_8058428 -sub_8058428: @ 8058428 - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - ldrh r1, [r4, 0x2] - ldr r0, _08058444 @ =0x0000ffff - cmp r1, r0 - bne _08058448 - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_805840C - b _0805845C - .align 2, 0 -_08058444: .4byte 0x0000ffff -_08058448: - ldrh r1, [r4, 0x2] - ldr r0, [r5, 0x4] - adds r0, r1 - bl sub_8058378 - ldr r2, [r5, 0x8] - adds r0, r6, 0 - adds r1, r7, 0 - bl sub_80583CC -_0805845C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8058428 - - thumb_func_start sub_8058464 -sub_8058464: @ 8058464 - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0805848A - movs r2, 0x8 - ldrsh r1, [r4, r2] - lsls r1, 2 - adds r1, r5, r1 - movs r0, 0xC - ldrsh r2, [r4, r0] - movs r0, 0xE - ldrsh r3, [r4, r0] - adds r0, r6, 0 - bl sub_8058428 -_0805848A: - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r2, 0x8 - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0] - cmp r1, r0 - bne _080584B8 - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0 - bne _080584BE - movs r0, 0 - b _080584C0 -_080584B8: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] -_080584BE: - movs r0, 0x1 -_080584C0: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8058464 - - thumb_func_start task50_overworld_door -task50_overworld_door: @ 80584C8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 3 - ldr r0, _080584FC @ =gTasks + 0x8 - adds r2, r0 - ldrh r1, [r2] - lsls r1, 16 - ldrh r0, [r2, 0x2] - orrs r1, r0 - ldrh r0, [r2, 0x4] - lsls r0, 16 - ldrh r3, [r2, 0x6] - orrs r0, r3 - bl sub_8058464 - cmp r0, 0 - bne _080584F6 - adds r0, r4, 0 - bl DestroyTask -_080584F6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080584FC: .4byte gTasks + 0x8 - thumb_func_end task50_overworld_door - - thumb_func_start door_frame_last -door_frame_last: @ 8058500 - push {lr} - adds r1, r0, 0 - b _08058508 -_08058506: - adds r1, 0x4 -_08058508: - ldrb r0, [r1] - cmp r0, 0 - bne _08058506 - subs r0, r1, 0x4 - pop {r1} - bx r1 - thumb_func_end door_frame_last - - thumb_func_start door_find -door_find: @ 8058514 - push {lr} - adds r2, r0, 0 - lsls r1, 16 - lsrs r1, 16 - b _0805852A -_0805851E: - ldrh r0, [r2] - cmp r0, r1 - bne _08058528 - adds r0, r2, 0 - b _08058532 -_08058528: - adds r2, 0xC -_0805852A: - ldr r0, [r2, 0x4] - cmp r0, 0 - bne _0805851E - movs r0, 0 -_08058532: - pop {r1} - bx r1 - thumb_func_end door_find - - thumb_func_start task_overworld_door_add_if_inactive -task_overworld_door_add_if_inactive: @ 8058538 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r5, r1, 0 - adds r7, r2, 0 - mov r8, r3 - ldr r4, _08058584 @ =task50_overworld_door - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0805858C - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r2, _08058588 @ =gTasks + 0x8 - adds r1, r2 - strh r7, [r1, 0xC] - mov r2, r8 - strh r2, [r1, 0xE] - strh r5, [r1, 0x2] - lsrs r2, r5, 16 - strh r2, [r1] - strh r6, [r1, 0x6] - lsrs r2, r6, 16 - strh r2, [r1, 0x4] - lsls r0, 24 - asrs r0, 24 - b _08058590 - .align 2, 0 -_08058584: .4byte task50_overworld_door -_08058588: .4byte gTasks + 0x8 -_0805858C: - movs r0, 0x1 - negs r0, r0 -_08058590: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end task_overworld_door_add_if_inactive - - thumb_func_start sub_805859C -sub_805859C: @ 805859C - push {lr} - adds r0, r1, 0 - adds r1, r2, 0 - bl sub_805840C - pop {r0} - bx r0 - thumb_func_end sub_805859C - - thumb_func_start sub_80585AC -sub_80585AC: @ 80585AC - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl door_find - adds r4, r0, 0 - cmp r4, 0 - beq _080585E2 - ldr r1, _080585E8 @ =gUnknown_0830F87C - adds r0, r1, 0 - bl door_frame_last - adds r1, r0, 0 - adds r0, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8058428 -_080585E2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080585E8: .4byte gUnknown_0830F87C - thumb_func_end sub_80585AC - - thumb_func_start sub_80585EC -sub_80585EC: @ 80585EC - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl door_find - cmp r0, 0 - beq _08058620 - ldr r1, _0805861C @ =gUnknown_0830F87C - adds r2, r5, 0 - adds r3, r6, 0 - bl task_overworld_door_add_if_inactive - lsls r0, 24 - asrs r0, 24 - b _08058624 - .align 2, 0 -_0805861C: .4byte gUnknown_0830F87C -_08058620: - movs r0, 0x1 - negs r0, r0 -_08058624: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80585EC - - thumb_func_start sub_805862C -sub_805862C: @ 805862C - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - adds r0, r5, 0 - adds r1, r6, 0 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl door_find - cmp r0, 0 - beq _08058660 - ldr r1, _0805865C @ =gUnknown_0830F890 - adds r2, r5, 0 - adds r3, r6, 0 - bl task_overworld_door_add_if_inactive - lsls r0, 24 - asrs r0, 24 - b _08058664 - .align 2, 0 -_0805865C: .4byte gUnknown_0830F890 -_08058660: - movs r0, 0x1 - negs r0, r0 -_08058664: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805862C - - thumb_func_start cur_mapdata_get_door_x2_at -cur_mapdata_get_door_x2_at: @ 805866C - push {r4,lr} - adds r4, r0, 0 - adds r0, r1, 0 - adds r1, r2, 0 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl door_find - cmp r0, 0 - beq _08058690 - ldrb r0, [r0, 0x2] - lsls r0, 24 - asrs r0, 24 - b _08058694 -_08058690: - movs r0, 0x1 - negs r0, r0 -_08058694: - pop {r4} - pop {r1} - bx r1 - thumb_func_end cur_mapdata_get_door_x2_at - - thumb_func_start unref_sub_805869C -unref_sub_805869C: @ 805869C - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - ldr r0, _080586B0 @ =gDoorAnimGraphicsTable - adds r1, r3, 0 - bl sub_80585EC - pop {r0} - bx r0 - .align 2, 0 -_080586B0: .4byte gDoorAnimGraphicsTable - thumb_func_end unref_sub_805869C - - thumb_func_start sub_80586B4 -sub_80586B4: @ 80586B4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl sub_8056EAC - lsls r0, 24 - cmp r0, 0 - beq _080586D6 - ldr r0, _080586DC @ =gDoorAnimGraphicsTable - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_80585AC -_080586D6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080586DC: .4byte gDoorAnimGraphicsTable - thumb_func_end sub_80586B4 - - thumb_func_start sub_80586E0 -sub_80586E0: @ 80586E0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl sub_8056EAC - lsls r0, 24 - cmp r0, 0 - beq _08058702 - ldr r0, _08058708 @ =gDoorAnimGraphicsTable - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_805859C -_08058702: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08058708: .4byte gDoorAnimGraphicsTable - thumb_func_end sub_80586E0 - - thumb_func_start sub_805870C -sub_805870C: @ 805870C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl sub_8056EAC - lsls r0, 24 - cmp r0, 0 - beq _08058738 - ldr r0, _08058734 @ =gDoorAnimGraphicsTable - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_805862C - lsls r0, 24 - asrs r0, 24 - b _0805873C - .align 2, 0 -_08058734: .4byte gDoorAnimGraphicsTable -_08058738: - movs r0, 0x1 - negs r0, r0 -_0805873C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805870C - - thumb_func_start task_overworld_door_add_if_role_69_for_opening_door_at -task_overworld_door_add_if_role_69_for_opening_door_at: @ 8058744 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl sub_8056EAC - lsls r0, 24 - cmp r0, 0 - beq _08058770 - ldr r0, _0805876C @ =gDoorAnimGraphicsTable - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_80585EC - lsls r0, 24 - asrs r0, 24 - b _08058774 - .align 2, 0 -_0805876C: .4byte gDoorAnimGraphicsTable -_08058770: - movs r0, 0x1 - negs r0, r0 -_08058774: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end task_overworld_door_add_if_role_69_for_opening_door_at - - thumb_func_start sub_805877C -sub_805877C: @ 805877C - push {lr} - ldr r0, _0805878C @ =task50_overworld_door - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0805878C: .4byte task50_overworld_door - thumb_func_end sub_805877C - - thumb_func_start sub_8058790 -sub_8058790: @ 8058790 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - ldr r0, _080587A8 @ =gDoorAnimGraphicsTable - adds r1, r3, 0 - bl cur_mapdata_get_door_x2_at - lsls r0, 24 - cmp r0, 0 - beq _080587AC - movs r0, 0x12 - b _080587AE - .align 2, 0 -_080587A8: .4byte gDoorAnimGraphicsTable -_080587AC: - movs r0, 0x8 -_080587AE: - pop {r1} - bx r1 - thumb_func_end sub_8058790 - - thumb_func_start sub_80587B4 -sub_80587B4: @ 80587B4 - 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, _080587D0 @ =gMapObjects - adds r0, r2 - ldr r2, _080587D4 @ =sub_80587D8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_080587D0: .4byte gMapObjects -_080587D4: .4byte sub_80587D8 - thumb_func_end sub_80587B4 - - thumb_func_start sub_80587D8 -sub_80587D8: @ 80587D8 - movs r0, 0 - bx lr - thumb_func_end sub_80587D8 - - thumb_func_start player_step -player_step: @ 80587DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r6, r2, 16 - ldr r4, _0805884C @ =gPlayerAvatar - ldrb r1, [r4, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08058850 @ =gMapObjects - adds r5, r0, r1 - adds r0, r5, 0 - bl sub_8059D60 - ldrb r0, [r4, 0x6] - cmp r0, 0 - bne _08058842 - adds r0, r7, 0 - adds r1, r6, 0 - bl sub_80E5B38 - adds r0, r5, 0 - mov r1, r8 - bl sub_8058854 - lsls r0, 24 - cmp r0, 0 - bne _08058842 - adds r0, r5, 0 - bl npc_clear_strange_bits - bl DoPlayerAvatarTransition - bl TryDoMetatileBehaviorForcedMovment - lsls r0, 24 - cmp r0, 0 - bne _08058842 - mov r0, r8 - adds r1, r7, 0 - adds r2, r6, 0 - bl MovePlayerAvatarUsingKeypadInput - bl PlayerAllowForcedMovementIfMovingSameDirection -_08058842: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805884C: .4byte gPlayerAvatar -_08058850: .4byte gMapObjects - thumb_func_end player_step - - thumb_func_start sub_8058854 -sub_8058854: @ 8058854 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - beq _0805889E - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - bne _0805889E - adds r0, r4, 0 - bl FieldObjectGetSpecialAnim - lsls r0, 24 - movs r1, 0xE7 - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x3 - bhi _0805889A - cmp r5, 0 - beq _0805889A - ldrb r0, [r4, 0x18] - lsrs r0, 4 - cmp r0, r5 - beq _0805889A - adds r0, r4, 0 - bl FieldObjectClearAnim - b _0805889E -_0805889A: - movs r0, 0x1 - b _080588A0 -_0805889E: - movs r0, 0 -_080588A0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8058854 - - thumb_func_start npc_clear_strange_bits -npc_clear_strange_bits: @ 80588A8 - ldrb r2, [r0, 0x1] - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - movs r2, 0x5 - negs r2, r2 - ands r1, r2 - adds r2, 0x2 - ands r1, r2 - strb r1, [r0, 0x1] - ldr r2, _080588C8 @ =gPlayerAvatar - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - bx lr - .align 2, 0 -_080588C8: .4byte gPlayerAvatar - thumb_func_end npc_clear_strange_bits - - thumb_func_start MovePlayerAvatarUsingKeypadInput -MovePlayerAvatarUsingKeypadInput: @ 80588CC - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r0, _080588F0 @ =gPlayerAvatar - ldrb r1, [r0] - movs r0, 0x6 - ands r0, r1 - cmp r0, 0 - beq _080588F4 - adds r0, r3, 0 - adds r1, r4, 0 - bl MovePlayerOnBike - b _080588FC - .align 2, 0 -_080588F0: .4byte gPlayerAvatar -_080588F4: - adds r0, r3, 0 - adds r1, r2, 0 - bl MovePlayerNotOnBike -_080588FC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end MovePlayerAvatarUsingKeypadInput - - thumb_func_start PlayerAllowForcedMovementIfMovingSameDirection -PlayerAllowForcedMovementIfMovingSameDirection: @ 8058904 - push {lr} - ldr r2, _0805891C @ =gPlayerAvatar - ldrb r0, [r2, 0x2] - cmp r0, 0x2 - bne _08058916 - ldrb r1, [r2] - movs r0, 0xDF - ands r0, r1 - strb r0, [r2] -_08058916: - pop {r0} - bx r0 - .align 2, 0 -_0805891C: .4byte gPlayerAvatar - thumb_func_end PlayerAllowForcedMovementIfMovingSameDirection - - thumb_func_start TryDoMetatileBehaviorForcedMovment -TryDoMetatileBehaviorForcedMovment: @ 8058920 - push {r4,lr} - ldr r4, _08058940 @ =gUnknown_0830FBA0 - bl GetForcedMovementByMetatileBehavior - lsls r0, 24 - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08058940: .4byte gUnknown_0830FBA0 - thumb_func_end TryDoMetatileBehaviorForcedMovment - - thumb_func_start GetForcedMovementByMetatileBehavior -GetForcedMovementByMetatileBehavior: @ 8058944 - push {r4-r6,lr} - ldr r3, _08058980 @ =gPlayerAvatar - ldrb r1, [r3] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _08058996 - ldr r2, _08058984 @ =gMapObjects - ldrb r1, [r3, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r5, [r0, 0x1E] - movs r4, 0 - ldr r6, _08058988 @ =gUnknown_0830FB58 -_08058964: - lsls r0, r4, 2 - adds r0, r6 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _0805898C - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r0, 24 - b _08058998 - .align 2, 0 -_08058980: .4byte gPlayerAvatar -_08058984: .4byte gMapObjects -_08058988: .4byte gUnknown_0830FB58 -_0805898C: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x11 - bls _08058964 -_08058996: - movs r0, 0 -_08058998: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetForcedMovementByMetatileBehavior - - thumb_func_start ForcedMovement_None -ForcedMovement_None: @ 80589A0 - push {r4,lr} - ldr r4, _080589E4 @ =gPlayerAvatar - ldrb r1, [r4] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080589DA - ldrb r1, [r4, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080589E8 @ =gMapObjects - adds r0, r1 - ldrb r2, [r0, 0x1] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0, 0x1] - ldrb r1, [r0, 0x18] - lsls r1, 28 - lsrs r1, 28 - bl FieldObjectSetDirection - ldrb r1, [r4] - movs r0, 0xBF - ands r0, r1 - strb r0, [r4] -_080589DA: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080589E4: .4byte gPlayerAvatar -_080589E8: .4byte gMapObjects - thumb_func_end ForcedMovement_None - - thumb_func_start DoForcedMovement -DoForcedMovement: @ 80589EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _08058A2C @ =gPlayerAvatar - adds r0, r5, 0 - bl CheckForPlayerAvatarCollision - lsls r0, 24 - lsrs r4, r0, 24 - adds r7, r4, 0 - ldrb r0, [r6] - movs r1, 0x40 - mov r10, r1 - movs r1, 0 - mov r8, r1 - mov r1, r10 - orrs r0, r1 - strb r0, [r6] - cmp r4, 0 - beq _08058A48 - bl ForcedMovement_None - cmp r4, 0x4 - bhi _08058A30 - movs r0, 0 - b _08058A54 - .align 2, 0 -_08058A2C: .4byte gPlayerAvatar -_08058A30: - cmp r7, 0x6 - bne _08058A3A - adds r0, r5, 0 - bl PlayerJumpLedge -_08058A3A: - ldrb r0, [r6] - mov r1, r10 - orrs r0, r1 - strb r0, [r6] - movs r0, 0x2 - strb r0, [r6, 0x2] - b _08058A52 -_08058A48: - movs r0, 0x2 - strb r0, [r6, 0x2] - adds r0, r5, 0 - bl _call_via_r9 -_08058A52: - movs r0, 0x1 -_08058A54: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end DoForcedMovement - - thumb_func_start DoForcedMovementInCurrentDirection -DoForcedMovementInCurrentDirection: @ 8058A64 - push {lr} - adds r1, r0, 0 - ldr r0, _08058A90 @ =gPlayerAvatar - ldrb r2, [r0, 0x5] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _08058A94 @ =gMapObjects - adds r0, r2 - ldrb r2, [r0, 0x1] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r0, 0x1] - ldrb r0, [r0, 0x18] - lsrs r0, 4 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058A90: .4byte gPlayerAvatar -_08058A94: .4byte gMapObjects - thumb_func_end DoForcedMovementInCurrentDirection - - thumb_func_start ForcedMovement_Slip -ForcedMovement_Slip: @ 8058A98 - push {lr} - ldr r0, _08058AA8 @ =sub_80593C4 - bl DoForcedMovementInCurrentDirection - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058AA8: .4byte sub_80593C4 - thumb_func_end ForcedMovement_Slip - - thumb_func_start sub_8058AAC -sub_8058AAC: @ 8058AAC - push {lr} - ldr r1, _08058AC0 @ =PlayerGoSpeed0 - movs r0, 0x1 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058AC0: .4byte PlayerGoSpeed0 - thumb_func_end sub_8058AAC - - thumb_func_start sub_8058AC4 -sub_8058AC4: @ 8058AC4 - push {lr} - ldr r1, _08058AD8 @ =PlayerGoSpeed0 - movs r0, 0x2 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058AD8: .4byte PlayerGoSpeed0 - thumb_func_end sub_8058AC4 - - thumb_func_start sub_8058ADC -sub_8058ADC: @ 8058ADC - push {lr} - ldr r1, _08058AF0 @ =PlayerGoSpeed0 - movs r0, 0x3 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058AF0: .4byte PlayerGoSpeed0 - thumb_func_end sub_8058ADC - - thumb_func_start sub_8058AF4 -sub_8058AF4: @ 8058AF4 - push {lr} - ldr r1, _08058B08 @ =PlayerGoSpeed0 - movs r0, 0x4 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058B08: .4byte PlayerGoSpeed0 - thumb_func_end sub_8058AF4 - - thumb_func_start sub_8058B0C -sub_8058B0C: @ 8058B0C - push {lr} - ldr r1, _08058B20 @ =npc_use_some_d2s - movs r0, 0x1 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058B20: .4byte npc_use_some_d2s - thumb_func_end sub_8058B0C - - thumb_func_start sub_8058B24 -sub_8058B24: @ 8058B24 - push {lr} - ldr r1, _08058B38 @ =npc_use_some_d2s - movs r0, 0x2 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058B38: .4byte npc_use_some_d2s - thumb_func_end sub_8058B24 - - thumb_func_start sub_8058B3C -sub_8058B3C: @ 8058B3C - push {lr} - ldr r1, _08058B50 @ =npc_use_some_d2s - movs r0, 0x3 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058B50: .4byte npc_use_some_d2s - thumb_func_end sub_8058B3C - - thumb_func_start sub_8058B54 -sub_8058B54: @ 8058B54 - push {lr} - ldr r1, _08058B68 @ =npc_use_some_d2s - movs r0, 0x4 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058B68: .4byte npc_use_some_d2s - thumb_func_end sub_8058B54 - - thumb_func_start ForcedMovement_Slide -ForcedMovement_Slide: @ 8058B6C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08058B9C @ =gPlayerAvatar - ldrb r3, [r2, 0x5] - lsls r2, r3, 3 - adds r2, r3 - lsls r2, 2 - ldr r3, _08058BA0 @ =gMapObjects - adds r2, r3 - ldrb r3, [r2, 0x1] - movs r4, 0x4 - orrs r3, r4 - movs r4, 0x2 - orrs r3, r4 - strb r3, [r2, 0x1] - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08058B9C: .4byte gPlayerAvatar -_08058BA0: .4byte gMapObjects - thumb_func_end ForcedMovement_Slide - - thumb_func_start ForcedMovement_SlideSouth -ForcedMovement_SlideSouth: @ 8058BA4 - push {lr} - ldr r1, _08058BB8 @ =sub_80593C4 - movs r0, 0x1 - bl ForcedMovement_Slide - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058BB8: .4byte sub_80593C4 - thumb_func_end ForcedMovement_SlideSouth - - thumb_func_start ForcedMovement_SlideNorth -ForcedMovement_SlideNorth: @ 8058BBC - push {lr} - ldr r1, _08058BD0 @ =sub_80593C4 - movs r0, 0x2 - bl ForcedMovement_Slide - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058BD0: .4byte sub_80593C4 - thumb_func_end ForcedMovement_SlideNorth - - thumb_func_start ForcedMovement_SlideWest -ForcedMovement_SlideWest: @ 8058BD4 - push {lr} - ldr r1, _08058BE8 @ =sub_80593C4 - movs r0, 0x3 - bl ForcedMovement_Slide - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058BE8: .4byte sub_80593C4 - thumb_func_end ForcedMovement_SlideWest - - thumb_func_start ForcedMovement_SlideEast -ForcedMovement_SlideEast: @ 8058BEC - push {lr} - ldr r1, _08058C00 @ =sub_80593C4 - movs r0, 0x4 - bl ForcedMovement_Slide - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08058C00: .4byte sub_80593C4 - thumb_func_end ForcedMovement_SlideEast - - thumb_func_start sub_8058C04 -sub_8058C04: @ 8058C04 - push {lr} - bl sub_8059F94 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8058C04 - - thumb_func_start sub_8058C10 -sub_8058C10: @ 8058C10 - push {lr} - bl sub_805A06C - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8058C10 - - thumb_func_start ForcedMovement_MuddySlope -ForcedMovement_MuddySlope: @ 8058C1C - push {r4,lr} - ldr r0, _08058C60 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08058C64 @ =gMapObjects - adds r4, r0, r1 - ldrb r1, [r4, 0x18] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0x20 - bne _08058C42 - bl sub_80E6034 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bgt _08058C6C -_08058C42: - movs r0, 0 - bl sub_80E6010 - ldrb r0, [r4, 0x1] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r1, _08058C68 @ =sub_80593C4 - movs r0, 0x1 - bl DoForcedMovement - lsls r0, 24 - lsrs r0, 24 - b _08058C6E - .align 2, 0 -_08058C60: .4byte gPlayerAvatar -_08058C64: .4byte gMapObjects -_08058C68: .4byte sub_80593C4 -_08058C6C: - movs r0, 0 -_08058C6E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end ForcedMovement_MuddySlope - - thumb_func_start MovePlayerNotOnBike -MovePlayerNotOnBike: @ 8058C74 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - ldr r6, _08058CA0 @ =gUnknown_0830FBEC - adds r0, r4, 0 - bl CheckMovementInputNotOnBike - lsls r0, 24 - lsrs r0, 22 - adds r0, r6 - ldr r2, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - bl _call_via_r2 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08058CA0: .4byte gUnknown_0830FBEC - thumb_func_end MovePlayerNotOnBike - - thumb_func_start CheckMovementInputNotOnBike -CheckMovementInputNotOnBike: @ 8058CA4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08058CBC - ldr r0, _08058CB8 @ =gPlayerAvatar - strb r4, [r0, 0x2] - movs r0, 0 - b _08058CDE - .align 2, 0 -_08058CB8: .4byte gPlayerAvatar -_08058CBC: - bl player_get_direction_upper_nybble - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - beq _08058CD8 - ldr r1, _08058CD4 @ =gPlayerAvatar - ldrb r0, [r1, 0x2] - cmp r0, 0x2 - beq _08058CD8 - movs r0, 0x1 - b _08058CDC - .align 2, 0 -_08058CD4: .4byte gPlayerAvatar -_08058CD8: - ldr r1, _08058CE4 @ =gPlayerAvatar - movs r0, 0x2 -_08058CDC: - strb r0, [r1, 0x2] -_08058CDE: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08058CE4: .4byte gPlayerAvatar - thumb_func_end CheckMovementInputNotOnBike - - thumb_func_start PlayerNotOnBikeNotMoving -PlayerNotOnBikeNotMoving: @ 8058CE8 - push {lr} - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - bl PlayerFaceDirection - pop {r0} - bx r0 - thumb_func_end PlayerNotOnBikeNotMoving - - thumb_func_start PlayerNotOnBikeTurningInPlace -PlayerNotOnBikeTurningInPlace: @ 8058CFC - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl PlayerTurnInPlace - pop {r0} - bx r0 - thumb_func_end PlayerNotOnBikeTurningInPlace - - thumb_func_start sub_8058D0C -sub_8058D0C: @ 8058D0C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - adds r0, r5, 0 - bl CheckForPlayerAvatarCollision - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0 - beq _08058D44 - cmp r0, 0x6 - bne _08058D32 - adds r0, r5, 0 - bl PlayerJumpLedge - b _08058DAE -_08058D32: - subs r0, r1, 0x5 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _08058DAE - adds r0, r5, 0 - bl PlayerNotOnBikeCollide - b _08058DAE -_08058D44: - ldr r6, _08058D58 @ =gPlayerAvatar - ldrb r1, [r6] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08058D5C - adds r0, r5, 0 - bl sub_80593C4 - b _08058DAE - .align 2, 0 -_08058D58: .4byte gPlayerAvatar -_08058D5C: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08058DA8 - movs r0, 0x2 - ands r4, r0 - cmp r4, 0 - beq _08058DA8 - movs r0, 0x86 - lsls r0, 4 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08058DA8 - ldr r2, _08058DA4 @ =gMapObjects - ldrb r1, [r6, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1E] - bl sub_80E5DEC - lsls r0, 24 - cmp r0, 0 - bne _08058DA8 - adds r0, r5, 0 - bl sub_805940C - ldrb r1, [r6] - movs r0, 0x80 - orrs r0, r1 - strb r0, [r6] - b _08058DAE - .align 2, 0 -_08058DA4: .4byte gMapObjects -_08058DA8: - adds r0, r5, 0 - bl PlayerGoSpeed0 -_08058DAE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8058D0C - - thumb_func_start CheckForPlayerAvatarCollision -CheckForPlayerAvatarCollision: @ 8058DB4 - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _08058E18 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08058E1C @ =gMapObjects - adds r4, r0 - ldrh r1, [r4, 0x10] - add r0, sp, 0x4 - strh r1, [r0] - ldrh r0, [r4, 0x12] - mov r5, sp - adds r5, 0x6 - strh r0, [r5] - adds r0, r6, 0 - add r1, sp, 0x4 - adds r2, r5, 0 - bl MoveCoords - add r0, sp, 0x4 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - add r1, sp, 0x4 - movs r3, 0 - ldrsh r1, [r1, r3] - movs r3, 0 - ldrsh r2, [r5, r3] - str r0, [sp] - adds r0, r4, 0 - adds r3, r6, 0 - bl CheckForFieldObjectCollision - lsls r0, 24 - lsrs r0, 24 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08058E18: .4byte gPlayerAvatar -_08058E1C: .4byte gMapObjects - thumb_func_end CheckForPlayerAvatarCollision - - thumb_func_start CheckForFieldObjectCollision -CheckForFieldObjectCollision: @ 8058E20 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r4, [sp, 0x24] - lsls r1, 16 - lsls r2, 16 - lsls r3, 24 - lsrs r6, r3, 24 - lsls r4, 24 - lsrs r4, 24 - mov r10, r4 - lsrs r7, r1, 16 - asrs r5, r1, 16 - lsrs r1, r2, 16 - mov r9, r1 - asrs r4, r2, 16 - adds r1, r5, 0 - adds r2, r4, 0 - adds r3, r6, 0 - bl npc_block_way - lsls r0, 24 - lsrs r0, 24 - mov r1, sp - strb r0, [r1] - cmp r0, 0x3 - bne _08058E70 - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r6, 0 - bl sub_8058EF0 - lsls r0, 24 - cmp r0, 0 - beq _08058E70 - movs r0, 0x5 - b _08058EDE -_08058E70: - lsls r5, r7, 16 - asrs r0, r5, 16 - mov r8, r0 - mov r1, r9 - lsls r4, r1, 16 - asrs r7, r4, 16 - adds r1, r7, 0 - adds r2, r6, 0 - bl ShouldJumpLedge - lsls r0, 24 - cmp r0, 0 - beq _08058E94 - movs r0, 0x2B - bl sav12_xor_increment - movs r0, 0x6 - b _08058EDE -_08058E94: - mov r0, sp - ldrb r0, [r0] - cmp r0, 0x4 - bne _08058EB0 - mov r0, r8 - adds r1, r7, 0 - adds r2, r6, 0 - bl sub_8058F6C - lsls r0, 24 - cmp r0, 0 - beq _08058EB0 - movs r0, 0x7 - b _08058EDE -_08058EB0: - mov r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _08058EDA - asrs r5, 16 - asrs r4, 16 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl CheckForRotatingGatePuzzleCollision - cmp r0, 0 - beq _08058ECE - movs r0, 0x8 - b _08058EDE -_08058ECE: - adds r0, r5, 0 - adds r1, r4, 0 - mov r2, r10 - mov r3, sp - bl check_acro_bike_metatile -_08058EDA: - mov r0, sp - ldrb r0, [r0] -_08058EDE: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckForFieldObjectCollision - - thumb_func_start sub_8058EF0 -sub_8058EF0: @ 8058EF0 - push {r4-r6,lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, _08058F3C @ =gPlayerAvatar - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08058F40 - lsls r5, r3, 16 - asrs r0, r5, 16 - lsls r4, 16 - asrs r1, r4, 16 - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _08058F40 - lsrs r0, r5, 16 - lsrs r1, r4, 16 - movs r2, 0x3 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - bne _08058F40 - adds r0, r6, 0 - bl sub_805A20C - movs r0, 0x1 - b _08058F42 - .align 2, 0 -_08058F3C: .4byte gPlayerAvatar -_08058F40: - movs r0, 0 -_08058F42: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8058EF0 - - thumb_func_start ShouldJumpLedge -ShouldJumpLedge: @ 8058F48 - push {lr} - lsls r2, 24 - lsrs r2, 24 - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl GetLedgeJumpDirection - lsls r0, 24 - cmp r0, 0 - bne _08058F64 - movs r0, 0 - b _08058F66 -_08058F64: - movs r0, 0x1 -_08058F66: - pop {r1} - bx r1 - thumb_func_end ShouldJumpLedge - - thumb_func_start sub_8058F6C -sub_8058F6C: @ 8058F6C - push {r4-r7,lr} - sub sp, 0x4 - mov r3, sp - strh r0, [r3] - mov r5, sp - adds r5, 0x2 - strh r1, [r5] - lsls r2, 24 - lsrs r7, r2, 24 - ldr r0, _08059004 @ =0x00000829 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _0805900C - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl GetFieldObjectIdByXY - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x10 - beq _0805900C - ldr r0, _08059008 @ =gMapObjects - lsls r1, r6, 3 - adds r1, r6 - lsls r1, 2 - adds r4, r1, r0 - ldrb r0, [r4, 0x5] - cmp r0, 0x57 - bne _0805900C - ldrh r1, [r4, 0x10] - mov r0, sp - strh r1, [r0] - ldrh r0, [r4, 0x12] - strh r0, [r5] - adds r0, r7, 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] - adds r0, r4, 0 - adds r3, r7, 0 - bl npc_block_way - lsls r0, 24 - cmp r0, 0 - bne _0805900C - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl sub_8056F08 - lsls r0, 24 - cmp r0, 0 - bne _0805900C - adds r0, r6, 0 - adds r1, r7, 0 - bl task_add_bump_boulder - movs r0, 0x1 - b _0805900E - .align 2, 0 -_08059004: .4byte 0x00000829 -_08059008: .4byte gMapObjects -_0805900C: - movs r0, 0 -_0805900E: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8058F6C - - thumb_func_start check_acro_bike_metatile -check_acro_bike_metatile: @ 8059018 - push {r4-r7,lr} - adds r6, r3, 0 - lsls r2, 24 - lsrs r5, r2, 24 - movs r4, 0 - ldr r7, _08059040 @ =gUnknown_0830FBF8 -_08059024: - lsls r0, r4, 2 - adds r0, r7 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _08059048 - ldr r0, _08059044 @ =gUnknown_0830FC0C - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r6] - b _08059052 - .align 2, 0 -_08059040: .4byte gUnknown_0830FBF8 -_08059044: .4byte gUnknown_0830FC0C -_08059048: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _08059024 -_08059052: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end check_acro_bike_metatile - - thumb_func_start SetPlayerAvatarTransitionFlags -SetPlayerAvatarTransitionFlags: @ 8059058 - push {lr} - lsls r0, 16 - lsrs r0, 16 - ldr r2, _08059070 @ =gPlayerAvatar - ldrb r1, [r2, 0x1] - orrs r0, r1 - strb r0, [r2, 0x1] - bl DoPlayerAvatarTransition - pop {r0} - bx r0 - .align 2, 0 -_08059070: .4byte gPlayerAvatar - thumb_func_end SetPlayerAvatarTransitionFlags - - thumb_func_start DoPlayerAvatarTransition -DoPlayerAvatarTransition: @ 8059074 - push {r4,r5,lr} - ldr r0, _080590BC @ =gPlayerAvatar - ldrb r4, [r0, 0x1] - cmp r4, 0 - beq _080590B4 - movs r5, 0 -_08059080: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080590A2 - ldr r0, _080590C0 @ =gUnknown_0830FC14 - lsls r2, r5, 2 - adds r2, r0 - ldr r0, _080590BC @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080590C4 @ =gMapObjects - adds r0, r1 - ldr r1, [r2] - bl _call_via_r1 -_080590A2: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - lsrs r4, 1 - cmp r5, 0x7 - bls _08059080 - ldr r1, _080590BC @ =gPlayerAvatar - movs r0, 0 - strb r0, [r1, 0x1] -_080590B4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080590BC: .4byte gPlayerAvatar -_080590C0: .4byte gUnknown_0830FC14 -_080590C4: .4byte gMapObjects - thumb_func_end DoPlayerAvatarTransition - - thumb_func_start nullsub_49 -nullsub_49: @ 80590C8 - bx lr - thumb_func_end nullsub_49 - - thumb_func_start PlayerAvatarTransition_Normal -PlayerAvatarTransition_Normal: @ 80590CC - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl FieldObjectTurn - movs r0, 0x1 - bl SetPlayerAvatarStateMask - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerAvatarTransition_Normal - - thumb_func_start PlayerAvatarTransition_MachBike -PlayerAvatarTransition_MachBike: @ 80590F8 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl FieldObjectTurn - movs r0, 0x2 - bl SetPlayerAvatarStateMask - movs r0, 0 - movs r1, 0 - bl sub_80E5FCC - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerAvatarTransition_MachBike - - thumb_func_start PlayerAvatarTransition_AcroBike -PlayerAvatarTransition_AcroBike: @ 805912C - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x2 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl FieldObjectTurn - movs r0, 0x4 - bl SetPlayerAvatarStateMask - movs r0, 0 - movs r1, 0 - bl sub_80E5FCC - bl sub_80E6084 - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerAvatarTransition_AcroBike - - thumb_func_start PlayerAvatarTransition_Surfing -PlayerAvatarTransition_Surfing: @ 8059164 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x3 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl FieldObjectTurn - movs r0, 0x8 - bl SetPlayerAvatarStateMask - ldr r1, _080591B8 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r0, [r4, r2] - str r0, [r1] - movs r2, 0x12 - ldrsh r0, [r4, r2] - str r0, [r1, 0x4] - ldr r0, _080591BC @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - str r0, [r1, 0x8] - movs r0, 0x8 - bl FieldEffectStart - lsls r0, 24 - lsrs r0, 24 - strb r0, [r4, 0x1A] - movs r1, 0x1 - bl sub_8127ED0 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080591B8: .4byte gUnknown_0202FF84 -_080591BC: .4byte gPlayerAvatar - thumb_func_end PlayerAvatarTransition_Surfing - - thumb_func_start PlayerAvatarTransition_Underwater -PlayerAvatarTransition_Underwater: @ 80591C0 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x4 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl FieldObjectTurn - movs r0, 0x10 - bl SetPlayerAvatarStateMask - ldrb r0, [r4, 0x4] - bl sub_8128124 - strb r0, [r4, 0x1A] - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerAvatarTransition_Underwater - - thumb_func_start sub_80591F4 -sub_80591F4: @ 80591F4 - ldr r2, _08059200 @ =gPlayerAvatar - ldrb r1, [r2] - movs r0, 0x20 - orrs r0, r1 - strb r0, [r2] - bx lr - .align 2, 0 -_08059200: .4byte gPlayerAvatar - thumb_func_end sub_80591F4 - - thumb_func_start sub_8059204 -sub_8059204: @ 8059204 - push {r4,lr} - ldr r4, _08059230 @ =gPlayerAvatar - movs r0, 0 - strb r0, [r4, 0x3] - bl PlayerIsAnimActive - lsls r0, 24 - cmp r0, 0 - beq _08059242 - bl PlayerCheckIfAnimFinishedOrInactive - lsls r0, 24 - cmp r0, 0 - bne _08059234 - bl player_is_anim_in_certain_ranges - lsls r0, 24 - cmp r0, 0 - bne _08059242 - movs r0, 0x1 - b _08059240 - .align 2, 0 -_08059230: .4byte gPlayerAvatar -_08059234: - bl sub_80592A4 - lsls r0, 24 - cmp r0, 0 - bne _08059242 - movs r0, 0x2 -_08059240: - strb r0, [r4, 0x3] -_08059242: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8059204 - - thumb_func_start player_is_anim_in_certain_ranges -player_is_anim_in_certain_ranges: @ 8059248 - push {lr} - ldr r2, _08059294 @ =gMapObjects - ldr r0, _08059298 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1C] - cmp r1, 0x3 - bls _0805928E - adds r0, r1, 0 - subs r0, 0x10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bls _0805928E - adds r0, r1, 0 - subs r0, 0x19 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - bls _0805928E - adds r0, r1, 0 - subs r0, 0x62 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - bls _0805928E - adds r0, r1, 0 - subs r0, 0x7A - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _0805929C -_0805928E: - movs r0, 0x1 - b _0805929E - .align 2, 0 -_08059294: .4byte gMapObjects -_08059298: .4byte gPlayerAvatar -_0805929C: - movs r0, 0 -_0805929E: - pop {r1} - bx r1 - thumb_func_end player_is_anim_in_certain_ranges - - thumb_func_start sub_80592A4 -sub_80592A4: @ 80592A4 - push {lr} - bl player_is_anim_in_certain_ranges - lsls r0, 24 - cmp r0, 0 - beq _080592C0 - ldr r0, _080592BC @ =gPlayerAvatar - ldrb r0, [r0, 0x2] - cmp r0, 0x1 - beq _080592C0 - movs r0, 0x1 - b _080592C2 - .align 2, 0 -_080592BC: .4byte gPlayerAvatar -_080592C0: - movs r0, 0 -_080592C2: - pop {r1} - bx r1 - thumb_func_end sub_80592A4 - - thumb_func_start PlayerIsAnimActive -PlayerIsAnimActive: @ 80592C8 - push {lr} - ldr r0, _080592E4 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080592E8 @ =gMapObjects - adds r0, r1 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080592E4: .4byte gPlayerAvatar -_080592E8: .4byte gMapObjects - thumb_func_end PlayerIsAnimActive - - thumb_func_start PlayerCheckIfAnimFinishedOrInactive -PlayerCheckIfAnimFinishedOrInactive: @ 80592EC - push {lr} - ldr r0, _08059308 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805930C @ =gMapObjects - adds r0, r1 - bl FieldObjectCheckIfSpecialAnimFinishedOrInactive - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08059308: .4byte gPlayerAvatar -_0805930C: .4byte gMapObjects - thumb_func_end PlayerCheckIfAnimFinishedOrInactive - - thumb_func_start player_set_x22 -player_set_x22: @ 8059310 - ldr r3, _08059324 @ =gMapObjects - ldr r1, _08059328 @ =gPlayerAvatar - ldrb r2, [r1, 0x5] - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - adds r1, 0x22 - strb r0, [r1] - bx lr - .align 2, 0 -_08059324: .4byte gMapObjects -_08059328: .4byte gPlayerAvatar - thumb_func_end player_set_x22 - - thumb_func_start player_get_x22 -player_get_x22: @ 805932C - ldr r2, _08059340 @ =gMapObjects - ldr r0, _08059344 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x22 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08059340: .4byte gMapObjects -_08059344: .4byte gPlayerAvatar - thumb_func_end player_get_x22 - - thumb_func_start sub_8059348 -sub_8059348: @ 8059348 - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08059368 @ =gPlayerAvatar - ldrb r2, [r0, 0x5] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805936C @ =gMapObjects - adds r0, r2 - bl FieldObjectForceSetSpecialAnim - pop {r0} - bx r0 - .align 2, 0 -_08059368: .4byte gPlayerAvatar -_0805936C: .4byte gMapObjects - thumb_func_end sub_8059348 - - thumb_func_start player_npc_set_state_and_x22_etc -player_npc_set_state_and_x22_etc: @ 8059370 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - bl PlayerIsAnimActive - lsls r0, 24 - cmp r0, 0 - bne _0805939E - adds r0, r4, 0 - bl player_set_x22 - ldr r0, _080593A4 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080593A8 @ =gMapObjects - adds r0, r1 - adds r1, r5, 0 - bl FieldObjectSetSpecialAnim -_0805939E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080593A4: .4byte gPlayerAvatar -_080593A8: .4byte gMapObjects - thumb_func_end player_npc_set_state_and_x22_etc - - thumb_func_start PlayerGoSpeed0 -PlayerGoSpeed0: @ 80593AC - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end PlayerGoSpeed0 - - thumb_func_start sub_80593C4 -sub_80593C4: @ 80593C4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_8060744 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_80593C4 - - thumb_func_start npc_use_some_d2s -npc_use_some_d2s: @ 80593DC - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl d2s_08064034 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end npc_use_some_d2s - - thumb_func_start sub_80593F4 -sub_80593F4: @ 80593F4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_806079C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_80593F4 - - thumb_func_start sub_805940C -sub_805940C: @ 805940C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80607F4 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_805940C - - thumb_func_start PlayerOnBikeCollide -PlayerOnBikeCollide: @ 8059424 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl PlayCollisionSoundIfNotFacingWarp - adds r0, r4, 0 - bl GetStepInPlaceDelay16AnimId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerOnBikeCollide - - thumb_func_start PlayerNotOnBikeCollide -PlayerNotOnBikeCollide: @ 8059448 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl PlayCollisionSoundIfNotFacingWarp - adds r0, r4, 0 - bl GetStepInPlaceDelay32AnimId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerNotOnBikeCollide - - thumb_func_start PlayerFaceDirection -PlayerFaceDirection: @ 805946C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetFaceDirectionAnimId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end PlayerFaceDirection - - thumb_func_start PlayerTurnInPlace -PlayerTurnInPlace: @ 8059484 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl GetStepInPlaceDelay8AnimId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end PlayerTurnInPlace - - thumb_func_start PlayerJumpLedge -PlayerJumpLedge: @ 805949C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0xA - bl PlaySE - adds r0, r4, 0 - bl GetJumpLedgeAnimId - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x8 - bl player_npc_set_state_and_x22_etc - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerJumpLedge - - thumb_func_start sub_80594C0 -sub_80594C0: @ 80594C0 - push {r4,lr} - ldr r4, _080594FC @ =gPlayerAvatar - ldrb r0, [r4, 0x3] - cmp r0, 0x2 - beq _080594CE - cmp r0, 0 - bne _080594F6 -_080594CE: - bl player_should_look_direction_be_enforced_upon_movement - lsls r0, 24 - cmp r0, 0 - beq _080594F6 - ldr r2, _08059500 @ =gMapObjects - ldrb r1, [r4, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - lsls r0, 24 - lsrs r0, 24 - bl sub_8059348 -_080594F6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080594FC: .4byte gPlayerAvatar -_08059500: .4byte gMapObjects - thumb_func_end sub_80594C0 - - thumb_func_start sub_8059504 -sub_8059504: @ 8059504 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80609D8 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_8059504 - - thumb_func_start sub_805951C -sub_805951C: @ 805951C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_8060A04 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_805951C - - thumb_func_start sub_8059534 -sub_8059534: @ 8059534 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_8060A30 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_8059534 - - thumb_func_start sub_805954C -sub_805954C: @ 805954C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x22 - bl PlaySE - adds r0, r4, 0 - bl sub_8060A5C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl player_npc_set_state_and_x22_etc - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_805954C - - thumb_func_start sub_8059570 -sub_8059570: @ 8059570 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x22 - bl PlaySE - adds r0, r4, 0 - bl sub_8060A88 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8059570 - - thumb_func_start sub_8059594 -sub_8059594: @ 8059594 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x22 - bl PlaySE - adds r0, r4, 0 - bl sub_8060AB4 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x8 - bl player_npc_set_state_and_x22_etc - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8059594 - - thumb_func_start sub_80595B8 -sub_80595B8: @ 80595B8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x22 - bl PlaySE - adds r0, r4, 0 - bl sub_8060878 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - bl player_npc_set_state_and_x22_etc - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80595B8 - - thumb_func_start sub_80595DC -sub_80595DC: @ 80595DC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x7 - bl PlaySE - adds r0, r4, 0 - bl sub_8060AE0 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80595DC - - thumb_func_start sub_8059600 -sub_8059600: @ 8059600 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_8060B0C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_8059600 - - thumb_func_start sub_8059618 -sub_8059618: @ 8059618 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_8060B38 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_8059618 - - thumb_func_start sub_8059630 -sub_8059630: @ 8059630 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_8060B64 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl player_npc_set_state_and_x22_etc - pop {r0} - bx r0 - thumb_func_end sub_8059630 - - thumb_func_start PlayCollisionSoundIfNotFacingWarp -PlayCollisionSoundIfNotFacingWarp: @ 8059648 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, _080596B8 @ =gMapObjects - ldr r0, _080596BC @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1E] - ldr r2, _080596C0 @ =gUnknown_0830FC34 - subs r1, r4, 0x1 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080596B0 - cmp r4, 0x2 - bne _080596AA - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - movs r0, 0x2 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl is_tile_x69_2_warp_door - lsls r0, 24 - cmp r0, 0 - bne _080596B0 -_080596AA: - movs r0, 0x7 - bl PlaySE -_080596B0: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080596B8: .4byte gMapObjects -_080596BC: .4byte gPlayerAvatar -_080596C0: .4byte gUnknown_0830FC34 - thumb_func_end PlayCollisionSoundIfNotFacingWarp - - thumb_func_start GetXYCoordsOneStepInFrontOfPlayer -GetXYCoordsOneStepInFrontOfPlayer: @ 80596C4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r3, _08059700 @ =gMapObjects - ldr r2, _08059704 @ =gPlayerAvatar - ldrb r1, [r2, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x10] - strh r0, [r4] - ldrb r1, [r2, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0, 0x12] - strh r0, [r5] - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - adds r2, r5, 0 - bl MoveCoords - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059700: .4byte gMapObjects -_08059704: .4byte gPlayerAvatar - thumb_func_end GetXYCoordsOneStepInFrontOfPlayer - - thumb_func_start PlayerGetDestCoords -PlayerGetDestCoords: @ 8059708 - push {r4,r5,lr} - ldr r5, _08059730 @ =gMapObjects - ldr r4, _08059734 @ =gPlayerAvatar - ldrb r3, [r4, 0x5] - lsls r2, r3, 3 - adds r2, r3 - lsls r2, 2 - adds r2, r5 - ldrh r2, [r2, 0x10] - strh r2, [r0] - ldrb r2, [r4, 0x5] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - ldrh r0, [r0, 0x12] - strh r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059730: .4byte gMapObjects -_08059734: .4byte gPlayerAvatar - thumb_func_end PlayerGetDestCoords - - thumb_func_start player_get_direction_lower_nybble -player_get_direction_lower_nybble: @ 8059738 - ldr r2, _08059750 @ =gMapObjects - ldr r0, _08059754 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x18] - lsls r0, 28 - lsrs r0, 28 - bx lr - .align 2, 0 -_08059750: .4byte gMapObjects -_08059754: .4byte gPlayerAvatar - thumb_func_end player_get_direction_lower_nybble - - thumb_func_start player_get_direction_upper_nybble -player_get_direction_upper_nybble: @ 8059758 - ldr r2, _0805976C @ =gMapObjects - ldr r0, _08059770 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x18] - lsrs r0, 4 - bx lr - .align 2, 0 -_0805976C: .4byte gMapObjects -_08059770: .4byte gPlayerAvatar - thumb_func_end player_get_direction_upper_nybble - - thumb_func_start PlayerGetZCoord -PlayerGetZCoord: @ 8059774 - ldr r2, _08059788 @ =gMapObjects - ldr r0, _0805978C @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0xB] - lsrs r0, 4 - bx lr - .align 2, 0 -_08059788: .4byte gMapObjects -_0805978C: .4byte gPlayerAvatar - thumb_func_end PlayerGetZCoord - - thumb_func_start unref_sub_8059790 -unref_sub_8059790: @ 8059790 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - ldr r0, _080597B8 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080597BC @ =gMapObjects - adds r0, r1 - lsls r3, 16 - asrs r3, 16 - lsls r2, 16 - asrs r2, 16 - adds r1, r3, 0 - bl sub_805C058 - pop {r0} - bx r0 - .align 2, 0 -_080597B8: .4byte gPlayerAvatar -_080597BC: .4byte gMapObjects - thumb_func_end unref_sub_8059790 - - thumb_func_start TestPlayerAvatarFlags -TestPlayerAvatarFlags: @ 80597C0 - ldr r1, _080597CC @ =gPlayerAvatar - ldrb r1, [r1] - ands r1, r0 - adds r0, r1, 0 - bx lr - .align 2, 0 -_080597CC: .4byte gPlayerAvatar - thumb_func_end TestPlayerAvatarFlags - - thumb_func_start sub_80597D0 -sub_80597D0: @ 80597D0 - ldr r0, _080597D8 @ =gPlayerAvatar - ldrb r0, [r0] - bx lr - .align 2, 0 -_080597D8: .4byte gPlayerAvatar - thumb_func_end sub_80597D0 - - thumb_func_start GetPlayerAvatarObjectId -GetPlayerAvatarObjectId: @ 80597DC - ldr r0, _080597E4 @ =gPlayerAvatar - ldrb r0, [r0, 0x4] - bx lr - .align 2, 0 -_080597E4: .4byte gPlayerAvatar - thumb_func_end GetPlayerAvatarObjectId - - thumb_func_start sub_80597E8 -sub_80597E8: @ 80597E8 - push {lr} - bl ForcedMovement_None - pop {r0} - bx r0 - thumb_func_end sub_80597E8 - - thumb_func_start sub_80597F4 -sub_80597F4: @ 80597F4 - push {r4,lr} - ldr r0, _08059834 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08059838 @ =gMapObjects - adds r4, r0 - adds r0, r4, 0 - bl npc_clear_strange_bits - ldrb r1, [r4, 0x18] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x6 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0805982C - bl sub_80E6084 - movs r0, 0 - bl sub_80E6010 -_0805982C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08059834: .4byte gPlayerAvatar -_08059838: .4byte gMapObjects - thumb_func_end sub_80597F4 - - thumb_func_start sub_805983C -sub_805983C: @ 805983C - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08059850 @ =gUnknown_0830FC44 - lsrs r0, 23 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - bx lr - .align 2, 0 -_08059850: .4byte gUnknown_0830FC44 - thumb_func_end sub_805983C - - thumb_func_start GetPlayerAvatarGraphicsIdByStateIdAndGender -GetPlayerAvatarGraphicsIdByStateIdAndGender: @ 8059854 - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08059868 @ =gUnknown_0830FC54 - lsrs r0, 23 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - bx lr - .align 2, 0 -_08059868: .4byte gUnknown_0830FC54 - thumb_func_end GetPlayerAvatarGraphicsIdByStateIdAndGender - - thumb_func_start GetPlayerAvatarGraphicsIdByStateId -GetPlayerAvatarGraphicsIdByStateId: @ 805986C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08059884 @ =gPlayerAvatar - ldrb r1, [r1, 0x7] - bl GetPlayerAvatarGraphicsIdByStateIdAndGender - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08059884: .4byte gPlayerAvatar - thumb_func_end GetPlayerAvatarGraphicsIdByStateId - - thumb_func_start unref_sub_8059888 -unref_sub_8059888: @ 8059888 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x70 - beq _080598AA - cmp r0, 0x70 - bgt _080598A2 - cmp r0, 0x6D - bgt _080598AE - cmp r0, 0x69 - blt _080598AE - b _080598AA -_080598A2: - cmp r1, 0x8A - beq _080598AA - cmp r1, 0xC0 - bne _080598AE -_080598AA: - movs r0, 0x1 - b _080598B0 -_080598AE: - movs r0, 0 -_080598B0: - pop {r1} - bx r1 - thumb_func_end unref_sub_8059888 - - thumb_func_start GetPlayerAvatarGenderByGraphicsId -GetPlayerAvatarGenderByGraphicsId: @ 80598B4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x70 - beq _080598D6 - cmp r0, 0x70 - bgt _080598CE - cmp r0, 0x5D - bgt _080598DA - cmp r0, 0x59 - blt _080598DA - b _080598D6 -_080598CE: - cmp r1, 0x8A - beq _080598D6 - cmp r1, 0xC0 - bne _080598DA -_080598D6: - movs r0, 0x1 - b _080598DC -_080598DA: - movs r0, 0 -_080598DC: - pop {r1} - bx r1 - thumb_func_end GetPlayerAvatarGenderByGraphicsId - - thumb_func_start PartyHasMonWithSurf -PartyHasMonWithSurf: @ 80598E0 - push {r4,r5,lr} - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - bne _08059924 - movs r5, 0 - b _0805990A -_080598F2: - adds r0, r4, 0 - movs r1, 0x39 - bl pokemon_has_move - lsls r0, 24 - cmp r0, 0 - beq _08059904 - movs r0, 0x1 - b _08059926 -_08059904: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_0805990A: - cmp r5, 0x5 - bhi _08059924 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0805992C @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - bne _080598F2 -_08059924: - movs r0, 0 -_08059926: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805992C: .4byte gPlayerParty - thumb_func_end PartyHasMonWithSurf - - thumb_func_start IsPlayerSurfingNorth -IsPlayerSurfingNorth: @ 8059930 - push {lr} - bl player_get_direction_upper_nybble - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805994E - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0805994E - movs r0, 0x1 - b _08059950 -_0805994E: - movs r0, 0 -_08059950: - pop {r1} - bx r1 - thumb_func_end IsPlayerSurfingNorth - - thumb_func_start IsPlayerFacingSurfableFishableWater -IsPlayerFacingSurfableFishableWater: @ 8059954 - push {r4,r5,lr} - sub sp, 0x4 - ldr r0, _080599CC @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _080599D0 @ =gMapObjects - adds r4, r0 - ldrh r1, [r4, 0x10] - mov r0, sp - strh r1, [r0] - ldrh r0, [r4, 0x12] - mov r5, sp - adds r5, 0x2 - strh r0, [r5] - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - 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] - ldrb r3, [r4, 0x18] - lsls r3, 28 - lsrs r3, 28 - adds r0, r4, 0 - bl npc_block_way - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _080599D4 - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _080599D4 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfableFishableWater - lsls r0, 24 - cmp r0, 0 - beq _080599D4 - movs r0, 0x1 - b _080599D6 - .align 2, 0 -_080599CC: .4byte gPlayerAvatar -_080599D0: .4byte gMapObjects -_080599D4: - movs r0, 0 -_080599D6: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end IsPlayerFacingSurfableFishableWater - - thumb_func_start ClearPlayerAvatarInfo -ClearPlayerAvatarInfo: @ 80599E0 - push {lr} - ldr r0, _080599F0 @ =gPlayerAvatar - movs r1, 0 - movs r2, 0x24 - bl memset - pop {r0} - bx r0 - .align 2, 0 -_080599F0: .4byte gPlayerAvatar - thumb_func_end ClearPlayerAvatarInfo - - thumb_func_start SetPlayerAvatarStateMask -SetPlayerAvatarStateMask: @ 80599F4 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08059A08 @ =gPlayerAvatar - ldrb r2, [r3] - movs r1, 0xE0 - ands r1, r2 - orrs r0, r1 - strb r0, [r3] - bx lr - .align 2, 0 -_08059A08: .4byte gPlayerAvatar - thumb_func_end SetPlayerAvatarStateMask - - thumb_func_start GetPlayerAvatarStateTransitionByGraphicsId -GetPlayerAvatarStateTransitionByGraphicsId: @ 8059A0C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - ldr r3, _08059A34 @ =gUnknown_0830FC64 - lsls r0, r1, 2 - adds r0, r1 - lsls r4, r0, 1 - adds r6, r3, 0x1 -_08059A22: - lsls r0, r2, 1 - adds r1, r0, r4 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r5 - bne _08059A38 - adds r0, r1, r6 - ldrb r0, [r0] - b _08059A44 - .align 2, 0 -_08059A34: .4byte gUnknown_0830FC64 -_08059A38: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x4 - bls _08059A22 - movs r0, 0x1 -_08059A44: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetPlayerAvatarStateTransitionByGraphicsId - - thumb_func_start GetPlayerAvatarGraphicsIdByCurrentState -GetPlayerAvatarGraphicsIdByCurrentState: @ 8059A4C - push {r4-r6,lr} - ldr r0, _08059A74 @ =gPlayerAvatar - ldrb r5, [r0] - movs r2, 0 - ldr r3, _08059A78 @ =gUnknown_0830FC64 - ldrb r1, [r0, 0x7] - lsls r0, r1, 2 - adds r0, r1 - lsls r4, r0, 1 - adds r6, r3, 0x1 -_08059A60: - lsls r0, r2, 1 - adds r1, r0, r4 - adds r0, r1, r6 - ldrb r0, [r0] - ands r0, r5 - cmp r0, 0 - beq _08059A7C - adds r0, r1, r3 - ldrb r0, [r0] - b _08059A88 - .align 2, 0 -_08059A74: .4byte gPlayerAvatar -_08059A78: .4byte gUnknown_0830FC64 -_08059A7C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x4 - bls _08059A60 - movs r0, 0 -_08059A88: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetPlayerAvatarGraphicsIdByCurrentState - - thumb_func_start SetPlayerAvatarExtraStateTransition -SetPlayerAvatarExtraStateTransition: @ 8059A90 - push {r4,r5,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _08059ABC @ =gPlayerAvatar - ldrb r1, [r5, 0x7] - bl GetPlayerAvatarStateTransitionByGraphicsId - lsls r0, 24 - lsrs r0, 24 - orrs r0, r4 - ldrb r1, [r5, 0x1] - orrs r0, r1 - strb r0, [r5, 0x1] - bl DoPlayerAvatarTransition - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059ABC: .4byte gPlayerAvatar - thumb_func_end SetPlayerAvatarExtraStateTransition - - thumb_func_start InitPlayerAvatar -InitPlayerAvatar: @ 8059AC0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x18 - adds r4, r0, 0 - adds r5, r1, 0 - mov r9, r2 - mov r8, r3 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - movs r0, 0 - mov r1, r8 - bl GetPlayerAvatarGraphicsIdByStateIdAndGender - mov r1, sp - movs r3, 0 - strb r0, [r1, 0x1] - mov r0, sp - lsls r4, 16 - asrs r4, 16 - subs r4, 0x7 - movs r6, 0 - strh r4, [r0, 0x4] - lsls r5, 16 - asrs r5, 16 - subs r5, 0x7 - strh r5, [r0, 0x6] - strb r6, [r0, 0x8] - movs r0, 0xB - strb r0, [r1, 0x9] - mov r2, sp - ldrb r1, [r2, 0xA] - subs r0, 0x1B - ands r0, r1 - strb r0, [r2, 0xA] - mov r0, sp - strb r6, [r0, 0xA] - strh r3, [r0, 0xC] - strh r3, [r0, 0xE] - str r3, [sp, 0x10] - strh r3, [r0, 0x14] - bl SpawnSpecialFieldObject - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, r5, 3 - adds r4, r5 - lsls r4, 2 - ldr r0, _08059B80 @ =gMapObjects - adds r4, r0 - ldrb r0, [r4, 0x2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x2] - bl sub_8126B54 - strb r0, [r4, 0x1B] - adds r0, r4, 0 - mov r1, r9 - bl FieldObjectTurn - bl ClearPlayerAvatarInfo - ldr r0, _08059B84 @ =gPlayerAvatar - strb r6, [r0, 0x2] - strb r6, [r0, 0x3] - strb r5, [r0, 0x5] - ldrb r1, [r4, 0x4] - strb r1, [r0, 0x4] - mov r1, r8 - strb r1, [r0, 0x7] - movs r0, 0x21 - bl SetPlayerAvatarStateMask - add sp, 0x18 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08059B80: .4byte gMapObjects -_08059B84: .4byte gPlayerAvatar - thumb_func_end InitPlayerAvatar - - thumb_func_start sub_8059B88 -sub_8059B88: @ 8059B88 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r6, _08059BE8 @ =gMapObjects - ldr r5, _08059BEC @ =gPlayerAvatar - ldrb r0, [r5, 0x5] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - movs r0, 0x1 - ands r4, r0 - lsls r3, r4, 5 - ldrb r2, [r1, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x1] - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08059BE0 - ldr r2, _08059BF0 @ =gSprites - ldrb r1, [r5, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x1A] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - lsls r3, r4, 2 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1] -_08059BE0: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08059BE8: .4byte gMapObjects -_08059BEC: .4byte gPlayerAvatar -_08059BF0: .4byte gSprites - thumb_func_end sub_8059B88 - - thumb_func_start sub_8059BF4 -sub_8059BF4: @ 8059BF4 - push {r4,r5,lr} - ldr r5, _08059C30 @ =gPlayerAvatar - ldrb r0, [r5, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08059C34 @ =gMapObjects - adds r4, r0 - movs r0, 0x5 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08059C38 @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059C30: .4byte gPlayerAvatar -_08059C34: .4byte gMapObjects -_08059C38: .4byte gSprites - thumb_func_end sub_8059BF4 - - thumb_func_start sub_8059C3C -sub_8059C3C: @ 8059C3C - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _08059C88 @ =gPlayerAvatar - ldrb r0, [r6, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08059C8C @ =gMapObjects - adds r4, r0 - movs r0, 0x6 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r0, [r6, 0x4] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _08059C90 @ =gSprites - adds r4, r0 - adds r0, r5, 0 - bl sub_805FDE8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08059C88: .4byte gPlayerAvatar -_08059C8C: .4byte gMapObjects -_08059C90: .4byte gSprites - thumb_func_end sub_8059C3C - - thumb_func_start sub_8059C94 -sub_8059C94: @ 8059C94 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _08059CFC @ =gPlayerAvatar - ldrb r0, [r6, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08059D00 @ =gMapObjects - adds r4, r0 - movs r0, 0x2 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r0, [r6, 0x4] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _08059D04 @ =gSprites - mov r8, r0 - add r4, r8 - adds r0, r5, 0 - bl sub_805FD98 - 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 - add r0, r8 - movs r1, 0x1 - bl SeekSpriteAnim - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08059CFC: .4byte gPlayerAvatar -_08059D00: .4byte gMapObjects -_08059D04: .4byte gSprites - thumb_func_end sub_8059C94 - - thumb_func_start sub_8059D08 -sub_8059D08: @ 8059D08 - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _08059D54 @ =gPlayerAvatar - ldrb r0, [r6, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _08059D58 @ =gMapObjects - adds r4, r0 - movs r0, 0x7 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r0, [r6, 0x4] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _08059D5C @ =gSprites - adds r4, r0 - adds r0, r5, 0 - bl FieldObjectDirectionToImageAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08059D54: .4byte gPlayerAvatar -_08059D58: .4byte gMapObjects -_08059D5C: .4byte gSprites - thumb_func_end sub_8059D08 - - thumb_func_start sub_8059D60 -sub_8059D60: @ 8059D60 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrb r0, [r5, 0x1E] - mov r8, r0 - movs r1, 0 - mov r0, sp - strh r1, [r0] - movs r6, 0x1 - ldr r1, _08059DC4 @ =gUnknown_0830FC78 - mov r9, r1 - mov r4, sp - mov r7, sp - adds r7, 0x2 -_08059D82: - movs r1, 0 - ldrsh r0, [r4, r1] - lsls r0, 2 - add r0, r9 - ldr r1, [r0] - mov r0, r8 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _08059DC8 - ldrb r0, [r5, 0x18] - lsrs r0, 4 - cmp r6, r0 - bne _08059DC8 - ldrh r0, [r5, 0x10] - strh r0, [r4] - ldrh r0, [r5, 0x12] - strh r0, [r7] - adds r0, r6, 0 - mov r1, sp - adds r2, r7, 0 - bl MoveCoords - ldrb r0, [r5, 0x1B] - movs r1, 0 - ldrsh r2, [r4, r1] - movs r1, 0 - ldrsh r3, [r7, r1] - adds r1, r6, 0 - bl sub_8126BC4 - b _08059DE2 - .align 2, 0 -_08059DC4: .4byte gUnknown_0830FC78 -_08059DC8: - ldrh r1, [r4] - adds r1, 0x1 - strh r1, [r4] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x3 - ble _08059D82 - ldrb r0, [r5, 0x1B] - bl objid_set_invisible -_08059DE2: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8059D60 - - thumb_func_start task_add_bump_boulder -task_add_bump_boulder: @ 8059DF0 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _08059E24 @ =sub_8059E2C - adds r0, r6, 0 - movs r1, 0xFF - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08059E28 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0xA] - strh r5, [r1, 0xC] - bl _call_via_r6 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08059E24: .4byte sub_8059E2C -_08059E28: .4byte gTasks - thumb_func_end task_add_bump_boulder - - thumb_func_start sub_8059E2C -sub_8059E2C: @ 8059E2C - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r6, _08059E74 @ =gUnknown_0830FC88 - ldr r2, _08059E78 @ =gTasks - ldr r5, _08059E7C @ =gMapObjects - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_08059E40: - movs r0, 0x8 - ldrsh r3, [r4, r0] - lsls r3, 2 - adds r3, r6 - ldr r0, _08059E80 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r2, r0, 3 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - ldr r3, [r3] - adds r0, r4, 0 - bl _call_via_r3 - lsls r0, 24 - cmp r0, 0 - bne _08059E40 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08059E74: .4byte gUnknown_0830FC88 -_08059E78: .4byte gTasks -_08059E7C: .4byte gMapObjects -_08059E80: .4byte gPlayerAvatar - thumb_func_end sub_8059E2C - - thumb_func_start sub_8059E84 -sub_8059E84: @ 8059E84 - push {r4,lr} - adds r4, r0, 0 - bl ScriptContext2_Enable - ldr r1, _08059EA0 @ =gPlayerAvatar - movs r0, 0x1 - strb r0, [r1, 0x6] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08059EA0: .4byte gPlayerAvatar - thumb_func_end sub_8059E84 - - thumb_func_start sub_8059EA4 -sub_8059EA4: @ 8059EA4 - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - adds r0, r5, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - bne _08059F2E - adds r0, r4, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - bne _08059F2E - adds r0, r5, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - ldrb r0, [r6, 0xC] - bl GetStepInPlaceDelay16AnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl FieldObjectSetSpecialAnim - ldrb r0, [r6, 0xC] - bl GetSimpleGoAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - ldr r2, _08059F38 @ =gUnknown_0202FF84 - movs r1, 0x10 - ldrsh r0, [r4, r1] - str r0, [r2] - movs r1, 0x12 - ldrsh r0, [r4, r1] - str r0, [r2, 0x4] - ldrb r0, [r4, 0xB] - lsrs r0, 4 - str r0, [r2, 0x8] - ldr r3, _08059F3C @ =gSprites - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r2, 0xC] - movs r0, 0xA - bl FieldEffectStart - movs r0, 0xD6 - bl PlaySE - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_08059F2E: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08059F38: .4byte gUnknown_0202FF84 -_08059F3C: .4byte gSprites - thumb_func_end sub_8059EA4 - - thumb_func_start sub_8059F40 -sub_8059F40: @ 8059F40 - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - adds r0, r4, 0 - bl FieldObjectCheckIfSpecialAnimFinishedOrInactive - lsls r0, 24 - cmp r0, 0 - beq _08059F82 - adds r0, r5, 0 - bl FieldObjectCheckIfSpecialAnimFinishedOrInactive - lsls r0, 24 - cmp r0, 0 - beq _08059F82 - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - adds r0, r5, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - ldr r1, _08059F8C @ =gPlayerAvatar - movs r0, 0 - strb r0, [r1, 0x6] - bl ScriptContext2_Disable - ldr r0, _08059F90 @ =sub_8059E2C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_08059F82: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08059F8C: .4byte gPlayerAvatar -_08059F90: .4byte sub_8059E2C - thumb_func_end sub_8059F40 - - thumb_func_start sub_8059F94 -sub_8059F94: @ 8059F94 - push {r4,lr} - ldr r4, _08059FB0 @ =sub_8059FB4 - adds r0, r4, 0 - movs r1, 0xFF - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08059FB0: .4byte sub_8059FB4 - thumb_func_end sub_8059F94 - - thumb_func_start sub_8059FB4 -sub_8059FB4: @ 8059FB4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _08059FF0 @ =gUnknown_0830FC94 - ldr r2, _08059FF4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_08059FC6: - movs r0, 0x8 - ldrsh r2, [r4, r0] - lsls r2, 2 - adds r2, r5 - ldr r0, _08059FF8 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _08059FFC @ =gMapObjects - adds r1, r0 - ldr r2, [r2] - adds r0, r4, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - bne _08059FC6 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08059FF0: .4byte gUnknown_0830FC94 -_08059FF4: .4byte gTasks -_08059FF8: .4byte gPlayerAvatar -_08059FFC: .4byte gMapObjects - thumb_func_end sub_8059FB4 - - thumb_func_start sub_805A000 -sub_805A000: @ 805A000 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - ldr r5, _0805A064 @ =gPlayerAvatar - movs r0, 0x1 - strb r0, [r5, 0x6] - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _0805A05C - movs r0, 0xA - bl PlaySE - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_806084C - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - ldrh r0, [r6, 0xA] - adds r0, 0x1 - strh r0, [r6, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0805A05C - movs r0, 0 - strb r0, [r5, 0x6] - ldrb r0, [r5, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r5, 0x1] - ldr r0, _0805A068 @ =sub_8059FB4 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0805A05C: - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805A064: .4byte gPlayerAvatar -_0805A068: .4byte sub_8059FB4 - thumb_func_end sub_805A000 - - thumb_func_start sub_805A06C -sub_805A06C: @ 805A06C - push {r4,lr} - ldr r4, _0805A088 @ =sub_805A08C - adds r0, r4, 0 - movs r1, 0xFF - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805A088: .4byte sub_805A08C - thumb_func_end sub_805A06C - - thumb_func_start sub_805A08C -sub_805A08C: @ 805A08C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0805A0C8 @ =gUnknown_0830FC98 - ldr r2, _0805A0CC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0805A09E: - movs r0, 0x8 - ldrsh r2, [r4, r0] - lsls r2, 2 - adds r2, r5 - ldr r0, _0805A0D0 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _0805A0D4 @ =gMapObjects - adds r1, r0 - ldr r2, [r2] - adds r0, r4, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - bne _0805A09E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805A0C8: .4byte gUnknown_0830FC98 -_0805A0CC: .4byte gTasks -_0805A0D0: .4byte gPlayerAvatar -_0805A0D4: .4byte gMapObjects - thumb_func_end sub_805A08C - - thumb_func_start sub_805A0D8 -sub_805A0D8: @ 805A0D8 - push {lr} - ldrh r2, [r0, 0x8] - adds r2, 0x1 - strh r2, [r0, 0x8] - ldrb r1, [r1, 0x18] - lsrs r1, 4 - strh r1, [r0, 0xA] - ldr r1, _0805A0FC @ =gPlayerAvatar - movs r0, 0x1 - strb r0, [r1, 0x6] - bl ScriptContext2_Enable - movs r0, 0x2D - bl PlaySE - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_0805A0FC: .4byte gPlayerAvatar - thumb_func_end sub_805A0D8 - - thumb_func_start sub_805A100 -sub_805A100: @ 805A100 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805A174 @ =gUnknown_0830FCA8 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r5, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _0805A168 - ldrb r0, [r5, 0x18] - lsrs r0, 4 - subs r0, 0x1 - add r0, sp - ldrb r6, [r0] - adds r0, r6, 0 - bl GetFaceDirectionAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl FieldObjectSetSpecialAnim - ldrb r0, [r4, 0xA] - cmp r6, r0 - bne _0805A146 - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_0805A146: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x3 - ble _0805A168 - ldrb r0, [r4, 0xA] - bl GetOppositeDirection - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - bne _0805A168 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0805A168: - movs r0, 0 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805A174: .4byte gUnknown_0830FCA8 - thumb_func_end sub_805A100 - - thumb_func_start sub_805A178 -sub_805A178: @ 805A178 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r4, r1, 0 - ldr r1, _0805A1B4 @ =gUnknown_0830FCAC - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _0805A1A8 - movs r1, 0xC - ldrsh r0, [r5, r1] - add r0, sp - ldrb r1, [r0] - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - movs r0, 0x1 - strh r0, [r5, 0x8] -_0805A1A8: - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805A1B4: .4byte gUnknown_0830FCAC - thumb_func_end sub_805A178 - - thumb_func_start sub_805A1B8 -sub_805A1B8: @ 805A1B8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _0805A1FC - ldrb r0, [r4, 0xA] - bl GetOppositeDirection - lsls r0, 24 - lsrs r0, 24 - bl GetSimpleGoAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl FieldObjectSetSpecialAnim - bl ScriptContext2_Disable - ldr r1, _0805A204 @ =gPlayerAvatar - movs r0, 0 - strb r0, [r1, 0x6] - ldr r0, _0805A208 @ =sub_805A08C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0805A1FC: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805A204: .4byte gPlayerAvatar -_0805A208: .4byte sub_805A08C - thumb_func_end sub_805A1B8 - - thumb_func_start sub_805A20C -sub_805A20C: @ 805A20C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ScriptContext2_Enable - bl sav1_reset_battle_music_maybe - bl sub_8053F84 - ldr r2, _0805A258 @ =gPlayerAvatar - ldrb r1, [r2] - movs r0, 0xF7 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 - strb r0, [r2, 0x6] - ldr r5, _0805A25C @ =taskFF_0805D1D4 - adds r0, r5, 0 - movs r1, 0xFF - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0805A260 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - bl _call_via_r5 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805A258: .4byte gPlayerAvatar -_0805A25C: .4byte taskFF_0805D1D4 -_0805A260: .4byte gTasks - thumb_func_end sub_805A20C - - thumb_func_start taskFF_0805D1D4 -taskFF_0805D1D4: @ 805A264 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0805A2C0 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805A2C4 @ =gMapObjects - adds r5, r0, r1 - adds r0, r5, 0 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - cmp r0, 0 - beq _0805A290 - adds r0, r5, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _0805A2B8 -_0805A290: - ldrb r0, [r5, 0x1A] - movs r1, 0x2 - bl sub_8127ED0 - ldr r0, _0805A2C8 @ =gTasks - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r0 - ldrb r0, [r4, 0x8] - bl sub_80608D0 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl FieldObjectSetSpecialAnim - ldr r0, _0805A2CC @ =sub_805A2D0 - str r0, [r4] -_0805A2B8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805A2C0: .4byte gPlayerAvatar -_0805A2C4: .4byte gMapObjects -_0805A2C8: .4byte gTasks -_0805A2CC: .4byte sub_805A2D0 - thumb_func_end taskFF_0805D1D4 - - thumb_func_start sub_805A2D0 -sub_805A2D0: @ 805A2D0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _0805A33C @ =gPlayerAvatar - ldrb r1, [r6, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805A340 @ =gMapObjects - adds r4, r0, r1 - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimFinished - lsls r0, 24 - cmp r0, 0 - beq _0805A336 - movs r0, 0 - bl GetPlayerAvatarGraphicsIdByStateId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - movs r0, 0 - strb r0, [r6, 0x6] - bl ScriptContext2_Disable - ldrb r1, [r4, 0x1A] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805A344 @ =gSprites - adds r0, r1 - bl DestroySprite - adds r0, r5, 0 - bl DestroyTask -_0805A336: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805A33C: .4byte gPlayerAvatar -_0805A340: .4byte gMapObjects -_0805A344: .4byte gSprites - thumb_func_end sub_805A2D0 - - thumb_func_start StartFishing -StartFishing: @ 805A348 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _0805A374 @ =sub_805A37C - adds r0, r5, 0 - movs r1, 0xFF - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0805A378 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x26] - bl _call_via_r5 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805A374: .4byte sub_805A37C -_0805A378: .4byte gTasks - thumb_func_end StartFishing - - thumb_func_start sub_805A37C -sub_805A37C: @ 805A37C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0805A3AC @ =gUnknown_0830FCB4 - ldr r2, _0805A3B0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0805A38E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0805A38E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805A3AC: .4byte gUnknown_0830FCB4 -_0805A3B0: .4byte gTasks - thumb_func_end sub_805A37C - - thumb_func_start sub_805A3B4 -sub_805A3B4: @ 805A3B4 - push {r4,lr} - adds r4, r0, 0 - bl ScriptContext2_Enable - ldr r1, _0805A3D0 @ =gPlayerAvatar - movs r0, 0x1 - strb r0, [r1, 0x6] - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805A3D0: .4byte gPlayerAvatar - thumb_func_end sub_805A3B4 - - thumb_func_start fish1 -fish1: @ 805A3D4 - push {r4-r6,lr} - sub sp, 0x10 - adds r5, r0, 0 - ldr r1, _0805A45C @ =gUnknown_0830FCF4 - mov r0, sp - movs r2, 0x6 - bl memcpy - add r4, sp, 0x8 - ldr r1, _0805A460 @ =gUnknown_0830FCFA - adds r0, r4, 0 - movs r2, 0x6 - bl memcpy - movs r0, 0 - strh r0, [r5, 0x20] - bl Random - movs r2, 0x26 - ldrsh r1, [r5, r2] - lsls r1, 1 - mov r2, sp - adds r6, r2, r1 - lsls r0, 16 - lsrs r0, 16 - adds r4, r1 - movs r2, 0 - ldrsh r1, [r4, r2] - bl __modsi3 - ldrh r1, [r6] - adds r1, r0 - strh r1, [r5, 0x22] - ldr r3, _0805A464 @ =gMapObjects - ldr r2, _0805A468 @ =gPlayerAvatar - ldrb r1, [r2, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x5] - strh r0, [r5, 0x24] - ldrb r0, [r2, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r3 - adds r0, r4, 0 - bl FieldObjectClearAnimIfSpecialAnimActive - ldrb r0, [r4, 0x1] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_8059C3C - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0 - add sp, 0x10 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805A45C: .4byte gUnknown_0830FCF4 -_0805A460: .4byte gUnknown_0830FCFA -_0805A464: .4byte gMapObjects -_0805A468: .4byte gPlayerAvatar - thumb_func_end fish1 - - thumb_func_start fish2 -fish2: @ 805A46C - push {r4,lr} - adds r4, r0, 0 - bl sub_805A954 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3B - ble _0805A488 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0805A488: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end fish2 - - thumb_func_start fish3 -fish3: @ 805A490 - push {r4,lr} - adds r4, r0, 0 - bl MenuDisplayMessageBox - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - strh r1, [r4, 0xC] - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - adds r0, r1, 0x1 - strh r0, [r4, 0xE] - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _0805A4C4 - adds r0, r1, 0x4 - strh r0, [r4, 0xE] -_0805A4C4: - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0x9 - ble _0805A4D0 - movs r0, 0xA - strh r0, [r4, 0xE] -_0805A4D0: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end fish3 - - thumb_func_start fish4 -fish4: @ 805A4D8 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldr r1, _0805A514 @ =gUnknown_0830FD00 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl sub_805A954 - ldrh r0, [r4, 0xA] - adds r2, r0, 0x1 - strh r2, [r4, 0xA] - ldr r0, _0805A518 @ =gMain - ldrh r0, [r0, 0x2E] - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0805A51C - movs r0, 0xB - strh r0, [r4, 0x8] - movs r1, 0x20 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0805A50E - movs r0, 0xC - strh r0, [r4, 0x8] -_0805A50E: - movs r0, 0x1 - b _0805A564 - .align 2, 0 -_0805A514: .4byte gUnknown_0830FD00 -_0805A518: .4byte gMain -_0805A51C: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0805A562 - strh r1, [r4, 0xA] - ldrh r2, [r4, 0xC] - movs r3, 0xC - ldrsh r1, [r4, r3] - movs r3, 0xE - ldrsh r0, [r4, r3] - cmp r1, r0 - blt _0805A54E - ldrh r0, [r4, 0x8] - adds r1, r0, 0x1 - strh r1, [r4, 0x8] - ldrh r2, [r4, 0x20] - movs r3, 0x20 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _0805A548 - adds r0, r1, 0x1 - strh r0, [r4, 0x8] -_0805A548: - adds r0, r2, 0x1 - strh r0, [r4, 0x20] - b _0805A562 -_0805A54E: - adds r1, r2, 0x4 - lsls r1, 24 - lsrs r1, 24 - mov r0, sp - movs r2, 0xF - bl MenuPrint - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_0805A562: - movs r0, 0 -_0805A564: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end fish4 - - thumb_func_start party_menu_update_status_condition_object -party_menu_update_status_condition_object: @ 805A56C - push {r4,lr} - adds r4, r0, 0 - bl sub_805A954 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - bl GetFishingWildMonListHeader - lsls r0, 24 - cmp r0, 0 - beq _0805A590 - bl Random - movs r1, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0805A596 -_0805A590: - movs r0, 0xB - strh r0, [r4, 0x8] - b _0805A5BC -_0805A596: - ldr r0, _0805A5C4 @ =gPlayerAvatar - ldrb r0, [r0, 0x4] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _0805A5C8 @ =gSprites - adds r4, r0 - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - bl sub_805FE08 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim -_0805A5BC: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805A5C4: .4byte gPlayerAvatar -_0805A5C8: .4byte gSprites - thumb_func_end party_menu_update_status_condition_object - - thumb_func_start sub_805A5CC -sub_805A5CC: @ 805A5CC - push {r4,lr} - adds r4, r0, 0 - bl sub_805A954 - ldr r0, _0805A5F0 @ =gOtherText_OhABite - movs r1, 0x4 - movs r2, 0x11 - bl MenuPrint - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805A5F0: .4byte gOtherText_OhABite - thumb_func_end sub_805A5CC - - thumb_func_start fish7 -fish7: @ 805A5F4 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldr r1, _0805A628 @ =gUnknown_0830FD02 - mov r0, sp - movs r2, 0x6 - bl memcpy - bl sub_805A954 - ldrh r1, [r4, 0xA] - adds r1, 0x1 - strh r1, [r4, 0xA] - movs r2, 0x26 - ldrsh r0, [r4, r2] - lsls r0, 1 - add r0, sp - lsls r1, 16 - asrs r1, 16 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r1, r0 - blt _0805A62C - movs r0, 0xC - b _0805A63C - .align 2, 0 -_0805A628: .4byte gUnknown_0830FD02 -_0805A62C: - ldr r0, _0805A648 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0805A63E - ldrh r0, [r4, 0x8] - adds r0, 0x1 -_0805A63C: - strh r0, [r4, 0x8] -_0805A63E: - movs r0, 0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805A648: .4byte gMain - thumb_func_end fish7 - - thumb_func_start fish8 -fish8: @ 805A64C - push {r4,lr} - sub sp, 0xC - adds r4, r0, 0 - ldr r1, _0805A6B0 @ =gUnknown_0830FD08 - mov r0, sp - movs r2, 0xC - bl memcpy - bl sub_805A954 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r2, 0x22 - ldrsh r0, [r4, r2] - cmp r1, r0 - blt _0805A6A2 - cmp r1, 0x1 - bgt _0805A6A6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - movs r3, 0x20 - ldrsh r2, [r4, r3] - lsls r2, 1 - movs r3, 0x26 - ldrsh r1, [r4, r3] - lsls r1, 2 - adds r2, r1 - mov r3, sp - adds r1, r3, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - ble _0805A6A6 -_0805A6A2: - movs r0, 0x3 - strh r0, [r4, 0x8] -_0805A6A6: - movs r0, 0 - add sp, 0xC - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805A6B0: .4byte gUnknown_0830FD08 - thumb_func_end fish8 - - thumb_func_start sub_805A6B4 -sub_805A6B4: @ 805A6B4 - push {r4,lr} - adds r4, r0, 0 - bl sub_805A954 - ldr r0, _0805A6D8 @ =gOtherText_PokeOnHook - bl sub_8072044 - bl MenuDisplayMessageBox - ldrh r0, [r4, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x8] - strh r1, [r4, 0xA] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805A6D8: .4byte gOtherText_PokeOnHook - thumb_func_end sub_805A6B4 - - thumb_func_start sub_805A6DC -sub_805A6DC: @ 805A6DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0805A780 - bl sub_805A954 - movs r0, 0xA - ldrsh r6, [r5, r0] - cmp r6, 0 - bne _0805A780 - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805A778 - ldr r7, _0805A76C @ =gPlayerAvatar - ldrb r0, [r7, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r1, _0805A770 @ =gMapObjects - mov r8, r1 - add r4, r8 - ldrh r1, [r5, 0x24] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl FieldObjectTurn - ldrb r1, [r7] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0805A746 - ldrb r0, [r7, 0x5] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - add r1, r8 - ldrb r0, [r1, 0x1A] - movs r1, 0 - movs r2, 0 - bl sub_8127F28 -_0805A746: - ldr r2, _0805A774 @ =gSprites - ldrb r1, [r7, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x24] - ldrb r1, [r7, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x26] - bl MenuZeroFillScreen - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - b _0805A7A8 - .align 2, 0 -_0805A76C: .4byte gPlayerAvatar -_0805A770: .4byte gMapObjects -_0805A774: .4byte gSprites -_0805A778: - movs r1, 0xA - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0805A7A8 -_0805A780: - ldr r1, _0805A7B4 @ =gPlayerAvatar - movs r0, 0 - strb r0, [r1, 0x6] - bl ScriptContext2_Disable - ldrh r0, [r5, 0x26] - lsls r0, 24 - lsrs r0, 24 - bl FishingWildEncounter - movs r0, 0x1 - bl sub_80BE97C - ldr r0, _0805A7B8 @ =sub_805A37C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0805A7A8: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805A7B4: .4byte gPlayerAvatar -_0805A7B8: .4byte sub_805A37C - thumb_func_end sub_805A6DC - - thumb_func_start sub_805A7BC -sub_805A7BC: @ 805A7BC - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_805A954 - ldr r0, _0805A7FC @ =gPlayerAvatar - ldrb r0, [r0, 0x4] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _0805A800 @ =gSprites - adds r4, r0 - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - bl sub_805FDF8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _0805A804 @ =gOtherText_NotEvenANibble - bl sub_8072044 - movs r0, 0xD - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805A7FC: .4byte gPlayerAvatar -_0805A800: .4byte gSprites -_0805A804: .4byte gOtherText_NotEvenANibble - thumb_func_end sub_805A7BC - - thumb_func_start sub_805A808 -sub_805A808: @ 805A808 - push {r4,r5,lr} - adds r5, r0, 0 - bl sub_805A954 - ldr r0, _0805A84C @ =gPlayerAvatar - ldrb r0, [r0, 0x4] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _0805A850 @ =gSprites - adds r4, r0 - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - bl sub_805FDF8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - ldr r0, _0805A854 @ =gOtherText_ItGotAway - bl sub_8072044 - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805A84C: .4byte gPlayerAvatar -_0805A850: .4byte gSprites -_0805A854: .4byte gOtherText_ItGotAway - thumb_func_end sub_805A808 - - thumb_func_start fishD -fishD: @ 805A858 - push {r4,lr} - adds r4, r0, 0 - bl sub_805A954 - bl MenuDisplayMessageBox - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end fishD - - thumb_func_start sub_805A874 -sub_805A874: @ 805A874 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - bl sub_805A954 - ldr r7, _0805A908 @ =gSprites - ldr r5, _0805A90C @ =gPlayerAvatar - ldrb r0, [r5, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r7 - adds r1, 0x3F - ldrb r0, [r1] - lsls r0, 27 - cmp r0, 0 - bge _0805A8FA - ldrb r0, [r5, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _0805A910 @ =gMapObjects - mov r8, r0 - add r4, r8 - ldrh r1, [r6, 0x24] - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_805B980 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl FieldObjectTurn - ldrb r1, [r5] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0805A8DA - ldrb r0, [r5, 0x5] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - add r1, r8 - ldrb r0, [r1, 0x1A] - movs r1, 0 - movs r2, 0 - bl sub_8127F28 -_0805A8DA: - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - movs r2, 0 - strh r2, [r0, 0x24] - ldrb r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r2, [r0, 0x26] - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] -_0805A8FA: - movs r0, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805A908: .4byte gSprites -_0805A90C: .4byte gPlayerAvatar -_0805A910: .4byte gMapObjects - thumb_func_end sub_805A874 - - thumb_func_start fishF -fishF: @ 805A914 - push {lr} - bl MenuUpdateWindowText - lsls r0, 24 - cmp r0, 0 - beq _0805A946 - ldr r1, _0805A94C @ =gPlayerAvatar - movs r0, 0 - strb r0, [r1, 0x6] - bl ScriptContext2_Disable - bl sub_806451C - bl MenuZeroFillScreen - movs r0, 0 - bl sub_80BE97C - ldr r0, _0805A950 @ =sub_805A37C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask -_0805A946: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0805A94C: .4byte gPlayerAvatar -_0805A950: .4byte sub_805A37C - thumb_func_end fishF - - thumb_func_start sub_805A954 -sub_805A954: @ 805A954 - push {r4-r7,lr} - ldr r0, _0805AA40 @ =gPlayerAvatar - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805AA44 @ =gSprites - adds r4, r0, r1 - adds r0, r4, 0 - bl AnimateSprite - movs r0, 0 - strh r0, [r4, 0x24] - strh r0, [r4, 0x26] - adds r0, r4, 0 - adds r0, 0x2B - ldrb r5, [r0] - movs r0, 0x2A - adds r0, r4 - mov r12, r0 - ldrb r0, [r0] - ldr r1, [r4, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - lsls r6, r5, 2 - adds r0, r6, r0 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r7, 0x1 - negs r7, r7 - cmp r0, r7 - beq _0805A9C6 - 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] - mov r1, r12 - ldrb r0, [r1] - ldr r1, [r4, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - adds r0, r6, r0 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, r7 - bne _0805A9CC -_0805A9C6: - subs r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_0805A9CC: - adds r0, r4, 0 - adds r0, 0x2A - ldrb r0, [r0] - ldr r1, [r4, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - lsls r0, r5, 2 - adds r0, r1 - ldrb r5, [r0] - subs r0, r5, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bhi _0805A9FE - movs r0, 0x8 - strh r0, [r4, 0x24] - bl player_get_direction_lower_nybble - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805A9FE - ldr r0, _0805AA48 @ =0x0000fff8 - strh r0, [r4, 0x24] -_0805A9FE: - cmp r5, 0x5 - bne _0805AA06 - ldr r0, _0805AA48 @ =0x0000fff8 - strh r0, [r4, 0x26] -_0805AA06: - adds r0, r5, 0 - subs r0, 0xA - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _0805AA16 - movs r0, 0x8 - strh r0, [r4, 0x26] -_0805AA16: - ldr r3, _0805AA40 @ =gPlayerAvatar - ldrb r1, [r3] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0805AA3A - ldr r2, _0805AA4C @ =gMapObjects - ldrb r1, [r3, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1A] - movs r1, 0x26 - ldrsh r2, [r4, r1] - movs r1, 0x1 - bl sub_8127F28 -_0805AA3A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805AA40: .4byte gPlayerAvatar -_0805AA44: .4byte gSprites -_0805AA48: .4byte 0x0000fff8 -_0805AA4C: .4byte gMapObjects - thumb_func_end sub_805A954 - thumb_func_start npc_clear_ids_and_state npc_clear_ids_and_state: @ 805AA50 push {r4,lr} @@ -30479,1885 +19602,4 @@ _080635EA: bx r0 thumb_func_end npc_update_obj_anim_flag - thumb_func_start GetAllGroundEffectFlags_OnSpawn -GetAllGroundEffectFlags_OnSpawn: @ 80635F0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectUpdateMetatileBehaviors - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_Reflection - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_TallGrassOnSpawn - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_LongGrassOnSpawn - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_SandHeap - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_ShallowFlowingWater - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_ShortGrass - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_HotSprings - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetAllGroundEffectFlags_OnSpawn - - thumb_func_start GetAllGroundEffectFlags_OnBeginStep -GetAllGroundEffectFlags_OnBeginStep: @ 8063638 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectUpdateMetatileBehaviors - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_Reflection - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_TallGrassOnBeginStep - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_LongGrassOnBeginStep - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_Tracks - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_SandHeap - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_ShallowFlowingWater - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_Puddle - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_ShortGrass - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_HotSprings - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetAllGroundEffectFlags_OnBeginStep - - thumb_func_start GetAllGroundEffectFlags_OnFinishStep -GetAllGroundEffectFlags_OnFinishStep: @ 8063690 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectUpdateMetatileBehaviors - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_ShallowFlowingWater - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_SandHeap - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_Puddle - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_Ripple - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_ShortGrass - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_HotSprings - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_Seaweed - adds r0, r4, 0 - adds r1, r5, 0 - bl GetGroundEffectFlags_JumpLanding - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetAllGroundEffectFlags_OnFinishStep - - thumb_func_start FieldObjectUpdateMetatileBehaviors -FieldObjectUpdateMetatileBehaviors: @ 80636E0 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x14 - ldrsh r0, [r4, r1] - movs r2, 0x16 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - strb r0, [r4, 0x1F] - movs r1, 0x10 - ldrsh r0, [r4, r1] - movs r2, 0x12 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - strb r0, [r4, 0x1E] - pop {r4} - pop {r0} - bx r0 - thumb_func_end FieldObjectUpdateMetatileBehaviors - - thumb_func_start GetGroundEffectFlags_Reflection -GetGroundEffectFlags_Reflection: @ 8063708 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _0806374C @ =gUnknown_08376008 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - adds r0, r4, 0 - bl FieldObjectCheckForReflectiveSurface - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08063750 - ldrb r1, [r4, 0x2] - lsls r0, r1, 30 - cmp r0, 0 - blt _0806375A - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4, 0x2] - subs r0, r2, 0x1 - lsls r0, 2 - add r0, sp - ldr r1, [r5] - ldr r0, [r0] - orrs r1, r0 - str r1, [r5] - b _0806375A - .align 2, 0 -_0806374C: .4byte gUnknown_08376008 -_08063750: - ldrb r1, [r4, 0x2] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x2] -_0806375A: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_Reflection - - thumb_func_start GetGroundEffectFlags_TallGrassOnSpawn -GetGroundEffectFlags_TallGrassOnSpawn: @ 8063764 - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r0, 0x1E] - bl MetatileBehavior_IsTallGrass - lsls r0, 24 - cmp r0, 0 - beq _0806377C - ldr r0, [r4] - movs r1, 0x1 - orrs r0, r1 - str r0, [r4] -_0806377C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_TallGrassOnSpawn - - thumb_func_start GetGroundEffectFlags_TallGrassOnBeginStep -GetGroundEffectFlags_TallGrassOnBeginStep: @ 8063784 - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r0, 0x1E] - bl MetatileBehavior_IsTallGrass - lsls r0, 24 - cmp r0, 0 - beq _0806379C - ldr r0, [r4] - movs r1, 0x2 - orrs r0, r1 - str r0, [r4] -_0806379C: - pop {r4} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_TallGrassOnBeginStep - - thumb_func_start GetGroundEffectFlags_LongGrassOnSpawn -GetGroundEffectFlags_LongGrassOnSpawn: @ 80637A4 - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r0, 0x1E] - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _080637BC - ldr r0, [r4] - movs r1, 0x4 - orrs r0, r1 - str r0, [r4] -_080637BC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_LongGrassOnSpawn - - thumb_func_start GetGroundEffectFlags_LongGrassOnBeginStep -GetGroundEffectFlags_LongGrassOnBeginStep: @ 80637C4 - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r0, 0x1E] - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _080637DC - ldr r0, [r4] - movs r1, 0x8 - orrs r0, r1 - str r0, [r4] -_080637DC: - pop {r4} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_LongGrassOnBeginStep - - thumb_func_start GetGroundEffectFlags_Tracks -GetGroundEffectFlags_Tracks: @ 80637E4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsDeepSand - lsls r0, 24 - cmp r0, 0 - beq _080637FE - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 1 - b _0806381A -_080637FE: - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsSandOrDeepSand - lsls r0, 24 - cmp r0, 0 - bne _08063816 - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsUnusedFootprintMetatile - lsls r0, 24 - cmp r0, 0 - beq _0806381E -_08063816: - ldr r0, [r5] - movs r1, 0x80 -_0806381A: - orrs r0, r1 - str r0, [r5] -_0806381E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_Tracks - - thumb_func_start GetGroundEffectFlags_SandHeap -GetGroundEffectFlags_SandHeap: @ 8063824 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsDeepSand - lsls r0, 24 - cmp r0, 0 - beq _08063862 - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsDeepSand - lsls r0, 24 - cmp r0, 0 - beq _08063862 - ldrb r1, [r4, 0x2] - lsls r0, r1, 27 - cmp r0, 0 - blt _0806386C - movs r0, 0x11 - negs r0, r0 - ands r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r4, 0x2] - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 4 - orrs r0, r1 - str r0, [r5] - b _0806386C -_08063862: - ldrb r1, [r4, 0x2] - movs r0, 0x11 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x2] -_0806386C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_SandHeap - - thumb_func_start GetGroundEffectFlags_ShallowFlowingWater -GetGroundEffectFlags_ShallowFlowingWater: @ 8063874 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsShallowFlowingWater - lsls r0, 24 - cmp r0, 0 - beq _08063892 - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsShallowFlowingWater - lsls r0, 24 - cmp r0, 0 - bne _080638AA -_08063892: - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsPacifidlogLog - lsls r0, 24 - cmp r0, 0 - beq _080638C8 - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsPacifidlogLog - lsls r0, 24 - cmp r0, 0 - beq _080638C8 -_080638AA: - ldrb r1, [r4, 0x2] - lsls r0, r1, 28 - cmp r0, 0 - blt _080638D2 - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4, 0x2] - ldr r0, [r5] - movs r1, 0x40 - orrs r0, r1 - str r0, [r5] - b _080638D2 -_080638C8: - ldrb r1, [r4, 0x2] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x2] -_080638D2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_ShallowFlowingWater - - thumb_func_start GetGroundEffectFlags_Puddle -GetGroundEffectFlags_Puddle: @ 80638D8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsPuddle - lsls r0, 24 - cmp r0, 0 - beq _08063900 - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsPuddle - lsls r0, 24 - cmp r0, 0 - beq _08063900 - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 3 - orrs r0, r1 - str r0, [r5] -_08063900: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_Puddle - - thumb_func_start GetGroundEffectFlags_Ripple -GetGroundEffectFlags_Ripple: @ 8063908 - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r0, 0x1E] - bl MetatileBehavior_HasRipples - lsls r0, 24 - cmp r0, 0 - beq _08063922 - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - str r0, [r4] -_08063922: - pop {r4} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_Ripple - - thumb_func_start GetGroundEffectFlags_ShortGrass -GetGroundEffectFlags_ShortGrass: @ 8063928 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsShortGrass - lsls r0, 24 - cmp r0, 0 - beq _08063966 - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsShortGrass - lsls r0, 24 - cmp r0, 0 - beq _08063966 - ldrb r1, [r4, 0x2] - lsls r0, r1, 29 - cmp r0, 0 - blt _08063970 - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4, 0x2] - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 10 - orrs r0, r1 - str r0, [r5] - b _08063970 -_08063966: - ldrb r1, [r4, 0x2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x2] -_08063970: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_ShortGrass - - thumb_func_start GetGroundEffectFlags_HotSprings -GetGroundEffectFlags_HotSprings: @ 8063978 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x1E] - bl MetatileBehavior_IsHotSprings - lsls r0, 24 - cmp r0, 0 - beq _080639B6 - ldrb r0, [r4, 0x1F] - bl MetatileBehavior_IsHotSprings - lsls r0, 24 - cmp r0, 0 - beq _080639B6 - ldrb r1, [r4, 0x2] - lsls r0, r1, 26 - cmp r0, 0 - blt _080639C0 - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x2] - ldr r0, [r5] - movs r1, 0x80 - lsls r1, 11 - orrs r0, r1 - str r0, [r5] - b _080639C0 -_080639B6: - ldrb r1, [r4, 0x2] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x2] -_080639C0: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_HotSprings - - thumb_func_start GetGroundEffectFlags_Seaweed -GetGroundEffectFlags_Seaweed: @ 80639C8 - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r0, 0x1E] - bl MetatileBehavior_IsSeaweed - lsls r0, 24 - cmp r0, 0 - beq _080639E2 - ldr r0, [r4] - movs r1, 0x80 - lsls r1, 12 - orrs r0, r1 - str r0, [r4] -_080639E2: - pop {r4} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_Seaweed - - thumb_func_start GetGroundEffectFlags_JumpLanding -GetGroundEffectFlags_JumpLanding: @ 80639E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - adds r6, r1, 0 - ldr r0, [r7] - ldr r1, _08063A24 @ =0x02000020 - ands r0, r1 - cmp r0, 0x20 - bne _08063A3A @ Is player landing after jumping? - movs r5, 0 - ldr r0, _08063A28 @ =gJumpLanding_MetatileFunctionPointers - mov r8, r0 -_08063A02: - lsls r4, r5, 2 - mov r0, r8 - adds r1, r4, r0 - ldrb r0, [r7, 0x1E] @ Load metatile behavior - ldr r1, [r1] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _08063A30 - ldr r0, _08063A2C @ =gJumpLanding_Bitmasks - adds r0, r4, r0 - ldr r1, [r6] - ldr r0, [r0] - orrs r1, r0 - str r1, [r6] - b _08063A3A - .align 2, 0 -_08063A24: .4byte 0x02000020 -_08063A28: .4byte gJumpLanding_MetatileFunctionPointers -_08063A2C: .4byte gJumpLanding_Bitmasks -_08063A30: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08063A02 -_08063A3A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end GetGroundEffectFlags_JumpLanding - - thumb_func_start FieldObjectCheckForReflectiveSurface -FieldObjectCheckForReflectiveSurface: @ 8063A44 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r5, r0, 0 - ldrb r0, [r5, 0x5] - bl GetFieldObjectGraphicsInfo - movs r2, 0x8 - ldrsh r1, [r0, r2] - adds r1, 0x8 - lsls r1, 12 - lsrs r1, 16 - str r1, [sp] - movs r1, 0xA - ldrsh r0, [r0, r1] - adds r0, 0x8 - lsls r0, 12 - movs r4, 0 - lsrs r2, r0, 16 - str r2, [sp, 0x4] - asrs r0, 16 - cmp r4, r0 - blt _08063A7A - b _08063B80 -_08063A7A: - movs r0, 0x1 - mov r10, r0 -_08063A7E: - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - add r1, r10 - lsls r4, 16 - asrs r6, r4, 16 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - mov r9, r4 - cmp r0, 0 - bne _08063B82 - movs r1, 0x14 - ldrsh r0, [r5, r1] - movs r2, 0x16 - ldrsh r1, [r5, r2] - add r1, r10 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - movs r2, 0x1 - ldr r1, [sp] - lsls r0, r1, 16 - asrs r1, r0, 16 - mov r8, r0 - cmp r2, r1 - bge _08063B6E - movs r0, 0x80 - lsls r0, 9 - asrs r7, r0, 16 -_08063AD8: - movs r1, 0x10 - ldrsh r0, [r5, r1] - lsls r1, r2, 16 - asrs r4, r1, 16 - adds r0, r4 - movs r2, 0x12 - ldrsh r1, [r5, r2] - adds r1, r7 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - movs r1, 0x10 - ldrsh r0, [r5, r1] - subs r0, r4 - movs r2, 0x12 - ldrsh r1, [r5, r2] - adds r1, r7 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - movs r1, 0x14 - ldrsh r0, [r5, r1] - adds r0, r4 - movs r2, 0x16 - ldrsh r1, [r5, r2] - adds r1, r7 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - movs r1, 0x14 - ldrsh r0, [r5, r1] - subs r0, r4 - movs r2, 0x16 - ldrsh r1, [r5, r2] - adds r1, r7 - adds r1, r6 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl GetReflectionTypeByMetatileBehavior - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08063B82 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r0, r8 - blt _08063AD8 -_08063B6E: - movs r1, 0x80 - lsls r1, 9 - add r1, r9 - lsrs r4, r1, 16 - ldr r2, [sp, 0x4] - lsls r0, r2, 16 - cmp r1, r0 - bge _08063B80 - b _08063A7E -_08063B80: - movs r0, 0 -_08063B82: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end FieldObjectCheckForReflectiveSurface - - thumb_func_start GetReflectionTypeByMetatileBehavior -GetReflectionTypeByMetatileBehavior: @ 8063B94 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsIce - lsls r0, 24 - cmp r0, 0 - beq _08063BAA - movs r0, 0x1 - b _08063BBC -_08063BAA: - adds r0, r4, 0 - bl MetatileBehavior_IsReflective - lsls r0, 24 - cmp r0, 0 - bne _08063BBA - movs r0, 0 - b _08063BBC -_08063BBA: - movs r0, 0x2 -_08063BBC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetReflectionTypeByMetatileBehavior - - thumb_func_start GetLedgeJumpDirection -GetLedgeJumpDirection: @ 8063BC4 - push {r4,lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r4, r2, 24 - cmp r4, 0 - beq _08063C0A - cmp r4, 0x4 - bls _08063BE0 - subs r0, r4, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 -_08063BE0: - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r3, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08063C10 @ =gUnknown_08376040 - lsls r1, r4, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08063C14 -_08063C0A: - movs r0, 0 - b _08063C1A - .align 2, 0 -_08063C10: .4byte gUnknown_08376040 -_08063C14: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r0, 24 -_08063C1A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetLedgeJumpDirection - - thumb_func_start FieldObjectSetSpriteOamTableForLongGrass -FieldObjectSetSpriteOamTableForLongGrass: @ 8063C20 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r0, [r5] - lsls r0, 27 - cmp r0, 0 - blt _08063C74 - ldrb r0, [r5, 0x1E] - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _08063C74 - ldrb r0, [r5, 0x1F] - bl MetatileBehavior_IsLongGrass - lsls r0, 24 - cmp r0, 0 - beq _08063C74 - adds r4, 0x42 - ldrb r1, [r4] - movs r6, 0x40 - negs r6, r6 - adds r0, r6, 0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - ldrb r0, [r5, 0xB] - lsrs r0, 4 - bl ZCoordToPriority - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08063C74 - ldrb r0, [r4] - adds r1, r6, 0 - ands r1, r0 - movs r0, 0x5 - orrs r1, r0 - strb r1, [r4] -_08063C74: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end FieldObjectSetSpriteOamTableForLongGrass - - thumb_func_start IsZCoordMismatchAt -IsZCoordMismatchAt: @ 8063C7C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - lsrs r0, r1, 16 - lsls r2, 16 - lsrs r1, r2, 16 - cmp r4, 0 - beq _08063CAA - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08063CAA - cmp r0, 0xF - beq _08063CAA - cmp r0, r4 - bne _08063CAE -_08063CAA: - movs r0, 0 - b _08063CB0 -_08063CAE: - movs r0, 0x1 -_08063CB0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsZCoordMismatchAt - - thumb_func_start FieldObjectUpdateZCoordAndPriority -FieldObjectUpdateZCoordAndPriority: @ 8063CB8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x3] - lsls r0, 29 - cmp r0, 0 - blt _08063D06 - adds r0, r4, 0 - bl FieldObjectUpdateZCoord - ldr r1, _08063D0C @ =gFieldObjectPriorities_08376070 - ldrb r2, [r4, 0xB] - lsls r2, 24 - lsrs r0, r2, 28 - adds r0, r1 - ldrb r0, [r0] - adds r4, r5, 0 - adds r4, 0x42 - movs r1, 0x3F - ands r1, r0 - ldrb r3, [r4] - movs r0, 0x40 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4] - ldr r0, _08063D10 @ =gFieldObjectPriorities_08376060 - lsrs r2, 28 - adds r2, r0 - movs r0, 0x3 - ldrb r1, [r2] - ands r1, r0 - lsls r1, 2 - ldrb r2, [r5, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x5] -_08063D06: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063D0C: .4byte gFieldObjectPriorities_08376070 -_08063D10: .4byte gFieldObjectPriorities_08376060 - thumb_func_end FieldObjectUpdateZCoordAndPriority - - thumb_func_start InitObjectPriorityByZCoord -InitObjectPriorityByZCoord: @ 8063D14 - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08063D58 @ =gFieldObjectPriorities_08376070 - adds r2, r1, r2 - ldrb r2, [r2] - movs r3, 0x42 - adds r3, r0 - mov r12, r3 - movs r3, 0x3F - ands r3, r2 - mov r2, r12 - ldrb r4, [r2] - movs r2, 0x40 - negs r2, r2 - ands r2, r4 - orrs r2, r3 - mov r3, r12 - strb r2, [r3] - ldr r2, _08063D5C @ =gFieldObjectPriorities_08376060 - adds r1, r2 - movs r3, 0x3 - ldrb r2, [r1] - ands r2, r3 - lsls r2, 2 - ldrb r3, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x5] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08063D58: .4byte gFieldObjectPriorities_08376070 -_08063D5C: .4byte gFieldObjectPriorities_08376060 - thumb_func_end InitObjectPriorityByZCoord - - thumb_func_start ZCoordToPriority -ZCoordToPriority: @ 8063D60 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08063D6C @ =gFieldObjectPriorities_08376060 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08063D6C: .4byte gFieldObjectPriorities_08376060 - thumb_func_end ZCoordToPriority - - thumb_func_start FieldObjectUpdateZCoord -FieldObjectUpdateZCoord: @ 8063D70 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x10 - ldrsh r0, [r4, r1] - movs r2, 0x12 - ldrsh r1, [r4, r2] - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x14 - ldrsh r0, [r4, r1] - movs r2, 0x16 - ldrsh r1, [r4, r2] - bl MapGridGetZCoordAt - lsls r0, 24 - lsrs r0, 24 - cmp r5, 0xF - beq _08063DBE - cmp r0, 0xF - beq _08063DBE - movs r3, 0xF - adds r0, r5, 0 - ands r0, r3 - ldrb r1, [r4, 0xB] - movs r2, 0x10 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0xB] - cmp r5, 0 - beq _08063DBE - cmp r5, 0xF - beq _08063DBE - lsls r0, r5, 4 - ands r2, r3 - orrs r2, r0 - strb r2, [r4, 0xB] -_08063DBE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end FieldObjectUpdateZCoord - - thumb_func_start SetObjectSubpriorityByZCoord -SetObjectSubpriorityByZCoord: @ 8063DC4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, 0 - adds r3, 0x29 - movs r5, 0 - ldrsb r5, [r3, r5] - ldrh r4, [r1, 0x22] - ldr r3, _08063E04 @ =gSpriteCoordOffsetY - subs r4, r5 - ldrh r3, [r3] - adds r4, r3 - adds r4, 0x8 - movs r3, 0xFF - ands r4, r3 - lsrs r4, 4 - movs r3, 0x10 - subs r3, r4 - lsls r3, 17 - ldr r4, _08063E08 @ =gUnknown_08376050 - adds r0, r4 - lsrs r3, 16 - ldrb r0, [r0] - adds r3, r0 - adds r2, r3 - adds r1, 0x43 - strb r2, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063E04: .4byte gSpriteCoordOffsetY -_08063E08: .4byte gUnknown_08376050 - thumb_func_end SetObjectSubpriorityByZCoord - - thumb_func_start FieldObjectUpdateSubpriority -FieldObjectUpdateSubpriority: @ 8063E0C - push {lr} - adds r2, r0, 0 - ldrb r0, [r2, 0x3] - lsls r0, 29 - cmp r0, 0 - blt _08063E22 - ldrb r0, [r2, 0xB] - lsrs r0, 4 - movs r2, 0x1 - bl SetObjectSubpriorityByZCoord -_08063E22: - pop {r0} - bx r0 - thumb_func_end FieldObjectUpdateSubpriority - - thumb_func_start AreZCoordsCompatible -AreZCoordsCompatible: @ 8063E28 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r0, 0 - beq _08063E3E - cmp r1, 0 - beq _08063E3E - cmp r0, r1 - bne _08063E42 -_08063E3E: - movs r0, 0x1 - b _08063E44 -_08063E42: - movs r0, 0 -_08063E44: - pop {r1} - bx r1 - thumb_func_end AreZCoordsCompatible - - thumb_func_start GroundEffect_SpawnOnTallGrass -GroundEffect_SpawnOnTallGrass: @ 8063E48 - push {lr} - ldr r3, _08063E8C @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r1, [r0, r2] - str r1, [r3] - movs r2, 0x12 - ldrsh r1, [r0, r2] - str r1, [r3, 0x4] - ldrb r1, [r0, 0xB] - lsrs r1, 4 - str r1, [r3, 0x8] - movs r1, 0x2 - str r1, [r3, 0xC] - ldrb r1, [r0, 0x8] - lsls r1, 8 - ldrb r2, [r0, 0x9] - orrs r1, r2 - str r1, [r3, 0x10] - ldrb r0, [r0, 0xA] - str r0, [r3, 0x14] - ldr r1, _08063E90 @ =gSaveBlock1 - ldrb r0, [r1, 0x5] - lsls r0, 8 - ldrb r1, [r1, 0x4] - orrs r0, r1 - str r0, [r3, 0x18] - movs r0, 0x1 - str r0, [r3, 0x1C] - movs r0, 0x4 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08063E8C: .4byte gUnknown_0202FF84 -_08063E90: .4byte gSaveBlock1 - thumb_func_end GroundEffect_SpawnOnTallGrass - - thumb_func_start sub_8063E94 -sub_8063E94: @ 8063E94 - push {lr} - ldr r3, _08063ED8 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r1, [r0, r2] - str r1, [r3] - movs r2, 0x12 - ldrsh r1, [r0, r2] - str r1, [r3, 0x4] - ldrb r1, [r0, 0xB] - lsrs r1, 4 - str r1, [r3, 0x8] - movs r1, 0x2 - str r1, [r3, 0xC] - ldrb r1, [r0, 0x8] - lsls r1, 8 - ldrb r2, [r0, 0x9] - orrs r1, r2 - str r1, [r3, 0x10] - ldrb r0, [r0, 0xA] - str r0, [r3, 0x14] - ldr r1, _08063EDC @ =gSaveBlock1 - ldrb r0, [r1, 0x5] - lsls r0, 8 - ldrb r1, [r1, 0x4] - orrs r0, r1 - str r0, [r3, 0x18] - movs r0, 0 - str r0, [r3, 0x1C] - movs r0, 0x4 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08063ED8: .4byte gUnknown_0202FF84 -_08063EDC: .4byte gSaveBlock1 - thumb_func_end sub_8063E94 - - thumb_func_start sub_8063EE0 -sub_8063EE0: @ 8063EE0 - push {lr} - ldr r3, _08063F24 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r1, [r0, r2] - str r1, [r3] - movs r2, 0x12 - ldrsh r1, [r0, r2] - str r1, [r3, 0x4] - ldrb r1, [r0, 0xB] - lsrs r1, 4 - str r1, [r3, 0x8] - movs r1, 0x2 - str r1, [r3, 0xC] - ldrb r1, [r0, 0x8] - lsls r1, 8 - ldrb r2, [r0, 0x9] - orrs r1, r2 - str r1, [r3, 0x10] - ldrb r0, [r0, 0xA] - str r0, [r3, 0x14] - ldr r1, _08063F28 @ =gSaveBlock1 - ldrb r0, [r1, 0x5] - lsls r0, 8 - ldrb r1, [r1, 0x4] - orrs r0, r1 - str r0, [r3, 0x18] - movs r0, 0x1 - str r0, [r3, 0x1C] - movs r0, 0x11 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08063F24: .4byte gUnknown_0202FF84 -_08063F28: .4byte gSaveBlock1 - thumb_func_end sub_8063EE0 - - thumb_func_start sub_8063F2C -sub_8063F2C: @ 8063F2C - push {lr} - ldr r3, _08063F70 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r1, [r0, r2] - str r1, [r3] - movs r2, 0x12 - ldrsh r1, [r0, r2] - str r1, [r3, 0x4] - ldrb r1, [r0, 0xB] - lsrs r1, 4 - str r1, [r3, 0x8] - movs r1, 0x2 - str r1, [r3, 0xC] - ldrb r1, [r0, 0x8] - lsls r1, 8 - ldrb r2, [r0, 0x9] - orrs r1, r2 - str r1, [r3, 0x10] - ldrb r0, [r0, 0xA] - str r0, [r3, 0x14] - ldr r1, _08063F74 @ =gSaveBlock1 - ldrb r0, [r1, 0x5] - lsls r0, 8 - ldrb r1, [r1, 0x4] - orrs r0, r1 - str r0, [r3, 0x18] - movs r0, 0 - str r0, [r3, 0x1C] - movs r0, 0x11 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08063F70: .4byte gUnknown_0202FF84 -_08063F74: .4byte gSaveBlock1 - thumb_func_end sub_8063F2C - - thumb_func_start GroundEffect_WaterReflection -GroundEffect_WaterReflection: @ 8063F78 - push {lr} - movs r2, 0 - bl SetUpReflection - pop {r0} - bx r0 - thumb_func_end GroundEffect_WaterReflection - - thumb_func_start GroundEffect_IceReflection -GroundEffect_IceReflection: @ 8063F84 - push {lr} - movs r2, 0x1 - bl SetUpReflection - pop {r0} - bx r0 - thumb_func_end GroundEffect_IceReflection - - thumb_func_start GroundEffect_FlowingWater -GroundEffect_FlowingWater: @ 8063F90 - push {lr} - adds r1, r0, 0 - movs r0, 0x22 - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_FlowingWater - - thumb_func_start sub_8063FA0 -sub_8063FA0: @ 8063FA0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x5] - bl GetFieldObjectGraphicsInfo - ldr r1, _08063FC8 @ =gUnknown_08376080 - ldrb r0, [r0, 0xD] - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0 - bl _call_via_r3 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063FC8: .4byte gUnknown_08376080 - thumb_func_end sub_8063FA0 - - thumb_func_start sub_8063FCC -sub_8063FCC: @ 8063FCC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x5] - bl GetFieldObjectGraphicsInfo - ldr r1, _08063FF4 @ =gUnknown_08376080 - ldrb r0, [r0, 0xD] - lsls r0, 2 - adds r0, r1 - ldr r3, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl _call_via_r3 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08063FF4: .4byte gUnknown_08376080 - thumb_func_end sub_8063FCC - - thumb_func_start nullsub_50 -nullsub_50: @ 8063FF8 - bx lr - thumb_func_end nullsub_50 - - thumb_func_start DoTracksGroundEffect_Footprints -DoTracksGroundEffect_Footprints: @ 8063FFC - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r4, r2, 24 - lsrs r4, 24 - ldr r1, _08064044 @ =gSandFootprints_FieldEffectData - mov r0, sp - movs r2, 0x4 - bl memcpy - ldr r1, _08064048 @ =gUnknown_0202FF84 - movs r2, 0x14 - ldrsh r0, [r5, r2] - str r0, [r1] - movs r2, 0x16 - ldrsh r0, [r5, r2] - str r0, [r1, 0x4] - movs r0, 0x95 - str r0, [r1, 0x8] - movs r0, 0x2 - str r0, [r1, 0xC] - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - str r0, [r1, 0x10] - lsls r4, 1 - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - bl FieldEffectStart - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08064044: .4byte gSandFootprints_FieldEffectData -_08064048: .4byte gUnknown_0202FF84 - thumb_func_end DoTracksGroundEffect_Footprints - - thumb_func_start DoTracksGroundEffect_BikeTireTracks -DoTracksGroundEffect_BikeTireTracks: @ 806404C - push {r4,lr} - adds r4, r0, 0 - ldr r1, [r4, 0x10] - ldr r0, [r4, 0x14] - cmp r1, r0 - beq _0806408E - ldr r2, _08064094 @ =gUnknown_0202FF84 - movs r1, 0x14 - ldrsh r0, [r4, r1] - str r0, [r2] - movs r1, 0x16 - ldrsh r0, [r4, r1] - str r0, [r2, 0x4] - movs r0, 0x95 - str r0, [r2, 0x8] - movs r0, 0x2 - str r0, [r2, 0xC] - ldr r3, _08064098 @ =gBikeTireTracks_Transitions - ldrb r1, [r4, 0x18] - lsls r1, 28 - lsrs r1, 28 - adds r0, r4, 0 - adds r0, 0x20 - ldrb r0, [r0] - lsls r0, 2 - subs r0, 0x5 - adds r1, r0 - adds r1, r3 - ldrb r0, [r1] - str r0, [r2, 0x10] - movs r0, 0x23 - bl FieldEffectStart -_0806408E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08064094: .4byte gUnknown_0202FF84 -_08064098: .4byte gBikeTireTracks_Transitions - thumb_func_end DoTracksGroundEffect_BikeTireTracks - - thumb_func_start GroundEffect_Ripple -GroundEffect_Ripple: @ 806409C - push {lr} - bl DoRippleFieldEffect - pop {r0} - bx r0 - thumb_func_end GroundEffect_Ripple - - thumb_func_start GroundEffect_StepOnPuddle -GroundEffect_StepOnPuddle: @ 80640A8 - push {lr} - adds r1, r0, 0 - movs r0, 0xF - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_StepOnPuddle - - thumb_func_start GroundEffect_SandPile -GroundEffect_SandPile: @ 80640B8 - push {lr} - adds r1, r0, 0 - movs r0, 0x27 - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_SandPile - - thumb_func_start GroundEffect_JumpOnTallGrass -GroundEffect_JumpOnTallGrass: @ 80640C8 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0806411C @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r0, [r5, r2] - str r0, [r1] - movs r4, 0x12 - ldrsh r0, [r5, r4] - str r0, [r1, 0x4] - ldrb r0, [r5, 0xB] - lsrs r0, 4 - str r0, [r1, 0x8] - movs r0, 0x2 - str r0, [r1, 0xC] - movs r0, 0xC - bl FieldEffectStart - ldrb r0, [r5, 0x8] - ldrb r1, [r5, 0x9] - ldrb r2, [r5, 0xA] - movs r7, 0x10 - ldrsh r3, [r5, r7] - movs r7, 0x12 - ldrsh r4, [r5, r7] - str r4, [sp] - bl sub_8126FF0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - bne _08064112 - adds r0, r5, 0 - adds r1, r6, 0 - bl GroundEffect_SpawnOnTallGrass -_08064112: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806411C: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpOnTallGrass - - thumb_func_start GroundEffect_JumpOnLongGrass -GroundEffect_JumpOnLongGrass: @ 8064120 - push {lr} - ldr r2, _08064144 @ =gUnknown_0202FF84 - movs r3, 0x10 - ldrsh r1, [r0, r3] - str r1, [r2] - movs r3, 0x12 - ldrsh r1, [r0, r3] - str r1, [r2, 0x4] - ldrb r0, [r0, 0xB] - lsrs r0, 4 - str r0, [r2, 0x8] - movs r0, 0x2 - str r0, [r2, 0xC] - movs r0, 0x12 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08064144: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpOnLongGrass - - thumb_func_start GroundEffect_JumpOnShallowWater -GroundEffect_JumpOnShallowWater: @ 8064148 - push {r4,lr} - ldr r3, _08064174 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r4, 0x12 - ldrsh r2, [r0, r4] - str r2, [r3, 0x4] - ldrb r0, [r0, 0xB] - lsrs r0, 4 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0x10 - bl FieldEffectStart - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08064174: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpOnShallowWater - - thumb_func_start GroundEffect_JumpOnWater -GroundEffect_JumpOnWater: @ 8064178 - push {r4,lr} - ldr r3, _080641A4 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r4, 0x12 - ldrsh r2, [r0, r4] - str r2, [r3, 0x4] - ldrb r0, [r0, 0xB] - lsrs r0, 4 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0xE - bl FieldEffectStart - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080641A4: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpOnWater - - thumb_func_start GroundEffect_JumpLandingDust -GroundEffect_JumpLandingDust: @ 80641A8 - push {r4,lr} - ldr r3, _080641D4 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r4, 0x12 - ldrsh r2, [r0, r4] - str r2, [r3, 0x4] - ldrb r0, [r0, 0xB] - lsrs r0, 4 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0xA - bl FieldEffectStart - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080641D4: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_JumpLandingDust - - thumb_func_start GroundEffect_ShortGrass -GroundEffect_ShortGrass: @ 80641D8 - push {lr} - adds r1, r0, 0 - movs r0, 0x29 - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_ShortGrass - - thumb_func_start GroundEffect_HotSprings -GroundEffect_HotSprings: @ 80641E8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2A - bl oe_exec_and_other_stuff - pop {r0} - bx r0 - thumb_func_end GroundEffect_HotSprings - - thumb_func_start GroundEffect_Seaweed -GroundEffect_Seaweed: @ 80641F8 - push {lr} - ldr r2, _08064214 @ =gUnknown_0202FF84 - movs r3, 0x10 - ldrsh r1, [r0, r3] - str r1, [r2] - movs r1, 0x12 - ldrsh r0, [r0, r1] - str r0, [r2, 0x4] - movs r0, 0x35 - bl FieldEffectStart - pop {r0} - bx r0 - .align 2, 0 -_08064214: .4byte gUnknown_0202FF84 - thumb_func_end GroundEffect_Seaweed - - thumb_func_start sub_8064218 -sub_8064218: @ 8064218 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - adds r6, r1, 0 - adds r5, r2, 0 - movs r4, 0 - ldr r0, _08064258 @ =gUnknown_083760A0 - mov r8, r0 -_0806422A: - movs r0, 0x1 - ands r0, r5 - cmp r0, 0 - beq _08064240 - lsls r0, r4, 2 - add r0, r8 - ldr r2, [r0] - adds r0, r7, 0 - adds r1, r6, 0 - bl _call_via_r2 -_08064240: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - lsrs r5, 1 - cmp r4, 0x13 - bls _0806422A - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08064258: .4byte gUnknown_083760A0 - thumb_func_end sub_8064218 - - thumb_func_start filters_out_some_ground_effects -filters_out_some_ground_effects: @ 806425C - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - ldrb r0, [r2] - lsls r0, 27 - cmp r0, 0 - bge _0806428A - ldrb r1, [r2, 0x2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - adds r1, 0x8 - ands r0, r1 - subs r1, 0x18 - ands r0, r1 - strb r0, [r2, 0x2] - ldr r0, [r3] - ldr r1, _08064290 @ =0xfff9f7bd - ands r0, r1 - str r0, [r3] -_0806428A: - pop {r0} - bx r0 - .align 2, 0 -_08064290: .4byte 0xfff9f7bd - thumb_func_end filters_out_some_ground_effects - - thumb_func_start FilterOutStepOnPuddleGroundEffectIfJumping -FilterOutStepOnPuddleGroundEffectIfJumping: @ 8064294 - push {lr} - adds r2, r1, 0 - ldrb r0, [r0] - lsls r0, 26 - cmp r0, 0 - bge _080642A8 - ldr r0, [r2] - ldr r1, _080642AC @ =0xfffffbff - ands r0, r1 - str r0, [r2] -_080642A8: - pop {r0} - bx r0 - .align 2, 0 -_080642AC: .4byte 0xfffffbff - thumb_func_end FilterOutStepOnPuddleGroundEffectIfJumping - - thumb_func_start DoGroundEffects_OnSpawn -DoGroundEffects_OnSpawn: @ 80642B0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - lsls r0, 29 - cmp r0, 0 - bge _080642F4 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - bl FieldObjectUpdateZCoordAndPriority - adds r0, r4, 0 - mov r1, sp - bl GetAllGroundEffectFlags_OnSpawn - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetSpriteOamTableForLongGrass - ldr r2, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8064218 - ldrb r1, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r4] -_080642F4: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end DoGroundEffects_OnSpawn - - thumb_func_start DoGroundEffects_OnBeginStep -DoGroundEffects_OnBeginStep: @ 80642FC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - lsls r0, 29 - cmp r0, 0 - bge _08064348 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - bl FieldObjectUpdateZCoordAndPriority - adds r0, r4, 0 - mov r1, sp - bl GetAllGroundEffectFlags_OnBeginStep - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetSpriteOamTableForLongGrass - adds r0, r4, 0 - mov r1, sp - bl filters_out_some_ground_effects - ldr r2, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8064218 - ldrb r1, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - movs r1, 0x11 - negs r1, r1 - ands r0, r1 - strb r0, [r4] -_08064348: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end DoGroundEffects_OnBeginStep - - thumb_func_start DoGroundEffects_OnFinishStep -DoGroundEffects_OnFinishStep: @ 8064350 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4] - lsls r0, 28 - cmp r0, 0 - bge _0806439C - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - bl FieldObjectUpdateZCoordAndPriority - adds r0, r4, 0 - mov r1, sp - bl GetAllGroundEffectFlags_OnFinishStep - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetSpriteOamTableForLongGrass - adds r0, r4, 0 - mov r1, sp - bl FilterOutStepOnPuddleGroundEffectIfJumping - ldr r2, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8064218 - ldrb r1, [r4] - movs r0, 0x9 - negs r0, r0 - ands r0, r1 - movs r1, 0x21 - negs r1, r1 - ands r0, r1 - strb r0, [r4] -_0806439C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end DoGroundEffects_OnFinishStep - .align 2, 0 @ Don't pad with nop. diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s new file mode 100644 index 000000000..fc08732b0 --- /dev/null +++ b/asm/field_player_avatar.s @@ -0,0 +1,4636 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_80587B4 +sub_80587B4: @ 80587B4 + 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, _080587D0 @ =gMapObjects + adds r0, r2 + ldr r2, _080587D4 @ =sub_80587D8 + bl meta_step + pop {r0} + bx r0 + .align 2, 0 +_080587D0: .4byte gMapObjects +_080587D4: .4byte sub_80587D8 + thumb_func_end sub_80587B4 + + thumb_func_start sub_80587D8 +sub_80587D8: @ 80587D8 + movs r0, 0 + bx lr + thumb_func_end sub_80587D8 + + thumb_func_start player_step +player_step: @ 80587DC + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r2, 16 + lsrs r6, r2, 16 + ldr r4, _0805884C @ =gPlayerAvatar + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08058850 @ =gMapObjects + adds r5, r0, r1 + adds r0, r5, 0 + bl sub_8059D60 + ldrb r0, [r4, 0x6] + cmp r0, 0 + bne _08058842 + adds r0, r7, 0 + adds r1, r6, 0 + bl sub_80E5B38 + adds r0, r5, 0 + mov r1, r8 + bl sub_8058854 + lsls r0, 24 + cmp r0, 0 + bne _08058842 + adds r0, r5, 0 + bl npc_clear_strange_bits + bl DoPlayerAvatarTransition + bl TryDoMetatileBehaviorForcedMovment + lsls r0, 24 + cmp r0, 0 + bne _08058842 + mov r0, r8 + adds r1, r7, 0 + adds r2, r6, 0 + bl MovePlayerAvatarUsingKeypadInput + bl PlayerAllowForcedMovementIfMovingSameDirection +_08058842: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805884C: .4byte gPlayerAvatar +_08058850: .4byte gMapObjects + thumb_func_end player_step + + thumb_func_start sub_8058854 +sub_8058854: @ 8058854 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r5, r1, 24 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _0805889E + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + bne _0805889E + adds r0, r4, 0 + bl FieldObjectGetSpecialAnim + lsls r0, 24 + movs r1, 0xE7 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x3 + bhi _0805889A + cmp r5, 0 + beq _0805889A + ldrb r0, [r4, 0x18] + lsrs r0, 4 + cmp r0, r5 + beq _0805889A + adds r0, r4, 0 + bl FieldObjectClearAnim + b _0805889E +_0805889A: + movs r0, 0x1 + b _080588A0 +_0805889E: + movs r0, 0 +_080588A0: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8058854 + + thumb_func_start npc_clear_strange_bits +npc_clear_strange_bits: @ 80588A8 + ldrb r2, [r0, 0x1] + movs r1, 0x11 + negs r1, r1 + ands r1, r2 + movs r2, 0x5 + negs r2, r2 + ands r1, r2 + adds r2, 0x2 + ands r1, r2 + strb r1, [r0, 0x1] + ldr r2, _080588C8 @ =gPlayerAvatar + ldrb r1, [r2] + movs r0, 0x7F + ands r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_080588C8: .4byte gPlayerAvatar + thumb_func_end npc_clear_strange_bits + + thumb_func_start MovePlayerAvatarUsingKeypadInput +MovePlayerAvatarUsingKeypadInput: @ 80588CC + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r0, _080588F0 @ =gPlayerAvatar + ldrb r1, [r0] + movs r0, 0x6 + ands r0, r1 + cmp r0, 0 + beq _080588F4 + adds r0, r3, 0 + adds r1, r4, 0 + bl MovePlayerOnBike + b _080588FC + .align 2, 0 +_080588F0: .4byte gPlayerAvatar +_080588F4: + adds r0, r3, 0 + adds r1, r2, 0 + bl MovePlayerNotOnBike +_080588FC: + pop {r4} + pop {r0} + bx r0 + thumb_func_end MovePlayerAvatarUsingKeypadInput + + thumb_func_start PlayerAllowForcedMovementIfMovingSameDirection +PlayerAllowForcedMovementIfMovingSameDirection: @ 8058904 + push {lr} + ldr r2, _0805891C @ =gPlayerAvatar + ldrb r0, [r2, 0x2] + cmp r0, 0x2 + bne _08058916 + ldrb r1, [r2] + movs r0, 0xDF + ands r0, r1 + strb r0, [r2] +_08058916: + pop {r0} + bx r0 + .align 2, 0 +_0805891C: .4byte gPlayerAvatar + thumb_func_end PlayerAllowForcedMovementIfMovingSameDirection + + thumb_func_start TryDoMetatileBehaviorForcedMovment +TryDoMetatileBehaviorForcedMovment: @ 8058920 + push {r4,lr} + ldr r4, _08058940 @ =gUnknown_0830FBA0 + bl GetForcedMovementByMetatileBehavior + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r0, [r0] + bl _call_via_r0 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08058940: .4byte gUnknown_0830FBA0 + thumb_func_end TryDoMetatileBehaviorForcedMovment + + thumb_func_start GetForcedMovementByMetatileBehavior +GetForcedMovementByMetatileBehavior: @ 8058944 + push {r4-r6,lr} + ldr r3, _08058980 @ =gPlayerAvatar + ldrb r1, [r3] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _08058996 + ldr r2, _08058984 @ =gMapObjects + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r5, [r0, 0x1E] + movs r4, 0 + ldr r6, _08058988 @ =gUnknown_0830FB58 +_08058964: + lsls r0, r4, 2 + adds r0, r6 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _0805898C + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r0, 24 + b _08058998 + .align 2, 0 +_08058980: .4byte gPlayerAvatar +_08058984: .4byte gMapObjects +_08058988: .4byte gUnknown_0830FB58 +_0805898C: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x11 + bls _08058964 +_08058996: + movs r0, 0 +_08058998: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end GetForcedMovementByMetatileBehavior + + thumb_func_start ForcedMovement_None +ForcedMovement_None: @ 80589A0 + push {r4,lr} + ldr r4, _080589E4 @ =gPlayerAvatar + ldrb r1, [r4] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080589DA + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080589E8 @ =gMapObjects + adds r0, r1 + ldrb r2, [r0, 0x1] + movs r1, 0x3 + negs r1, r1 + ands r1, r2 + movs r2, 0x8 + orrs r1, r2 + strb r1, [r0, 0x1] + ldrb r1, [r0, 0x18] + lsls r1, 28 + lsrs r1, 28 + bl FieldObjectSetDirection + ldrb r1, [r4] + movs r0, 0xBF + ands r0, r1 + strb r0, [r4] +_080589DA: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080589E4: .4byte gPlayerAvatar +_080589E8: .4byte gMapObjects + thumb_func_end ForcedMovement_None + + thumb_func_start DoForcedMovement +DoForcedMovement: @ 80589EC + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r1 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _08058A2C @ =gPlayerAvatar + adds r0, r5, 0 + bl CheckForPlayerAvatarCollision + lsls r0, 24 + lsrs r4, r0, 24 + adds r7, r4, 0 + ldrb r0, [r6] + movs r1, 0x40 + mov r10, r1 + movs r1, 0 + mov r8, r1 + mov r1, r10 + orrs r0, r1 + strb r0, [r6] + cmp r4, 0 + beq _08058A48 + bl ForcedMovement_None + cmp r4, 0x4 + bhi _08058A30 + movs r0, 0 + b _08058A54 + .align 2, 0 +_08058A2C: .4byte gPlayerAvatar +_08058A30: + cmp r7, 0x6 + bne _08058A3A + adds r0, r5, 0 + bl PlayerJumpLedge +_08058A3A: + ldrb r0, [r6] + mov r1, r10 + orrs r0, r1 + strb r0, [r6] + movs r0, 0x2 + strb r0, [r6, 0x2] + b _08058A52 +_08058A48: + movs r0, 0x2 + strb r0, [r6, 0x2] + adds r0, r5, 0 + bl _call_via_r9 +_08058A52: + movs r0, 0x1 +_08058A54: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end DoForcedMovement + + thumb_func_start DoForcedMovementInCurrentDirection +DoForcedMovementInCurrentDirection: @ 8058A64 + push {lr} + adds r1, r0, 0 + ldr r0, _08058A90 @ =gPlayerAvatar + ldrb r2, [r0, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _08058A94 @ =gMapObjects + adds r0, r2 + ldrb r2, [r0, 0x1] + movs r3, 0x4 + orrs r2, r3 + strb r2, [r0, 0x1] + ldrb r0, [r0, 0x18] + lsrs r0, 4 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058A90: .4byte gPlayerAvatar +_08058A94: .4byte gMapObjects + thumb_func_end DoForcedMovementInCurrentDirection + + thumb_func_start ForcedMovement_Slip +ForcedMovement_Slip: @ 8058A98 + push {lr} + ldr r0, _08058AA8 @ =sub_80593C4 + bl DoForcedMovementInCurrentDirection + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058AA8: .4byte sub_80593C4 + thumb_func_end ForcedMovement_Slip + + thumb_func_start sub_8058AAC +sub_8058AAC: @ 8058AAC + push {lr} + ldr r1, _08058AC0 @ =PlayerGoSpeed0 + movs r0, 0x1 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058AC0: .4byte PlayerGoSpeed0 + thumb_func_end sub_8058AAC + + thumb_func_start sub_8058AC4 +sub_8058AC4: @ 8058AC4 + push {lr} + ldr r1, _08058AD8 @ =PlayerGoSpeed0 + movs r0, 0x2 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058AD8: .4byte PlayerGoSpeed0 + thumb_func_end sub_8058AC4 + + thumb_func_start sub_8058ADC +sub_8058ADC: @ 8058ADC + push {lr} + ldr r1, _08058AF0 @ =PlayerGoSpeed0 + movs r0, 0x3 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058AF0: .4byte PlayerGoSpeed0 + thumb_func_end sub_8058ADC + + thumb_func_start sub_8058AF4 +sub_8058AF4: @ 8058AF4 + push {lr} + ldr r1, _08058B08 @ =PlayerGoSpeed0 + movs r0, 0x4 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058B08: .4byte PlayerGoSpeed0 + thumb_func_end sub_8058AF4 + + thumb_func_start sub_8058B0C +sub_8058B0C: @ 8058B0C + push {lr} + ldr r1, _08058B20 @ =npc_use_some_d2s + movs r0, 0x1 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058B20: .4byte npc_use_some_d2s + thumb_func_end sub_8058B0C + + thumb_func_start sub_8058B24 +sub_8058B24: @ 8058B24 + push {lr} + ldr r1, _08058B38 @ =npc_use_some_d2s + movs r0, 0x2 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058B38: .4byte npc_use_some_d2s + thumb_func_end sub_8058B24 + + thumb_func_start sub_8058B3C +sub_8058B3C: @ 8058B3C + push {lr} + ldr r1, _08058B50 @ =npc_use_some_d2s + movs r0, 0x3 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058B50: .4byte npc_use_some_d2s + thumb_func_end sub_8058B3C + + thumb_func_start sub_8058B54 +sub_8058B54: @ 8058B54 + push {lr} + ldr r1, _08058B68 @ =npc_use_some_d2s + movs r0, 0x4 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058B68: .4byte npc_use_some_d2s + thumb_func_end sub_8058B54 + + thumb_func_start ForcedMovement_Slide +ForcedMovement_Slide: @ 8058B6C + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08058B9C @ =gPlayerAvatar + ldrb r3, [r2, 0x5] + lsls r2, r3, 3 + adds r2, r3 + lsls r2, 2 + ldr r3, _08058BA0 @ =gMapObjects + adds r2, r3 + ldrb r3, [r2, 0x1] + movs r4, 0x4 + orrs r3, r4 + movs r4, 0x2 + orrs r3, r4 + strb r3, [r2, 0x1] + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08058B9C: .4byte gPlayerAvatar +_08058BA0: .4byte gMapObjects + thumb_func_end ForcedMovement_Slide + + thumb_func_start ForcedMovement_SlideSouth +ForcedMovement_SlideSouth: @ 8058BA4 + push {lr} + ldr r1, _08058BB8 @ =sub_80593C4 + movs r0, 0x1 + bl ForcedMovement_Slide + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058BB8: .4byte sub_80593C4 + thumb_func_end ForcedMovement_SlideSouth + + thumb_func_start ForcedMovement_SlideNorth +ForcedMovement_SlideNorth: @ 8058BBC + push {lr} + ldr r1, _08058BD0 @ =sub_80593C4 + movs r0, 0x2 + bl ForcedMovement_Slide + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058BD0: .4byte sub_80593C4 + thumb_func_end ForcedMovement_SlideNorth + + thumb_func_start ForcedMovement_SlideWest +ForcedMovement_SlideWest: @ 8058BD4 + push {lr} + ldr r1, _08058BE8 @ =sub_80593C4 + movs r0, 0x3 + bl ForcedMovement_Slide + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058BE8: .4byte sub_80593C4 + thumb_func_end ForcedMovement_SlideWest + + thumb_func_start ForcedMovement_SlideEast +ForcedMovement_SlideEast: @ 8058BEC + push {lr} + ldr r1, _08058C00 @ =sub_80593C4 + movs r0, 0x4 + bl ForcedMovement_Slide + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08058C00: .4byte sub_80593C4 + thumb_func_end ForcedMovement_SlideEast + + thumb_func_start sub_8058C04 +sub_8058C04: @ 8058C04 + push {lr} + bl sub_8059F94 + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8058C04 + + thumb_func_start sub_8058C10 +sub_8058C10: @ 8058C10 + push {lr} + bl sub_805A06C + movs r0, 0x1 + pop {r1} + bx r1 + thumb_func_end sub_8058C10 + + thumb_func_start ForcedMovement_MuddySlope +ForcedMovement_MuddySlope: @ 8058C1C + push {r4,lr} + ldr r0, _08058C60 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _08058C64 @ =gMapObjects + adds r4, r0, r1 + ldrb r1, [r4, 0x18] + movs r0, 0xF0 + ands r0, r1 + cmp r0, 0x20 + bne _08058C42 + bl sub_80E6034 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3 + bgt _08058C6C +_08058C42: + movs r0, 0 + bl sub_80E6010 + ldrb r0, [r4, 0x1] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, 0x1] + ldr r1, _08058C68 @ =sub_80593C4 + movs r0, 0x1 + bl DoForcedMovement + lsls r0, 24 + lsrs r0, 24 + b _08058C6E + .align 2, 0 +_08058C60: .4byte gPlayerAvatar +_08058C64: .4byte gMapObjects +_08058C68: .4byte sub_80593C4 +_08058C6C: + movs r0, 0 +_08058C6E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end ForcedMovement_MuddySlope + + thumb_func_start MovePlayerNotOnBike +MovePlayerNotOnBike: @ 8058C74 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 16 + lsrs r5, 16 + ldr r6, _08058CA0 @ =gUnknown_0830FBEC + adds r0, r4, 0 + bl CheckMovementInputNotOnBike + lsls r0, 24 + lsrs r0, 22 + adds r0, r6 + ldr r2, [r0] + adds r0, r4, 0 + adds r1, r5, 0 + bl _call_via_r2 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08058CA0: .4byte gUnknown_0830FBEC + thumb_func_end MovePlayerNotOnBike + + thumb_func_start CheckMovementInputNotOnBike +CheckMovementInputNotOnBike: @ 8058CA4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0 + bne _08058CBC + ldr r0, _08058CB8 @ =gPlayerAvatar + strb r4, [r0, 0x2] + movs r0, 0 + b _08058CDE + .align 2, 0 +_08058CB8: .4byte gPlayerAvatar +_08058CBC: + bl player_get_direction_upper_nybble + lsls r0, 24 + lsrs r0, 24 + cmp r4, r0 + beq _08058CD8 + ldr r1, _08058CD4 @ =gPlayerAvatar + ldrb r0, [r1, 0x2] + cmp r0, 0x2 + beq _08058CD8 + movs r0, 0x1 + b _08058CDC + .align 2, 0 +_08058CD4: .4byte gPlayerAvatar +_08058CD8: + ldr r1, _08058CE4 @ =gPlayerAvatar + movs r0, 0x2 +_08058CDC: + strb r0, [r1, 0x2] +_08058CDE: + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08058CE4: .4byte gPlayerAvatar + thumb_func_end CheckMovementInputNotOnBike + + thumb_func_start PlayerNotOnBikeNotMoving +PlayerNotOnBikeNotMoving: @ 8058CE8 + push {lr} + bl player_get_direction_lower_nybble + lsls r0, 24 + lsrs r0, 24 + bl PlayerFaceDirection + pop {r0} + bx r0 + thumb_func_end PlayerNotOnBikeNotMoving + + thumb_func_start PlayerNotOnBikeTurningInPlace +PlayerNotOnBikeTurningInPlace: @ 8058CFC + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl PlayerTurnInPlace + pop {r0} + bx r0 + thumb_func_end PlayerNotOnBikeTurningInPlace + + thumb_func_start sub_8058D0C +sub_8058D0C: @ 8058D0C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + adds r0, r5, 0 + bl CheckForPlayerAvatarCollision + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0 + beq _08058D44 + cmp r0, 0x6 + bne _08058D32 + adds r0, r5, 0 + bl PlayerJumpLedge + b _08058DAE +_08058D32: + subs r0, r1, 0x5 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08058DAE + adds r0, r5, 0 + bl PlayerNotOnBikeCollide + b _08058DAE +_08058D44: + ldr r6, _08058D58 @ =gPlayerAvatar + ldrb r1, [r6] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08058D5C + adds r0, r5, 0 + bl sub_80593C4 + b _08058DAE + .align 2, 0 +_08058D58: .4byte gPlayerAvatar +_08058D5C: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _08058DA8 + movs r0, 0x2 + ands r4, r0 + cmp r4, 0 + beq _08058DA8 + movs r0, 0x86 + lsls r0, 4 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _08058DA8 + ldr r2, _08058DA4 @ =gMapObjects + ldrb r1, [r6, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1E] + bl sub_80E5DEC + lsls r0, 24 + cmp r0, 0 + bne _08058DA8 + adds r0, r5, 0 + bl sub_805940C + ldrb r1, [r6] + movs r0, 0x80 + orrs r0, r1 + strb r0, [r6] + b _08058DAE + .align 2, 0 +_08058DA4: .4byte gMapObjects +_08058DA8: + adds r0, r5, 0 + bl PlayerGoSpeed0 +_08058DAE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8058D0C + + thumb_func_start CheckForPlayerAvatarCollision +CheckForPlayerAvatarCollision: @ 8058DB4 + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + ldr r0, _08058E18 @ =gPlayerAvatar + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08058E1C @ =gMapObjects + adds r4, r0 + ldrh r1, [r4, 0x10] + add r0, sp, 0x4 + strh r1, [r0] + ldrh r0, [r4, 0x12] + mov r5, sp + adds r5, 0x6 + strh r0, [r5] + adds r0, r6, 0 + add r1, sp, 0x4 + adds r2, r5, 0 + bl MoveCoords + add r0, sp, 0x4 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + add r1, sp, 0x4 + movs r3, 0 + ldrsh r1, [r1, r3] + movs r3, 0 + ldrsh r2, [r5, r3] + str r0, [sp] + adds r0, r4, 0 + adds r3, r6, 0 + bl CheckForFieldObjectCollision + lsls r0, 24 + lsrs r0, 24 + add sp, 0x8 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08058E18: .4byte gPlayerAvatar +_08058E1C: .4byte gMapObjects + thumb_func_end CheckForPlayerAvatarCollision + + thumb_func_start CheckForFieldObjectCollision +CheckForFieldObjectCollision: @ 8058E20 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + ldr r4, [sp, 0x24] + lsls r1, 16 + lsls r2, 16 + lsls r3, 24 + lsrs r6, r3, 24 + lsls r4, 24 + lsrs r4, 24 + mov r10, r4 + lsrs r7, r1, 16 + asrs r5, r1, 16 + lsrs r1, r2, 16 + mov r9, r1 + asrs r4, r2, 16 + adds r1, r5, 0 + adds r2, r4, 0 + adds r3, r6, 0 + bl npc_block_way + lsls r0, 24 + lsrs r0, 24 + mov r1, sp + strb r0, [r1] + cmp r0, 0x3 + bne _08058E70 + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r6, 0 + bl sub_8058EF0 + lsls r0, 24 + cmp r0, 0 + beq _08058E70 + movs r0, 0x5 + b _08058EDE +_08058E70: + lsls r5, r7, 16 + asrs r0, r5, 16 + mov r8, r0 + mov r1, r9 + lsls r4, r1, 16 + asrs r7, r4, 16 + adds r1, r7, 0 + adds r2, r6, 0 + bl ShouldJumpLedge + lsls r0, 24 + cmp r0, 0 + beq _08058E94 + movs r0, 0x2B + bl sav12_xor_increment + movs r0, 0x6 + b _08058EDE +_08058E94: + mov r0, sp + ldrb r0, [r0] + cmp r0, 0x4 + bne _08058EB0 + mov r0, r8 + adds r1, r7, 0 + adds r2, r6, 0 + bl sub_8058F6C + lsls r0, 24 + cmp r0, 0 + beq _08058EB0 + movs r0, 0x7 + b _08058EDE +_08058EB0: + mov r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _08058EDA + asrs r5, 16 + asrs r4, 16 + adds r0, r6, 0 + adds r1, r5, 0 + adds r2, r4, 0 + bl CheckForRotatingGatePuzzleCollision + cmp r0, 0 + beq _08058ECE + movs r0, 0x8 + b _08058EDE +_08058ECE: + adds r0, r5, 0 + adds r1, r4, 0 + mov r2, r10 + mov r3, sp + bl check_acro_bike_metatile +_08058EDA: + mov r0, sp + ldrb r0, [r0] +_08058EDE: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CheckForFieldObjectCollision + + thumb_func_start sub_8058EF0 +sub_8058EF0: @ 8058EF0 + push {r4-r6,lr} + lsls r0, 16 + lsrs r3, r0, 16 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r0, _08058F3C @ =gPlayerAvatar + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08058F40 + lsls r5, r3, 16 + asrs r0, r5, 16 + lsls r4, 16 + asrs r1, r4, 16 + bl MapGridGetZCoordAt + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _08058F40 + lsrs r0, r5, 16 + lsrs r1, r4, 16 + movs r2, 0x3 + bl GetFieldObjectIdByXYZ + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + bne _08058F40 + adds r0, r6, 0 + bl sub_805A20C + movs r0, 0x1 + b _08058F42 + .align 2, 0 +_08058F3C: .4byte gPlayerAvatar +_08058F40: + movs r0, 0 +_08058F42: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8058EF0 + + thumb_func_start ShouldJumpLedge +ShouldJumpLedge: @ 8058F48 + push {lr} + lsls r2, 24 + lsrs r2, 24 + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + bl GetLedgeJumpDirection + lsls r0, 24 + cmp r0, 0 + bne _08058F64 + movs r0, 0 + b _08058F66 +_08058F64: + movs r0, 0x1 +_08058F66: + pop {r1} + bx r1 + thumb_func_end ShouldJumpLedge + + thumb_func_start sub_8058F6C +sub_8058F6C: @ 8058F6C + push {r4-r7,lr} + sub sp, 0x4 + mov r3, sp + strh r0, [r3] + mov r5, sp + adds r5, 0x2 + strh r1, [r5] + lsls r2, 24 + lsrs r7, r2, 24 + ldr r0, _08059004 @ =0x00000829 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _0805900C + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl GetFieldObjectIdByXY + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0x10 + beq _0805900C + ldr r0, _08059008 @ =gMapObjects + lsls r1, r6, 3 + adds r1, r6 + lsls r1, 2 + adds r4, r1, r0 + ldrb r0, [r4, 0x5] + cmp r0, 0x57 + bne _0805900C + ldrh r1, [r4, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r4, 0x12] + strh r0, [r5] + adds r0, r7, 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] + adds r0, r4, 0 + adds r3, r7, 0 + bl npc_block_way + lsls r0, 24 + cmp r0, 0 + bne _0805900C + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl sub_8056F08 + lsls r0, 24 + cmp r0, 0 + bne _0805900C + adds r0, r6, 0 + adds r1, r7, 0 + bl task_add_bump_boulder + movs r0, 0x1 + b _0805900E + .align 2, 0 +_08059004: .4byte 0x00000829 +_08059008: .4byte gMapObjects +_0805900C: + movs r0, 0 +_0805900E: + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8058F6C + + thumb_func_start check_acro_bike_metatile +check_acro_bike_metatile: @ 8059018 + push {r4-r7,lr} + adds r6, r3, 0 + lsls r2, 24 + lsrs r5, r2, 24 + movs r4, 0 + ldr r7, _08059040 @ =gUnknown_0830FBF8 +_08059024: + lsls r0, r4, 2 + adds r0, r7 + ldr r1, [r0] + adds r0, r5, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _08059048 + ldr r0, _08059044 @ =gUnknown_0830FC0C + adds r0, r4, r0 + ldrb r0, [r0] + strb r0, [r6] + b _08059052 + .align 2, 0 +_08059040: .4byte gUnknown_0830FBF8 +_08059044: .4byte gUnknown_0830FC0C +_08059048: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x4 + bls _08059024 +_08059052: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end check_acro_bike_metatile + + thumb_func_start SetPlayerAvatarTransitionFlags +SetPlayerAvatarTransitionFlags: @ 8059058 + push {lr} + lsls r0, 16 + lsrs r0, 16 + ldr r2, _08059070 @ =gPlayerAvatar + ldrb r1, [r2, 0x1] + orrs r0, r1 + strb r0, [r2, 0x1] + bl DoPlayerAvatarTransition + pop {r0} + bx r0 + .align 2, 0 +_08059070: .4byte gPlayerAvatar + thumb_func_end SetPlayerAvatarTransitionFlags + + thumb_func_start DoPlayerAvatarTransition +DoPlayerAvatarTransition: @ 8059074 + push {r4,r5,lr} + ldr r0, _080590BC @ =gPlayerAvatar + ldrb r4, [r0, 0x1] + cmp r4, 0 + beq _080590B4 + movs r5, 0 +_08059080: + movs r0, 0x1 + ands r0, r4 + cmp r0, 0 + beq _080590A2 + ldr r0, _080590C0 @ =gUnknown_0830FC14 + lsls r2, r5, 2 + adds r2, r0 + ldr r0, _080590BC @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080590C4 @ =gMapObjects + adds r0, r1 + ldr r1, [r2] + bl _call_via_r1 +_080590A2: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + lsrs r4, 1 + cmp r5, 0x7 + bls _08059080 + ldr r1, _080590BC @ =gPlayerAvatar + movs r0, 0 + strb r0, [r1, 0x1] +_080590B4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080590BC: .4byte gPlayerAvatar +_080590C0: .4byte gUnknown_0830FC14 +_080590C4: .4byte gMapObjects + thumb_func_end DoPlayerAvatarTransition + + thumb_func_start nullsub_49 +nullsub_49: @ 80590C8 + bx lr + thumb_func_end nullsub_49 + + thumb_func_start PlayerAvatarTransition_Normal +PlayerAvatarTransition_Normal: @ 80590CC + push {r4,lr} + adds r4, r0, 0 + movs r0, 0 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl FieldObjectTurn + movs r0, 0x1 + bl SetPlayerAvatarStateMask + pop {r4} + pop {r0} + bx r0 + thumb_func_end PlayerAvatarTransition_Normal + + thumb_func_start PlayerAvatarTransition_MachBike +PlayerAvatarTransition_MachBike: @ 80590F8 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x1 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl FieldObjectTurn + movs r0, 0x2 + bl SetPlayerAvatarStateMask + movs r0, 0 + movs r1, 0 + bl sub_80E5FCC + pop {r4} + pop {r0} + bx r0 + thumb_func_end PlayerAvatarTransition_MachBike + + thumb_func_start PlayerAvatarTransition_AcroBike +PlayerAvatarTransition_AcroBike: @ 805912C + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x2 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl FieldObjectTurn + movs r0, 0x4 + bl SetPlayerAvatarStateMask + movs r0, 0 + movs r1, 0 + bl sub_80E5FCC + bl sub_80E6084 + pop {r4} + pop {r0} + bx r0 + thumb_func_end PlayerAvatarTransition_AcroBike + + thumb_func_start PlayerAvatarTransition_Surfing +PlayerAvatarTransition_Surfing: @ 8059164 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x3 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl FieldObjectTurn + movs r0, 0x8 + bl SetPlayerAvatarStateMask + ldr r1, _080591B8 @ =gUnknown_0202FF84 + movs r2, 0x10 + ldrsh r0, [r4, r2] + str r0, [r1] + movs r2, 0x12 + ldrsh r0, [r4, r2] + str r0, [r1, 0x4] + ldr r0, _080591BC @ =gPlayerAvatar + ldrb r0, [r0, 0x5] + str r0, [r1, 0x8] + movs r0, 0x8 + bl FieldEffectStart + lsls r0, 24 + lsrs r0, 24 + strb r0, [r4, 0x1A] + movs r1, 0x1 + bl sub_8127ED0 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080591B8: .4byte gUnknown_0202FF84 +_080591BC: .4byte gPlayerAvatar + thumb_func_end PlayerAvatarTransition_Surfing + + thumb_func_start PlayerAvatarTransition_Underwater +PlayerAvatarTransition_Underwater: @ 80591C0 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x4 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl FieldObjectTurn + movs r0, 0x10 + bl SetPlayerAvatarStateMask + ldrb r0, [r4, 0x4] + bl sub_8128124 + strb r0, [r4, 0x1A] + pop {r4} + pop {r0} + bx r0 + thumb_func_end PlayerAvatarTransition_Underwater + + thumb_func_start sub_80591F4 +sub_80591F4: @ 80591F4 + ldr r2, _08059200 @ =gPlayerAvatar + ldrb r1, [r2] + movs r0, 0x20 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 +_08059200: .4byte gPlayerAvatar + thumb_func_end sub_80591F4 + + thumb_func_start sub_8059204 +sub_8059204: @ 8059204 + push {r4,lr} + ldr r4, _08059230 @ =gPlayerAvatar + movs r0, 0 + strb r0, [r4, 0x3] + bl PlayerIsAnimActive + lsls r0, 24 + cmp r0, 0 + beq _08059242 + bl PlayerCheckIfAnimFinishedOrInactive + lsls r0, 24 + cmp r0, 0 + bne _08059234 + bl player_is_anim_in_certain_ranges + lsls r0, 24 + cmp r0, 0 + bne _08059242 + movs r0, 0x1 + b _08059240 + .align 2, 0 +_08059230: .4byte gPlayerAvatar +_08059234: + bl sub_80592A4 + lsls r0, 24 + cmp r0, 0 + bne _08059242 + movs r0, 0x2 +_08059240: + strb r0, [r4, 0x3] +_08059242: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8059204 + + thumb_func_start player_is_anim_in_certain_ranges +player_is_anim_in_certain_ranges: @ 8059248 + push {lr} + ldr r2, _08059294 @ =gMapObjects + ldr r0, _08059298 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1C] + cmp r1, 0x3 + bls _0805928E + adds r0, r1, 0 + subs r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + bls _0805928E + adds r0, r1, 0 + subs r0, 0x19 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + bls _0805928E + adds r0, r1, 0 + subs r0, 0x62 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB + bls _0805928E + adds r0, r1, 0 + subs r0, 0x7A + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _0805929C +_0805928E: + movs r0, 0x1 + b _0805929E + .align 2, 0 +_08059294: .4byte gMapObjects +_08059298: .4byte gPlayerAvatar +_0805929C: + movs r0, 0 +_0805929E: + pop {r1} + bx r1 + thumb_func_end player_is_anim_in_certain_ranges + + thumb_func_start sub_80592A4 +sub_80592A4: @ 80592A4 + push {lr} + bl player_is_anim_in_certain_ranges + lsls r0, 24 + cmp r0, 0 + beq _080592C0 + ldr r0, _080592BC @ =gPlayerAvatar + ldrb r0, [r0, 0x2] + cmp r0, 0x1 + beq _080592C0 + movs r0, 0x1 + b _080592C2 + .align 2, 0 +_080592BC: .4byte gPlayerAvatar +_080592C0: + movs r0, 0 +_080592C2: + pop {r1} + bx r1 + thumb_func_end sub_80592A4 + + thumb_func_start PlayerIsAnimActive +PlayerIsAnimActive: @ 80592C8 + push {lr} + ldr r0, _080592E4 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080592E8 @ =gMapObjects + adds r0, r1 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_080592E4: .4byte gPlayerAvatar +_080592E8: .4byte gMapObjects + thumb_func_end PlayerIsAnimActive + + thumb_func_start PlayerCheckIfAnimFinishedOrInactive +PlayerCheckIfAnimFinishedOrInactive: @ 80592EC + push {lr} + ldr r0, _08059308 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805930C @ =gMapObjects + adds r0, r1 + bl FieldObjectCheckIfSpecialAnimFinishedOrInactive + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08059308: .4byte gPlayerAvatar +_0805930C: .4byte gMapObjects + thumb_func_end PlayerCheckIfAnimFinishedOrInactive + + thumb_func_start player_set_x22 +player_set_x22: @ 8059310 + ldr r3, _08059324 @ =gMapObjects + ldr r1, _08059328 @ =gPlayerAvatar + ldrb r2, [r1, 0x5] + lsls r1, r2, 3 + adds r1, r2 + lsls r1, 2 + adds r1, r3 + adds r1, 0x22 + strb r0, [r1] + bx lr + .align 2, 0 +_08059324: .4byte gMapObjects +_08059328: .4byte gPlayerAvatar + thumb_func_end player_set_x22 + + thumb_func_start player_get_x22 +player_get_x22: @ 805932C + ldr r2, _08059340 @ =gMapObjects + ldr r0, _08059344 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x22 + ldrb r0, [r0] + bx lr + .align 2, 0 +_08059340: .4byte gMapObjects +_08059344: .4byte gPlayerAvatar + thumb_func_end player_get_x22 + + thumb_func_start sub_8059348 +sub_8059348: @ 8059348 + push {lr} + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08059368 @ =gPlayerAvatar + ldrb r2, [r0, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r2, _0805936C @ =gMapObjects + adds r0, r2 + bl FieldObjectForceSetSpecialAnim + pop {r0} + bx r0 + .align 2, 0 +_08059368: .4byte gPlayerAvatar +_0805936C: .4byte gMapObjects + thumb_func_end sub_8059348 + + thumb_func_start player_npc_set_state_and_x22_etc +player_npc_set_state_and_x22_etc: @ 8059370 + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r4, r1, 24 + bl PlayerIsAnimActive + lsls r0, 24 + cmp r0, 0 + bne _0805939E + adds r0, r4, 0 + bl player_set_x22 + ldr r0, _080593A4 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080593A8 @ =gMapObjects + adds r0, r1 + adds r1, r5, 0 + bl FieldObjectSetSpecialAnim +_0805939E: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080593A4: .4byte gPlayerAvatar +_080593A8: .4byte gMapObjects + thumb_func_end player_npc_set_state_and_x22_etc + + thumb_func_start PlayerGoSpeed0 +PlayerGoSpeed0: @ 80593AC + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetGoSpeed0AnimId + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end PlayerGoSpeed0 + + thumb_func_start sub_80593C4 +sub_80593C4: @ 80593C4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8060744 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_80593C4 + + thumb_func_start npc_use_some_d2s +npc_use_some_d2s: @ 80593DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl d2s_08064034 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end npc_use_some_d2s + + thumb_func_start sub_80593F4 +sub_80593F4: @ 80593F4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_806079C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_80593F4 + + thumb_func_start sub_805940C +sub_805940C: @ 805940C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80607F4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_805940C + + thumb_func_start PlayerOnBikeCollide +PlayerOnBikeCollide: @ 8059424 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl PlayCollisionSoundIfNotFacingWarp + adds r0, r4, 0 + bl GetStepInPlaceDelay16AnimId + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r4} + pop {r0} + bx r0 + thumb_func_end PlayerOnBikeCollide + + thumb_func_start PlayerNotOnBikeCollide +PlayerNotOnBikeCollide: @ 8059448 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl PlayCollisionSoundIfNotFacingWarp + adds r0, r4, 0 + bl GetStepInPlaceDelay32AnimId + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r4} + pop {r0} + bx r0 + thumb_func_end PlayerNotOnBikeCollide + + thumb_func_start PlayerFaceDirection +PlayerFaceDirection: @ 805946C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetFaceDirectionAnimId + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end PlayerFaceDirection + + thumb_func_start PlayerTurnInPlace +PlayerTurnInPlace: @ 8059484 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl GetStepInPlaceDelay8AnimId + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end PlayerTurnInPlace + + thumb_func_start PlayerJumpLedge +PlayerJumpLedge: @ 805949C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0xA + bl PlaySE + adds r0, r4, 0 + bl GetJumpLedgeAnimId + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x8 + bl player_npc_set_state_and_x22_etc + pop {r4} + pop {r0} + bx r0 + thumb_func_end PlayerJumpLedge + + thumb_func_start sub_80594C0 +sub_80594C0: @ 80594C0 + push {r4,lr} + ldr r4, _080594FC @ =gPlayerAvatar + ldrb r0, [r4, 0x3] + cmp r0, 0x2 + beq _080594CE + cmp r0, 0 + bne _080594F6 +_080594CE: + bl player_should_look_direction_be_enforced_upon_movement + lsls r0, 24 + cmp r0, 0 + beq _080594F6 + ldr r2, _08059500 @ =gMapObjects + ldrb r1, [r4, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + lsls r0, 24 + lsrs r0, 24 + bl sub_8059348 +_080594F6: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080594FC: .4byte gPlayerAvatar +_08059500: .4byte gMapObjects + thumb_func_end sub_80594C0 + + thumb_func_start sub_8059504 +sub_8059504: @ 8059504 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_80609D8 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_8059504 + + thumb_func_start sub_805951C +sub_805951C: @ 805951C + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8060A04 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_805951C + + thumb_func_start sub_8059534 +sub_8059534: @ 8059534 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8060A30 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_8059534 + + thumb_func_start sub_805954C +sub_805954C: @ 805954C + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x22 + bl PlaySE + adds r0, r4, 0 + bl sub_8060A5C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl player_npc_set_state_and_x22_etc + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_805954C + + thumb_func_start sub_8059570 +sub_8059570: @ 8059570 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x22 + bl PlaySE + adds r0, r4, 0 + bl sub_8060A88 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8059570 + + thumb_func_start sub_8059594 +sub_8059594: @ 8059594 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x22 + bl PlaySE + adds r0, r4, 0 + bl sub_8060AB4 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x8 + bl player_npc_set_state_and_x22_etc + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8059594 + + thumb_func_start sub_80595B8 +sub_80595B8: @ 80595B8 + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x22 + bl PlaySE + adds r0, r4, 0 + bl sub_8060878 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x1 + bl player_npc_set_state_and_x22_etc + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80595B8 + + thumb_func_start sub_80595DC +sub_80595DC: @ 80595DC + push {r4,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + movs r0, 0x7 + bl PlaySE + adds r0, r4, 0 + bl sub_8060AE0 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80595DC + + thumb_func_start sub_8059600 +sub_8059600: @ 8059600 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8060B0C + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_8059600 + + thumb_func_start sub_8059618 +sub_8059618: @ 8059618 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8060B38 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_8059618 + + thumb_func_start sub_8059630 +sub_8059630: @ 8059630 + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl sub_8060B64 + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x2 + bl player_npc_set_state_and_x22_etc + pop {r0} + bx r0 + thumb_func_end sub_8059630 + + thumb_func_start PlayCollisionSoundIfNotFacingWarp +PlayCollisionSoundIfNotFacingWarp: @ 8059648 + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r2, _080596B8 @ =gMapObjects + ldr r0, _080596BC @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1E] + ldr r2, _080596C0 @ =gUnknown_0830FC34 + subs r1, r4, 0x1 + lsls r1, 2 + adds r1, r2 + ldr r1, [r1] + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _080596B0 + cmp r4, 0x2 + bne _080596AA + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + movs r0, 0x2 + mov r1, sp + adds r2, r4, 0 + bl MoveCoords + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl is_tile_x69_2_warp_door + lsls r0, 24 + cmp r0, 0 + bne _080596B0 +_080596AA: + movs r0, 0x7 + bl PlaySE +_080596B0: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080596B8: .4byte gMapObjects +_080596BC: .4byte gPlayerAvatar +_080596C0: .4byte gUnknown_0830FC34 + thumb_func_end PlayCollisionSoundIfNotFacingWarp + + thumb_func_start GetXYCoordsOneStepInFrontOfPlayer +GetXYCoordsOneStepInFrontOfPlayer: @ 80596C4 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r3, _08059700 @ =gMapObjects + ldr r2, _08059704 @ =gPlayerAvatar + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x10] + strh r0, [r4] + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrh r0, [r0, 0x12] + strh r0, [r5] + bl player_get_direction_lower_nybble + lsls r0, 24 + lsrs r0, 24 + adds r1, r4, 0 + adds r2, r5, 0 + bl MoveCoords + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08059700: .4byte gMapObjects +_08059704: .4byte gPlayerAvatar + thumb_func_end GetXYCoordsOneStepInFrontOfPlayer + + thumb_func_start PlayerGetDestCoords +PlayerGetDestCoords: @ 8059708 + push {r4,r5,lr} + ldr r5, _08059730 @ =gMapObjects + ldr r4, _08059734 @ =gPlayerAvatar + ldrb r3, [r4, 0x5] + lsls r2, r3, 3 + adds r2, r3 + lsls r2, 2 + adds r2, r5 + ldrh r2, [r2, 0x10] + strh r2, [r0] + ldrb r2, [r4, 0x5] + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + adds r0, r5 + ldrh r0, [r0, 0x12] + strh r0, [r1] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08059730: .4byte gMapObjects +_08059734: .4byte gPlayerAvatar + thumb_func_end PlayerGetDestCoords + + thumb_func_start player_get_direction_lower_nybble +player_get_direction_lower_nybble: @ 8059738 + ldr r2, _08059750 @ =gMapObjects + ldr r0, _08059754 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsls r0, 28 + lsrs r0, 28 + bx lr + .align 2, 0 +_08059750: .4byte gMapObjects +_08059754: .4byte gPlayerAvatar + thumb_func_end player_get_direction_lower_nybble + + thumb_func_start player_get_direction_upper_nybble +player_get_direction_upper_nybble: @ 8059758 + ldr r2, _0805976C @ =gMapObjects + ldr r0, _08059770 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x18] + lsrs r0, 4 + bx lr + .align 2, 0 +_0805976C: .4byte gMapObjects +_08059770: .4byte gPlayerAvatar + thumb_func_end player_get_direction_upper_nybble + + thumb_func_start PlayerGetZCoord +PlayerGetZCoord: @ 8059774 + ldr r2, _08059788 @ =gMapObjects + ldr r0, _0805978C @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0xB] + lsrs r0, 4 + bx lr + .align 2, 0 +_08059788: .4byte gMapObjects +_0805978C: .4byte gPlayerAvatar + thumb_func_end PlayerGetZCoord + + thumb_func_start unref_sub_8059790 +unref_sub_8059790: @ 8059790 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _080597B8 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _080597BC @ =gMapObjects + adds r0, r1 + lsls r3, 16 + asrs r3, 16 + lsls r2, 16 + asrs r2, 16 + adds r1, r3, 0 + bl sub_805C058 + pop {r0} + bx r0 + .align 2, 0 +_080597B8: .4byte gPlayerAvatar +_080597BC: .4byte gMapObjects + thumb_func_end unref_sub_8059790 + + thumb_func_start TestPlayerAvatarFlags +TestPlayerAvatarFlags: @ 80597C0 + ldr r1, _080597CC @ =gPlayerAvatar + ldrb r1, [r1] + ands r1, r0 + adds r0, r1, 0 + bx lr + .align 2, 0 +_080597CC: .4byte gPlayerAvatar + thumb_func_end TestPlayerAvatarFlags + + thumb_func_start sub_80597D0 +sub_80597D0: @ 80597D0 + ldr r0, _080597D8 @ =gPlayerAvatar + ldrb r0, [r0] + bx lr + .align 2, 0 +_080597D8: .4byte gPlayerAvatar + thumb_func_end sub_80597D0 + + thumb_func_start GetPlayerAvatarObjectId +GetPlayerAvatarObjectId: @ 80597DC + ldr r0, _080597E4 @ =gPlayerAvatar + ldrb r0, [r0, 0x4] + bx lr + .align 2, 0 +_080597E4: .4byte gPlayerAvatar + thumb_func_end GetPlayerAvatarObjectId + + thumb_func_start sub_80597E8 +sub_80597E8: @ 80597E8 + push {lr} + bl ForcedMovement_None + pop {r0} + bx r0 + thumb_func_end sub_80597E8 + + thumb_func_start sub_80597F4 +sub_80597F4: @ 80597F4 + push {r4,lr} + ldr r0, _08059834 @ =gPlayerAvatar + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08059838 @ =gMapObjects + adds r4, r0 + adds r0, r4, 0 + bl npc_clear_strange_bits + ldrb r1, [r4, 0x18] + lsls r1, 28 + lsrs r1, 28 + adds r0, r4, 0 + bl FieldObjectSetDirection + movs r0, 0x6 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _0805982C + bl sub_80E6084 + movs r0, 0 + bl sub_80E6010 +_0805982C: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08059834: .4byte gPlayerAvatar +_08059838: .4byte gMapObjects + thumb_func_end sub_80597F4 + + thumb_func_start sub_805983C +sub_805983C: @ 805983C + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08059850 @ =gUnknown_0830FC44 + lsrs r0, 23 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_08059850: .4byte gUnknown_0830FC44 + thumb_func_end sub_805983C + + thumb_func_start GetPlayerAvatarGraphicsIdByStateIdAndGender +GetPlayerAvatarGraphicsIdByStateIdAndGender: @ 8059854 + lsls r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08059868 @ =gUnknown_0830FC54 + lsrs r0, 23 + adds r1, r0 + adds r1, r2 + ldrb r0, [r1] + bx lr + .align 2, 0 +_08059868: .4byte gUnknown_0830FC54 + thumb_func_end GetPlayerAvatarGraphicsIdByStateIdAndGender + + thumb_func_start GetPlayerAvatarGraphicsIdByStateId +GetPlayerAvatarGraphicsIdByStateId: @ 805986C + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08059884 @ =gPlayerAvatar + ldrb r1, [r1, 0x7] + bl GetPlayerAvatarGraphicsIdByStateIdAndGender + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .align 2, 0 +_08059884: .4byte gPlayerAvatar + thumb_func_end GetPlayerAvatarGraphicsIdByStateId + + thumb_func_start unref_sub_8059888 +unref_sub_8059888: @ 8059888 + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x70 + beq _080598AA + cmp r0, 0x70 + bgt _080598A2 + cmp r0, 0x6D + bgt _080598AE + cmp r0, 0x69 + blt _080598AE + b _080598AA +_080598A2: + cmp r1, 0x8A + beq _080598AA + cmp r1, 0xC0 + bne _080598AE +_080598AA: + movs r0, 0x1 + b _080598B0 +_080598AE: + movs r0, 0 +_080598B0: + pop {r1} + bx r1 + thumb_func_end unref_sub_8059888 + + thumb_func_start GetPlayerAvatarGenderByGraphicsId +GetPlayerAvatarGenderByGraphicsId: @ 80598B4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + adds r1, r0, 0 + cmp r0, 0x70 + beq _080598D6 + cmp r0, 0x70 + bgt _080598CE + cmp r0, 0x5D + bgt _080598DA + cmp r0, 0x59 + blt _080598DA + b _080598D6 +_080598CE: + cmp r1, 0x8A + beq _080598D6 + cmp r1, 0xC0 + bne _080598DA +_080598D6: + movs r0, 0x1 + b _080598DC +_080598DA: + movs r0, 0 +_080598DC: + pop {r1} + bx r1 + thumb_func_end GetPlayerAvatarGenderByGraphicsId + + thumb_func_start PartyHasMonWithSurf +PartyHasMonWithSurf: @ 80598E0 + push {r4,r5,lr} + movs r0, 0x8 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + bne _08059924 + movs r5, 0 + b _0805990A +_080598F2: + adds r0, r4, 0 + movs r1, 0x39 + bl pokemon_has_move + lsls r0, 24 + cmp r0, 0 + beq _08059904 + movs r0, 0x1 + b _08059926 +_08059904: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0805990A: + cmp r5, 0x5 + bhi _08059924 + movs r0, 0x64 + adds r1, r5, 0 + muls r1, r0 + ldr r0, _0805992C @ =gPlayerParty + adds r4, r1, r0 + adds r0, r4, 0 + movs r1, 0xB + bl GetMonData + cmp r0, 0 + bne _080598F2 +_08059924: + movs r0, 0 +_08059926: + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805992C: .4byte gPlayerParty + thumb_func_end PartyHasMonWithSurf + + thumb_func_start IsPlayerSurfingNorth +IsPlayerSurfingNorth: @ 8059930 + push {lr} + bl player_get_direction_upper_nybble + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _0805994E + movs r0, 0x8 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _0805994E + movs r0, 0x1 + b _08059950 +_0805994E: + movs r0, 0 +_08059950: + pop {r1} + bx r1 + thumb_func_end IsPlayerSurfingNorth + + thumb_func_start IsPlayerFacingSurfableFishableWater +IsPlayerFacingSurfableFishableWater: @ 8059954 + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, _080599CC @ =gPlayerAvatar + ldrb r0, [r0, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _080599D0 @ =gMapObjects + adds r4, r0 + ldrh r1, [r4, 0x10] + mov r0, sp + strh r1, [r0] + ldrh r0, [r4, 0x12] + mov r5, sp + adds r5, 0x2 + strh r0, [r5] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + 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] + ldrb r3, [r4, 0x18] + lsls r3, 28 + lsrs r3, 28 + adds r0, r4, 0 + bl npc_block_way + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _080599D4 + bl PlayerGetZCoord + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _080599D4 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + lsls r0, 24 + lsrs r0, 24 + bl MetatileBehavior_IsSurfableFishableWater + lsls r0, 24 + cmp r0, 0 + beq _080599D4 + movs r0, 0x1 + b _080599D6 + .align 2, 0 +_080599CC: .4byte gPlayerAvatar +_080599D0: .4byte gMapObjects +_080599D4: + movs r0, 0 +_080599D6: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end IsPlayerFacingSurfableFishableWater + + thumb_func_start ClearPlayerAvatarInfo +ClearPlayerAvatarInfo: @ 80599E0 + push {lr} + ldr r0, _080599F0 @ =gPlayerAvatar + movs r1, 0 + movs r2, 0x24 + bl memset + pop {r0} + bx r0 + .align 2, 0 +_080599F0: .4byte gPlayerAvatar + thumb_func_end ClearPlayerAvatarInfo + + thumb_func_start SetPlayerAvatarStateMask +SetPlayerAvatarStateMask: @ 80599F4 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08059A08 @ =gPlayerAvatar + ldrb r2, [r3] + movs r1, 0xE0 + ands r1, r2 + orrs r0, r1 + strb r0, [r3] + bx lr + .align 2, 0 +_08059A08: .4byte gPlayerAvatar + thumb_func_end SetPlayerAvatarStateMask + + thumb_func_start GetPlayerAvatarStateTransitionByGraphicsId +GetPlayerAvatarStateTransitionByGraphicsId: @ 8059A0C + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0 + ldr r3, _08059A34 @ =gUnknown_0830FC64 + lsls r0, r1, 2 + adds r0, r1 + lsls r4, r0, 1 + adds r6, r3, 0x1 +_08059A22: + lsls r0, r2, 1 + adds r1, r0, r4 + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, r5 + bne _08059A38 + adds r0, r1, r6 + ldrb r0, [r0] + b _08059A44 + .align 2, 0 +_08059A34: .4byte gUnknown_0830FC64 +_08059A38: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x4 + bls _08059A22 + movs r0, 0x1 +_08059A44: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end GetPlayerAvatarStateTransitionByGraphicsId + + thumb_func_start GetPlayerAvatarGraphicsIdByCurrentState +GetPlayerAvatarGraphicsIdByCurrentState: @ 8059A4C + push {r4-r6,lr} + ldr r0, _08059A74 @ =gPlayerAvatar + ldrb r5, [r0] + movs r2, 0 + ldr r3, _08059A78 @ =gUnknown_0830FC64 + ldrb r1, [r0, 0x7] + lsls r0, r1, 2 + adds r0, r1 + lsls r4, r0, 1 + adds r6, r3, 0x1 +_08059A60: + lsls r0, r2, 1 + adds r1, r0, r4 + adds r0, r1, r6 + ldrb r0, [r0] + ands r0, r5 + cmp r0, 0 + beq _08059A7C + adds r0, r1, r3 + ldrb r0, [r0] + b _08059A88 + .align 2, 0 +_08059A74: .4byte gPlayerAvatar +_08059A78: .4byte gUnknown_0830FC64 +_08059A7C: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x4 + bls _08059A60 + movs r0, 0 +_08059A88: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end GetPlayerAvatarGraphicsIdByCurrentState + + thumb_func_start SetPlayerAvatarExtraStateTransition +SetPlayerAvatarExtraStateTransition: @ 8059A90 + push {r4,r5,lr} + adds r4, r1, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _08059ABC @ =gPlayerAvatar + ldrb r1, [r5, 0x7] + bl GetPlayerAvatarStateTransitionByGraphicsId + lsls r0, 24 + lsrs r0, 24 + orrs r0, r4 + ldrb r1, [r5, 0x1] + orrs r0, r1 + strb r0, [r5, 0x1] + bl DoPlayerAvatarTransition + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08059ABC: .4byte gPlayerAvatar + thumb_func_end SetPlayerAvatarExtraStateTransition + + thumb_func_start InitPlayerAvatar +InitPlayerAvatar: @ 8059AC0 + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + sub sp, 0x18 + adds r4, r0, 0 + adds r5, r1, 0 + mov r9, r2 + mov r8, r3 + lsls r4, 16 + lsrs r4, 16 + lsls r5, 16 + lsrs r5, 16 + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + mov r1, sp + movs r0, 0xFF + strb r0, [r1] + movs r0, 0 + mov r1, r8 + bl GetPlayerAvatarGraphicsIdByStateIdAndGender + mov r1, sp + movs r3, 0 + strb r0, [r1, 0x1] + mov r0, sp + lsls r4, 16 + asrs r4, 16 + subs r4, 0x7 + movs r6, 0 + strh r4, [r0, 0x4] + lsls r5, 16 + asrs r5, 16 + subs r5, 0x7 + strh r5, [r0, 0x6] + strb r6, [r0, 0x8] + movs r0, 0xB + strb r0, [r1, 0x9] + mov r2, sp + ldrb r1, [r2, 0xA] + subs r0, 0x1B + ands r0, r1 + strb r0, [r2, 0xA] + mov r0, sp + strb r6, [r0, 0xA] + strh r3, [r0, 0xC] + strh r3, [r0, 0xE] + str r3, [sp, 0x10] + strh r3, [r0, 0x14] + bl SpawnSpecialFieldObject + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + lsls r4, r5, 3 + adds r4, r5 + lsls r4, 2 + ldr r0, _08059B80 @ =gMapObjects + adds r4, r0 + ldrb r0, [r4, 0x2] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x2] + bl sub_8126B54 + strb r0, [r4, 0x1B] + adds r0, r4, 0 + mov r1, r9 + bl FieldObjectTurn + bl ClearPlayerAvatarInfo + ldr r0, _08059B84 @ =gPlayerAvatar + strb r6, [r0, 0x2] + strb r6, [r0, 0x3] + strb r5, [r0, 0x5] + ldrb r1, [r4, 0x4] + strb r1, [r0, 0x4] + mov r1, r8 + strb r1, [r0, 0x7] + movs r0, 0x21 + bl SetPlayerAvatarStateMask + add sp, 0x18 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08059B80: .4byte gMapObjects +_08059B84: .4byte gPlayerAvatar + thumb_func_end InitPlayerAvatar + + thumb_func_start sub_8059B88 +sub_8059B88: @ 8059B88 + push {r4-r6,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r6, _08059BE8 @ =gMapObjects + ldr r5, _08059BEC @ =gPlayerAvatar + ldrb r0, [r5, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r6 + movs r0, 0x1 + ands r4, r0 + lsls r3, r4, 5 + ldrb r2, [r1, 0x1] + movs r0, 0x21 + negs r0, r0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1, 0x1] + movs r0, 0x8 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _08059BE0 + ldr r2, _08059BF0 @ =gSprites + ldrb r1, [r5, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrb r0, [r0, 0x1A] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + adds r1, 0x3E + lsls r3, r4, 2 + ldrb r2, [r1] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r3 + strb r0, [r1] +_08059BE0: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08059BE8: .4byte gMapObjects +_08059BEC: .4byte gPlayerAvatar +_08059BF0: .4byte gSprites + thumb_func_end sub_8059B88 + + thumb_func_start sub_8059BF4 +sub_8059BF4: @ 8059BF4 + push {r4,r5,lr} + ldr r5, _08059C30 @ =gPlayerAvatar + ldrb r0, [r5, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08059C34 @ =gMapObjects + adds r4, r0 + movs r0, 0x5 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _08059C38 @ =gSprites + adds r0, r1 + movs r1, 0 + bl StartSpriteAnim + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08059C30: .4byte gPlayerAvatar +_08059C34: .4byte gMapObjects +_08059C38: .4byte gSprites + thumb_func_end sub_8059BF4 + + thumb_func_start sub_8059C3C +sub_8059C3C: @ 8059C3C + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _08059C88 @ =gPlayerAvatar + ldrb r0, [r6, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08059C8C @ =gMapObjects + adds r4, r0 + movs r0, 0x6 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r0, [r6, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08059C90 @ =gSprites + adds r4, r0 + adds r0, r5, 0 + bl sub_805FDE8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08059C88: .4byte gPlayerAvatar +_08059C8C: .4byte gMapObjects +_08059C90: .4byte gSprites + thumb_func_end sub_8059C3C + + thumb_func_start sub_8059C94 +sub_8059C94: @ 8059C94 + push {r4-r6,lr} + mov r6, r8 + push {r6} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _08059CFC @ =gPlayerAvatar + ldrb r0, [r6, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08059D00 @ =gMapObjects + adds r4, r0 + movs r0, 0x2 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r0, [r6, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08059D04 @ =gSprites + mov r8, r0 + add r4, r8 + adds r0, r5, 0 + bl sub_805FD98 + 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 + add r0, r8 + movs r1, 0x1 + bl SeekSpriteAnim + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08059CFC: .4byte gPlayerAvatar +_08059D00: .4byte gMapObjects +_08059D04: .4byte gSprites + thumb_func_end sub_8059C94 + + thumb_func_start sub_8059D08 +sub_8059D08: @ 8059D08 + push {r4-r6,lr} + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _08059D54 @ =gPlayerAvatar + ldrb r0, [r6, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _08059D58 @ =gMapObjects + adds r4, r0 + movs r0, 0x7 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r0, [r6, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _08059D5C @ =gSprites + adds r4, r0 + adds r0, r5, 0 + bl FieldObjectDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08059D54: .4byte gPlayerAvatar +_08059D58: .4byte gMapObjects +_08059D5C: .4byte gSprites + thumb_func_end sub_8059D08 + + thumb_func_start sub_8059D60 +sub_8059D60: @ 8059D60 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r5, r0, 0 + ldrb r0, [r5, 0x1E] + mov r8, r0 + movs r1, 0 + mov r0, sp + strh r1, [r0] + movs r6, 0x1 + ldr r1, _08059DC4 @ =gUnknown_0830FC78 + mov r9, r1 + mov r4, sp + mov r7, sp + adds r7, 0x2 +_08059D82: + movs r1, 0 + ldrsh r0, [r4, r1] + lsls r0, 2 + add r0, r9 + ldr r1, [r0] + mov r0, r8 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + beq _08059DC8 + ldrb r0, [r5, 0x18] + lsrs r0, 4 + cmp r6, r0 + bne _08059DC8 + ldrh r0, [r5, 0x10] + strh r0, [r4] + ldrh r0, [r5, 0x12] + strh r0, [r7] + adds r0, r6, 0 + mov r1, sp + adds r2, r7, 0 + bl MoveCoords + ldrb r0, [r5, 0x1B] + movs r1, 0 + ldrsh r2, [r4, r1] + movs r1, 0 + ldrsh r3, [r7, r1] + adds r1, r6, 0 + bl sub_8126BC4 + b _08059DE2 + .align 2, 0 +_08059DC4: .4byte gUnknown_0830FC78 +_08059DC8: + ldrh r1, [r4] + adds r1, 0x1 + strh r1, [r4] + adds r0, r6, 0x1 + lsls r0, 24 + lsrs r6, r0, 24 + lsls r1, 16 + asrs r1, 16 + cmp r1, 0x3 + ble _08059D82 + ldrb r0, [r5, 0x1B] + bl objid_set_invisible +_08059DE2: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8059D60 + + thumb_func_start task_add_bump_boulder +task_add_bump_boulder: @ 8059DF0 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r5, 24 + lsrs r5, 24 + ldr r6, _08059E24 @ =sub_8059E2C + adds r0, r6, 0 + movs r1, 0xFF + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08059E28 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0xA] + strh r5, [r1, 0xC] + bl _call_via_r6 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08059E24: .4byte sub_8059E2C +_08059E28: .4byte gTasks + thumb_func_end task_add_bump_boulder + + thumb_func_start sub_8059E2C +sub_8059E2C: @ 8059E2C + push {r4-r6,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r6, _08059E74 @ =gUnknown_0830FC88 + ldr r2, _08059E78 @ =gTasks + ldr r5, _08059E7C @ =gMapObjects + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_08059E40: + movs r0, 0x8 + ldrsh r3, [r4, r0] + lsls r3, 2 + adds r3, r6 + ldr r0, _08059E80 @ =gPlayerAvatar + ldrb r0, [r0, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + adds r1, r5 + movs r2, 0xA + ldrsh r0, [r4, r2] + lsls r2, r0, 3 + adds r2, r0 + lsls r2, 2 + adds r2, r5 + ldr r3, [r3] + adds r0, r4, 0 + bl _call_via_r3 + lsls r0, 24 + cmp r0, 0 + bne _08059E40 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08059E74: .4byte gUnknown_0830FC88 +_08059E78: .4byte gTasks +_08059E7C: .4byte gMapObjects +_08059E80: .4byte gPlayerAvatar + thumb_func_end sub_8059E2C + + thumb_func_start sub_8059E84 +sub_8059E84: @ 8059E84 + push {r4,lr} + adds r4, r0, 0 + bl ScriptContext2_Enable + ldr r1, _08059EA0 @ =gPlayerAvatar + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08059EA0: .4byte gPlayerAvatar + thumb_func_end sub_8059E84 + + thumb_func_start sub_8059EA4 +sub_8059EA4: @ 8059EA4 + push {r4-r6,lr} + adds r6, r0, 0 + adds r5, r1, 0 + adds r4, r2, 0 + adds r0, r5, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + bne _08059F2E + adds r0, r4, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + bne _08059F2E + adds r0, r5, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + ldrb r0, [r6, 0xC] + bl GetStepInPlaceDelay16AnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl FieldObjectSetSpecialAnim + ldrb r0, [r6, 0xC] + bl GetSimpleGoAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldr r2, _08059F38 @ =gUnknown_0202FF84 + movs r1, 0x10 + ldrsh r0, [r4, r1] + str r0, [r2] + movs r1, 0x12 + ldrsh r0, [r4, r1] + str r0, [r2, 0x4] + ldrb r0, [r4, 0xB] + lsrs r0, 4 + str r0, [r2, 0x8] + ldr r3, _08059F3C @ =gSprites + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x5] + lsls r0, 28 + lsrs r0, 30 + str r0, [r2, 0xC] + movs r0, 0xA + bl FieldEffectStart + movs r0, 0xD6 + bl PlaySE + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_08059F2E: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08059F38: .4byte gUnknown_0202FF84 +_08059F3C: .4byte gSprites + thumb_func_end sub_8059EA4 + + thumb_func_start sub_8059F40 +sub_8059F40: @ 8059F40 + push {r4,r5,lr} + adds r4, r1, 0 + adds r5, r2, 0 + adds r0, r4, 0 + bl FieldObjectCheckIfSpecialAnimFinishedOrInactive + lsls r0, 24 + cmp r0, 0 + beq _08059F82 + adds r0, r5, 0 + bl FieldObjectCheckIfSpecialAnimFinishedOrInactive + lsls r0, 24 + cmp r0, 0 + beq _08059F82 + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + adds r0, r5, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + ldr r1, _08059F8C @ =gPlayerAvatar + movs r0, 0 + strb r0, [r1, 0x6] + bl ScriptContext2_Disable + ldr r0, _08059F90 @ =sub_8059E2C + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + bl DestroyTask +_08059F82: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_08059F8C: .4byte gPlayerAvatar +_08059F90: .4byte sub_8059E2C + thumb_func_end sub_8059F40 + + thumb_func_start sub_8059F94 +sub_8059F94: @ 8059F94 + push {r4,lr} + ldr r4, _08059FB0 @ =sub_8059FB4 + adds r0, r4, 0 + movs r1, 0xFF + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08059FB0: .4byte sub_8059FB4 + thumb_func_end sub_8059F94 + + thumb_func_start sub_8059FB4 +sub_8059FB4: @ 8059FB4 + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _08059FF0 @ =gUnknown_0830FC94 + ldr r2, _08059FF4 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_08059FC6: + movs r0, 0x8 + ldrsh r2, [r4, r0] + lsls r2, 2 + adds r2, r5 + ldr r0, _08059FF8 @ =gPlayerAvatar + ldrb r0, [r0, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _08059FFC @ =gMapObjects + adds r1, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + bne _08059FC6 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08059FF0: .4byte gUnknown_0830FC94 +_08059FF4: .4byte gTasks +_08059FF8: .4byte gPlayerAvatar +_08059FFC: .4byte gMapObjects + thumb_func_end sub_8059FB4 + + thumb_func_start sub_805A000 +sub_805A000: @ 805A000 + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + ldr r5, _0805A064 @ =gPlayerAvatar + movs r0, 0x1 + strb r0, [r5, 0x6] + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _0805A05C + movs r0, 0xA + bl PlaySE + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_806084C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + ldrh r0, [r6, 0xA] + adds r0, 0x1 + strh r0, [r6, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x1 + ble _0805A05C + movs r0, 0 + strb r0, [r5, 0x6] + ldrb r0, [r5, 0x1] + movs r1, 0x20 + orrs r0, r1 + strb r0, [r5, 0x1] + ldr r0, _0805A068 @ =sub_8059FB4 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + bl DestroyTask +_0805A05C: + movs r0, 0 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805A064: .4byte gPlayerAvatar +_0805A068: .4byte sub_8059FB4 + thumb_func_end sub_805A000 + + thumb_func_start sub_805A06C +sub_805A06C: @ 805A06C + push {r4,lr} + ldr r4, _0805A088 @ =sub_805A08C + adds r0, r4, 0 + movs r1, 0xFF + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + bl _call_via_r4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0805A088: .4byte sub_805A08C + thumb_func_end sub_805A06C + + thumb_func_start sub_805A08C +sub_805A08C: @ 805A08C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0805A0C8 @ =gUnknown_0830FC98 + ldr r2, _0805A0CC @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_0805A09E: + movs r0, 0x8 + ldrsh r2, [r4, r0] + lsls r2, 2 + adds r2, r5 + ldr r0, _0805A0D0 @ =gPlayerAvatar + ldrb r0, [r0, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _0805A0D4 @ =gMapObjects + adds r1, r0 + ldr r2, [r2] + adds r0, r4, 0 + bl _call_via_r2 + lsls r0, 24 + cmp r0, 0 + bne _0805A09E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805A0C8: .4byte gUnknown_0830FC98 +_0805A0CC: .4byte gTasks +_0805A0D0: .4byte gPlayerAvatar +_0805A0D4: .4byte gMapObjects + thumb_func_end sub_805A08C + + thumb_func_start sub_805A0D8 +sub_805A0D8: @ 805A0D8 + push {lr} + ldrh r2, [r0, 0x8] + adds r2, 0x1 + strh r2, [r0, 0x8] + ldrb r1, [r1, 0x18] + lsrs r1, 4 + strh r1, [r0, 0xA] + ldr r1, _0805A0FC @ =gPlayerAvatar + movs r0, 0x1 + strb r0, [r1, 0x6] + bl ScriptContext2_Enable + movs r0, 0x2D + bl PlaySE + movs r0, 0x1 + pop {r1} + bx r1 + .align 2, 0 +_0805A0FC: .4byte gPlayerAvatar + thumb_func_end sub_805A0D8 + + thumb_func_start sub_805A100 +sub_805A100: @ 805A100 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r1, _0805A174 @ =gUnknown_0830FCA8 + mov r0, sp + movs r2, 0x4 + bl memcpy + adds r0, r5, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _0805A168 + ldrb r0, [r5, 0x18] + lsrs r0, 4 + subs r0, 0x1 + add r0, sp + ldrb r6, [r0] + adds r0, r6, 0 + bl GetFaceDirectionAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl FieldObjectSetSpecialAnim + ldrb r0, [r4, 0xA] + cmp r6, r0 + bne _0805A146 + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_0805A146: + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r1, 0xC + ldrsh r0, [r4, r1] + cmp r0, 0x3 + ble _0805A168 + ldrb r0, [r4, 0xA] + bl GetOppositeDirection + lsls r0, 24 + lsrs r0, 24 + cmp r6, r0 + bne _0805A168 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0805A168: + movs r0, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805A174: .4byte gUnknown_0830FCA8 + thumb_func_end sub_805A100 + + thumb_func_start sub_805A178 +sub_805A178: @ 805A178 + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r4, r1, 0 + ldr r1, _0805A1B4 @ =gUnknown_0830FCAC + mov r0, sp + movs r2, 0x5 + bl memcpy + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _0805A1A8 + movs r1, 0xC + ldrsh r0, [r5, r1] + add r0, sp + ldrb r1, [r0] + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + movs r0, 0x1 + strh r0, [r5, 0x8] +_0805A1A8: + movs r0, 0 + add sp, 0x8 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805A1B4: .4byte gUnknown_0830FCAC + thumb_func_end sub_805A178 + + thumb_func_start sub_805A1B8 +sub_805A1B8: @ 805A1B8 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r0, r5, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _0805A1FC + ldrb r0, [r4, 0xA] + bl GetOppositeDirection + lsls r0, 24 + lsrs r0, 24 + bl GetSimpleGoAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl FieldObjectSetSpecialAnim + bl ScriptContext2_Disable + ldr r1, _0805A204 @ =gPlayerAvatar + movs r0, 0 + strb r0, [r1, 0x6] + ldr r0, _0805A208 @ =sub_805A08C + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + bl DestroyTask +_0805A1FC: + movs r0, 0 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805A204: .4byte gPlayerAvatar +_0805A208: .4byte sub_805A08C + thumb_func_end sub_805A1B8 + + thumb_func_start sub_805A20C +sub_805A20C: @ 805A20C + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl ScriptContext2_Enable + bl sav1_reset_battle_music_maybe + bl sub_8053F84 + ldr r2, _0805A258 @ =gPlayerAvatar + ldrb r1, [r2] + movs r0, 0xF7 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r2] + movs r0, 0x1 + strb r0, [r2, 0x6] + ldr r5, _0805A25C @ =taskFF_0805D1D4 + adds r0, r5, 0 + movs r1, 0xFF + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805A260 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x8] + bl _call_via_r5 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805A258: .4byte gPlayerAvatar +_0805A25C: .4byte taskFF_0805D1D4 +_0805A260: .4byte gTasks + thumb_func_end sub_805A20C + + thumb_func_start taskFF_0805D1D4 +taskFF_0805D1D4: @ 805A264 + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _0805A2C0 @ =gPlayerAvatar + ldrb r1, [r0, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805A2C4 @ =gMapObjects + adds r5, r0, r1 + adds r0, r5, 0 + bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive + lsls r0, 24 + cmp r0, 0 + beq _0805A290 + adds r0, r5, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _0805A2B8 +_0805A290: + ldrb r0, [r5, 0x1A] + movs r1, 0x2 + bl sub_8127ED0 + ldr r0, _0805A2C8 @ =gTasks + lsls r4, r6, 2 + adds r4, r6 + lsls r4, 3 + adds r4, r0 + ldrb r0, [r4, 0x8] + bl sub_80608D0 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl FieldObjectSetSpecialAnim + ldr r0, _0805A2CC @ =sub_805A2D0 + str r0, [r4] +_0805A2B8: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805A2C0: .4byte gPlayerAvatar +_0805A2C4: .4byte gMapObjects +_0805A2C8: .4byte gTasks +_0805A2CC: .4byte sub_805A2D0 + thumb_func_end taskFF_0805D1D4 + + thumb_func_start sub_805A2D0 +sub_805A2D0: @ 805A2D0 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + ldr r6, _0805A33C @ =gPlayerAvatar + ldrb r1, [r6, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805A340 @ =gMapObjects + adds r4, r0, r1 + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimFinished + lsls r0, 24 + cmp r0, 0 + beq _0805A336 + movs r0, 0 + bl GetPlayerAvatarGraphicsIdByStateId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl GetFaceDirectionAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl FieldObjectSetSpecialAnim + movs r0, 0 + strb r0, [r6, 0x6] + bl ScriptContext2_Disable + ldrb r1, [r4, 0x1A] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805A344 @ =gSprites + adds r0, r1 + bl DestroySprite + adds r0, r5, 0 + bl DestroyTask +_0805A336: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0805A33C: .4byte gPlayerAvatar +_0805A340: .4byte gMapObjects +_0805A344: .4byte gSprites + thumb_func_end sub_805A2D0 + + thumb_func_start StartFishing +StartFishing: @ 805A348 + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r5, _0805A374 @ =sub_805A37C + adds r0, r5, 0 + movs r1, 0xFF + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + ldr r2, _0805A378 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + strh r4, [r1, 0x26] + bl _call_via_r5 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805A374: .4byte sub_805A37C +_0805A378: .4byte gTasks + thumb_func_end StartFishing + + thumb_func_start sub_805A37C +sub_805A37C: @ 805A37C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r5, _0805A3AC @ =gUnknown_0830FCB4 + ldr r2, _0805A3B0 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r4, r1, r2 +_0805A38E: + movs r1, 0x8 + ldrsh r0, [r4, r1] + lsls r0, 2 + adds r0, r5 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 24 + cmp r0, 0 + bne _0805A38E + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805A3AC: .4byte gUnknown_0830FCB4 +_0805A3B0: .4byte gTasks + thumb_func_end sub_805A37C + + thumb_func_start sub_805A3B4 +sub_805A3B4: @ 805A3B4 + push {r4,lr} + adds r4, r0, 0 + bl ScriptContext2_Enable + ldr r1, _0805A3D0 @ =gPlayerAvatar + movs r0, 0x1 + strb r0, [r1, 0x6] + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805A3D0: .4byte gPlayerAvatar + thumb_func_end sub_805A3B4 + + thumb_func_start fish1 +fish1: @ 805A3D4 + push {r4-r6,lr} + sub sp, 0x10 + adds r5, r0, 0 + ldr r1, _0805A45C @ =gUnknown_0830FCF4 + mov r0, sp + movs r2, 0x6 + bl memcpy + add r4, sp, 0x8 + ldr r1, _0805A460 @ =gUnknown_0830FCFA + adds r0, r4, 0 + movs r2, 0x6 + bl memcpy + movs r0, 0 + strh r0, [r5, 0x20] + bl Random + movs r2, 0x26 + ldrsh r1, [r5, r2] + lsls r1, 1 + mov r2, sp + adds r6, r2, r1 + lsls r0, 16 + lsrs r0, 16 + adds r4, r1 + movs r2, 0 + ldrsh r1, [r4, r2] + bl __modsi3 + ldrh r1, [r6] + adds r1, r0 + strh r1, [r5, 0x22] + ldr r3, _0805A464 @ =gMapObjects + ldr r2, _0805A468 @ =gPlayerAvatar + ldrb r1, [r2, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x5] + strh r0, [r5, 0x24] + ldrb r0, [r2, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + adds r4, r3 + adds r0, r4, 0 + bl FieldObjectClearAnimIfSpecialAnimActive + ldrb r0, [r4, 0x1] + movs r1, 0x8 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x18] + lsls r0, 28 + lsrs r0, 28 + bl sub_8059C3C + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0 + add sp, 0x10 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0805A45C: .4byte gUnknown_0830FCF4 +_0805A460: .4byte gUnknown_0830FCFA +_0805A464: .4byte gMapObjects +_0805A468: .4byte gPlayerAvatar + thumb_func_end fish1 + + thumb_func_start fish2 +fish2: @ 805A46C + push {r4,lr} + adds r4, r0, 0 + bl sub_805A954 + ldrh r0, [r4, 0xA] + adds r0, 0x1 + strh r0, [r4, 0xA] + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x3B + ble _0805A488 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] +_0805A488: + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end fish2 + + thumb_func_start fish3 +fish3: @ 805A490 + push {r4,lr} + adds r4, r0, 0 + bl MenuDisplayMessageBox + ldrh r0, [r4, 0x8] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x8] + strh r1, [r4, 0xA] + strh r1, [r4, 0xC] + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0xA + bl __umodsi3 + adds r1, r0, 0 + adds r0, r1, 0x1 + strh r0, [r4, 0xE] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0 + bne _0805A4C4 + adds r0, r1, 0x4 + strh r0, [r4, 0xE] +_0805A4C4: + movs r1, 0xE + ldrsh r0, [r4, r1] + cmp r0, 0x9 + ble _0805A4D0 + movs r0, 0xA + strh r0, [r4, 0xE] +_0805A4D0: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + thumb_func_end fish3 + + thumb_func_start fish4 +fish4: @ 805A4D8 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldr r1, _0805A514 @ =gUnknown_0830FD00 + mov r0, sp + movs r2, 0x2 + bl memcpy + bl sub_805A954 + ldrh r0, [r4, 0xA] + adds r2, r0, 0x1 + strh r2, [r4, 0xA] + ldr r0, _0805A518 @ =gMain + ldrh r0, [r0, 0x2E] + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0805A51C + movs r0, 0xB + strh r0, [r4, 0x8] + movs r1, 0x20 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0805A50E + movs r0, 0xC + strh r0, [r4, 0x8] +_0805A50E: + movs r0, 0x1 + b _0805A564 + .align 2, 0 +_0805A514: .4byte gUnknown_0830FD00 +_0805A518: .4byte gMain +_0805A51C: + lsls r0, r2, 16 + asrs r0, 16 + cmp r0, 0x13 + ble _0805A562 + strh r1, [r4, 0xA] + ldrh r2, [r4, 0xC] + movs r3, 0xC + ldrsh r1, [r4, r3] + movs r3, 0xE + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _0805A54E + ldrh r0, [r4, 0x8] + adds r1, r0, 0x1 + strh r1, [r4, 0x8] + ldrh r2, [r4, 0x20] + movs r3, 0x20 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _0805A548 + adds r0, r1, 0x1 + strh r0, [r4, 0x8] +_0805A548: + adds r0, r2, 0x1 + strh r0, [r4, 0x20] + b _0805A562 +_0805A54E: + adds r1, r2, 0x4 + lsls r1, 24 + lsrs r1, 24 + mov r0, sp + movs r2, 0xF + bl MenuPrint + ldrh r0, [r4, 0xC] + adds r0, 0x1 + strh r0, [r4, 0xC] +_0805A562: + movs r0, 0 +_0805A564: + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end fish4 + + thumb_func_start party_menu_update_status_condition_object +party_menu_update_status_condition_object: @ 805A56C + push {r4,lr} + adds r4, r0, 0 + bl sub_805A954 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + bl GetFishingWildMonListHeader + lsls r0, 24 + cmp r0, 0 + beq _0805A590 + bl Random + movs r1, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0805A596 +_0805A590: + movs r0, 0xB + strh r0, [r4, 0x8] + b _0805A5BC +_0805A596: + ldr r0, _0805A5C4 @ =gPlayerAvatar + ldrb r0, [r0, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805A5C8 @ =gSprites + adds r4, r0 + bl player_get_direction_lower_nybble + lsls r0, 24 + lsrs r0, 24 + bl sub_805FE08 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim +_0805A5BC: + movs r0, 0x1 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805A5C4: .4byte gPlayerAvatar +_0805A5C8: .4byte gSprites + thumb_func_end party_menu_update_status_condition_object + + thumb_func_start sub_805A5CC +sub_805A5CC: @ 805A5CC + push {r4,lr} + adds r4, r0, 0 + bl sub_805A954 + ldr r0, _0805A5F0 @ =gOtherText_OhABite + movs r1, 0x4 + movs r2, 0x11 + bl MenuPrint + ldrh r0, [r4, 0x8] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x8] + strh r1, [r4, 0xA] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805A5F0: .4byte gOtherText_OhABite + thumb_func_end sub_805A5CC + + thumb_func_start fish7 +fish7: @ 805A5F4 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldr r1, _0805A628 @ =gUnknown_0830FD02 + mov r0, sp + movs r2, 0x6 + bl memcpy + bl sub_805A954 + ldrh r1, [r4, 0xA] + adds r1, 0x1 + strh r1, [r4, 0xA] + movs r2, 0x26 + ldrsh r0, [r4, r2] + lsls r0, 1 + add r0, sp + lsls r1, 16 + asrs r1, 16 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r1, r0 + blt _0805A62C + movs r0, 0xC + b _0805A63C + .align 2, 0 +_0805A628: .4byte gUnknown_0830FD02 +_0805A62C: + ldr r0, _0805A648 @ =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0805A63E + ldrh r0, [r4, 0x8] + adds r0, 0x1 +_0805A63C: + strh r0, [r4, 0x8] +_0805A63E: + movs r0, 0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805A648: .4byte gMain + thumb_func_end fish7 + + thumb_func_start fish8 +fish8: @ 805A64C + push {r4,lr} + sub sp, 0xC + adds r4, r0, 0 + ldr r1, _0805A6B0 @ =gUnknown_0830FD08 + mov r0, sp + movs r2, 0xC + bl memcpy + bl sub_805A954 + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0x20 + ldrsh r1, [r4, r0] + movs r2, 0x22 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _0805A6A2 + cmp r1, 0x1 + bgt _0805A6A6 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x64 + bl __umodsi3 + movs r3, 0x20 + ldrsh r2, [r4, r3] + lsls r2, 1 + movs r3, 0x26 + ldrsh r1, [r4, r3] + lsls r1, 2 + adds r2, r1 + mov r3, sp + adds r1, r3, r2 + movs r2, 0 + ldrsh r1, [r1, r2] + lsls r0, 16 + asrs r0, 16 + cmp r1, r0 + ble _0805A6A6 +_0805A6A2: + movs r0, 0x3 + strh r0, [r4, 0x8] +_0805A6A6: + movs r0, 0 + add sp, 0xC + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805A6B0: .4byte gUnknown_0830FD08 + thumb_func_end fish8 + + thumb_func_start sub_805A6B4 +sub_805A6B4: @ 805A6B4 + push {r4,lr} + adds r4, r0, 0 + bl sub_805A954 + ldr r0, _0805A6D8 @ =gOtherText_PokeOnHook + bl sub_8072044 + bl MenuDisplayMessageBox + ldrh r0, [r4, 0x8] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x8] + strh r1, [r4, 0xA] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_0805A6D8: .4byte gOtherText_PokeOnHook + thumb_func_end sub_805A6B4 + + thumb_func_start sub_805A6DC +sub_805A6DC: @ 805A6DC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r5, r0, 0 + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0805A780 + bl sub_805A954 + movs r0, 0xA + ldrsh r6, [r5, r0] + cmp r6, 0 + bne _0805A780 + bl MenuUpdateWindowText + lsls r0, 24 + cmp r0, 0 + beq _0805A778 + ldr r7, _0805A76C @ =gPlayerAvatar + ldrb r0, [r7, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r1, _0805A770 @ =gMapObjects + mov r8, r1 + add r4, r8 + ldrh r1, [r5, 0x24] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl FieldObjectTurn + ldrb r1, [r7] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0805A746 + ldrb r0, [r7, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r0, [r1, 0x1A] + movs r1, 0 + movs r2, 0 + bl sub_8127F28 +_0805A746: + ldr r2, _0805A774 @ =gSprites + ldrb r1, [r7, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x24] + ldrb r1, [r7, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + strh r6, [r0, 0x26] + bl MenuZeroFillScreen + ldrh r0, [r5, 0xA] + adds r0, 0x1 + strh r0, [r5, 0xA] + b _0805A7A8 + .align 2, 0 +_0805A76C: .4byte gPlayerAvatar +_0805A770: .4byte gMapObjects +_0805A774: .4byte gSprites +_0805A778: + movs r1, 0xA + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0805A7A8 +_0805A780: + ldr r1, _0805A7B4 @ =gPlayerAvatar + movs r0, 0 + strb r0, [r1, 0x6] + bl ScriptContext2_Disable + ldrh r0, [r5, 0x26] + lsls r0, 24 + lsrs r0, 24 + bl FishingWildEncounter + movs r0, 0x1 + bl sub_80BE97C + ldr r0, _0805A7B8 @ =sub_805A37C + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + bl DestroyTask +_0805A7A8: + movs r0, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805A7B4: .4byte gPlayerAvatar +_0805A7B8: .4byte sub_805A37C + thumb_func_end sub_805A6DC + + thumb_func_start sub_805A7BC +sub_805A7BC: @ 805A7BC + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_805A954 + ldr r0, _0805A7FC @ =gPlayerAvatar + ldrb r0, [r0, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805A800 @ =gSprites + adds r4, r0 + bl player_get_direction_lower_nybble + lsls r0, 24 + lsrs r0, 24 + bl sub_805FDF8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, _0805A804 @ =gOtherText_NotEvenANibble + bl sub_8072044 + movs r0, 0xD + strh r0, [r5, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805A7FC: .4byte gPlayerAvatar +_0805A800: .4byte gSprites +_0805A804: .4byte gOtherText_NotEvenANibble + thumb_func_end sub_805A7BC + + thumb_func_start sub_805A808 +sub_805A808: @ 805A808 + push {r4,r5,lr} + adds r5, r0, 0 + bl sub_805A954 + ldr r0, _0805A84C @ =gPlayerAvatar + ldrb r0, [r0, 0x4] + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805A850 @ =gSprites + adds r4, r0 + bl player_get_direction_lower_nybble + lsls r0, 24 + lsrs r0, 24 + bl sub_805FDF8 + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl StartSpriteAnim + ldr r0, _0805A854 @ =gOtherText_ItGotAway + bl sub_8072044 + ldrh r0, [r5, 0x8] + adds r0, 0x1 + strh r0, [r5, 0x8] + movs r0, 0x1 + pop {r4,r5} + pop {r1} + bx r1 + .align 2, 0 +_0805A84C: .4byte gPlayerAvatar +_0805A850: .4byte gSprites +_0805A854: .4byte gOtherText_ItGotAway + thumb_func_end sub_805A808 + + thumb_func_start fishD +fishD: @ 805A858 + push {r4,lr} + adds r4, r0, 0 + bl sub_805A954 + bl MenuDisplayMessageBox + ldrh r0, [r4, 0x8] + adds r0, 0x1 + strh r0, [r4, 0x8] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end fishD + + thumb_func_start sub_805A874 +sub_805A874: @ 805A874 + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + bl sub_805A954 + ldr r7, _0805A908 @ =gSprites + ldr r5, _0805A90C @ =gPlayerAvatar + ldrb r0, [r5, 0x4] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r7 + adds r1, 0x3F + ldrb r0, [r1] + lsls r0, 27 + cmp r0, 0 + bge _0805A8FA + ldrb r0, [r5, 0x5] + lsls r4, r0, 3 + adds r4, r0 + lsls r4, 2 + ldr r0, _0805A910 @ =gMapObjects + mov r8, r0 + add r4, r8 + ldrh r1, [r6, 0x24] + lsls r1, 24 + lsrs r1, 24 + adds r0, r4, 0 + bl sub_805B980 + ldrb r1, [r4, 0x18] + lsrs r1, 4 + adds r0, r4, 0 + bl FieldObjectTurn + ldrb r1, [r5] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0805A8DA + ldrb r0, [r5, 0x5] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + add r1, r8 + ldrb r0, [r1, 0x1A] + movs r1, 0 + movs r2, 0 + bl sub_8127F28 +_0805A8DA: + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + movs r2, 0 + strh r2, [r0, 0x24] + ldrb r1, [r5, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r2, [r0, 0x26] + ldrh r0, [r6, 0x8] + adds r0, 0x1 + strh r0, [r6, 0x8] +_0805A8FA: + movs r0, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0805A908: .4byte gSprites +_0805A90C: .4byte gPlayerAvatar +_0805A910: .4byte gMapObjects + thumb_func_end sub_805A874 + + thumb_func_start fishF +fishF: @ 805A914 + push {lr} + bl MenuUpdateWindowText + lsls r0, 24 + cmp r0, 0 + beq _0805A946 + ldr r1, _0805A94C @ =gPlayerAvatar + movs r0, 0 + strb r0, [r1, 0x6] + bl ScriptContext2_Disable + bl sub_806451C + bl MenuZeroFillScreen + movs r0, 0 + bl sub_80BE97C + ldr r0, _0805A950 @ =sub_805A37C + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + bl DestroyTask +_0805A946: + movs r0, 0 + pop {r1} + bx r1 + .align 2, 0 +_0805A94C: .4byte gPlayerAvatar +_0805A950: .4byte sub_805A37C + thumb_func_end fishF + + thumb_func_start sub_805A954 +sub_805A954: @ 805A954 + push {r4-r7,lr} + ldr r0, _0805AA40 @ =gPlayerAvatar + ldrb r1, [r0, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0805AA44 @ =gSprites + adds r4, r0, r1 + adds r0, r4, 0 + bl AnimateSprite + movs r0, 0 + strh r0, [r4, 0x24] + strh r0, [r4, 0x26] + adds r0, r4, 0 + adds r0, 0x2B + ldrb r5, [r0] + movs r0, 0x2A + adds r0, r4 + mov r12, r0 + ldrb r0, [r0] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + lsls r6, r5, 2 + adds r0, r6, r0 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r7, 0x1 + negs r7, r7 + cmp r0, r7 + beq _0805A9C6 + 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] + mov r1, r12 + ldrb r0, [r1] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r0, [r0] + adds r0, r6, r0 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, r7 + bne _0805A9CC +_0805A9C6: + subs r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_0805A9CC: + adds r0, r4, 0 + adds r0, 0x2A + ldrb r0, [r0] + ldr r1, [r4, 0x8] + lsls r0, 2 + adds r0, r1 + ldr r1, [r0] + lsls r0, r5, 2 + adds r0, r1 + ldrb r5, [r0] + subs r0, r5, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bhi _0805A9FE + movs r0, 0x8 + strh r0, [r4, 0x24] + bl player_get_direction_lower_nybble + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0805A9FE + ldr r0, _0805AA48 @ =0x0000fff8 + strh r0, [r4, 0x24] +_0805A9FE: + cmp r5, 0x5 + bne _0805AA06 + ldr r0, _0805AA48 @ =0x0000fff8 + strh r0, [r4, 0x26] +_0805AA06: + adds r0, r5, 0 + subs r0, 0xA + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bhi _0805AA16 + movs r0, 0x8 + strh r0, [r4, 0x26] +_0805AA16: + ldr r3, _0805AA40 @ =gPlayerAvatar + ldrb r1, [r3] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0805AA3A + ldr r2, _0805AA4C @ =gMapObjects + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r0, [r0, 0x1A] + movs r1, 0x26 + ldrsh r2, [r4, r1] + movs r1, 0x1 + bl sub_8127F28 +_0805AA3A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805AA40: .4byte gPlayerAvatar +_0805AA44: .4byte gSprites +_0805AA48: .4byte 0x0000fff8 +_0805AA4C: .4byte gMapObjects + thumb_func_end sub_805A954 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/fieldmap.s b/asm/fieldmap.s new file mode 100644 index 000000000..d92bc82a2 --- /dev/null +++ b/asm/fieldmap.s @@ -0,0 +1,1998 @@ + .include "constants/gba_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start mapconnection_get_mapheader +mapconnection_get_mapheader: @ 8055F90 + push {lr} + ldrb r2, [r0, 0x8] + ldrb r1, [r0, 0x9] + adds r0, r2, 0 + bl get_mapheader_by_bank_and_number + pop {r1} + bx r1 + thumb_func_end mapconnection_get_mapheader + + thumb_func_start not_trainer_hill_battle_pyramid +not_trainer_hill_battle_pyramid: @ 8055FA0 + push {r4,lr} + ldr r4, _08055FBC @ =gMapHeader + adds r0, r4, 0 + bl mapheader_copy_mapdata_with_padding + ldr r0, [r4, 0x4] + bl sub_80BB970 + bl mapheader_run_script_with_tag_x1 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055FBC: .4byte gMapHeader + thumb_func_end not_trainer_hill_battle_pyramid + + thumb_func_start sub_8055FC0 +sub_8055FC0: @ 8055FC0 + push {r4,lr} + ldr r4, _08055FF0 @ =gMapHeader + adds r0, r4, 0 + bl mapheader_copy_mapdata_with_padding + movs r0, 0 + bl sub_80BBCCC + ldr r0, [r4, 0x4] + bl sub_80BB970 + bl sub_8056670 + bl mapheader_run_script_with_tag_x1 + ldr r1, _08055FF4 @ =gUnknown_03004870 + ldr r0, [r1] + ldr r1, [r1, 0x4] + bl UpdateTVScreensOnMap + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08055FF0: .4byte gMapHeader +_08055FF4: .4byte gUnknown_03004870 + thumb_func_end sub_8055FC0 + + thumb_func_start mapheader_copy_mapdata_with_padding +mapheader_copy_mapdata_with_padding: @ 8055FF8 + push {r4-r6,lr} + sub sp, 0x4 + adds r6, r0, 0 + ldr r5, [r6] + ldr r0, _08056044 @ =0x03ff03ff + str r0, [sp] + ldr r4, _08056048 @ =gUnknown_02029828 + ldr r2, _0805604C @ =0x01001400 + mov r0, sp + adds r1, r4, 0 + bl CpuFastSet + ldr r2, _08056050 @ =gUnknown_03004870 + str r4, [r2, 0x8] + ldr r1, [r5] + adds r1, 0xF + str r1, [r2] + ldr r0, [r5, 0x4] + adds r0, 0xE + str r0, [r2, 0x4] + muls r1, r0 + movs r0, 0xA0 + lsls r0, 6 + cmp r1, r0 + bgt _0805603A + ldr r0, [r5, 0xC] + ldrh r1, [r5] + ldrh r2, [r5, 0x4] + bl map_copy_with_padding + adds r0, r6, 0 + bl sub_80560AC +_0805603A: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08056044: .4byte 0x03ff03ff +_08056048: .4byte gUnknown_02029828 +_0805604C: .4byte 0x01001400 +_08056050: .4byte gUnknown_03004870 + thumb_func_end mapheader_copy_mapdata_with_padding + + thumb_func_start map_copy_with_padding +map_copy_with_padding: @ 8056054 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r2, 16 + lsrs r2, 16 + ldr r0, _080560A8 @ =gUnknown_03004870 + ldr r4, [r0, 0x8] + ldr r1, [r0] + lsls r0, r1, 3 + subs r0, r1 + lsls r0, 1 + adds r0, 0xE + adds r4, r0 + cmp r2, 0 + beq _0805609C + mov r0, r8 + lsls r6, r0, 1 + adds r5, r2, 0 + movs r0, 0x1E + adds r0, r6 + mov r9, r0 +_08056088: + adds r0, r7, 0 + adds r1, r4, 0 + mov r2, r8 + bl CpuSet + add r4, r9 + adds r7, r6 + subs r5, 0x1 + cmp r5, 0 + bne _08056088 +_0805609C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080560A8: .4byte gUnknown_03004870 + thumb_func_end map_copy_with_padding + + thumb_func_start sub_80560AC +sub_80560AC: @ 80560AC + push {r4-r7,lr} + adds r6, r0, 0 + ldr r0, [r6, 0xC] + ldr r1, [r0] + ldr r5, [r0, 0x4] + ldr r2, _080560E0 @ =gUnknown_0202E850 + ldr r0, _080560E4 @ =gUnknown_08308E28 + ldr r0, [r0] + str r0, [r2] + cmp r1, 0 + ble _0805612C + adds r4, r2, 0 + adds r7, r1, 0 +_080560C6: + adds r0, r5, 0 + bl mapconnection_get_mapheader + adds r1, r0, 0 + ldr r2, [r5, 0x4] + ldrb r0, [r5] + cmp r0, 0x2 + beq _080560FE + cmp r0, 0x2 + bgt _080560E8 + cmp r0, 0x1 + beq _080560F2 + b _08056124 + .align 2, 0 +_080560E0: .4byte gUnknown_0202E850 +_080560E4: .4byte gUnknown_08308E28 +_080560E8: + cmp r0, 0x3 + beq _0805610A + cmp r0, 0x4 + beq _08056116 + b _08056124 +_080560F2: + adds r0, r6, 0 + bl sub_8056198 + ldrb r0, [r4] + movs r1, 0x1 + b _08056120 +_080560FE: + adds r0, r6, 0 + bl sub_8056200 + ldrb r0, [r4] + movs r1, 0x2 + b _08056120 +_0805610A: + adds r0, r6, 0 + bl sub_8056260 + ldrb r0, [r4] + movs r1, 0x4 + b _08056120 +_08056116: + adds r0, r6, 0 + bl sub_80562C0 + ldrb r0, [r4] + movs r1, 0x8 +_08056120: + orrs r0, r1 + strb r0, [r4] +_08056124: + subs r7, 0x1 + adds r5, 0xC + cmp r7, 0 + bne _080560C6 +_0805612C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80560AC + + thumb_func_start sub_8056134 +sub_8056134: @ 8056134 + push {r4-r7,lr} + mov r7, r8 + push {r7} + ldr r5, [sp, 0x18] + ldr r4, [r2] + ldr r7, [r4] + adds r2, r7, 0 + muls r2, r5 + adds r2, r3 + lsls r2, 1 + ldr r3, [r4, 0xC] + adds r6, r3, r2 + ldr r3, _08056190 @ =gUnknown_03004870 + ldr r2, [r3] + muls r1, r2 + adds r1, r0 + lsls r1, 1 + ldr r0, [r3, 0x8] + adds r5, r0, r1 + ldr r0, [sp, 0x20] + cmp r0, 0 + ble _08056186 + adds r4, r0, 0 + ldr r3, _08056194 @ =0x001fffff + mov r8, r3 +_08056166: + adds r0, r6, 0 + adds r1, r5, 0 + ldr r2, [sp, 0x1C] + mov r3, r8 + ands r2, r3 + bl CpuSet + ldr r0, _08056190 @ =gUnknown_03004870 + ldr r0, [r0] + lsls r0, 1 + adds r5, r0 + lsls r0, r7, 1 + adds r6, r0 + subs r4, 0x1 + cmp r4, 0 + bne _08056166 +_08056186: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08056190: .4byte gUnknown_03004870 +_08056194: .4byte 0x001fffff + thumb_func_end sub_8056134 + + thumb_func_start sub_8056198 +sub_8056198: @ 8056198 + push {r4-r7,lr} + sub sp, 0xC + adds r3, r0, 0 + adds r5, r1, 0 + cmp r5, 0 + beq _080561F2 + ldr r0, [r5] + ldr r4, [r0] + adds r2, 0x7 + ldr r0, [r3] + ldr r0, [r0, 0x4] + adds r7, r0, 0x7 + cmp r2, 0 + bge _080561CC + negs r6, r2 + adds r2, r4 + ldr r0, _080561C8 @ =gUnknown_03004870 + ldr r3, [r0] + cmp r2, r3 + bge _080561C2 + adds r3, r2, 0 +_080561C2: + movs r2, 0 + b _080561DC + .align 2, 0 +_080561C8: .4byte gUnknown_03004870 +_080561CC: + movs r6, 0 + adds r0, r2, r4 + ldr r1, _080561FC @ =gUnknown_03004870 + ldr r1, [r1] + subs r3, r1, r2 + cmp r0, r1 + bge _080561DC + adds r3, r4, 0 +_080561DC: + movs r0, 0 + str r0, [sp] + str r3, [sp, 0x4] + movs r0, 0x7 + str r0, [sp, 0x8] + adds r0, r2, 0 + adds r1, r7, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8056134 +_080561F2: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080561FC: .4byte gUnknown_03004870 + thumb_func_end sub_8056198 + + thumb_func_start sub_8056200 +sub_8056200: @ 8056200 + push {r4-r7,lr} + sub sp, 0xC + adds r5, r1, 0 + cmp r5, 0 + beq _08056254 + ldr r0, [r5] + ldr r4, [r0] + ldr r0, [r0, 0x4] + adds r2, 0x7 + subs r7, r0, 0x7 + cmp r2, 0 + bge _08056230 + negs r6, r2 + adds r2, r4 + ldr r0, _0805622C @ =gUnknown_03004870 + ldr r3, [r0] + cmp r2, r3 + bge _08056226 + adds r3, r2, 0 +_08056226: + movs r2, 0 + b _08056240 + .align 2, 0 +_0805622C: .4byte gUnknown_03004870 +_08056230: + movs r6, 0 + adds r0, r2, r4 + ldr r1, _0805625C @ =gUnknown_03004870 + ldr r1, [r1] + subs r3, r1, r2 + cmp r0, r1 + bge _08056240 + adds r3, r4, 0 +_08056240: + str r7, [sp] + str r3, [sp, 0x4] + movs r0, 0x7 + str r0, [sp, 0x8] + adds r0, r2, 0 + movs r1, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8056134 +_08056254: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805625C: .4byte gUnknown_03004870 + thumb_func_end sub_8056200 + + thumb_func_start sub_8056260 +sub_8056260: @ 8056260 + push {r4-r7,lr} + sub sp, 0xC + adds r5, r1, 0 + cmp r5, 0 + beq _080562B4 + ldr r0, [r5] + ldr r1, [r0] + ldr r4, [r0, 0x4] + adds r2, 0x7 + subs r7, r1, 0x7 + cmp r2, 0 + bge _08056290 + negs r6, r2 + adds r1, r2, r4 + ldr r0, _0805628C @ =gUnknown_03004870 + ldr r3, [r0, 0x4] + cmp r1, r3 + bge _08056286 + adds r3, r1, 0 +_08056286: + movs r2, 0 + b _080562A0 + .align 2, 0 +_0805628C: .4byte gUnknown_03004870 +_08056290: + movs r6, 0 + adds r0, r2, r4 + ldr r1, _080562BC @ =gUnknown_03004870 + ldr r1, [r1, 0x4] + subs r3, r1, r2 + cmp r0, r1 + bge _080562A0 + adds r3, r4, 0 +_080562A0: + str r6, [sp] + movs r0, 0x7 + str r0, [sp, 0x4] + str r3, [sp, 0x8] + movs r0, 0 + adds r1, r2, 0 + adds r2, r5, 0 + adds r3, r7, 0 + bl sub_8056134 +_080562B4: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080562BC: .4byte gUnknown_03004870 + thumb_func_end sub_8056260 + + thumb_func_start sub_80562C0 +sub_80562C0: @ 80562C0 + push {r4-r7,lr} + sub sp, 0xC + adds r3, r0, 0 + adds r5, r1, 0 + cmp r5, 0 + beq _08056318 + ldr r0, [r5] + ldr r4, [r0, 0x4] + ldr r0, [r3] + ldr r0, [r0] + adds r7, r0, 0x7 + adds r2, 0x7 + cmp r2, 0 + bge _080562F4 + negs r6, r2 + adds r1, r2, r4 + ldr r0, _080562F0 @ =gUnknown_03004870 + ldr r3, [r0, 0x4] + cmp r1, r3 + bge _080562EA + adds r3, r1, 0 +_080562EA: + movs r2, 0 + b _08056304 + .align 2, 0 +_080562F0: .4byte gUnknown_03004870 +_080562F4: + movs r6, 0 + adds r0, r2, r4 + ldr r1, _08056320 @ =gUnknown_03004870 + ldr r1, [r1, 0x4] + subs r3, r1, r2 + cmp r0, r1 + bge _08056304 + adds r3, r4, 0 +_08056304: + str r6, [sp] + movs r0, 0x8 + str r0, [sp, 0x4] + str r3, [sp, 0x8] + adds r0, r7, 0 + adds r1, r2, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_8056134 +_08056318: + add sp, 0xC + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08056320: .4byte gUnknown_03004870 + thumb_func_end sub_80562C0 + + thumb_func_start MapGridGetZCoordAt +MapGridGetZCoordAt: @ 8056324 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + cmp r2, 0 + blt _08056354 + ldr r1, _08056350 @ =gUnknown_03004870 + ldr r3, [r1] + cmp r2, r3 + bge _08056354 + cmp r4, 0 + blt _08056354 + ldr r0, [r1, 0x4] + cmp r4, r0 + bge _08056354 + adds r0, r3, 0 + muls r0, r4 + adds r0, r2, r0 + ldr r1, [r1, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _08056376 + .align 2, 0 +_08056350: .4byte gUnknown_03004870 +_08056354: + ldr r0, _08056380 @ =gMapHeader + ldr r3, [r0] + adds r1, r2, 0x1 + movs r2, 0x1 + ands r1, r2 + adds r0, r4, 0x1 + ands r0, r2 + lsls r0, 1 + adds r1, r0 + ldr r0, [r3, 0x8] + lsls r1, 1 + adds r1, r0 + ldrh r1, [r1] + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2, 0 + orrs r1, r0 +_08056376: + ldr r0, _08056384 @ =0x000003ff + cmp r1, r0 + beq _08056388 + lsrs r0, r1, 12 + b _0805638A + .align 2, 0 +_08056380: .4byte gMapHeader +_08056384: .4byte 0x000003ff +_08056388: + movs r0, 0 +_0805638A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end MapGridGetZCoordAt + + thumb_func_start MapGridIsImpassableAt +MapGridIsImpassableAt: @ 8056390 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + cmp r2, 0 + blt _080563C0 + ldr r1, _080563BC @ =gUnknown_03004870 + ldr r3, [r1] + cmp r2, r3 + bge _080563C0 + cmp r4, 0 + blt _080563C0 + ldr r0, [r1, 0x4] + cmp r4, r0 + bge _080563C0 + adds r0, r3, 0 + muls r0, r4 + adds r0, r2, r0 + ldr r1, [r1, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + b _080563E2 + .align 2, 0 +_080563BC: .4byte gUnknown_03004870 +_080563C0: + ldr r0, _080563F4 @ =gMapHeader + ldr r3, [r0] + adds r1, r2, 0x1 + movs r2, 0x1 + ands r1, r2 + adds r0, r4, 0x1 + ands r0, r2 + lsls r0, 1 + adds r1, r0 + ldr r0, [r3, 0x8] + lsls r1, 1 + adds r1, r0 + ldrh r1, [r1] + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2, 0 + orrs r1, r0 +_080563E2: + ldr r0, _080563F8 @ =0x000003ff + cmp r1, r0 + beq _080563FC + movs r0, 0xC0 + lsls r0, 4 + ands r1, r0 + lsrs r0, r1, 10 + b _080563FE + .align 2, 0 +_080563F4: .4byte gMapHeader +_080563F8: .4byte 0x000003ff +_080563FC: + movs r0, 0x1 +_080563FE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end MapGridIsImpassableAt + + thumb_func_start MapGridGetMetatileIdAt +MapGridGetMetatileIdAt: @ 8056404 + push {r4-r6,lr} + adds r5, r0, 0 + adds r6, r1, 0 + cmp r5, 0 + blt _08056434 + ldr r1, _08056430 @ =gUnknown_03004870 + ldr r2, [r1] + cmp r5, r2 + bge _08056434 + cmp r6, 0 + blt _08056434 + ldr r0, [r1, 0x4] + cmp r6, r0 + bge _08056434 + adds r0, r2, 0 + muls r0, r6 + adds r0, r5, r0 + ldr r1, [r1, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r4, [r0] + b _08056458 + .align 2, 0 +_08056430: .4byte gUnknown_03004870 +_08056434: + ldr r0, _08056464 @ =gMapHeader + ldr r3, [r0] + adds r1, r5, 0x1 + movs r2, 0x1 + ands r1, r2 + adds r0, r6, 0x1 + ands r0, r2 + lsls r0, 1 + adds r1, r0 + ldr r0, [r3, 0x8] + lsls r1, 1 + adds r1, r0 + ldrh r1, [r1] + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2, 0 + adds r4, r0, 0 + orrs r4, r1 +_08056458: + ldr r0, _08056468 @ =0x000003ff + cmp r4, r0 + beq _0805646C + ands r4, r0 + adds r0, r4, 0 + b _08056490 + .align 2, 0 +_08056464: .4byte gMapHeader +_08056468: .4byte 0x000003ff +_0805646C: + ldr r0, _08056498 @ =gMapHeader + ldr r3, [r0] + adds r1, r5, 0x1 + movs r2, 0x1 + ands r1, r2 + adds r0, r6, 0x1 + ands r0, r2 + lsls r0, 1 + adds r1, r0 + ldr r0, [r3, 0x8] + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + movs r2, 0xC0 + lsls r2, 4 + adds r1, r2, 0 + orrs r0, r1 + ands r0, r4 +_08056490: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_08056498: .4byte gMapHeader + thumb_func_end MapGridGetMetatileIdAt + + thumb_func_start MapGridGetMetatileBehaviorAt +MapGridGetMetatileBehaviorAt: @ 805649C + push {lr} + bl MapGridGetMetatileIdAt + lsls r0, 16 + lsrs r0, 16 + bl GetBehaviorByMetatileId + adds r1, r0, 0 + movs r0, 0xFF + ands r0, r1 + pop {r1} + bx r1 + thumb_func_end MapGridGetMetatileBehaviorAt + + thumb_func_start MapGridGetMetatileLayerTypeAt +MapGridGetMetatileLayerTypeAt: @ 80564B4 + push {lr} + bl MapGridGetMetatileIdAt + lsls r0, 16 + lsrs r0, 16 + bl GetBehaviorByMetatileId + adds r1, r0, 0 + movs r0, 0xF0 + lsls r0, 8 + ands r0, r1 + lsrs r0, 12 + pop {r1} + bx r1 + thumb_func_end MapGridGetMetatileLayerTypeAt + + thumb_func_start MapGridSetMetatileIdAt +MapGridSetMetatileIdAt: @ 80564D0 + push {r4,r5,lr} + adds r3, r0, 0 + lsls r2, 16 + lsrs r5, r2, 16 + cmp r3, 0 + blt _08056508 + ldr r2, _08056510 @ =gUnknown_03004870 + ldr r4, [r2] + cmp r3, r4 + bge _08056508 + cmp r1, 0 + blt _08056508 + ldr r0, [r2, 0x4] + cmp r1, r0 + bge _08056508 + muls r1, r4 + adds r1, r3, r1 + ldr r0, [r2, 0x8] + lsls r1, 1 + adds r1, r0 + ldrh r0, [r1] + movs r2, 0xF0 + lsls r2, 8 + ands r2, r0 + ldr r0, _08056514 @ =0x00000fff + ands r0, r5 + orrs r2, r0 + strh r2, [r1] +_08056508: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08056510: .4byte gUnknown_03004870 +_08056514: .4byte 0x00000fff + thumb_func_end MapGridSetMetatileIdAt + + thumb_func_start MapGridSetMetatileEntryAt +MapGridSetMetatileEntryAt: @ 8056518 + push {r4,r5,lr} + adds r3, r0, 0 + lsls r2, 16 + lsrs r5, r2, 16 + cmp r3, 0 + blt _08056544 + ldr r2, _0805654C @ =gUnknown_03004870 + ldr r4, [r2] + cmp r3, r4 + bge _08056544 + cmp r1, 0 + blt _08056544 + ldr r0, [r2, 0x4] + cmp r1, r0 + bge _08056544 + adds r0, r4, 0 + muls r0, r1 + adds r0, r3, r0 + ldr r1, [r2, 0x8] + lsls r0, 1 + adds r0, r1 + strh r5, [r0] +_08056544: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0805654C: .4byte gUnknown_03004870 + thumb_func_end MapGridSetMetatileEntryAt + + thumb_func_start GetBehaviorByMetatileId +GetBehaviorByMetatileId: @ 8056550 + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + adds r3, r2, 0 + ldr r0, _0805656C @ =0x000001ff + cmp r2, r0 + bhi _08056574 + ldr r0, _08056570 @ =gMapHeader + ldr r0, [r0] + ldr r0, [r0, 0x10] + ldr r1, [r0, 0x10] + lsls r0, r2, 1 + b _08056592 + .align 2, 0 +_0805656C: .4byte 0x000001ff +_08056570: .4byte gMapHeader +_08056574: + ldr r0, _08056580 @ =0x000003ff + cmp r2, r0 + bls _08056584 + movs r0, 0xFF + b _08056596 + .align 2, 0 +_08056580: .4byte 0x000003ff +_08056584: + ldr r0, _0805659C @ =gMapHeader + ldr r0, [r0] + ldr r0, [r0, 0x14] + ldr r1, [r0, 0x10] + lsls r0, r3, 1 + adds r0, r1 + ldr r1, _080565A0 @ =0xfffffc00 +_08056592: + adds r0, r1 + ldrh r0, [r0] +_08056596: + pop {r1} + bx r1 + .align 2, 0 +_0805659C: .4byte gMapHeader +_080565A0: .4byte 0xfffffc00 + thumb_func_end GetBehaviorByMetatileId + + thumb_func_start save_serialize_map +save_serialize_map: @ 80565A4 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r5, _0805660C @ =gSaveBlock1 + 0x34 + ldr r0, _08056610 @ =gUnknown_03004870 + ldr r0, [r0] + mov r8, r0 + adds r0, r5, 0 + subs r0, 0x34 + movs r1, 0 + ldrsh r6, [r0, r1] + movs r2, 0x2 + ldrsh r0, [r0, r2] + adds r1, r0, 0 + adds r1, 0xE + cmp r0, r1 + bge _080565FE + mov r12, r1 + ldr r1, _08056614 @ =gUnknown_02029828 + mov r9, r1 + lsls r7, r6, 1 +_080565D0: + adds r1, r6, 0 + adds r3, r1, 0 + adds r3, 0xF + adds r4, r0, 0x1 + cmp r1, r3 + bge _080565F8 + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 1 + add r0, r9 + adds r2, r7, r0 + subs r1, r3, r1 +_080565EA: + ldrh r0, [r2] + strh r0, [r5] + adds r5, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bne _080565EA +_080565F8: + adds r0, r4, 0 + cmp r0, r12 + blt _080565D0 +_080565FE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805660C: .4byte gSaveBlock1 + 0x34 +_08056610: .4byte gUnknown_03004870 +_08056614: .4byte gUnknown_02029828 + thumb_func_end save_serialize_map + + thumb_func_start sub_8056618 +sub_8056618: @ 8056618 + push {r4,lr} + movs r2, 0 + movs r1, 0 + ldr r4, _0805663C @ =gSaveBlock1 + 0x34 + ldr r3, _08056640 @ =0x000001ff +_08056622: + lsls r0, r1, 1 + adds r0, r4 + ldrh r0, [r0] + orrs r2, r0 + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r3 + bls _08056622 + cmp r2, 0 + beq _08056644 + movs r0, 0 + b _08056646 + .align 2, 0 +_0805663C: .4byte gSaveBlock1 + 0x34 +_08056640: .4byte 0x000001ff +_08056644: + movs r0, 0x1 +_08056646: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8056618 + + thumb_func_start sav2_mapdata_clear +sav2_mapdata_clear: @ 805664C + push {lr} + sub sp, 0x4 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, _08056668 @ =gSaveBlock1 + 0x34 + ldr r2, _0805666C @ =0x01000100 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_08056668: .4byte gSaveBlock1 + 0x34 +_0805666C: .4byte 0x01000100 + thumb_func_end sav2_mapdata_clear + + thumb_func_start sub_8056670 +sub_8056670: @ 8056670 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r5, _080566E4 @ =gSaveBlock1 + 0x34 + bl sub_8056618 + cmp r0, 0 + bne _080566D6 + ldr r0, _080566E8 @ =gUnknown_03004870 + ldr r0, [r0] + mov r8, r0 + adds r0, r5, 0 + subs r0, 0x34 + movs r1, 0 + ldrsh r6, [r0, r1] + movs r2, 0x2 + ldrsh r0, [r0, r2] + adds r1, r0, 0 + adds r1, 0xE + cmp r0, r1 + bge _080566D2 + mov r12, r1 + ldr r1, _080566EC @ =gUnknown_02029828 + mov r9, r1 + lsls r7, r6, 1 +_080566A4: + adds r1, r6, 0 + adds r3, r1, 0 + adds r3, 0xF + adds r4, r0, 0x1 + cmp r1, r3 + bge _080566CC + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + lsls r0, 1 + add r0, r9 + adds r2, r7, r0 + subs r1, r3, r1 +_080566BE: + ldrh r0, [r5] + strh r0, [r2] + adds r5, 0x2 + adds r2, 0x2 + subs r1, 0x1 + cmp r1, 0 + bne _080566BE +_080566CC: + adds r0, r4, 0 + cmp r0, r12 + blt _080566A4 +_080566D2: + bl sav2_mapdata_clear +_080566D6: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080566E4: .4byte gSaveBlock1 + 0x34 +_080566E8: .4byte gUnknown_03004870 +_080566EC: .4byte gUnknown_02029828 + thumb_func_end sub_8056670 + + thumb_func_start sub_80566F0 +sub_80566F0: @ 80566F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + ldr r0, _08056734 @ =gSaveBlock1 + 0x34 + mov r10, r0 + ldr r0, _08056738 @ =gUnknown_03004870 + ldr r0, [r0] + str r0, [sp] + movs r3, 0 + mov r9, r3 + mov r8, r3 + mov r0, r10 + subs r0, 0x34 + movs r6, 0 + ldrsh r4, [r0, r6] + str r4, [sp, 0x4] + movs r3, 0x2 + ldrsh r5, [r0, r3] + movs r7, 0xF + movs r4, 0xE + mov r12, r4 + cmp r1, 0x2 + beq _08056746 + cmp r1, 0x2 + bgt _0805673C + cmp r1, 0x1 + beq _0805674E + b _08056766 + .align 2, 0 +_08056734: .4byte gSaveBlock1 + 0x34 +_08056738: .4byte gUnknown_03004870 +_0805673C: + cmp r2, 0x3 + beq _08056758 + cmp r2, 0x4 + beq _08056760 + b _08056766 +_08056746: + adds r5, 0x1 + movs r6, 0xD + mov r12, r6 + b _08056766 +_0805674E: + movs r0, 0x1 + mov r8, r0 + movs r1, 0xD + mov r12, r1 + b _08056766 +_08056758: + ldr r3, [sp, 0x4] + adds r3, 0x1 + str r3, [sp, 0x4] + b _08056764 +_08056760: + movs r4, 0x1 + mov r9, r4 +_08056764: + movs r7, 0xE +_08056766: + movs r1, 0 + cmp r1, r12 + bge _080567A8 +_0805676C: + adds r4, r1, 0x1 + cmp r7, 0 + beq _080567A2 + adds r0, r1, r5 + ldr r6, [sp] + adds r2, r6, 0 + muls r2, r0 + add r1, r8 + lsls r0, r1, 4 + subs r0, r1 + add r0, r9 + ldr r1, [sp, 0x4] + adds r2, r1, r2 + adds r3, r7, 0 + lsls r2, 1 + ldr r6, _080567BC @ =gUnknown_02029828 + adds r2, r6 + lsls r0, 1 + mov r6, r10 + adds r1, r0, r6 +_08056794: + ldrh r0, [r1] + strh r0, [r2] + adds r1, 0x2 + adds r2, 0x2 + subs r3, 0x1 + cmp r3, 0 + bne _08056794 +_080567A2: + adds r1, r4, 0 + cmp r1, r12 + blt _0805676C +_080567A8: + bl sav2_mapdata_clear + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080567BC: .4byte gUnknown_02029828 + thumb_func_end sub_80566F0 + + thumb_func_start GetMapBorderIdAt +GetMapBorderIdAt: @ 80567C0 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + cmp r4, 0 + blt _080567FC + ldr r1, _080567F4 @ =gUnknown_03004870 + ldr r2, [r1] + cmp r4, r2 + bge _080567FC + cmp r5, 0 + blt _080567FC + ldr r0, [r1, 0x4] + cmp r5, r0 + bge _080567FC + adds r0, r2, 0 + muls r0, r5 + adds r0, r4, r0 + ldr r1, [r1, 0x8] + lsls r0, 1 + adds r0, r1 + ldrh r1, [r0] + ldr r0, _080567F8 @ =0x000003ff + cmp r1, r0 + beq _08056894 + b _08056824 + .align 2, 0 +_080567F4: .4byte gUnknown_03004870 +_080567F8: .4byte 0x000003ff +_080567FC: + ldr r0, _08056840 @ =gMapHeader + ldr r3, [r0] + adds r1, r4, 0x1 + movs r2, 0x1 + ands r1, r2 + adds r0, r5, 0x1 + ands r0, r2 + lsls r0, 1 + adds r1, r0 + ldr r0, [r3, 0x8] + lsls r1, 1 + adds r1, r0 + ldrh r1, [r1] + movs r2, 0xC0 + lsls r2, 4 + adds r0, r2, 0 + orrs r0, r1 + ldr r1, _08056844 @ =0x000003ff + cmp r0, r1 + beq _08056894 +_08056824: + ldr r1, _08056848 @ =gUnknown_03004870 + ldr r0, [r1] + subs r0, 0x8 + cmp r4, r0 + blt _08056850 + ldr r0, _0805684C @ =gUnknown_0202E850 + ldrb r1, [r0] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08056894 + movs r0, 0x4 + b _080568A6 + .align 2, 0 +_08056840: .4byte gMapHeader +_08056844: .4byte 0x000003ff +_08056848: .4byte gUnknown_03004870 +_0805684C: .4byte gUnknown_0202E850 +_08056850: + cmp r4, 0x6 + bgt _08056868 + ldr r0, _08056864 @ =gUnknown_0202E850 + ldrb r1, [r0] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08056894 + movs r0, 0x3 + b _080568A6 + .align 2, 0 +_08056864: .4byte gUnknown_0202E850 +_08056868: + ldr r0, [r1, 0x4] + subs r0, 0x7 + cmp r5, r0 + blt _08056884 + ldr r0, _08056880 @ =gUnknown_0202E850 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08056894 + movs r0, 0x1 + b _080568A6 + .align 2, 0 +_08056880: .4byte gUnknown_0202E850 +_08056884: + cmp r5, 0x6 + bgt _080568A4 + ldr r0, _0805689C @ =gUnknown_0202E850 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080568A0 +_08056894: + movs r0, 0x1 + negs r0, r0 + b _080568A6 + .align 2, 0 +_0805689C: .4byte gUnknown_0202E850 +_080568A0: + movs r0, 0x2 + b _080568A6 +_080568A4: + movs r0, 0 +_080568A6: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end GetMapBorderIdAt + + thumb_func_start GetPostCameraMoveMapBorderId +GetPostCameraMoveMapBorderId: @ 80568AC + push {r4,lr} + adds r3, r1, 0 + ldr r1, _080568D0 @ =gSaveBlock1 + movs r4, 0 + ldrsh r2, [r1, r4] + adds r0, 0x7 + adds r2, r0 + movs r0, 0x2 + ldrsh r1, [r1, r0] + adds r3, 0x7 + adds r1, r3 + adds r0, r2, 0 + bl GetMapBorderIdAt + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_080568D0: .4byte gSaveBlock1 + thumb_func_end GetPostCameraMoveMapBorderId + + thumb_func_start CanCameraMoveInDirection +CanCameraMoveInDirection: @ 80568D4 + push {r4,r5,lr} + ldr r4, _08056908 @ =gSaveBlock1 + movs r1, 0 + ldrsh r3, [r4, r1] + ldr r2, _0805690C @ =gUnknown_0821664C + lsls r0, 3 + adds r1, r0, r2 + ldr r1, [r1] + adds r1, 0x7 + adds r3, r1 + movs r5, 0x2 + ldrsh r1, [r4, r5] + adds r2, 0x4 + adds r0, r2 + ldr r0, [r0] + adds r0, 0x7 + adds r1, r0 + adds r0, r3, 0 + bl GetMapBorderIdAt + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _08056910 + movs r0, 0x1 + b _08056912 + .align 2, 0 +_08056908: .4byte gSaveBlock1 +_0805690C: .4byte gUnknown_0821664C +_08056910: + movs r0, 0 +_08056912: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end CanCameraMoveInDirection + + thumb_func_start sub_8056918 +sub_8056918: @ 8056918 + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + bl mapconnection_get_mapheader + adds r3, r0, 0 + cmp r4, 0x2 + beq _08056978 + cmp r4, 0x2 + bgt _08056936 + cmp r4, 0x1 + beq _08056964 + b _08056988 +_08056936: + cmp r4, 0x3 + beq _08056950 + cmp r4, 0x4 + bne _08056988 + ldr r1, _0805694C @ =gSaveBlock1 + negs r0, r6 + strh r0, [r1] + ldr r2, [r5, 0x4] + ldrh r0, [r1, 0x2] + subs r0, r2 + b _08056986 + .align 2, 0 +_0805694C: .4byte gSaveBlock1 +_08056950: + ldr r1, _08056960 @ =gSaveBlock1 + ldr r0, [r3] + ldr r0, [r0] + strh r0, [r1] + ldr r2, [r5, 0x4] + ldrh r0, [r1, 0x2] + subs r0, r2 + b _08056986 + .align 2, 0 +_08056960: .4byte gSaveBlock1 +_08056964: + ldr r1, _08056974 @ =gSaveBlock1 + ldr r2, [r5, 0x4] + ldrh r0, [r1] + subs r0, r2 + strh r0, [r1] + negs r0, r7 + b _08056986 + .align 2, 0 +_08056974: .4byte gSaveBlock1 +_08056978: + ldr r1, _08056990 @ =gSaveBlock1 + ldr r2, [r5, 0x4] + ldrh r0, [r1] + subs r0, r2 + strh r0, [r1] + ldr r0, [r3] + ldr r0, [r0, 0x4] +_08056986: + strh r0, [r1, 0x2] +_08056988: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08056990: .4byte gSaveBlock1 + thumb_func_end sub_8056918 + + thumb_func_start CameraMove +CameraMove: @ 8056994 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + mov r10, r0 + str r1, [sp] + ldr r1, _080569D4 @ =gUnknown_0202E844 + ldrb r0, [r1] + movs r1, 0x2 + negs r1, r1 + ands r1, r0 + ldr r2, _080569D4 @ =gUnknown_0202E844 + strb r1, [r2] + mov r0, r10 + ldr r1, [sp] + bl GetPostCameraMoveMapBorderId + adds r7, r0, 0 + adds r0, r7, 0x1 + cmp r0, 0x1 + bhi _080569DC + ldr r0, _080569D8 @ =gSaveBlock1 + ldrh r1, [r0] + add r1, r10 + strh r1, [r0] + ldrh r1, [r0, 0x2] + ldr r2, [sp] + adds r1, r2 + strh r1, [r0, 0x2] + b _08056A42 + .align 2, 0 +_080569D4: .4byte gUnknown_0202E844 +_080569D8: .4byte gSaveBlock1 +_080569DC: + bl save_serialize_map + ldr r5, _08056A5C @ =gSaveBlock1 + movs r0, 0 + ldrsh r6, [r5, r0] + movs r2, 0x2 + ldrsh r1, [r5, r2] + mov r8, r1 + lsls r0, r7, 24 + lsrs r0, 24 + mov r9, r0 + adds r1, r6, 0 + mov r2, r8 + bl sub_8056A64 + adds r4, r0, 0 + adds r1, r7, 0 + mov r2, r10 + ldr r3, [sp] + bl sub_8056918 + ldrb r0, [r4, 0x8] + ldrb r1, [r4, 0x9] + bl sub_80538F0 + ldr r1, _08056A60 @ =gUnknown_0202E844 + ldrb r0, [r1] + movs r1, 0x1 + orrs r0, r1 + ldr r2, _08056A60 @ =gUnknown_0202E844 + strb r0, [r2] + movs r1, 0 + ldrsh r0, [r5, r1] + subs r6, r0 + str r6, [r2, 0x4] + movs r2, 0x2 + ldrsh r0, [r5, r2] + mov r1, r8 + subs r1, r0 + ldr r2, _08056A60 @ =gUnknown_0202E844 + str r1, [r2, 0x8] + ldrh r0, [r5] + add r0, r10 + strh r0, [r5] + ldrh r0, [r5, 0x2] + ldr r1, [sp] + adds r0, r1 + strh r0, [r5, 0x2] + mov r0, r9 + bl sub_80566F0 +_08056A42: + ldr r0, _08056A60 @ =gUnknown_0202E844 + ldrb r0, [r0] + lsls r0, 31 + lsrs r0, 31 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08056A5C: .4byte gSaveBlock1 +_08056A60: .4byte gUnknown_0202E844 + thumb_func_end CameraMove + + thumb_func_start sub_8056A64 +sub_8056A64: @ 8056A64 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r9, r1 + mov r8, r2 + lsls r0, 24 + lsrs r6, r0, 24 + ldr r0, _08056AA0 @ =gMapHeader + ldr r0, [r0, 0xC] + ldr r7, [r0] + ldr r4, [r0, 0x4] + movs r5, 0 + cmp r5, r7 + bge _08056AAC +_08056A82: + ldrb r0, [r4] + cmp r0, r6 + bne _08056AA4 + adds r0, r6, 0 + mov r1, r9 + mov r2, r8 + adds r3, r4, 0 + bl sub_8056ABC + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08056AA4 + adds r0, r4, 0 + b _08056AAE + .align 2, 0 +_08056AA0: .4byte gMapHeader +_08056AA4: + adds r5, 0x1 + adds r4, 0xC + cmp r5, r7 + blt _08056A82 +_08056AAC: + movs r0, 0 +_08056AAE: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8056A64 + + thumb_func_start sub_8056ABC +sub_8056ABC: @ 8056ABC + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r7, r1, 0 + mov r8, r2 + adds r5, r3, 0 + lsls r0, 24 + lsrs r4, r0, 24 + adds r6, r4, 0 + adds r0, r5, 0 + bl mapconnection_get_mapheader + adds r2, r0, 0 + cmp r4, 0x1 + blt _08056B14 + cmp r4, 0x2 + bgt _08056AF4 + ldr r0, _08056AF0 @ =gMapHeader + ldr r0, [r0] + ldr r1, [r0] + ldr r0, [r2] + ldr r2, [r0] + ldr r3, [r5, 0x4] + adds r0, r7, 0 + b _08056B06 + .align 2, 0 +_08056AF0: .4byte gMapHeader +_08056AF4: + cmp r6, 0x4 + bgt _08056B14 + ldr r0, _08056B10 @ =gMapHeader + ldr r0, [r0] + ldr r1, [r0, 0x4] + ldr r0, [r2] + ldr r2, [r0, 0x4] + ldr r3, [r5, 0x4] + mov r0, r8 +_08056B06: + bl sub_8056B20 + lsls r0, 24 + lsrs r0, 24 + b _08056B16 + .align 2, 0 +_08056B10: .4byte gMapHeader +_08056B14: + movs r0, 0 +_08056B16: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8056ABC + + thumb_func_start sub_8056B20 +sub_8056B20: @ 8056B20 + push {r4,lr} + adds r4, r0, 0 + adds r0, r2, 0 + adds r2, r3, 0 + cmp r3, 0 + bge _08056B2E + movs r3, 0 +_08056B2E: + adds r2, r0, r2 + cmp r2, r1 + bge _08056B36 + adds r1, r2, 0 +_08056B36: + cmp r3, r4 + bgt _08056B42 + cmp r4, r1 + bgt _08056B42 + movs r0, 0x1 + b _08056B44 +_08056B42: + movs r0, 0 +_08056B44: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8056B20 + + thumb_func_start sub_8056B4C +sub_8056B4C: @ 8056B4C + push {lr} + cmp r0, 0 + blt _08056B5A + cmp r0, r1 + bge _08056B5A + movs r0, 0x1 + b _08056B5C +_08056B5A: + movs r0, 0 +_08056B5C: + pop {r1} + bx r1 + thumb_func_end sub_8056B4C + + thumb_func_start sub_8056B60 +sub_8056B60: @ 8056B60 + push {r4-r6,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + bl mapconnection_get_mapheader + adds r1, r0, 0 + ldrb r0, [r4] + cmp r0, 0x1 + blt _08056B98 + cmp r0, 0x2 + bgt _08056B86 + ldr r0, [r4, 0x4] + subs r0, r5, r0 + ldr r1, [r1] + ldr r1, [r1] + bl sub_8056B4C + b _08056B9A +_08056B86: + cmp r0, 0x4 + bgt _08056B98 + ldr r0, [r4, 0x4] + subs r0, r6, r0 + ldr r1, [r1] + ldr r1, [r1, 0x4] + bl sub_8056B4C + b _08056B9A +_08056B98: + movs r0, 0 +_08056B9A: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8056B60 + + thumb_func_start sub_8056BA0 +sub_8056BA0: @ 8056BA0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _08056BC0 @ =gMapHeader + ldr r0, [r2, 0xC] + cmp r0, 0 + bne _08056BC8 + b _08056C3E + .align 2, 0 +_08056BC0: .4byte gMapHeader +_08056BC4: + adds r0, r4, 0 + b _08056C40 +_08056BC8: + ldr r7, [r0] + ldr r4, [r0, 0x4] + movs r6, 0 + cmp r6, r7 + bge _08056C3E + lsls r0, r1, 16 + asrs r5, r0, 16 + mov r9, r2 + mov r1, r8 + lsls r0, r1, 16 + asrs r0, 16 + mov r10, r0 +_08056BE0: + ldrb r1, [r4] + adds r3, r1, 0 + subs r0, r1, 0x5 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08056C36 + cmp r1, 0x2 + bne _08056BF6 + cmp r5, 0x6 + bgt _08056C36 +_08056BF6: + cmp r1, 0x1 + bne _08056C06 + mov r2, r9 + ldr r0, [r2] + ldr r0, [r0, 0x4] + adds r0, 0x7 + cmp r5, r0 + blt _08056C36 +_08056C06: + mov r0, r8 + lsls r2, r0, 16 + cmp r1, 0x3 + bne _08056C14 + mov r1, r10 + cmp r1, 0x6 + bgt _08056C36 +_08056C14: + cmp r3, 0x4 + bne _08056C26 + asrs r1, r2, 16 + mov r3, r9 + ldr r0, [r3] + ldr r0, [r0] + adds r0, 0x7 + cmp r1, r0 + blt _08056C36 +_08056C26: + asrs r1, r2, 16 + subs r1, 0x7 + adds r0, r4, 0 + subs r2, r5, 0x7 + bl sub_8056B60 + cmp r0, 0x1 + beq _08056BC4 +_08056C36: + adds r6, 0x1 + adds r4, 0xC + cmp r6, r7 + blt _08056BE0 +_08056C3E: + movs r0, 0 +_08056C40: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8056BA0 + + thumb_func_start sub_8056C50 +sub_8056C50: @ 8056C50 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + ldr r2, _08056C64 @ =gSaveBlock1 + subs r0, 0x7 + strh r0, [r2] + subs r1, 0x7 + strh r1, [r2, 0x2] + bx lr + .align 2, 0 +_08056C64: .4byte gSaveBlock1 + thumb_func_end sub_8056C50 + + thumb_func_start sav1_camera_get_focus_coords +sav1_camera_get_focus_coords: @ 8056C68 + ldr r3, _08056C78 @ =gSaveBlock1 + ldrh r2, [r3] + adds r2, 0x7 + strh r2, [r0] + ldrh r0, [r3, 0x2] + adds r0, 0x7 + strh r0, [r1] + bx lr + .align 2, 0 +_08056C78: .4byte gSaveBlock1 + thumb_func_end sav1_camera_get_focus_coords + + thumb_func_start unref_sub_8056C7C +unref_sub_8056C7C: @ 8056C7C + ldr r2, _08056C84 @ =gSaveBlock1 + strh r0, [r2] + strh r1, [r2, 0x2] + bx lr + .align 2, 0 +_08056C84: .4byte gSaveBlock1 + thumb_func_end unref_sub_8056C7C + + thumb_func_start GetCameraCoords +GetCameraCoords: @ 8056C88 + ldr r3, _08056C94 @ =gSaveBlock1 + ldrh r2, [r3] + strh r2, [r0] + ldrh r0, [r3, 0x2] + strh r0, [r1] + bx lr + .align 2, 0 +_08056C94: .4byte gSaveBlock1 + thumb_func_end GetCameraCoords + + thumb_func_start sub_8056C98 +sub_8056C98: @ 8056C98 + push {lr} + adds r2, r0, 0 + cmp r2, 0 + beq _08056CB8 + ldrb r0, [r2] + cmp r0, 0 + bne _08056CB2 + ldr r0, [r2, 0x4] + movs r2, 0x80 + lsls r2, 5 + bl CpuFastSet + b _08056CB8 +_08056CB2: + ldr r0, [r2, 0x4] + bl LZ77UnCompVram +_08056CB8: + pop {r0} + bx r0 + thumb_func_end sub_8056C98 + + thumb_func_start sub_8056CBC +sub_8056CBC: @ 8056CBC + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + cmp r4, 0 + beq _08056D1E + ldrb r1, [r4, 0x1] + cmp r1, 0 + bne _08056CEE + mov r0, sp + strh r1, [r0] + lsls r1, r5, 16 + lsrs r1, 16 + movs r2, 0x2 + bl LoadPalette + ldr r0, [r4, 0x8] + adds r0, 0x2 + adds r1, r5, 0x1 + lsls r1, 16 + lsrs r1, 16 + subs r2, r6, 0x2 + lsls r2, 16 + b _08056CFC +_08056CEE: + cmp r1, 0x1 + bne _08056D04 + ldr r0, [r4, 0x8] + adds r0, 0xC0 + lsls r1, r5, 16 + lsrs r1, 16 + lsls r2, r6, 16 +_08056CFC: + lsrs r2, 16 + bl LoadPalette + b _08056D1E +_08056D04: + ldr r0, [r4, 0x8] + movs r4, 0x80 + lsls r4, 18 + adds r1, r4, 0 + bl LZ77UnCompVram + lsls r1, r5, 16 + lsrs r1, 16 + lsls r2, r6, 16 + lsrs r2, 16 + adds r0, r4, 0 + bl LoadPalette +_08056D1E: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8056CBC + + thumb_func_start sub_8056D28 +sub_8056D28: @ 8056D28 + push {lr} + movs r1, 0xC0 + lsls r1, 19 + ldr r0, [r0, 0x10] + bl sub_8056C98 + pop {r0} + bx r0 + thumb_func_end sub_8056D28 + + thumb_func_start sub_8056D38 +sub_8056D38: @ 8056D38 + push {lr} + ldr r1, _08056D48 @ =0x06004000 + ldr r0, [r0, 0x14] + bl sub_8056C98 + pop {r0} + bx r0 + .align 2, 0 +_08056D48: .4byte 0x06004000 + thumb_func_end sub_8056D38 + + thumb_func_start apply_map_tileset1_palette +apply_map_tileset1_palette: @ 8056D4C + push {lr} + ldr r0, [r0, 0x10] + movs r1, 0 + movs r2, 0xC0 + bl sub_8056CBC + pop {r0} + bx r0 + thumb_func_end apply_map_tileset1_palette + + thumb_func_start apply_map_tileset2_palette +apply_map_tileset2_palette: @ 8056D5C + push {lr} + ldr r0, [r0, 0x14] + movs r1, 0x60 + movs r2, 0xC0 + bl sub_8056CBC + pop {r0} + bx r0 + thumb_func_end apply_map_tileset2_palette + + thumb_func_start copy_map_tileset1_tileset2_to_vram +copy_map_tileset1_tileset2_to_vram: @ 8056D6C + push {r4,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _08056D7E + bl sub_8056D28 + adds r0, r4, 0 + bl sub_8056D38 +_08056D7E: + pop {r4} + pop {r0} + bx r0 + thumb_func_end copy_map_tileset1_tileset2_to_vram + + thumb_func_start apply_map_tileset1_tileset2_palette +apply_map_tileset1_tileset2_palette: @ 8056D84 + push {r4,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _08056D96 + bl apply_map_tileset1_palette + adds r0, r4, 0 + bl apply_map_tileset2_palette +_08056D96: + pop {r4} + pop {r0} + bx r0 + thumb_func_end apply_map_tileset1_tileset2_palette + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/metatile_behavior.s b/asm/metatile_behavior.s new file mode 100644 index 000000000..2607b8b3b --- /dev/null +++ b/asm/metatile_behavior.s @@ -0,0 +1,2345 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_8056D9C +sub_8056D9C: @ 8056D9C + movs r0, 0x1 + bx lr + thumb_func_end sub_8056D9C + + thumb_func_start sub_8056DA0 +sub_8056DA0: @ 8056DA0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08056DB8 @ =gUnknown_08308E2C + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08056DBC + movs r0, 0 + b _08056DBE + .align 2, 0 +_08056DB8: .4byte gUnknown_08308E2C +_08056DBC: + movs r0, 0x1 +_08056DBE: + pop {r1} + bx r1 + thumb_func_end sub_8056DA0 + + thumb_func_start MetatileBehavior_IsJumpEast +MetatileBehavior_IsJumpEast: @ 8056DC4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x38 + beq _08056DD2 + movs r0, 0 + b _08056DD4 +_08056DD2: + movs r0, 0x1 +_08056DD4: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsJumpEast + + thumb_func_start MetatileBehavior_IsJumpWest +MetatileBehavior_IsJumpWest: @ 8056DD8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x39 + beq _08056DE6 + movs r0, 0 + b _08056DE8 +_08056DE6: + movs r0, 0x1 +_08056DE8: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsJumpWest + + thumb_func_start MetatileBehavior_IsJumpNorth +MetatileBehavior_IsJumpNorth: @ 8056DEC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3A + beq _08056DFA + movs r0, 0 + b _08056DFC +_08056DFA: + movs r0, 0x1 +_08056DFC: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsJumpNorth + + thumb_func_start MetatileBehavior_IsJumpSouth +MetatileBehavior_IsJumpSouth: @ 8056E00 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3B + beq _08056E0E + movs r0, 0 + b _08056E10 +_08056E0E: + movs r0, 0x1 +_08056E10: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsJumpSouth + + thumb_func_start sub_8056E14 +sub_8056E14: @ 8056E14 + push {lr} + lsls r0, 24 + movs r1, 0xFE + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bls _08056E28 + movs r0, 0 + b _08056E2A +_08056E28: + movs r0, 0x1 +_08056E2A: + pop {r1} + bx r1 + thumb_func_end sub_8056E14 + + thumb_func_start MetatileBehavior_IsSandOrDeepSand +MetatileBehavior_IsSandOrDeepSand: @ 8056E30 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x21 + beq _08056E3E + cmp r0, 0x6 + bne _08056E42 +_08056E3E: + movs r0, 0x1 + b _08056E44 +_08056E42: + movs r0, 0 +_08056E44: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSandOrDeepSand + + thumb_func_start MetatileBehavior_IsDeepSand +MetatileBehavior_IsDeepSand: @ 8056E48 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + beq _08056E56 + movs r0, 0 + b _08056E58 +_08056E56: + movs r0, 0x1 +_08056E58: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsDeepSand + + thumb_func_start MetatileBehavior_IsReflective +MetatileBehavior_IsReflective: @ 8056E5C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _08056E7A + cmp r0, 0x16 + beq _08056E7A + cmp r0, 0x1A + beq _08056E7A + cmp r0, 0x20 + beq _08056E7A + cmp r0, 0x14 + beq _08056E7A + cmp r0, 0x2B + bne _08056E7E +_08056E7A: + movs r0, 0x1 + b _08056E80 +_08056E7E: + movs r0, 0 +_08056E80: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsReflective + + thumb_func_start MetatileBehavior_IsIce +MetatileBehavior_IsIce: @ 8056E84 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x20 + beq _08056E92 + movs r0, 0 + b _08056E94 +_08056E92: + movs r0, 0x1 +_08056E94: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsIce + + thumb_func_start is_tile_x69_2_warp_door +is_tile_x69_2_warp_door: @ 8056E98 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x69 + beq _08056EA6 + movs r0, 0 + b _08056EA8 +_08056EA6: + movs r0, 0x1 +_08056EA8: + pop {r1} + bx r1 + thumb_func_end is_tile_x69_2_warp_door + + thumb_func_start sub_8056EAC +sub_8056EAC: @ 8056EAC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8D + beq _08056EBA + cmp r0, 0x69 + bne _08056EBE +_08056EBA: + movs r0, 0x1 + b _08056EC0 +_08056EBE: + movs r0, 0 +_08056EC0: + pop {r1} + bx r1 + thumb_func_end sub_8056EAC + + thumb_func_start MetatileBehavior_IsEscalator +MetatileBehavior_IsEscalator: @ 8056EC4 + push {lr} + lsls r0, 24 + movs r1, 0x96 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bls _08056ED8 + movs r0, 0 + b _08056EDA +_08056ED8: + movs r0, 0x1 +_08056EDA: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsEscalator + + thumb_func_start unref_sub_8056EE0 +unref_sub_8056EE0: @ 8056EE0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x4 + beq _08056EEE + movs r0, 0 + b _08056EF0 +_08056EEE: + movs r0, 0x1 +_08056EF0: + pop {r1} + bx r1 + thumb_func_end unref_sub_8056EE0 + + thumb_func_start MetatileBehavior_IsLadder +MetatileBehavior_IsLadder: @ 8056EF4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x61 + beq _08056F02 + movs r0, 0 + b _08056F04 +_08056F02: + movs r0, 0x1 +_08056F04: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsLadder + + thumb_func_start sub_8056F08 +sub_8056F08: @ 8056F08 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x60 + beq _08056F1A + cmp r0, 0x6C + beq _08056F1A + cmp r0, 0x6E + bne _08056F1E +_08056F1A: + movs r0, 0x1 + b _08056F20 +_08056F1E: + movs r0, 0 +_08056F20: + pop {r1} + bx r1 + thumb_func_end sub_8056F08 + + thumb_func_start sub_8056F24 +sub_8056F24: @ 8056F24 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6E + beq _08056F32 + movs r0, 0 + b _08056F34 +_08056F32: + movs r0, 0x1 +_08056F34: + pop {r1} + bx r1 + thumb_func_end sub_8056F24 + + thumb_func_start MetatileBehavior_IsSurfableWaterOrUnderwater +MetatileBehavior_IsSurfableWaterOrUnderwater: @ 8056F38 + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08056F50 @ =gUnknown_08308E2C + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _08056F54 + movs r0, 0 + b _08056F56 + .align 2, 0 +_08056F50: .4byte gUnknown_08308E2C +_08056F54: + movs r0, 0x1 +_08056F56: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSurfableWaterOrUnderwater + + thumb_func_start MetatileBehavior_IsEastArrowWarp +MetatileBehavior_IsEastArrowWarp: @ 8056F5C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x62 + beq _08056F6A + movs r0, 0 + b _08056F6C +_08056F6A: + movs r0, 0x1 +_08056F6C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsEastArrowWarp + + thumb_func_start MetatileBehavior_IsWestArrowWarp +MetatileBehavior_IsWestArrowWarp: @ 8056F70 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x63 + beq _08056F7E + movs r0, 0 + b _08056F80 +_08056F7E: + movs r0, 0x1 +_08056F80: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWestArrowWarp + + thumb_func_start MetatileBehavior_IsNorthArrowWarp +MetatileBehavior_IsNorthArrowWarp: @ 8056F84 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x64 + beq _08056F92 + cmp r0, 0x1B + bne _08056F96 +_08056F92: + movs r0, 0x1 + b _08056F98 +_08056F96: + movs r0, 0 +_08056F98: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsNorthArrowWarp + + thumb_func_start MetatileBehavior_IsSouthArrowWarp +MetatileBehavior_IsSouthArrowWarp: @ 8056F9C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x65 + beq _08056FAE + cmp r0, 0x6D + beq _08056FAE + cmp r0, 0x1C + bne _08056FB2 +_08056FAE: + movs r0, 0x1 + b _08056FB4 +_08056FB2: + movs r0, 0 +_08056FB4: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSouthArrowWarp + + thumb_func_start unref_sub_8056FB8 +unref_sub_8056FB8: @ 8056FB8 + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + movs r5, 0 + adds r0, r4, 0 + bl MetatileBehavior_IsEastArrowWarp + lsls r0, 24 + cmp r0, 0 + bne _08056FF0 + adds r0, r4, 0 + bl MetatileBehavior_IsWestArrowWarp + lsls r0, 24 + cmp r0, 0 + bne _08056FF0 + adds r0, r4, 0 + bl MetatileBehavior_IsNorthArrowWarp + lsls r0, 24 + cmp r0, 0 + bne _08056FF0 + adds r0, r4, 0 + bl MetatileBehavior_IsSouthArrowWarp + lsls r0, 24 + cmp r0, 0 + beq _08056FF2 +_08056FF0: + movs r5, 0x1 +_08056FF2: + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end unref_sub_8056FB8 + + thumb_func_start sub_8056FFC +sub_8056FFC: @ 8056FFC + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xC0 + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x8 + bls _08057032 + adds r0, r1, 0 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bls _08057032 + cmp r1, 0xD0 + beq _08057032 + cmp r1, 0xD2 + beq _08057032 + cmp r1, 0x13 + beq _08057032 + cmp r1, 0x20 + beq _08057032 + cmp r1, 0xBB + beq _08057032 + cmp r1, 0xBC + bne _08057036 +_08057032: + movs r0, 0x1 + b _08057038 +_08057036: + movs r0, 0 +_08057038: + pop {r1} + bx r1 + thumb_func_end sub_8056FFC + + thumb_func_start MetatileBehavior_IsIce_2 +MetatileBehavior_IsIce_2: @ 805703C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x20 + beq _0805704A + movs r0, 0 + b _0805704C +_0805704A: + movs r0, 0x1 +_0805704C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsIce_2 + + thumb_func_start MetatileBehavior_IsTrickHouseSlipperyFloor +MetatileBehavior_IsTrickHouseSlipperyFloor: @ 8057050 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x48 + beq _0805705E + movs r0, 0 + b _08057060 +_0805705E: + movs r0, 0x1 +_08057060: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsTrickHouseSlipperyFloor + + thumb_func_start MetatileBehavior_0x05 +MetatileBehavior_0x05: @ 8057064 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + beq _08057072 + movs r0, 0 + b _08057074 +_08057072: + movs r0, 0x1 +_08057074: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_0x05 + + thumb_func_start MetatileBehavior_IsWalkNorth +MetatileBehavior_IsWalkNorth: @ 8057078 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x42 + beq _08057086 + movs r0, 0 + b _08057088 +_08057086: + movs r0, 0x1 +_08057088: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWalkNorth + + thumb_func_start MetatileBehavior_IsWalkSouth +MetatileBehavior_IsWalkSouth: @ 805708C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x43 + beq _0805709A + movs r0, 0 + b _0805709C +_0805709A: + movs r0, 0x1 +_0805709C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWalkSouth + + thumb_func_start MetatileBehavior_IsWalkWest +MetatileBehavior_IsWalkWest: @ 80570A0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x41 + beq _080570AE + movs r0, 0 + b _080570B0 +_080570AE: + movs r0, 0x1 +_080570B0: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWalkWest + + thumb_func_start MetatileBehavior_IsWalkEast +MetatileBehavior_IsWalkEast: @ 80570B4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _080570C2 + movs r0, 0 + b _080570C4 +_080570C2: + movs r0, 0x1 +_080570C4: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWalkEast + + thumb_func_start MetatileBehavior_IsNorthwardCurrent +MetatileBehavior_IsNorthwardCurrent: @ 80570C8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x52 + beq _080570D6 + movs r0, 0 + b _080570D8 +_080570D6: + movs r0, 0x1 +_080570D8: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsNorthwardCurrent + + thumb_func_start MetatileBehavior_IsSouthwardCurrent +MetatileBehavior_IsSouthwardCurrent: @ 80570DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x53 + beq _080570EA + movs r0, 0 + b _080570EC +_080570EA: + movs r0, 0x1 +_080570EC: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSouthwardCurrent + + thumb_func_start MetatileBehavior_IsWestwardCurrent +MetatileBehavior_IsWestwardCurrent: @ 80570F0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x51 + beq _080570FE + movs r0, 0 + b _08057100 +_080570FE: + movs r0, 0x1 +_08057100: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWestwardCurrent + + thumb_func_start MetatileBehavior_IsEastwardCurrent +MetatileBehavior_IsEastwardCurrent: @ 8057104 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x50 + beq _08057112 + movs r0, 0 + b _08057114 +_08057112: + movs r0, 0x1 +_08057114: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsEastwardCurrent + + thumb_func_start MetatileBehavior_IsSlideNorth +MetatileBehavior_IsSlideNorth: @ 8057118 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x46 + beq _08057126 + movs r0, 0 + b _08057128 +_08057126: + movs r0, 0x1 +_08057128: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSlideNorth + + thumb_func_start MetatileBehavior_IsSlideSouth +MetatileBehavior_IsSlideSouth: @ 805712C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x47 + beq _0805713A + movs r0, 0 + b _0805713C +_0805713A: + movs r0, 0x1 +_0805713C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSlideSouth + + thumb_func_start MetatileBehavior_IsSlideWest +MetatileBehavior_IsSlideWest: @ 8057140 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x45 + beq _0805714E + movs r0, 0 + b _08057150 +_0805714E: + movs r0, 0x1 +_08057150: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSlideWest + + thumb_func_start MetatileBehavior_IsSlideEast +MetatileBehavior_IsSlideEast: @ 8057154 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x44 + beq _08057162 + movs r0, 0 + b _08057164 +_08057162: + movs r0, 0x1 +_08057164: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSlideEast + + thumb_func_start MetatileBehavior_IsCounter +MetatileBehavior_IsCounter: @ 8057168 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x80 + beq _08057176 + movs r0, 0 + b _08057178 +_08057176: + movs r0, 0x1 +_08057178: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsCounter + + thumb_func_start MetatileBehavior_IsPlayerFacingTVScreen +MetatileBehavior_IsPlayerFacingTVScreen: @ 805717C + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r1, 24 + cmp r1, 0x2 + bne _0805718E + cmp r0, 0x86 + beq _08057192 +_0805718E: + movs r0, 0 + b _08057194 +_08057192: + movs r0, 0x1 +_08057194: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsPlayerFacingTVScreen + + thumb_func_start MetatileBehavior_IsPC +MetatileBehavior_IsPC: @ 8057198 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x83 + beq _080571A6 + movs r0, 0 + b _080571A8 +_080571A6: + movs r0, 0x1 +_080571A8: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsPC + + thumb_func_start is_tile_x84 +is_tile_x84: @ 80571AC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x84 + beq _080571BA + movs r0, 0 + b _080571BC +_080571BA: + movs r0, 0x1 +_080571BC: + pop {r1} + bx r1 + thumb_func_end is_tile_x84 + + thumb_func_start sub_80571C0 +sub_80571C0: @ 80571C0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x91 + beq _080571E2 + cmp r0, 0x93 + beq _080571E2 + cmp r0, 0x95 + beq _080571E2 + cmp r0, 0x97 + beq _080571E2 + cmp r0, 0x99 + beq _080571E2 + cmp r0, 0x9B + beq _080571E2 + cmp r0, 0x9D + bne _080571E6 +_080571E2: + movs r0, 0x1 + b _080571E8 +_080571E6: + movs r0, 0 +_080571E8: + pop {r1} + bx r1 + thumb_func_end sub_80571C0 + + thumb_func_start sub_80571EC +sub_80571EC: @ 80571EC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x90 + beq _08057202 + cmp r0, 0x92 + beq _08057202 + cmp r0, 0x94 + beq _08057202 + cmp r0, 0x9A + bne _08057206 +_08057202: + movs r0, 0x1 + b _08057208 +_08057206: + movs r0, 0 +_08057208: + pop {r1} + bx r1 + thumb_func_end sub_80571EC + + thumb_func_start sub_805720C +sub_805720C: @ 805720C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x96 + beq _0805721A + cmp r0, 0x9C + bne _0805721E +_0805721A: + movs r0, 0x1 + b _08057220 +_0805721E: + movs r0, 0 +_08057220: + pop {r1} + bx r1 + thumb_func_end sub_805720C + + thumb_func_start is_tile_x98 +is_tile_x98: @ 8057224 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x98 + beq _08057232 + movs r0, 0 + b _08057234 +_08057232: + movs r0, 0x1 +_08057234: + pop {r1} + bx r1 + thumb_func_end is_tile_x98 + + thumb_func_start sub_8057238 +sub_8057238: @ 8057238 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB0 + beq _08057246 + movs r0, 0 + b _08057248 +_08057246: + movs r0, 0x1 +_08057248: + pop {r1} + bx r1 + thumb_func_end sub_8057238 + + thumb_func_start sub_805724C +sub_805724C: @ 805724C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB1 + beq _0805725A + movs r0, 0 + b _0805725C +_0805725A: + movs r0, 0x1 +_0805725C: + pop {r1} + bx r1 + thumb_func_end sub_805724C + + thumb_func_start unref_sub_8057260 +unref_sub_8057260: @ 8057260 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB2 + beq _0805726E + movs r0, 0 + b _08057270 +_0805726E: + movs r0, 0x1 +_08057270: + pop {r1} + bx r1 + thumb_func_end unref_sub_8057260 + + thumb_func_start sub_8057274 +sub_8057274: @ 8057274 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB3 + beq _08057282 + movs r0, 0 + b _08057284 +_08057282: + movs r0, 0x1 +_08057284: + pop {r1} + bx r1 + thumb_func_end sub_8057274 + + thumb_func_start sub_8057288 +sub_8057288: @ 8057288 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB9 + beq _08057296 + movs r0, 0 + b _08057298 +_08057296: + movs r0, 0x1 +_08057298: + pop {r1} + bx r1 + thumb_func_end sub_8057288 + + thumb_func_start sub_805729C +sub_805729C: @ 805729C + push {lr} + lsls r0, 24 + cmp r0, 0 + beq _080572A8 + movs r0, 0 + b _080572AA +_080572A8: + movs r0, 0x1 +_080572AA: + pop {r1} + bx r1 + thumb_func_end sub_805729C + + thumb_func_start sub_80572B0 +sub_80572B0: @ 80572B0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB7 + beq _080572BE + movs r0, 0 + b _080572C0 +_080572BE: + movs r0, 0x1 +_080572C0: + pop {r1} + bx r1 + thumb_func_end sub_80572B0 + + thumb_func_start unref_sub_80572C4 +unref_sub_80572C4: @ 80572C4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB2 + beq _080572D2 + movs r0, 0 + b _080572D4 +_080572D2: + movs r0, 0x1 +_080572D4: + pop {r1} + bx r1 + thumb_func_end unref_sub_80572C4 + + thumb_func_start sub_80572D8 +sub_80572D8: @ 80572D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB5 + beq _080572E6 + movs r0, 0 + b _080572E8 +_080572E6: + movs r0, 0x1 +_080572E8: + pop {r1} + bx r1 + thumb_func_end sub_80572D8 + + thumb_func_start sub_80572EC +sub_80572EC: @ 80572EC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xC3 + beq _080572FA + movs r0, 0 + b _080572FC +_080572FA: + movs r0, 0x1 +_080572FC: + pop {r1} + bx r1 + thumb_func_end sub_80572EC + + thumb_func_start sub_8057300 +sub_8057300: @ 8057300 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xC2 + beq _0805730E + movs r0, 0 + b _08057310 +_0805730E: + movs r0, 0x1 +_08057310: + pop {r1} + bx r1 + thumb_func_end sub_8057300 + + thumb_func_start sub_8057314 +sub_8057314: @ 8057314 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB8 + beq _08057322 + movs r0, 0 + b _08057324 +_08057322: + movs r0, 0x1 +_08057324: + pop {r1} + bx r1 + thumb_func_end sub_8057314 + + thumb_func_start sub_8057328 +sub_8057328: @ 8057328 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xBE + beq _08057336 + movs r0, 0 + b _08057338 +_08057336: + movs r0, 0x1 +_08057338: + pop {r1} + bx r1 + thumb_func_end sub_8057328 + + thumb_func_start sub_805733C +sub_805733C: @ 805733C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xBD + beq _0805734A + movs r0, 0 + b _0805734C +_0805734A: + movs r0, 0x1 +_0805734C: + pop {r1} + bx r1 + thumb_func_end sub_805733C + + thumb_func_start sub_8057350 +sub_8057350: @ 8057350 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xBA + beq _0805735E + movs r0, 0 + b _08057360 +_0805735E: + movs r0, 0x1 +_08057360: + pop {r1} + bx r1 + thumb_func_end sub_8057350 + + thumb_func_start sub_8057364 +sub_8057364: @ 8057364 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xBF + beq _08057372 + movs r0, 0 + b _08057374 +_08057372: + movs r0, 0x1 +_08057374: + pop {r1} + bx r1 + thumb_func_end sub_8057364 + + thumb_func_start sub_8057378 +sub_8057378: @ 8057378 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xC4 + beq _08057386 + movs r0, 0 + b _08057388 +_08057386: + movs r0, 0x1 +_08057388: + pop {r1} + bx r1 + thumb_func_end sub_8057378 + + thumb_func_start sub_805738C +sub_805738C: @ 805738C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xC5 + beq _0805739A + movs r0, 0 + b _0805739C +_0805739A: + movs r0, 0x1 +_0805739C: + pop {r1} + bx r1 + thumb_func_end sub_805738C + + thumb_func_start MetatileBehavior_HasRipples +MetatileBehavior_HasRipples: @ 80573A0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _080573B2 + cmp r0, 0x16 + beq _080573B2 + cmp r0, 0x14 + bne _080573B6 +_080573B2: + movs r0, 0x1 + b _080573B8 +_080573B6: + movs r0, 0 +_080573B8: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_HasRipples + + thumb_func_start MetatileBehavior_IsPuddle +MetatileBehavior_IsPuddle: @ 80573BC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x16 + beq _080573CA + movs r0, 0 + b _080573CC +_080573CA: + movs r0, 0x1 +_080573CC: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsPuddle + + thumb_func_start MetatileBehavior_IsTallGrass +MetatileBehavior_IsTallGrass: @ 80573D0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + beq _080573DE + movs r0, 0 + b _080573E0 +_080573DE: + movs r0, 0x1 +_080573E0: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsTallGrass + + thumb_func_start MetatileBehavior_IsLongGrass +MetatileBehavior_IsLongGrass: @ 80573E4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _080573F2 + movs r0, 0 + b _080573F4 +_080573F2: + movs r0, 0x1 +_080573F4: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsLongGrass + + thumb_func_start MetatileBehavior_IsBerryTreeSoil +MetatileBehavior_IsBerryTreeSoil: @ 80573F8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA0 + beq _08057406 + movs r0, 0 + b _08057408 +_08057406: + movs r0, 0x1 +_08057408: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsBerryTreeSoil + + thumb_func_start MetatileBehavior_IsAsh +MetatileBehavior_IsAsh: @ 805740C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x24 + beq _0805741A + movs r0, 0 + b _0805741C +_0805741A: + movs r0, 0x1 +_0805741C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsAsh + + thumb_func_start MetatileBehavior_IsUnusedFootprintMetatile +MetatileBehavior_IsUnusedFootprintMetatile: @ 8057420 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x25 + beq _0805742E + movs r0, 0 + b _08057430 +_0805742E: + movs r0, 0x1 +_08057430: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsUnusedFootprintMetatile + + thumb_func_start MetatileBehavior_IsBridge +MetatileBehavior_IsBridge: @ 8057434 + push {lr} + lsls r0, 24 + movs r1, 0x90 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x3 + bls _08057448 + movs r0, 0 + b _0805744A +_08057448: + movs r0, 0x1 +_0805744A: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsBridge + + thumb_func_start sub_8057450 +sub_8057450: @ 8057450 + push {lr} + lsls r0, 24 + movs r1, 0x90 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x3 + bls _08057462 + movs r0, 0 +_08057462: + pop {r1} + bx r1 + thumb_func_end sub_8057450 + + thumb_func_start MetatileBehavior_IsLandWildEncounter +MetatileBehavior_IsLandWildEncounter: @ 8057468 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl MetatileBehavior_IsSurfableWaterOrUnderwater + lsls r0, 24 + cmp r0, 0 + bne _0805748C + adds r0, r4, 0 + bl sub_8056DA0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0805748C + movs r0, 0x1 + b _0805748E +_0805748C: + movs r0, 0 +_0805748E: + pop {r4} + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsLandWildEncounter + + thumb_func_start MetatileBehavior_IsWaterWildEncounter +MetatileBehavior_IsWaterWildEncounter: @ 8057494 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl MetatileBehavior_IsSurfableWaterOrUnderwater + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080574BA + adds r0, r4, 0 + bl sub_8056DA0 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080574BA + movs r0, 0x1 + b _080574BC +_080574BA: + movs r0, 0 +_080574BC: + pop {r4} + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWaterWildEncounter + + thumb_func_start sub_80574C4 +sub_80574C4: @ 80574C4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xB + beq _080574D2 + movs r0, 0 + b _080574D4 +_080574D2: + movs r0, 0x1 +_080574D4: + pop {r1} + bx r1 + thumb_func_end sub_80574C4 + + thumb_func_start sub_80574D8 +sub_80574D8: @ 80574D8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xC + beq _080574E6 + movs r0, 0 + b _080574E8 +_080574E6: + movs r0, 0x1 +_080574E8: + pop {r1} + bx r1 + thumb_func_end sub_80574D8 + + thumb_func_start sub_80574EC +sub_80574EC: @ 80574EC + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xEF + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x1 + bls _08057502 + cmp r1, 0x14 + bne _08057506 +_08057502: + movs r0, 0x1 + b _08057508 +_08057506: + movs r0, 0 +_08057508: + pop {r1} + bx r1 + thumb_func_end sub_80574EC + + thumb_func_start sub_805750C +sub_805750C: @ 805750C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x19 + beq _0805751A + cmp r0, 0x2A + bne _0805751E +_0805751A: + movs r0, 0x1 + b _08057520 +_0805751E: + movs r0, 0 +_08057520: + pop {r1} + bx r1 + thumb_func_end sub_805750C + + thumb_func_start MetatileBehavior_IsShallowFlowingWater +MetatileBehavior_IsShallowFlowingWater: @ 8057524 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x17 + beq _08057536 + cmp r0, 0x1B + beq _08057536 + cmp r0, 0x1C + bne _0805753A +_08057536: + movs r0, 0x1 + b _0805753C +_0805753A: + movs r0, 0 +_0805753C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsShallowFlowingWater + + thumb_func_start sub_8057540 +sub_8057540: @ 8057540 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x26 + beq _0805754E + movs r0, 0 + b _08057550 +_0805754E: + movs r0, 0x1 +_08057550: + pop {r1} + bx r1 + thumb_func_end sub_8057540 + + thumb_func_start sub_8057554 +sub_8057554: @ 8057554 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x27 + beq _08057562 + movs r0, 0 + b _08057564 +_08057562: + movs r0, 0x1 +_08057564: + pop {r1} + bx r1 + thumb_func_end sub_8057554 + + thumb_func_start sub_8057568 +sub_8057568: @ 8057568 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x15 + beq _0805757A + cmp r0, 0x11 + beq _0805757A + cmp r0, 0x12 + bne _0805757E +_0805757A: + movs r0, 0x1 + b _08057580 +_0805757E: + movs r0, 0 +_08057580: + pop {r1} + bx r1 + thumb_func_end sub_8057568 + + thumb_func_start unref_sub_8057584 +unref_sub_8057584: @ 8057584 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x18 + beq _08057592 + cmp r0, 0x1A + bne _08057596 +_08057592: + movs r0, 0x1 + b _08057598 +_08057596: + movs r0, 0 +_08057598: + pop {r1} + bx r1 + thumb_func_end unref_sub_8057584 + + thumb_func_start sub_805759C +sub_805759C: @ 805759C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl MetatileBehavior_IsSurfableWaterOrUnderwater + lsls r0, 24 + cmp r0, 0 + beq _080575BE + adds r0, r4, 0 + bl MetatileBehavior_IsWaterfall + lsls r0, 24 + cmp r0, 0 + bne _080575BE + movs r0, 0x1 + b _080575C0 +_080575BE: + movs r0, 0 +_080575C0: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_805759C + + thumb_func_start MetatileBehavior_IsEastBlocked +MetatileBehavior_IsEastBlocked: @ 80575C8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x30 + beq _080575E2 + cmp r0, 0x34 + beq _080575E2 + cmp r0, 0x36 + beq _080575E2 + cmp r0, 0xC1 + beq _080575E2 + cmp r0, 0xBE + bne _080575E6 +_080575E2: + movs r0, 0x1 + b _080575E8 +_080575E6: + movs r0, 0 +_080575E8: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsEastBlocked + + thumb_func_start MetatileBehavior_IsWestBlocked +MetatileBehavior_IsWestBlocked: @ 80575EC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x31 + beq _08057606 + cmp r0, 0x35 + beq _08057606 + cmp r0, 0x37 + beq _08057606 + cmp r0, 0xC1 + beq _08057606 + cmp r0, 0xBE + bne _0805760A +_08057606: + movs r0, 0x1 + b _0805760C +_0805760A: + movs r0, 0 +_0805760C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWestBlocked + + thumb_func_start MetatileBehavior_IsNorthBlocked +MetatileBehavior_IsNorthBlocked: @ 8057610 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x32 + beq _08057626 + cmp r0, 0x34 + beq _08057626 + cmp r0, 0x35 + beq _08057626 + cmp r0, 0xC0 + bne _0805762A +_08057626: + movs r0, 0x1 + b _0805762C +_0805762A: + movs r0, 0 +_0805762C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsNorthBlocked + + thumb_func_start MetatileBehavior_IsSouthBlocked +MetatileBehavior_IsSouthBlocked: @ 8057630 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x33 + beq _08057646 + cmp r0, 0x36 + beq _08057646 + cmp r0, 0x37 + beq _08057646 + cmp r0, 0xC0 + bne _0805764A +_08057646: + movs r0, 0x1 + b _0805764C +_0805764A: + movs r0, 0 +_0805764C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSouthBlocked + + thumb_func_start MetatileBehavior_IsShortGrass +MetatileBehavior_IsShortGrass: @ 8057650 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x7 + beq _0805765E + movs r0, 0 + b _08057660 +_0805765E: + movs r0, 0x1 +_08057660: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsShortGrass + + thumb_func_start MetatileBehavior_IsHotSprings +MetatileBehavior_IsHotSprings: @ 8057664 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x28 + beq _08057672 + movs r0, 0 + b _08057674 +_08057672: + movs r0, 0x1 +_08057674: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsHotSprings + + thumb_func_start MetatileBehavior_IsWaterfall +MetatileBehavior_IsWaterfall: @ 8057678 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x13 + beq _08057686 + movs r0, 0 + b _08057688 +_08057686: + movs r0, 0x1 +_08057688: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsWaterfall + + thumb_func_start MetatileBehavior_IsFortreeBridge +MetatileBehavior_IsFortreeBridge: @ 805768C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x78 + beq _0805769A + movs r0, 0 + b _0805769C +_0805769A: + movs r0, 0x1 +_0805769C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsFortreeBridge + + thumb_func_start sub_80576A0 +sub_80576A0: @ 80576A0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x74 + beq _080576AE + movs r0, 0 + b _080576B0 +_080576AE: + movs r0, 0x1 +_080576B0: + pop {r1} + bx r1 + thumb_func_end sub_80576A0 + + thumb_func_start sub_80576B4 +sub_80576B4: @ 80576B4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x75 + beq _080576C2 + movs r0, 0 + b _080576C4 +_080576C2: + movs r0, 0x1 +_080576C4: + pop {r1} + bx r1 + thumb_func_end sub_80576B4 + + thumb_func_start sub_80576C8 +sub_80576C8: @ 80576C8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x76 + beq _080576D6 + movs r0, 0 + b _080576D8 +_080576D6: + movs r0, 0x1 +_080576D8: + pop {r1} + bx r1 + thumb_func_end sub_80576C8 + + thumb_func_start sub_80576DC +sub_80576DC: @ 80576DC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x77 + beq _080576EA + movs r0, 0 + b _080576EC +_080576EA: + movs r0, 0x1 +_080576EC: + pop {r1} + bx r1 + thumb_func_end sub_80576DC + + thumb_func_start MetatileBehavior_IsPacifidlogLog +MetatileBehavior_IsPacifidlogLog: @ 80576F0 + push {lr} + lsls r0, 24 + movs r1, 0x8C + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x3 + bls _08057704 + movs r0, 0 + b _08057706 +_08057704: + movs r0, 0x1 +_08057706: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsPacifidlogLog + + thumb_func_start is_tile_x8C +is_tile_x8C: @ 805770C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8C + beq _0805771A + movs r0, 0 + b _0805771C +_0805771A: + movs r0, 0x1 +_0805771C: + pop {r1} + bx r1 + thumb_func_end is_tile_x8C + + thumb_func_start is_tile_x85 +is_tile_x85: @ 8057720 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x85 + beq _0805772E + movs r0, 0 + b _08057730 +_0805772E: + movs r0, 0x1 +_08057730: + pop {r1} + bx r1 + thumb_func_end is_tile_x85 + + thumb_func_start is_tile_x8B +is_tile_x8B: @ 8057734 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8B + beq _08057742 + movs r0, 0 + b _08057744 +_08057742: + movs r0, 0x1 +_08057744: + pop {r1} + bx r1 + thumb_func_end is_tile_x8B + + thumb_func_start is_tile_x8A +is_tile_x8A: @ 8057748 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8A + beq _08057756 + movs r0, 0 + b _08057758 +_08057756: + movs r0, 0x1 +_08057758: + pop {r1} + bx r1 + thumb_func_end is_tile_x8A + + thumb_func_start is_tile_x87 +is_tile_x87: @ 805775C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x87 + beq _0805776A + movs r0, 0 + b _0805776C +_0805776A: + movs r0, 0x1 +_0805776C: + pop {r1} + bx r1 + thumb_func_end is_tile_x87 + + thumb_func_start MetatileBehavior_0xBB +MetatileBehavior_0xBB: @ 8057770 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xBB + beq _0805777E + movs r0, 0 + b _08057780 +_0805777E: + movs r0, 0x1 +_08057780: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_0xBB + + thumb_func_start MetatileBehavior_0xBC +MetatileBehavior_0xBC: @ 8057784 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xBC + beq _08057792 + movs r0, 0 + b _08057794 +_08057792: + movs r0, 0x1 +_08057794: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_0xBC + + thumb_func_start sub_8057798 +sub_8057798: @ 8057798 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x29 + beq _080577A6 + movs r0, 0 + b _080577A8 +_080577A6: + movs r0, 0x1 +_080577A8: + pop {r1} + bx r1 + thumb_func_end sub_8057798 + + thumb_func_start is_role_x68 +is_role_x68: @ 80577AC + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x68 + beq _080577BA + movs r0, 0 + b _080577BC +_080577BA: + movs r0, 0x1 +_080577BC: + pop {r1} + bx r1 + thumb_func_end is_role_x68 + + thumb_func_start MetatileBehavior_IsAquaHideoutWarp +MetatileBehavior_IsAquaHideoutWarp: @ 80577C0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x67 + beq _080577CE + movs r0, 0 + b _080577D0 +_080577CE: + movs r0, 0x1 +_080577D0: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsAquaHideoutWarp + + thumb_func_start MetatileBehavior_IsSurfableFishableWater +MetatileBehavior_IsSurfableFishableWater: @ 80577D4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x10 + beq _080577F8 + cmp r0, 0x15 + beq _080577F8 + cmp r0, 0x11 + beq _080577F8 + cmp r0, 0x12 + beq _080577F8 + cmp r0, 0x14 + beq _080577F8 + subs r0, 0x50 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _080577FC +_080577F8: + movs r0, 0x1 + b _080577FE +_080577FC: + movs r0, 0 +_080577FE: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSurfableFishableWater + + thumb_func_start sub_8057804 +sub_8057804: @ 8057804 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + beq _08057812 + movs r0, 0 + b _08057814 +_08057812: + movs r0, 0x1 +_08057814: + pop {r1} + bx r1 + thumb_func_end sub_8057804 + + thumb_func_start sub_8057818 +sub_8057818: @ 8057818 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x66 + beq _08057826 + movs r0, 0 + b _08057828 +_08057826: + movs r0, 0x1 +_08057828: + pop {r1} + bx r1 + thumb_func_end sub_8057818 + + thumb_func_start sub_805782C +sub_805782C: @ 805782C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD2 + beq _0805783A + movs r0, 0 + b _0805783C +_0805783A: + movs r0, 0x1 +_0805783C: + pop {r1} + bx r1 + thumb_func_end sub_805782C + + thumb_func_start MetatileBehavior_IsMuddySlope +MetatileBehavior_IsMuddySlope: @ 8057840 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD0 + beq _0805784E + movs r0, 0 + b _08057850 +_0805784E: + movs r0, 0x1 +_08057850: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsMuddySlope + + thumb_func_start MetatileBehavior_IsBumpySlope +MetatileBehavior_IsBumpySlope: @ 8057854 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD1 + beq _08057862 + movs r0, 0 + b _08057864 +_08057862: + movs r0, 0x1 +_08057864: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsBumpySlope + + thumb_func_start MetatileBehavior_IsIsolatedVerticalRail +MetatileBehavior_IsIsolatedVerticalRail: @ 8057868 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD3 + beq _08057876 + movs r0, 0 + b _08057878 +_08057876: + movs r0, 0x1 +_08057878: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsIsolatedVerticalRail + + thumb_func_start MetatileBehavior_IsIsolatedHorizontalRail +MetatileBehavior_IsIsolatedHorizontalRail: @ 805787C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD4 + beq _0805788A + movs r0, 0 + b _0805788C +_0805788A: + movs r0, 0x1 +_0805788C: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsIsolatedHorizontalRail + + thumb_func_start MetatileBehavior_IsVerticalRail +MetatileBehavior_IsVerticalRail: @ 8057890 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD5 + beq _0805789E + movs r0, 0 + b _080578A0 +_0805789E: + movs r0, 0x1 +_080578A0: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsVerticalRail + + thumb_func_start MetatileBehavior_IsHorizontalRail +MetatileBehavior_IsHorizontalRail: @ 80578A4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xD6 + beq _080578B2 + movs r0, 0 + b _080578B4 +_080578B2: + movs r0, 0x1 +_080578B4: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsHorizontalRail + + thumb_func_start MetatileBehavior_IsSeaweed +MetatileBehavior_IsSeaweed: @ 80578B8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x22 + beq _080578C6 + cmp r0, 0x2A + bne _080578CA +_080578C6: + movs r0, 0x1 + b _080578CC +_080578CA: + movs r0, 0 +_080578CC: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsSeaweed + + thumb_func_start MetatileBehavior_IsRunningDisallowed +MetatileBehavior_IsRunningDisallowed: @ 80578D0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xA + beq _080578EC + cmp r0, 0x3 + beq _080578EC + cmp r0, 0x28 + beq _080578EC + bl MetatileBehavior_IsPacifidlogLog + lsls r0, 24 + cmp r0, 0 + beq _080578F0 +_080578EC: + movs r0, 0x1 + b _080578F2 +_080578F0: + movs r0, 0 +_080578F2: + pop {r1} + bx r1 + thumb_func_end MetatileBehavior_IsRunningDisallowed + + thumb_func_start sub_80578F8 +sub_80578F8: @ 80578F8 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + movs r2, 0xFE + lsls r2, 24 + adds r0, r2 + lsrs r0, 24 + cmp r0, 0x1 + bls _08057912 + cmp r1, 0x24 + beq _08057912 + cmp r1, 0x9 + bne _08057916 +_08057912: + movs r0, 0x1 + b _08057918 +_08057916: + movs r0, 0 +_08057918: + pop {r1} + bx r1 + thumb_func_end sub_80578F8 + + thumb_func_start sub_805791C +sub_805791C: @ 805791C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8E + beq _0805792A + movs r0, 0 + b _0805792C +_0805792A: + movs r0, 0x1 +_0805792C: + pop {r1} + bx r1 + thumb_func_end sub_805791C + + thumb_func_start sub_8057930 +sub_8057930: @ 8057930 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE0 + beq _0805793E + movs r0, 0 + b _08057940 +_0805793E: + movs r0, 0x1 +_08057940: + pop {r1} + bx r1 + thumb_func_end sub_8057930 + + thumb_func_start sub_8057944 +sub_8057944: @ 8057944 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE1 + beq _08057952 + movs r0, 0 + b _08057954 +_08057952: + movs r0, 0x1 +_08057954: + pop {r1} + bx r1 + thumb_func_end sub_8057944 + + thumb_func_start sub_8057958 +sub_8057958: @ 8057958 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE2 + beq _08057966 + movs r0, 0 + b _08057968 +_08057966: + movs r0, 0x1 +_08057968: + pop {r1} + bx r1 + thumb_func_end sub_8057958 + + thumb_func_start sub_805796C +sub_805796C: @ 805796C + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE3 + beq _0805797A + movs r0, 0 + b _0805797C +_0805797A: + movs r0, 0x1 +_0805797C: + pop {r1} + bx r1 + thumb_func_end sub_805796C + + thumb_func_start sub_8057980 +sub_8057980: @ 8057980 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE4 + beq _0805798E + movs r0, 0 + b _08057990 +_0805798E: + movs r0, 0x1 +_08057990: + pop {r1} + bx r1 + thumb_func_end sub_8057980 + + thumb_func_start sub_8057994 +sub_8057994: @ 8057994 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE5 + beq _080579A2 + movs r0, 0 + b _080579A4 +_080579A2: + movs r0, 0x1 +_080579A4: + pop {r1} + bx r1 + thumb_func_end sub_8057994 + + thumb_func_start sub_80579A8 +sub_80579A8: @ 80579A8 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xE6 + beq _080579B6 + movs r0, 0 + b _080579B8 +_080579B6: + movs r0, 0x1 +_080579B8: + pop {r1} + bx r1 + thumb_func_end sub_80579A8 + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index cb6a6031e..a0d6fd441 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -64,7 +64,13 @@ SECTIONS { src/play_time.o(.text); src/new_game.o(.text); src/rom4.o(.text); - asm/rom4.o(.text); + asm/fieldmap.o(.text); + asm/metatile_behavior.o(.text); + asm/field_camera.o(.text); + asm/field_door.o(.text); + asm/field_player_avatar.o(.text); + asm/field_map_obj.o(.text); + asm/field_ground_effect.o(.text); src/map_obj_80643A4.o(.text); src/field_message_box.o(.text); src/map_obj_lock.o(.text); |