.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .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.