diff options
Diffstat (limited to 'asm/overworld.s')
-rw-r--r-- | asm/overworld.s | 6825 |
1 files changed, 6825 insertions, 0 deletions
diff --git a/asm/overworld.s b/asm/overworld.s new file mode 100644 index 000000000..ea03b8a8d --- /dev/null +++ b/asm/overworld.s @@ -0,0 +1,6825 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_8084620 +sub_8084620: @ 8084620 + push {r4,lr} + ldr r0, =EverGrandeCity_HallOfFame_EventScript_271857 + bl ScriptContext2_RunNewScript + ldr r0, =gSaveBlock1Ptr + ldr r4, [r0] + movs r0, 0x92 + lsls r0, 3 + adds r4, r0 + adds r0, r4, 0 + bl GetMoney + adds r1, r0, 0 + lsrs r1, 1 + adds r0, r4, 0 + bl SetMoney + bl sp000_heal_pokemon + bl sub_8084720 + bl copy_saved_warp3_bank_and_enter_x_to_warp1 + bl warp_in + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084620 + + thumb_func_start flag_var_implications_of_teleport_ +flag_var_implications_of_teleport_: @ 8084660 + push {lr} + bl player_avatar_init_params_reset + ldr r0, =0x0000088b + bl FlagClear + ldr r0, =0x0000088d + bl FlagClear + ldr r0, =0x0000088c + bl FlagClear + ldr r0, =0x00000889 + bl FlagClear + ldr r0, =0x00000888 + bl FlagClear + pop {r0} + bx r0 + .pool + thumb_func_end flag_var_implications_of_teleport_ + + thumb_func_start sub_808469C +sub_808469C: @ 808469C + push {lr} + bl player_avatar_init_params_reset + ldr r0, =0x0000088b + bl FlagClear + ldr r0, =0x0000088d + bl FlagClear + ldr r0, =0x0000088c + bl FlagClear + ldr r0, =0x00000889 + bl FlagClear + ldr r0, =0x00000888 + bl FlagClear + ldr r0, =EverGrandeCity_HallOfFame_EventScript_271862 + bl ScriptContext2_RunNewScript + pop {r0} + bx r0 + .pool + thumb_func_end sub_808469C + + thumb_func_start flagmods_08054D70 +flagmods_08054D70: @ 80846E4 + push {lr} + bl player_avatar_init_params_reset + ldr r0, =0x0000088b + bl FlagClear + ldr r0, =0x0000088d + bl FlagClear + ldr r0, =0x0000088c + bl FlagClear + ldr r0, =0x00000889 + bl FlagClear + ldr r0, =0x00000888 + bl FlagClear + pop {r0} + bx r0 + .pool + thumb_func_end flagmods_08054D70 + + thumb_func_start sub_8084720 +sub_8084720: @ 8084720 + push {r4,lr} + bl player_avatar_init_params_reset + ldr r0, =0x0000088b + bl FlagClear + ldr r0, =0x0000088d + bl FlagClear + ldr r0, =0x0000088c + bl FlagClear + ldr r0, =0x00000889 + bl FlagClear + ldr r0, =0x00000888 + bl FlagClear + ldr r4, =0x00004039 + adds r0, r4, 0 + bl VarGet + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _08084764 + adds r0, r4, 0 + movs r1, 0 + bl VarSet + ldr r0, =0x00004037 + movs r1, 0 + bl VarSet +_08084764: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084720 + + thumb_func_start sub_8084788 +sub_8084788: @ 8084788 + push {lr} + ldr r0, =0x0000088c + bl FlagClear + bl sub_8085B2C + bl wild_pokemon_reroll + bl UpdateLocationHistoryForRoamer + bl RoamerMoveToOtherLocationSet + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084788 + + thumb_func_start ResetGameStats +ResetGameStats: @ 80847A8 + push {r4,lr} + movs r4, 0 +_080847AC: + lsls r0, r4, 24 + lsrs r0, 24 + movs r1, 0 + bl sav12_xor_set + adds r4, 0x1 + cmp r4, 0x3F + ble _080847AC + pop {r4} + pop {r0} + bx r0 + thumb_func_end ResetGameStats + + thumb_func_start IncrementGameStat +@ void IncrementGameStat(u8 a1) +IncrementGameStat: @ 80847C4 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x33 + bhi _080847EC + adds r0, r4, 0 + bl GetGameStat + adds r1, r0, 0 + ldr r0, =0x00fffffe + cmp r1, r0 + bhi _080847E4 + adds r1, 0x1 + b _080847E6 + .pool +_080847E4: + ldr r1, =0x00ffffff +_080847E6: + adds r0, r4, 0 + bl sav12_xor_set +_080847EC: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end IncrementGameStat + + thumb_func_start GetGameStat +GetGameStat: @ 80847F8 + push {lr} + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x33 + bhi _08084828 + ldr r0, =gSaveBlock1Ptr + ldr r2, [r0] + lsls r0, r1, 2 + ldr r1, =0x0000159c + adds r2, r1 + adds r2, r0 + ldr r0, =gSaveBlock2Ptr + ldr r1, [r0] + adds r1, 0xAC + ldr r0, [r2] + ldr r1, [r1] + eors r0, r1 + b _0808482A + .pool +_08084828: + movs r0, 0 +_0808482A: + pop {r1} + bx r1 + thumb_func_end GetGameStat + + thumb_func_start sav12_xor_set +sav12_xor_set: @ 8084830 + push {lr} + adds r3, r1, 0 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x33 + bhi _08084854 + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + lsls r0, r2, 2 + ldr r2, =0x0000159c + adds r1, r2 + adds r1, r0 + ldr r0, =gSaveBlock2Ptr + ldr r0, [r0] + adds r0, 0xAC + ldr r0, [r0] + eors r0, r3 + str r0, [r1] +_08084854: + pop {r0} + bx r0 + .pool + thumb_func_end sav12_xor_set + + thumb_func_start ApplyNewEncryptionKeyToGameStats +ApplyNewEncryptionKeyToGameStats: @ 8084864 + push {r4-r6,lr} + adds r5, r0, 0 + movs r4, 0 + ldr r6, =gSaveBlock1Ptr +_0808486C: + lsls r1, r4, 2 + ldr r0, =0x0000159c + adds r1, r0 + ldr r0, [r6] + adds r0, r1 + adds r1, r5, 0 + bl ApplyNewEncryptionKeyToWord + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x3F + bls _0808486C + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end ApplyNewEncryptionKeyToGameStats + + thumb_func_start CopyFieldObjectTemplatesToSav1 +@ void CopyFieldObjectTemplatesToSav1() +CopyFieldObjectTemplatesToSav1: @ 8084894 + push {r4,r5,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r5, =gSaveBlock1Ptr + ldr r1, [r5] + movs r4, 0xC7 + lsls r4, 4 + adds r1, r4 + ldr r2, =0x05000180 + mov r0, sp + bl CpuSet + ldr r0, =gMapHeader + ldr r2, [r0, 0x4] + ldr r0, [r2, 0x4] + ldr r1, [r5] + adds r1, r4 + ldrb r3, [r2] + lsls r2, r3, 1 + adds r2, r3 + lsls r2, 1 + movs r3, 0x80 + lsls r3, 19 + orrs r2, r3 + bl CpuSet + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end CopyFieldObjectTemplatesToSav1 + + thumb_func_start CopyFieldObjectTemplateCoordsToSav1 +@ void CopyFieldObjectTemplateCoordsToSav1() +CopyFieldObjectTemplateCoordsToSav1: @ 80848E0 + push {lr} + ldr r0, =gMapHeader + ldr r1, [r0, 0x4] + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldr r2, [r1, 0x4] + movs r3, 0xC7 + lsls r3, 4 + adds r1, r0, r3 + movs r3, 0x3F +_080848F4: + ldr r0, [r2, 0x10] + str r0, [r1, 0x10] + adds r2, 0x18 + adds r1, 0x18 + subs r3, 0x1 + cmp r3, 0 + bge _080848F4 + pop {r0} + bx r0 + .pool + thumb_func_end CopyFieldObjectTemplateCoordsToSav1 + + thumb_func_start Overworld_SetMapObjTemplateCoords +Overworld_SetMapObjTemplateCoords: @ 8084910 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 16 + lsrs r2, 16 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + movs r1, 0 + movs r6, 0xC7 + lsls r6, 4 + adds r3, r0, r6 +_0808492A: + ldrb r0, [r3] + cmp r0, r5 + bne _0808493C + strh r4, [r3, 0x4] + strh r2, [r3, 0x6] + b _08084944 + .pool +_0808493C: + adds r3, 0x18 + adds r1, 0x1 + cmp r1, 0x3F + ble _0808492A +_08084944: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end Overworld_SetMapObjTemplateCoords + + thumb_func_start Overworld_SetMapObjTemplateMovementType +Overworld_SetMapObjTemplateMovementType: @ 808494C + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + lsls r1, 24 + lsrs r1, 24 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + movs r3, 0 + movs r5, 0xC7 + lsls r5, 4 + adds r2, r0, r5 +_08084962: + ldrb r0, [r2] + cmp r0, r4 + bne _08084970 + strb r1, [r2, 0x9] + b _08084978 + .pool +_08084970: + adds r2, 0x18 + adds r3, 0x1 + cmp r3, 0x3F + ble _08084962 +_08084978: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end Overworld_SetMapObjTemplateMovementType + + thumb_func_start mapdata_load_assets_to_gpu_and_full_redraw +mapdata_load_assets_to_gpu_and_full_redraw: @ 8084980 + push {r4,lr} + bl move_tilemap_camera_to_upper_left_corner + ldr r4, =gMapHeader + ldr r0, [r4] + bl copy_map_tileset1_tileset2_to_vram + ldr r0, [r4] + bl apply_map_tileset1_tileset2_palette + bl DrawWholeMapView + bl cur_mapheader_run_tileset_funcs_after_some_cpuset + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end mapdata_load_assets_to_gpu_and_full_redraw + + thumb_func_start get_mapdata_header +@ mapdata_header *get_mapdata_header() +get_mapdata_header: @ 80849A8 + push {lr} + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldrh r1, [r0, 0x32] + cmp r1, 0 + bne _080849BC + movs r0, 0 + b _080849C6 + .pool +_080849BC: + ldr r0, =gMapAttributes + subs r1, 0x1 + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] +_080849C6: + pop {r1} + bx r1 + .pool + thumb_func_end get_mapdata_header + + thumb_func_start warp_shift +@ void warp_shift() +warp_shift: @ 80849D0 + ldr r3, =gUnknown_020322DC + ldr r0, =gSaveBlock1Ptr + ldr r2, [r0] + ldr r0, [r2, 0x4] + ldr r1, [r2, 0x8] + str r0, [r3] + str r1, [r3, 0x4] + ldr r0, =gUnknown_020322E4 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2, 0x4] + str r1, [r2, 0x8] + ldr r2, =gUnknown_020322EC + ldr r0, =gUnknown_08339D3C + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + ldr r2, =gUnknown_020322F4 + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .pool + thumb_func_end warp_shift + + thumb_func_start set_warp2_warp3_to_neg_1 +@ void set_warp2_warp3_to_neg_1() +set_warp2_warp3_to_neg_1: @ 8084A14 + ldr r2, =gUnknown_020322EC + ldr r0, =gUnknown_08339D3C + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + ldr r2, =gUnknown_020322F4 + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .pool + thumb_func_end set_warp2_warp3_to_neg_1 + + thumb_func_start warp_set +@ void warp_set(warpdata *warp, char bank, char map, char warpid, char enter_x, char enter_y) +warp_set: @ 8084A34 + push {r4,r5,lr} + ldr r4, [sp, 0xC] + ldr r5, [sp, 0x10] + strb r1, [r0] + strb r2, [r0, 0x1] + strb r3, [r0, 0x2] + lsls r4, 24 + asrs r4, 24 + strh r4, [r0, 0x4] + lsls r5, 24 + asrs r5, 24 + strh r5, [r0, 0x6] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end warp_set + + thumb_func_start warp_data_is_not_neg_1 +@ int warp_data_is_not_neg_1(warpdata *warp) +warp_data_is_not_neg_1: @ 8084A54 + push {lr} + adds r1, r0, 0 + movs r2, 0 + ldrsb r2, [r1, r2] + movs r0, 0x1 + negs r0, r0 + cmp r2, r0 + bne _08084A88 + movs r0, 0x1 + ldrsb r0, [r1, r0] + cmp r0, r2 + bne _08084A88 + movs r2, 0x2 + ldrsb r2, [r1, r2] + cmp r2, r0 + bne _08084A88 + movs r0, 0x4 + ldrsh r3, [r1, r0] + cmp r3, r2 + bne _08084A88 + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r0, r3 + bne _08084A88 + movs r0, 0x1 + b _08084A8A +_08084A88: + movs r0, 0 +_08084A8A: + pop {r1} + bx r1 + thumb_func_end warp_data_is_not_neg_1 + + thumb_func_start get_mapheader_by_bank_and_number +@ struct mapheader *get_mapheader_by_bank_and_number(unsigned int bank, unsigned int num) +get_mapheader_by_bank_and_number: @ 8084A90 + lsls r0, 16 + lsls r1, 16 + ldr r2, =gMapGroups + lsrs r0, 14 + adds r0, r2 + ldr r0, [r0] + lsrs r1, 14 + adds r1, r0 + ldr r0, [r1] + bx lr + .pool + thumb_func_end get_mapheader_by_bank_and_number + + thumb_func_start warp1_get_mapheader +@ struct mapheader *warp1_get_mapheader() +warp1_get_mapheader: @ 8084AA8 + push {lr} + ldr r1, =gUnknown_020322E4 + movs r0, 0 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl get_mapheader_by_bank_and_number + pop {r1} + bx r1 + .pool + thumb_func_end warp1_get_mapheader + + thumb_func_start set_current_map_header_from_sav1_save_old_name +@ void set_current_map_header_from_sav1_save_old_name() +set_current_map_header_from_sav1_save_old_name: @ 8084ACC + push {r4-r6,lr} + ldr r1, =gUnknown_020322FC + ldr r4, =gMapHeader + ldrb r0, [r4, 0x14] + strh r0, [r1] + ldr r5, =gSaveBlock1Ptr + ldr r1, [r5] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl get_mapheader_by_bank_and_number + adds r1, r4, 0 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r0] + str r0, [r1] + ldr r1, [r5] + ldrh r0, [r4, 0x12] + strh r0, [r1, 0x32] + bl get_mapdata_header + str r0, [r4] + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end set_current_map_header_from_sav1_save_old_name + + thumb_func_start set_current_map_header_from_sav1 +set_current_map_header_from_sav1: @ 8084B1C + push {r4,r5,lr} + ldr r4, =gMapHeader + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl get_mapheader_by_bank_and_number + adds r1, r4, 0 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldr r0, [r0] + str r0, [r1] + bl get_mapdata_header + str r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end set_current_map_header_from_sav1 + + thumb_func_start update_camera_pos_from_warpid +@ void update_camera_pos_from_warpid() +update_camera_pos_from_warpid: @ 8084B5C + push {r4,r5,lr} + ldr r0, =gSaveBlock1Ptr + ldr r2, [r0] + movs r1, 0x6 + ldrsb r1, [r2, r1] + adds r4, r0, 0 + cmp r1, 0 + blt _08084B94 + ldr r3, =gMapHeader + ldr r0, [r3, 0x4] + ldrb r5, [r0, 0x1] + cmp r1, r5 + bge _08084B94 + ldr r0, [r0, 0x8] + lsls r1, 3 + adds r0, r1, r0 + ldrh r0, [r0] + strh r0, [r2] + ldr r0, [r3, 0x4] + ldr r0, [r0, 0x8] + adds r1, r0 + ldrh r0, [r1, 0x2] + strh r0, [r2, 0x2] + b _08084BCC + .pool +_08084B94: + ldr r1, [r4] + ldrh r3, [r1, 0x8] + movs r2, 0x8 + ldrsh r0, [r1, r2] + cmp r0, 0 + blt _08084BB0 + ldrh r2, [r1, 0xA] + movs r5, 0xA + ldrsh r0, [r1, r5] + cmp r0, 0 + blt _08084BB0 + strh r3, [r1] + strh r2, [r1, 0x2] + b _08084BCC +_08084BB0: + ldr r3, [r4] + ldr r2, =gMapHeader + ldr r0, [r2] + ldr r0, [r0] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r3] + ldr r0, [r2] + ldr r0, [r0, 0x4] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + strh r0, [r3, 0x2] +_08084BCC: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end update_camera_pos_from_warpid + + thumb_func_start warp_in +warp_in: @ 8084BD8 + push {lr} + bl warp_shift + bl set_current_map_header_from_sav1_save_old_name + bl update_camera_pos_from_warpid + pop {r0} + bx r0 + thumb_func_end warp_in + + thumb_func_start Overworld_SetWarpDestination +@ void Overworld_SetWarpDestination(char bank, char map, char warpid, char enter_x, char enter_y) +Overworld_SetWarpDestination: @ 8084BEC + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, =gUnknown_020322E4 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl warp_set + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end Overworld_SetWarpDestination + + thumb_func_start warp1_set_2 +@ void warp1_set_2(char bank, char map, char warpid) +warp1_set_2: @ 8084C28 + push {lr} + sub sp, 0x4 + lsls r0, 24 + asrs r0, 24 + lsls r1, 24 + asrs r1, 24 + lsls r2, 24 + asrs r2, 24 + movs r3, 0x1 + negs r3, r3 + str r3, [sp] + bl Overworld_SetWarpDestination + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end warp1_set_2 + + thumb_func_start saved_warp2_set +@ void saved_warp2_set(char bank, char map, char warpid) +saved_warp2_set: @ 8084C48 + push {r4,r5,lr} + sub sp, 0x8 + ldr r0, =gSaveBlock1Ptr + ldr r5, [r0] + adds r0, r5, 0 + adds r0, 0x14 + lsls r1, 24 + asrs r1, 24 + lsls r2, 24 + asrs r2, 24 + lsls r3, 24 + asrs r3, 24 + movs r4, 0 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, 0x2 + ldrsb r4, [r5, r4] + str r4, [sp, 0x4] + bl warp_set + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end saved_warp2_set + + thumb_func_start saved_warp2_set_2 +saved_warp2_set_2: @ 8084C7C + push {r4,r5,lr} + sub sp, 0x8 + ldr r4, [sp, 0x14] + ldr r5, [sp, 0x18] + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x14 + lsls r1, 24 + asrs r1, 24 + lsls r2, 24 + asrs r2, 24 + lsls r3, 24 + asrs r3, 24 + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + lsls r5, 24 + asrs r5, 24 + str r5, [sp, 0x4] + bl warp_set + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end saved_warp2_set_2 + + thumb_func_start copy_saved_warp2_bank_and_enter_x_to_warp1 +copy_saved_warp2_bank_and_enter_x_to_warp1: @ 8084CB4 + ldr r2, =gUnknown_020322E4 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldr r1, [r0, 0x18] + ldr r0, [r0, 0x14] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .pool + thumb_func_end copy_saved_warp2_bank_and_enter_x_to_warp1 + + thumb_func_start sub_8084CCC +@ void sub_8084CCC(int a1) +sub_8084CCC: @ 8084CCC + push {r4,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + bl GetHealLocationPointer + adds r4, r0, 0 + cmp r4, 0 + beq _08084CFA + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x1 + ldrsb r1, [r4, r1] + movs r2, 0x1 + negs r2, r2 + movs r3, 0x2 + ldrsb r3, [r4, r3] + ldrb r4, [r4, 0x4] + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + bl Overworld_SetWarpDestination +_08084CFA: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8084CCC + + thumb_func_start copy_saved_warp3_bank_and_enter_x_to_warp1 +@ void copy_saved_warp3_bank_and_enter_x_to_warp1() +copy_saved_warp3_bank_and_enter_x_to_warp1: @ 8084D04 + ldr r2, =gUnknown_020322E4 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldr r1, [r0, 0x20] + ldr r0, [r0, 0x1C] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .pool + thumb_func_end copy_saved_warp3_bank_and_enter_x_to_warp1 + + thumb_func_start Overworld_SetHealLocationWarp +Overworld_SetHealLocationWarp: @ 8084D1C + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + bl GetHealLocationPointer + adds r5, r0, 0 + cmp r5, 0 + beq _08084D50 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x1C + movs r1, 0 + ldrsb r1, [r5, r1] + movs r2, 0x1 + ldrsb r2, [r5, r2] + movs r3, 0x1 + negs r3, r3 + movs r4, 0x2 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, 0x4 + ldrsb r4, [r5, r4] + str r4, [sp, 0x4] + bl warp_set +_08084D50: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end Overworld_SetHealLocationWarp + + thumb_func_start sub_8084D5C +sub_8084D5C: @ 8084D5C + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r6, r0, 16 + lsls r1, 16 + lsrs r7, r1, 16 + bl sav1_map_get_light_level + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + ldr r1, =gUnknown_020322E4 + movs r0, 0 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x1] + lsls r1, 24 + asrs r1, 24 + bl get_map_light_level_by_bank_and_number + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0 + bl is_light_level_1_2_3_5_or_6 + lsls r0, 24 + cmp r0, 0 + beq _08084DC4 + adds r0, r5, 0 + bl is_light_level_1_2_3_5_or_6 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08084DC4 + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + movs r2, 0x1 + negs r2, r2 + subs r3, r6, 0x7 + lsls r3, 24 + asrs r3, 24 + subs r4, r7, 0x6 + lsls r4, 24 + asrs r4, 24 + str r4, [sp] + bl sub_8084DD4 +_08084DC4: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084D5C + + thumb_func_start sub_8084DD4 +sub_8084DD4: @ 8084DD4 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x24 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl warp_set + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084DD4 + + thumb_func_start sub_8084E14 +sub_8084E14: @ 8084E14 + ldr r2, =gUnknown_020322E4 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldr r1, [r0, 0x28] + ldr r0, [r0, 0x24] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .pool + thumb_func_end sub_8084E14 + + thumb_func_start sub_8084E2C +sub_8084E2C: @ 8084E2C + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, =gUnknown_020322EC + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl warp_set + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084E2C + + thumb_func_start warp1_set_to_warp2 +warp1_set_to_warp2: @ 8084E68 + ldr r2, =gUnknown_020322E4 + ldr r0, =gUnknown_020322EC + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .pool + thumb_func_end warp1_set_to_warp2 + + thumb_func_start sub_8084E80 +sub_8084E80: @ 8084E80 + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, =gUnknown_020322F4 + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl warp_set + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084E80 + + thumb_func_start sub_8084EBC +sub_8084EBC: @ 8084EBC + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r5, r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + ldr r4, =gUnknown_020322F4 + adds r0, r4, 0 + bl warp_data_is_not_neg_1 + cmp r0, 0x1 + bne _08084EF0 + ldr r2, =gUnknown_020322E4 + ldr r0, =gUnknown_020322DC + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, 0x4] + b _08084F0A + .pool +_08084EF0: + movs r0, 0 + ldrsb r0, [r4, r0] + movs r1, 0x1 + ldrsb r1, [r4, r1] + movs r2, 0x1 + negs r2, r2 + lsls r3, r5, 24 + asrs r3, 24 + lsls r4, r6, 24 + asrs r4, 24 + str r4, [sp] + bl Overworld_SetWarpDestination +_08084F0A: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8084EBC + + thumb_func_start warp1_set_to_sav1w +warp1_set_to_sav1w: @ 8084F14 + ldr r2, =gUnknown_020322E4 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldr r1, [r0, 0x10] + ldr r0, [r0, 0xC] + str r0, [r2] + str r1, [r2, 0x4] + bx lr + .pool + thumb_func_end warp1_set_to_sav1w + + thumb_func_start sub_8084F2C +sub_8084F2C: @ 8084F2C + push {r4-r6,lr} + sub sp, 0x8 + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + ldr r1, [sp, 0x18] + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0xC + lsls r4, 24 + asrs r4, 24 + lsls r5, 24 + asrs r5, 24 + lsls r6, 24 + asrs r6, 24 + lsls r3, 24 + asrs r3, 24 + str r3, [sp] + lsls r1, 24 + asrs r1, 24 + str r1, [sp, 0x4] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl warp_set + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084F2C + + thumb_func_start sub_8084F6C +sub_8084F6C: @ 8084F6C + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + bl GetHealLocationPointer + adds r5, r0, 0 + cmp r5, 0 + beq _08084FA0 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0xC + movs r1, 0 + ldrsb r1, [r5, r1] + movs r2, 0x1 + ldrsb r2, [r5, r2] + movs r3, 0x1 + negs r3, r3 + movs r4, 0x2 + ldrsb r4, [r5, r4] + str r4, [sp] + movs r4, 0x4 + ldrsb r4, [r5, r4] + str r4, [sp, 0x4] + bl warp_set +_08084FA0: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8084F6C + + thumb_func_start sub_8084FAC +sub_8084FAC: @ 8084FAC + ldr r0, =gSaveBlock1Ptr + ldr r2, [r0] + ldr r0, [r2, 0x14] + ldr r1, [r2, 0x18] + str r0, [r2, 0xC] + str r1, [r2, 0x10] + bx lr + .pool + thumb_func_end sub_8084FAC + + thumb_func_start sub_8084FC0 +sub_8084FC0: @ 8084FC0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, =gMapHeader + ldr r0, [r0, 0xC] + ldr r3, [r0] + ldr r1, [r0, 0x4] + cmp r1, 0 + bne _08084FDC + b _08084FF0 + .pool +_08084FD8: + adds r0, r1, 0 + b _08084FF2 +_08084FDC: + movs r2, 0 + cmp r2, r3 + bge _08084FF0 +_08084FE2: + ldrb r0, [r1] + cmp r0, r4 + beq _08084FD8 + adds r2, 0x1 + adds r1, 0xC + cmp r2, r3 + blt _08084FE2 +_08084FF0: + movs r0, 0 +_08084FF2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8084FC0 + + thumb_func_start sub_8084FF8 +sub_8084FF8: @ 8084FF8 + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + lsrs r4, r1, 16 + lsls r2, 16 + lsrs r5, r2, 16 + bl sub_8084FC0 + adds r1, r0, 0 + cmp r1, 0 + beq _08085030 + movs r0, 0x8 + ldrsb r0, [r1, r0] + ldrb r1, [r1, 0x9] + lsls r1, 24 + asrs r1, 24 + movs r2, 0x1 + negs r2, r2 + lsls r3, r4, 24 + asrs r3, 24 + lsls r4, r5, 24 + asrs r4, 24 + str r4, [sp] + bl Overworld_SetWarpDestination + b _0808504C +_08085030: + bl mapheader_run_script_with_tag_x6 + ldr r0, =gUnknown_020322EC + bl warp_data_is_not_neg_1 + cmp r0, 0 + beq _08085048 + movs r0, 0 + b _0808504E + .pool +_08085048: + bl warp1_set_to_warp2 +_0808504C: + movs r0, 0x1 +_0808504E: + add sp, 0x4 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8084FF8 + + thumb_func_start sub_8085058 +sub_8085058: @ 8085058 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x6 + adds r1, r3, 0 + bl sub_8084FF8 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8085058 + + thumb_func_start sub_8085078 +sub_8085078: @ 8085078 + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + lsls r3, 16 + lsrs r3, 16 + lsls r2, 16 + lsrs r2, 16 + movs r0, 0x5 + adds r1, r3, 0 + bl sub_8084FF8 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_8085078 + + thumb_func_start mliX_load_map +mliX_load_map: @ 8085098 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r0, 24 + adds r6, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r5, r1, 0 + lsls r0, r6, 24 + asrs r0, 24 + lsls r1, r5, 24 + asrs r1, 24 + movs r3, 0x1 + negs r3, r3 + str r3, [sp] + adds r2, r3, 0 + bl Overworld_SetWarpDestination + ldr r4, =gMapHeader + ldrb r0, [r4, 0x14] + cmp r0, 0x3A + beq _080850C8 + bl sub_8085810 +_080850C8: + bl warp_shift + bl set_current_map_header_from_sav1_save_old_name + bl CopyFieldObjectTemplatesToSav1 + bl TrySetMapSaveWarpStatus + bl ClearTempFieldEventData + bl wild_pokemon_reroll + bl prev_quest_postbuffer_cursor_backup_reset + adds r0, r6, 0 + adds r1, r5, 0 + bl sub_80B21B4 + bl DoTimeBasedEvents + bl sub_80AEDBC + bl sub_8085B2C + bl update_sav1_flash_used_on_map + bl sav1_reset_battle_music_maybe + bl mapheader_run_script_with_tag_x3 + bl not_trainer_hill_battle_pyramid + ldr r0, [r4] + bl copy_map_tileset2_to_vram_2 + ldr r0, [r4] + bl apply_map_tileset2_palette + movs r4, 0x6 +_08085116: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_80ABF00 + adds r4, 0x1 + cmp r4, 0xC + ble _08085116 + bl sub_80A0A2C + bl UpdateLocationHistoryForRoamer + bl RoamerMove + bl DoCurrentWeather + bl wild_encounter_reset_coro_args + bl mapheader_run_script_with_tag_x5 + ldr r2, =gMapHeader + ldrb r0, [r2, 0x14] + cmp r0, 0x3A + bne _0808514C + ldr r1, =gUnknown_020322FC + ldrh r1, [r1] + cmp r0, r1 + beq _08085150 +_0808514C: + bl AddMapNamePopUpWindowTask +_08085150: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end mliX_load_map + + thumb_func_start mli0_load_map +mli0_load_map: @ 8085160 + push {r4-r7,lr} + adds r7, r0, 0 + bl set_current_map_header_from_sav1_save_old_name + ldr r0, =gUnknown_020322D8 + ldrb r1, [r0] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _080851A2 + ldr r0, =gMapHeader + ldrh r1, [r0, 0x12] + ldr r0, =0x00000169 + cmp r1, r0 + bne _08085190 + bl sub_81AA1D8 + b _080851A2 + .pool +_08085190: + bl InTrainerHill + cmp r0, 0 + beq _0808519E + bl sub_81D5DF8 + b _080851A2 +_0808519E: + bl CopyFieldObjectTemplatesToSav1 +_080851A2: + ldr r4, =gMapHeader + ldrb r0, [r4, 0x17] + bl is_light_level_1_2_3_5_or_6 + lsls r0, 24 + lsrs r5, r0, 24 + ldrb r0, [r4, 0x17] + bl is_light_level_8_or_9 + lsls r0, 24 + lsrs r6, r0, 24 + bl sub_80EB218 + bl TrySetMapSaveWarpStatus + bl ClearTempFieldEventData + bl wild_pokemon_reroll + bl prev_quest_postbuffer_cursor_backup_reset + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl sub_80B21B4 + cmp r7, 0x1 + beq _080851EE + bl DoTimeBasedEvents +_080851EE: + bl sub_80AEDBC + bl sub_8085B2C + cmp r5, 0 + beq _08085200 + ldr r0, =0x00000888 + bl FlagClear +_08085200: + bl update_sav1_flash_used_on_map + bl sav1_reset_battle_music_maybe + bl mapheader_run_script_with_tag_x3 + bl UpdateLocationHistoryForRoamer + bl RoamerMoveToOtherLocationSet + ldrh r1, [r4, 0x12] + ldr r0, =0x00000169 + cmp r1, r0 + bne _08085234 + movs r0, 0 + bl battle_pyramid_map_load_related + b _08085246 + .pool +_08085234: + bl InTrainerHill + cmp r0, 0 + beq _08085242 + bl trainer_hill_map_load_related + b _08085246 +_08085242: + bl not_trainer_hill_battle_pyramid +_08085246: + cmp r7, 0x1 + beq _0808525E + cmp r6, 0 + beq _0808525E + ldr r1, =gUnknown_03005DC0 + ldr r0, [r1] + ldr r1, [r1, 0x4] + bl UpdateTVScreensOnMap + movs r0, 0x1 + bl sub_80E9238 +_0808525E: + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end mli0_load_map + + thumb_func_start player_avatar_init_params_reset +player_avatar_init_params_reset: @ 8085268 + ldr r1, =gUnknown_02032300 + movs r0, 0x1 + strb r0, [r1, 0x1] + strb r0, [r1] + bx lr + .pool + thumb_func_end player_avatar_init_params_reset + + thumb_func_start walkrun_find_lowest_active_bit_in_bitfield +walkrun_find_lowest_active_bit_in_bitfield: @ 8085278 + push {r4,lr} + bl player_get_direction_lower_nybble + ldr r4, =gUnknown_02032300 + strb r0, [r4, 0x1] + movs r0, 0x2 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _08085298 + movs r0, 0x2 + b _080852CA + .pool +_08085298: + movs r0, 0x4 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _080852A8 + movs r0, 0x4 + b _080852CA +_080852A8: + movs r0, 0x8 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _080852B8 + movs r0, 0x8 + b _080852CA +_080852B8: + movs r0, 0x10 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _080852C8 + movs r0, 0x10 + b _080852CA +_080852C8: + movs r0, 0x1 +_080852CA: + strb r0, [r4] + pop {r4} + pop {r0} + bx r0 + thumb_func_end walkrun_find_lowest_active_bit_in_bitfield + + thumb_func_start sub_80852D4 +sub_80852D4: @ 80852D4 + push {r4-r7,lr} + bl sav1_map_get_light_level + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + bl cur_mapdata_block_role_at_screen_center_acc_to_sav1 + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + ldr r6, =gUnknown_02032300 + adds r0, r6, 0 + adds r1, r4, 0 + adds r2, r5, 0 + bl sub_808532C + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, =0xffffff00 + ands r7, r0 + orrs r7, r1 + adds r0, r6, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_808538C + lsls r0, 24 + lsrs r0, 16 + ldr r1, =0xffff00ff + ands r7, r1 + orrs r7, r0 + str r7, [r6] + adds r0, r6, 0 + pop {r4-r7} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80852D4 + + thumb_func_start sub_808532C +sub_808532C: @ 808532C + push {r4-r6,lr} + adds r6, r0, 0 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 24 + lsrs r4, r2, 24 + cmp r4, 0x8 + beq _08085348 + ldr r0, =0x0000088d + bl FlagGet + lsls r0, 24 + cmp r0, 0 + bne _08085382 +_08085348: + cmp r4, 0x5 + bne _08085354 + movs r0, 0x10 + b _08085384 + .pool +_08085354: + lsls r0, r5, 24 + lsrs r0, 24 + bl MetatileBehavior_IsSurfableWaterOrUnderwater + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085368 + movs r0, 0x8 + b _08085384 +_08085368: + bl sav1_map_is_biking_allowed + cmp r0, 0x1 + bne _08085382 + ldrb r0, [r6] + cmp r0, 0x2 + bne _0808537A + movs r0, 0x2 + b _08085384 +_0808537A: + cmp r0, 0x4 + bne _08085382 + movs r0, 0x4 + b _08085384 +_08085382: + movs r0, 0x1 +_08085384: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808532C + + thumb_func_start sub_808538C +sub_808538C: @ 808538C + push {r4-r7,lr} + adds r6, r0, 0 + lsls r1, 24 + lsrs r7, r1, 24 + lsls r2, 16 + lsrs r4, r2, 16 + lsls r3, 24 + lsrs r5, r3, 24 + ldr r0, =0x0000088d + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _080853AC + cmp r5, 0x6 + beq _0808540C +_080853AC: + lsls r4, 24 + lsrs r5, r4, 24 + adds r0, r5, 0 + bl MetatileBehavior_IsDeepSouthWarp + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080853E8 + adds r0, r5, 0 + bl MetatileBehavior_IsNonAnimDoor + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08085442 + adds r0, r5, 0 + bl MetatileBehavior_IsDoor + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08085442 + adds r0, r5, 0 + bl MetatileBehavior_IsSouthArrowWarp + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080853F0 +_080853E8: + movs r0, 0x2 + b _08085448 + .pool +_080853F0: + adds r0, r5, 0 + bl MetatileBehavior_IsNorthArrowWarp + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08085442 + adds r0, r5, 0 + bl MetatileBehavior_IsWestArrowWarp + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085410 +_0808540C: + movs r0, 0x4 + b _08085448 +_08085410: + adds r0, r5, 0 + bl MetatileBehavior_IsEastArrowWarp + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08085422 + movs r0, 0x3 + b _08085448 +_08085422: + ldrb r0, [r6] + cmp r0, 0x10 + bne _0808542C + cmp r7, 0x8 + beq _08085446 +_0808542C: + cmp r0, 0x8 + bne _08085434 + cmp r7, 0x10 + beq _08085446 +_08085434: + lsrs r0, r4, 24 + bl MetatileBehavior_IsLadder + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08085446 +_08085442: + movs r0, 0x1 + b _08085448 +_08085446: + ldrb r0, [r6, 0x1] +_08085448: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_808538C + + thumb_func_start cur_mapdata_block_role_at_screen_center_acc_to_sav1 +cur_mapdata_block_role_at_screen_center_acc_to_sav1: @ 8085450 + push {lr} + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + movs r2, 0 + ldrsh r0, [r1, r2] + adds r0, 0x7 + movs r2, 0x2 + ldrsh r1, [r1, r2] + adds r1, 0x7 + bl MapGridGetMetatileBehaviorAt + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .pool + thumb_func_end cur_mapdata_block_role_at_screen_center_acc_to_sav1 + + thumb_func_start sav1_map_is_biking_allowed +sav1_map_is_biking_allowed: @ 8085474 + push {lr} + ldr r0, =gMapHeader + ldrb r1, [r0, 0x1A] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0808548C + movs r0, 0x1 + b _0808548E + .pool +_0808548C: + movs r0, 0 +_0808548E: + pop {r1} + bx r1 + thumb_func_end sav1_map_is_biking_allowed + + thumb_func_start update_sav1_flash_used_on_map +update_sav1_flash_used_on_map: @ 8085494 + push {lr} + ldr r0, =gMapHeader + ldrb r1, [r0, 0x15] + cmp r1, 0 + bne _080854B0 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x30 + strb r1, [r0] + b _080854DE + .pool +_080854B0: + ldr r0, =0x00000888 + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _080854D0 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x30 + movs r1, 0x1 + strb r1, [r0] + b _080854DE + .pool +_080854D0: + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + ldr r0, =gUnknown_0854FE78 + ldr r0, [r0] + subs r0, 0x1 + adds r1, 0x30 + strb r0, [r1] +_080854DE: + pop {r0} + bx r0 + .pool + thumb_func_end update_sav1_flash_used_on_map + + thumb_func_start Overworld_SetFlashLevel +Overworld_SetFlashLevel: @ 80854EC + push {lr} + adds r1, r0, 0 + cmp r1, 0 + blt _080854FC + ldr r0, =gUnknown_0854FE78 + ldr r0, [r0] + cmp r1, r0 + ble _080854FE +_080854FC: + movs r1, 0 +_080854FE: + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x30 + strb r1, [r0] + pop {r0} + bx r0 + .pool + thumb_func_end Overworld_SetFlashLevel + + thumb_func_start sav1_get_flash_used_on_map +sav1_get_flash_used_on_map: @ 8085514 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x30 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sav1_get_flash_used_on_map + + thumb_func_start sub_8085524 +sub_8085524: @ 8085524 + push {lr} + ldr r1, =gSaveBlock1Ptr + ldr r1, [r1] + strh r0, [r1, 0x32] + bl get_mapdata_header + ldr r1, =gMapHeader + str r0, [r1] + pop {r0} + bx r0 + .pool + thumb_func_end sub_8085524 + + thumb_func_start sub_8085540 +sub_8085540: @ 8085540 + ldr r1, =gUnknown_020322D8 + strb r0, [r1] + bx lr + .pool + thumb_func_end sub_8085540 + + thumb_func_start sub_808554C +sub_808554C: @ 808554C + ldr r0, =gUnknown_020322D8 + ldrb r0, [r0] + bx lr + .pool + thumb_func_end sub_808554C + + thumb_func_start sub_8085558 +sub_8085558: @ 8085558 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =0x0000088a + bl FlagGet + lsls r0, 24 + cmp r0, 0 + beq _080855AC + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0 + bne _080855AC + movs r0, 0x1 + ldrsb r0, [r4, r0] + cmp r0, 0x5 + blt _08085584 + cmp r0, 0x8 + ble _0808559E + cmp r0, 0x2B + bgt _08085584 + cmp r0, 0x27 + bge _0808559E +_08085584: + ldr r0, =0x0000405e + bl VarGet + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3 + bls _080855AC + movs r0, 0x1 + ldrsb r0, [r4, r0] + cmp r0, 0x2E + bgt _080855AC + cmp r0, 0x2C + blt _080855AC +_0808559E: + movs r0, 0x1 + b _080855AE + .pool +_080855AC: + movs r0, 0 +_080855AE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8085558 + + thumb_func_start sub_80855B4 +sub_80855B4: @ 80855B4 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =0x000040ca + bl VarGet + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _080855D6 + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0 + bne _080855D6 + movs r0, 0x1 + ldrsb r0, [r4, r0] + cmp r0, 0x7 + beq _080855E0 +_080855D6: + movs r0, 0 + b _080855E2 + .pool +_080855E0: + movs r0, 0x1 +_080855E2: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80855B4 + + thumb_func_start sub_80855E8 +sub_80855E8: @ 80855E8 + push {r4,lr} + adds r4, r0, 0 + ldr r0, =0x000040b3 + bl VarGet + lsls r0, 16 + cmp r0, 0 + bne _08085606 + movs r0, 0 + ldrsb r0, [r4, r0] + cmp r0, 0x20 + bne _08085606 + ldrb r0, [r4, 0x1] + cmp r0, 0x1 + bls _08085610 +_08085606: + movs r0, 0 + b _08085612 + .pool +_08085610: + movs r0, 0x1 +_08085612: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80855E8 + + thumb_func_start sub_8085618 +sub_8085618: @ 8085618 + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, =0x0000405d + adds r0, r4, 0 + bl VarGet + lsls r0, 16 + cmp r0, 0 + beq _0808564C + adds r0, r4, 0 + bl VarGet + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bhi _0808564C + movs r0, 0 + ldrsb r0, [r5, r0] + cmp r0, 0xE + bne _0808564C + ldrb r0, [r5, 0x1] + subs r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08085654 +_0808564C: + movs r0, 0 + b _08085656 + .pool +_08085654: + movs r0, 0x1 +_08085656: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8085618 + + thumb_func_start warp_target_get_music +warp_target_get_music: @ 808565C + push {r4,lr} + adds r4, r0, 0 + bl sub_80855B4 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _08085674 + ldr r0, =0x0000ffff + b _080856CE + .pool +_08085674: + adds r0, r4, 0 + bl sub_8085558 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _0808568C + ldr r0, =0x000001bb + b _080856CE + .pool +_0808568C: + adds r0, r4, 0 + bl sub_8085618 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bne _080856A4 + ldr r0, =0x000001b9 + b _080856CE + .pool +_080856A4: + adds r0, r4, 0 + bl sub_80855E8 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + beq _080856CA + movs r0, 0 + ldrsb r0, [r4, r0] + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1 + ldrsb r1, [r4, r1] + lsls r1, 16 + lsrs r1, 16 + bl get_mapheader_by_bank_and_number + ldrh r0, [r0, 0x10] + b _080856CE +_080856CA: + movs r0, 0xCB + lsls r0, 1 +_080856CE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end warp_target_get_music + + thumb_func_start sav1_map_get_music +sav1_map_get_music: @ 80856D4 + push {r4,lr} + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0xD0 + lsls r0, 5 + cmp r1, r0 + bne _080856FC + bl sav1_get_weather_probably + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x8 + bne _080856FC + ldr r0, =0x00000199 + b _08085730 + .pool +_080856FC: + ldr r4, =gSaveBlock1Ptr + ldr r0, [r4] + adds r0, 0x4 + bl warp_target_get_music + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, =0x00007fff + cmp r1, r0 + beq _0808571C + adds r0, r1, 0 + b _08085730 + .pool +_0808571C: + ldr r0, [r4] + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0x17 + ble _0808572C + movs r0, 0xC9 + lsls r0, 1 + b _08085730 +_0808572C: + movs r0, 0xB4 + lsls r0, 1 +_08085730: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sav1_map_get_music + + thumb_func_start warp1_target_get_music +warp1_target_get_music: @ 8085738 + push {lr} + ldr r0, =gUnknown_020322E4 + bl warp_target_get_music + lsls r0, 16 + lsrs r1, r0, 16 + ldr r0, =0x00007fff + cmp r1, r0 + beq _08085758 + adds r0, r1, 0 + b _08085774 + .pool +_08085758: + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0x80 + lsls r0, 2 + cmp r1, r0 + beq _08085770 + subs r0, 0x6E + b _08085774 + .pool +_08085770: + movs r0, 0xB4 + lsls r0, 1 +_08085774: + pop {r1} + bx r1 + thumb_func_end warp1_target_get_music + + thumb_func_start call_ResetMapMusic +call_ResetMapMusic: @ 8085778 + push {lr} + bl ResetMapMusic + pop {r0} + bx r0 + thumb_func_end call_ResetMapMusic + + thumb_func_start sub_8085784 +sub_8085784: @ 8085784 + push {r4,lr} + bl sav1_map_get_music + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, =0x000001bb + cmp r4, r0 + beq _080857D6 + ldr r0, =0x0000ffff + cmp r4, r0 + beq _080857D6 + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + ldrh r0, [r1, 0x2C] + cmp r0, 0 + beq _080857B4 + adds r4, r0, 0 + b _080857D6 + .pool +_080857B4: + bl sav1_map_get_light_level + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x5 + bne _080857C8 + ldr r4, =0x0000019b + b _080857D6 + .pool +_080857C8: + movs r0, 0x8 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _080857D6 + ldr r4, =0x0000016d +_080857D6: + bl GetCurrentMapMusic + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + beq _080857E8 + adds r0, r4, 0 + bl PlayNewMapMusic +_080857E8: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8085784 + + thumb_func_start Overworld_SetSavedMusic +Overworld_SetSavedMusic: @ 80857F4 + ldr r1, =gSaveBlock1Ptr + ldr r1, [r1] + strh r0, [r1, 0x2C] + bx lr + .pool + thumb_func_end Overworld_SetSavedMusic + + thumb_func_start sav1_reset_battle_music_maybe +sav1_reset_battle_music_maybe: @ 8085800 + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + movs r0, 0 + strh r0, [r1, 0x2C] + bx lr + .pool + thumb_func_end sav1_reset_battle_music_maybe + + thumb_func_start sub_8085810 +sub_8085810: @ 8085810 + push {r4-r6,lr} + ldr r0, =0x00004001 + bl FlagGet + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08085890 + bl warp1_target_get_music + lsls r0, 16 + lsrs r4, r0, 16 + bl GetCurrentMapMusic + lsls r0, 16 + lsrs r5, r0, 16 + ldr r0, =0x000001bb + cmp r4, r0 + beq _08085856 + ldr r0, =0x0000ffff + cmp r4, r0 + beq _08085856 + ldr r0, =0x0000019b + cmp r5, r0 + beq _08085890 + ldr r6, =0x0000016d + cmp r5, r6 + beq _08085890 + movs r0, 0x8 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _08085856 + adds r4, r6, 0 +_08085856: + cmp r4, r5 + beq _08085890 + movs r0, 0x6 + bl TestPlayerAvatarFlags + lsls r0, 24 + cmp r0, 0 + beq _08085888 + adds r0, r4, 0 + movs r1, 0x4 + movs r2, 0x4 + bl FadeOutAndFadeInNewMapMusic + b _08085890 + .pool +_08085888: + adds r0, r4, 0 + movs r1, 0x8 + bl FadeOutAndPlayNewMapMusic +_08085890: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8085810 + + thumb_func_start Overworld_ChangeMusicToDefault +Overworld_ChangeMusicToDefault: @ 8085898 + push {r4,lr} + bl GetCurrentMapMusic + adds r4, r0, 0 + lsls r4, 16 + lsrs r4, 16 + bl sav1_map_get_music + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + beq _080858BE + bl sav1_map_get_music + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x8 + bl FadeOutAndPlayNewMapMusic +_080858BE: + pop {r4} + pop {r0} + bx r0 + thumb_func_end Overworld_ChangeMusicToDefault + + thumb_func_start Overworld_ChangeMusicTo +Overworld_ChangeMusicTo: @ 80858C4 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + bl GetCurrentMapMusic + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, r4 + beq _080858E4 + ldr r0, =0x000001bb + cmp r1, r0 + beq _080858E4 + adds r0, r4, 0 + movs r1, 0x8 + bl FadeOutAndPlayNewMapMusic +_080858E4: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end Overworld_ChangeMusicTo + + thumb_func_start is_warp1_light_level_8_or_9 +is_warp1_light_level_8_or_9: @ 80858F0 + push {lr} + bl warp1_get_mapheader + ldrb r0, [r0, 0x17] + bl is_light_level_8_or_9 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08085908 + movs r0, 0x4 + b _0808590A +_08085908: + movs r0, 0x2 +_0808590A: + pop {r1} + bx r1 + thumb_func_end is_warp1_light_level_8_or_9 + + thumb_func_start music_something +music_something: @ 8085910 + push {r4,r5,lr} + bl GetCurrentMapMusic + lsls r0, 16 + lsrs r5, r0, 16 + bl warp1_target_get_music + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, =0x00004001 + bl FlagGet + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0808597E + bl GetCurrentMapMusic + lsls r0, 16 + lsrs r0, 16 + cmp r4, r0 + beq _0808597E + ldr r0, =0x0000016d + cmp r5, r0 + bne _08085972 + ldr r0, =0x000040ca + bl VarGet + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x2 + bne _08085972 + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldr r1, =0x0000ffff + ldrh r2, [r0, 0x4] + movs r0, 0xE0 + lsls r0, 3 + cmp r2, r0 + bne _08085972 + ldr r3, =gUnknown_020322E4 + ldrh r0, [r3] + ands r1, r0 + cmp r1, r2 + bne _08085972 + ldr r1, [r3, 0x4] + ldr r0, =0x0035001d + cmp r1, r0 + beq _0808597E +_08085972: + bl is_warp1_light_level_8_or_9 + lsls r0, 24 + lsrs r0, 24 + bl FadeOutMapMusic +_0808597E: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end music_something + + thumb_func_start sub_80859A0 +sub_80859A0: @ 80859A0 + push {lr} + bl IsNotWaitingForBGMStop + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_80859A0 + + thumb_func_start sub_80859B0 +sub_80859B0: @ 80859B0 + push {lr} + movs r0, 0x4 + bl FadeOutMapMusic + pop {r0} + bx r0 + thumb_func_end sub_80859B0 + + thumb_func_start sub_80859BC +sub_80859BC: @ 80859BC + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl PlayerGetDestCoords + ldr r0, =gUnknown_02032306 + ldrb r0, [r0] + cmp r0, 0x1 + bne _080859F0 + 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 MetatileBehavior_IsSurfableWaterOrUnderwater + lsls r0, 24 + cmp r0, 0 + beq _08085A2C +_080859F0: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x58 + bl __umodsi3 + adds r4, r0, 0 + adds r4, 0xD4 + lsls r4, 24 + lsrs r4, 24 + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x1E + bl __umodsi3 + adds r2, r0, 0 + adds r2, 0x32 + ldr r0, =gUnknown_02032304 + ldrh r0, [r0] + lsls r4, 24 + asrs r4, 24 + lsls r2, 24 + asrs r2, 24 + adds r1, r4, 0 + movs r3, 0x1 + bl PlayCry2 +_08085A2C: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80859BC + + thumb_func_start wild_encounter_related +wild_encounter_related: @ 8085A3C + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r6, r0, 0 + adds r7, r1, 0 + movs r1, 0 + ldrsh r0, [r6, r1] + cmp r0, 0x4 + bhi _08085B20 + lsls r0, 2 + ldr r1, =_08085A60 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08085A60: + .4byte _08085A74 + .4byte _08085A88 + .4byte _08085AA4 + .4byte _08085B0C + .4byte _08085B20 +_08085A74: + ldr r0, =gUnknown_02032304 + ldrh r0, [r0] + cmp r0, 0 + bne _08085A84 + movs r0, 0x4 + b _08085B1E + .pool +_08085A84: + movs r0, 0x1 + b _08085B1E +_08085A88: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r1, 0x96 + lsls r1, 4 + bl __umodsi3 + movs r1, 0x96 + lsls r1, 3 + adds r0, r1 + strh r0, [r7] + movs r0, 0x3 + b _08085B1E +_08085AA4: + movs r0, 0x1 + mov r9, r0 + bl CalculatePlayerPartyCount + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r5, 0 + b _08085ABC +_08085AB6: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08085ABC: + cmp r5, r8 + bcs _08085AE4 + movs r0, 0x64 + muls r0, r5 + ldr r4, =gPlayerParty + adds r0, r4 + movs r1, 0x6 + bl GetMonData + cmp r0, 0 + bne _08085AB6 + adds r0, r4, 0 + bl GetMonAbility + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x44 + bne _08085AB6 + movs r1, 0x2 + mov r9, r1 +_08085AE4: + bl Random + lsls r0, 16 + lsrs r0, 16 + movs r4, 0x96 + lsls r4, 3 + adds r1, r4, 0 + bl __umodsi3 + lsls r0, 16 + lsrs r0, 16 + adds r0, r4 + mov r1, r9 + bl __divsi3 + strh r0, [r7] + movs r0, 0x3 + b _08085B1E + .pool +_08085B0C: + ldrh r0, [r7] + subs r0, 0x1 + strh r0, [r7] + lsls r0, 16 + cmp r0, 0 + bne _08085B20 + bl sub_80859BC + movs r0, 0x2 +_08085B1E: + strh r0, [r6] +_08085B20: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end wild_encounter_related + + thumb_func_start sub_8085B2C +sub_8085B2C: @ 8085B2C + push {lr} + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + ldrh r1, [r0, 0x4] + movs r0, 0xB4 + lsls r0, 6 + cmp r1, r0 + bne _08085B5C + bl sub_813793C + lsls r0, 24 + cmp r0, 0 + bne _08085B5C + ldr r1, =gUnknown_02032306 + movs r0, 0x1 + strb r0, [r1] + bl GetLocalWaterMon + b _08085B62 + .pool +_08085B5C: + ldr r0, =gUnknown_02032306 + bl GetLocalWildMon +_08085B62: + ldr r1, =gUnknown_02032304 + strh r0, [r1] + pop {r0} + bx r0 + .pool + thumb_func_end sub_8085B2C + + thumb_func_start get_map_light_level_by_bank_and_number +@ int get_map_light_level_by_bank_and_number(int bank, int number) +get_map_light_level_by_bank_and_number: @ 8085B74 + push {lr} + lsls r0, 24 + asrs r0, 8 + lsrs r0, 16 + lsls r1, 24 + asrs r1, 8 + lsrs r1, 16 + bl get_mapheader_by_bank_and_number + ldrb r0, [r0, 0x17] + pop {r1} + bx r1 + thumb_func_end get_map_light_level_by_bank_and_number + + thumb_func_start get_map_light_level_from_warp +@ int get_map_light_level_from_warp(warpdata *warp) +get_map_light_level_from_warp: @ 8085B8C + push {lr} + movs r2, 0 + ldrsb r2, [r0, r2] + movs r1, 0x1 + ldrsb r1, [r0, r1] + adds r0, r2, 0 + bl get_map_light_level_by_bank_and_number + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end get_map_light_level_from_warp + + thumb_func_start sav1_map_get_light_level +sav1_map_get_light_level: @ 8085BA4 + push {lr} + ldr r0, =gSaveBlock1Ptr + ldr r0, [r0] + adds r0, 0x4 + bl get_map_light_level_from_warp + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .pool + thumb_func_end sav1_map_get_light_level + + thumb_func_start get_map_light_from_warp0 +get_map_light_from_warp0: @ 8085BBC + push {lr} + ldr r0, =gUnknown_020322DC + bl get_map_light_level_from_warp + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + .pool + thumb_func_end get_map_light_from_warp0 + + thumb_func_start is_light_level_1_2_3_5_or_6 +is_light_level_1_2_3_5_or_6: @ 8085BD0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _08085BEA + cmp r0, 0x1 + beq _08085BEA + cmp r0, 0x5 + beq _08085BEA + cmp r0, 0x2 + beq _08085BEA + cmp r0, 0x6 + bne _08085BEE +_08085BEA: + movs r0, 0x1 + b _08085BF0 +_08085BEE: + movs r0, 0 +_08085BF0: + pop {r1} + bx r1 + thumb_func_end is_light_level_1_2_3_5_or_6 + + thumb_func_start is_light_level_1_2_3_or_6 +is_light_level_1_2_3_or_6: @ 8085BF4 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + beq _08085C0A + cmp r0, 0x1 + beq _08085C0A + cmp r0, 0x6 + beq _08085C0A + cmp r0, 0x2 + bne _08085C0E +_08085C0A: + movs r0, 0x1 + b _08085C10 +_08085C0E: + movs r0, 0 +_08085C10: + pop {r1} + bx r1 + thumb_func_end is_light_level_1_2_3_or_6 + + thumb_func_start is_light_level_8_or_9 +is_light_level_8_or_9: @ 8085C14 + push {lr} + lsls r0, 24 + movs r1, 0xF8 + lsls r1, 24 + adds r0, r1 + lsrs r0, 24 + cmp r0, 0x1 + bls _08085C28 + movs r0, 0 + b _08085C2A +_08085C28: + movs r0, 0x1 +_08085C2A: + pop {r1} + bx r1 + thumb_func_end is_light_level_8_or_9 + + thumb_func_start sav1_saved_warp2_map_get_name +sav1_saved_warp2_map_get_name: @ 8085C30 + push {lr} + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + movs r0, 0x14 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x15] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl get_mapheader_by_bank_and_number + ldrb r0, [r0, 0x14] + pop {r1} + bx r1 + .pool + thumb_func_end sav1_saved_warp2_map_get_name + + thumb_func_start sav1_map_get_name +sav1_map_get_name: @ 8085C58 + push {lr} + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl get_mapheader_by_bank_and_number + ldrb r0, [r0, 0x14] + pop {r1} + bx r1 + .pool + thumb_func_end sav1_map_get_name + + thumb_func_start sav1_map_get_battletype +sav1_map_get_battletype: @ 8085C80 + push {lr} + ldr r0, =gSaveBlock1Ptr + ldr r1, [r0] + movs r0, 0x4 + ldrsb r0, [r1, r0] + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r1, 0x5] + lsls r1, 24 + asrs r1, 24 + lsls r1, 16 + lsrs r1, 16 + bl get_mapheader_by_bank_and_number + ldrb r0, [r0, 0x1B] + pop {r1} + bx r1 + .pool + thumb_func_end sav1_map_get_battletype + + thumb_func_start overworld_bg_setup +@ void overworld_bg_setup() +overworld_bg_setup: @ 8085CA8 + push {r4-r6,lr} + mov r6, r8 + push {r6} + ldr r1, =gUnknown_08339DAC + movs r0, 0 + movs r2, 0x4 + bl InitBgsFromTemplates + movs r0, 0x1 + movs r1, 0x5 + movs r2, 0x1 + bl SetBgAttribute + movs r0, 0x2 + movs r1, 0x5 + movs r2, 0x1 + bl SetBgAttribute + movs r0, 0x3 + movs r1, 0x5 + movs r2, 0x1 + bl SetBgAttribute + ldr r0, =gUnknown_03005DA0 + mov r8, r0 + movs r4, 0x80 + lsls r4, 4 + adds r0, r4, 0 + bl AllocZeroed + mov r1, r8 + str r0, [r1] + ldr r6, =gUnknown_03005D9C + adds r0, r4, 0 + bl AllocZeroed + str r0, [r6] + ldr r5, =gUnknown_03005DA4 + adds r0, r4, 0 + bl AllocZeroed + str r0, [r5] + mov r0, r8 + ldr r1, [r0] + movs r0, 0x1 + bl SetBgTilemapBuffer + ldr r1, [r6] + movs r0, 0x2 + bl SetBgTilemapBuffer + ldr r1, [r5] + movs r0, 0x3 + bl SetBgTilemapBuffer + bl sub_81971D0 + pop {r3} + mov r8, r3 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end overworld_bg_setup + + thumb_func_start overworld_free_bg_tilemaps +overworld_free_bg_tilemaps: @ 8085D34 + push {r4,lr} + bl sub_81BE72C + bl sub_81971F4 + ldr r4, =gUnknown_03005DA4 + ldr r0, [r4] + cmp r0, 0 + beq _08085D4E + bl Free + movs r0, 0 + str r0, [r4] +_08085D4E: + ldr r4, =gUnknown_03005D9C + ldr r0, [r4] + cmp r0, 0 + beq _08085D5E + bl Free + movs r0, 0 + str r0, [r4] +_08085D5E: + ldr r4, =gUnknown_03005DA0 + ldr r0, [r4] + cmp r0, 0 + beq _08085D6E + bl Free + movs r0, 0 + str r0, [r4] +_08085D6E: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end overworld_free_bg_tilemaps + + thumb_func_start ResetSafariZoneFlag_ +ResetSafariZoneFlag_: @ 8085D80 + push {lr} + bl ResetSafariZoneFlag + pop {r0} + bx r0 + thumb_func_end ResetSafariZoneFlag_ + + thumb_func_start is_c1_link_related_active +@ _BOOL4 is_c1_link_related_active() +is_c1_link_related_active: @ 8085D8C + push {lr} + ldr r0, =gMain + ldr r1, [r0] + ldr r0, =c1_link_related + cmp r1, r0 + beq _08085DA4 + movs r0, 0 + b _08085DA6 + .pool +_08085DA4: + movs r0, 0x1 +_08085DA6: + pop {r1} + bx r1 + thumb_func_end is_c1_link_related_active + + thumb_func_start c1_overworld_normal +@ void c1_overworld_normal(int buttons_new, int buttons_held) +c1_overworld_normal: @ 8085DAC + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + adds r5, r0, 0 + lsls r1, 16 + lsrs r1, 16 + adds r4, r1, 0 + bl sub_808B578 + mov r6, sp + mov r0, sp + bl sub_809BEDC + mov r0, sp + adds r1, r5, 0 + adds r2, r4, 0 + bl process_overworld_input + bl ScriptContext2_IsEnabled + lsls r0, 24 + cmp r0, 0 + bne _08085DFA + mov r0, sp + bl sub_809C014 + cmp r0, 0x1 + bne _08085DF0 + bl ScriptContext2_Enable + bl HideMapNamePopUpWindow + b _08085DFA +_08085DF0: + ldrb r0, [r6, 0x2] + adds r1, r5, 0 + adds r2, r4, 0 + bl player_step +_08085DFA: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end c1_overworld_normal + + thumb_func_start c1_overworld +c1_overworld: @ 8085E04 + push {lr} + ldr r2, =gMain + ldr r1, [r2, 0x4] + ldr r0, =c2_overworld + cmp r1, r0 + bne _08085E18 + ldrh r0, [r2, 0x2E] + ldrh r1, [r2, 0x2C] + bl c1_overworld_normal +_08085E18: + pop {r0} + bx r0 + .pool + thumb_func_end c1_overworld + + thumb_func_start c2_overworld_basic +@ void c2_overworld_basic() +c2_overworld_basic: @ 8085E24 + push {lr} + bl ScriptContext2_RunScript + bl RunTasks + bl AnimateSprites + bl CameraUpdate + bl UpdateCameraPanning + bl BuildOamBuffer + bl UpdatePaletteFade + bl sub_80A0A38 + bl do_scheduled_bg_tilemap_copies_to_vram + pop {r0} + bx r0 + thumb_func_end c2_overworld_basic + + thumb_func_start sub_8085E50 +sub_8085E50: @ 8085E50 + push {lr} + bl c2_overworld_basic + pop {r0} + bx r0 + thumb_func_end sub_8085E50 + + thumb_func_start c2_overworld +c2_overworld: @ 8085E5C + push {r4,lr} + ldr r0, =gPaletteFade + ldrb r0, [r0, 0x7] + lsrs r0, 7 + adds r4, r0, 0 + cmp r4, 0 + beq _08085E70 + movs r0, 0 + bl SetVBlankCallback +_08085E70: + bl c2_overworld_basic + cmp r4, 0 + beq _08085E7C + bl SetFieldVBlankCallback +_08085E7C: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end c2_overworld + + thumb_func_start set_callback1 +set_callback1: @ 8085E88 + ldr r1, =gMain + str r0, [r1] + bx lr + .pool + thumb_func_end set_callback1 + + thumb_func_start sub_8085E94 +sub_8085E94: @ 8085E94 + ldr r1, =gUnknown_03000E0C + str r0, [r1] + bx lr + .pool + thumb_func_end sub_8085E94 + + thumb_func_start map_post_load_hook_exec +map_post_load_hook_exec: @ 8085EA0 + push {r4,lr} + ldr r4, =gUnknown_03005DB0 + ldr r0, [r4] + cmp r0, 0 + beq _08085ECC + bl _call_via_r0 + lsls r0, 24 + cmp r0, 0 + bne _08085EBC + movs r0, 0 + b _08085EEC + .pool +_08085EBC: + movs r1, 0 + str r1, [r4] + ldr r0, =gFieldCallback + str r1, [r0] + b _08085EEA + .pool +_08085ECC: + ldr r0, =gFieldCallback + ldr r0, [r0] + cmp r0, 0 + beq _08085EE0 + bl _call_via_r0 + b _08085EE4 + .pool +_08085EE0: + bl mapldr_default +_08085EE4: + ldr r1, =gFieldCallback + movs r0, 0 + str r0, [r1] +_08085EEA: + movs r0, 0x1 +_08085EEC: + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end map_post_load_hook_exec + + thumb_func_start CB2_NewGame +CB2_NewGame: @ 8085EF8 + push {lr} + bl sub_808631C + bl StopMapMusic + bl ResetSafariZoneFlag_ + bl NewGameInitData + bl player_avatar_init_params_reset + bl PlayTimeCounter_Start + bl ScriptContext1_Init + bl ScriptContext2_Disable + ldr r1, =gFieldCallback + ldr r0, =ExecuteTruckSequence + str r0, [r1] + ldr r1, =gUnknown_03005DB0 + movs r0, 0 + str r0, [r1] + ldr r0, =gUnknown_030026F8 + bl do_load_map_stuff_loop + bl SetFieldVBlankCallback + ldr r0, =c1_overworld + bl set_callback1 + ldr r0, =c2_overworld + bl SetMainCallback2 + pop {r0} + bx r0 + .pool + thumb_func_end CB2_NewGame + + thumb_func_start c2_whiteout +c2_whiteout: @ 8085F58 + push {lr} + sub sp, 0x4 + ldr r1, =gMain + movs r0, 0x87 + lsls r0, 3 + adds r1, r0 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x77 + bls _08085FB0 + bl sub_808631C + bl StopMapMusic + bl ResetSafariZoneFlag_ + bl sub_8084620 + bl player_avatar_init_params_reset + bl ScriptContext1_Init + bl ScriptContext2_Disable + ldr r1, =gFieldCallback + ldr r0, =sub_80AF3C8 + str r0, [r1] + mov r1, sp + movs r0, 0 + strb r0, [r1] + mov r0, sp + bl do_load_map_stuff_loop + bl SetFieldVBlankCallback + ldr r0, =c1_overworld + bl set_callback1 + ldr r0, =c2_overworld + bl SetMainCallback2 +_08085FB0: + add sp, 0x4 + pop {r0} + bx r0 + .pool + thumb_func_end c2_whiteout + + thumb_func_start c2_load_new_map +c2_load_new_map: @ 8085FCC + push {lr} + bl sub_808631C + bl ScriptContext1_Init + bl ScriptContext2_Disable + movs r0, 0 + bl set_callback1 + ldr r0, =c2_change_map + bl SetMainCallback2 + ldr r1, =gMain + ldr r0, =c2_load_new_map_2 + str r0, [r1, 0x8] + pop {r0} + bx r0 + .pool + thumb_func_end c2_load_new_map + + thumb_func_start c2_load_new_map_2 +c2_load_new_map_2: @ 8085FFC + push {lr} + ldr r0, =gUnknown_030026F8 + bl do_load_map_stuff_loop + bl SetFieldVBlankCallback + ldr r0, =c1_overworld + bl set_callback1 + ldr r0, =c2_overworld + bl SetMainCallback2 + pop {r0} + bx r0 + .pool + thumb_func_end c2_load_new_map_2 + + thumb_func_start sub_8086024 +sub_8086024: @ 8086024 + push {r4,lr} + ldr r0, =gMain + movs r1, 0x87 + lsls r1, 3 + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, 0 + bne _08086046 + bl sub_808631C + bl ScriptContext1_Init + bl ScriptContext2_Disable + movs r0, 0 + bl set_callback1 +_08086046: + adds r0, r4, 0 + movs r1, 0x1 + bl load_map_stuff + cmp r0, 0 + beq _08086062 + bl SetFieldVBlankCallback + ldr r0, =c1_overworld + bl set_callback1 + ldr r0, =c2_overworld + bl SetMainCallback2 +_08086062: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086024 + + thumb_func_start sub_8086074 +sub_8086074: @ 8086074 + push {lr} + bl sub_808631C + ldr r0, =gFieldCallback + ldr r1, =sub_80AF314 + str r1, [r0] + ldr r0, =c2_80567AC + bl SetMainCallback2 + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086074 + + thumb_func_start c2_80567AC +c2_80567AC: @ 8086098 + push {lr} + ldr r0, =gUnknown_030026F8 + bl map_loading_iteration_3 + cmp r0, 0 + beq _080860B8 + bl SetFieldVBlankCallback + ldr r0, =c1_link_related + bl set_callback1 + bl sub_8086C2C + ldr r0, =c2_overworld + bl SetMainCallback2 +_080860B8: + pop {r0} + bx r0 + .pool + thumb_func_end c2_80567AC + + thumb_func_start c2_exit_to_overworld_2_switch +c2_exit_to_overworld_2_switch: @ 80860C8 + push {lr} + bl is_c1_link_related_active + cmp r0, 0x1 + bne _080860E0 + ldr r0, =c2_exit_to_overworld_2_link + bl SetMainCallback2 + b _080860EA + .pool +_080860E0: + bl sub_808631C + ldr r0, =c2_exit_to_overworld_2_local + bl SetMainCallback2 +_080860EA: + pop {r0} + bx r0 + .pool + thumb_func_end c2_exit_to_overworld_2_switch + + thumb_func_start c2_exit_to_overworld_2_local +c2_exit_to_overworld_2_local: @ 80860F4 + push {lr} + ldr r0, =gUnknown_030026F8 + bl sub_8086638 + cmp r0, 0 + beq _0808610A + bl SetFieldVBlankCallback + ldr r0, =c2_overworld + bl SetMainCallback2 +_0808610A: + pop {r0} + bx r0 + .pool + thumb_func_end c2_exit_to_overworld_2_local + + thumb_func_start c2_exit_to_overworld_2_link +c2_exit_to_overworld_2_link: @ 8086118 + push {lr} + bl sub_8087598 + cmp r0, 0 + bne _08086132 + ldr r0, =gUnknown_030026F8 + bl map_loading_iteration_2_link + cmp r0, 0 + beq _08086132 + ldr r0, =c2_overworld + bl SetMainCallback2 +_08086132: + pop {r0} + bx r0 + .pool + thumb_func_end c2_exit_to_overworld_2_link + + thumb_func_start c2_8056854 +c2_8056854: @ 8086140 + push {lr} + bl sub_808631C + bl StopMapMusic + ldr r0, =c1_link_related + bl set_callback1 + bl sub_8086C2C + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08086174 + ldr r1, =gFieldCallback + ldr r0, =sub_80AF314 + b _08086178 + .pool +_08086174: + ldr r1, =gFieldCallback + ldr r0, =sub_80AF214 +_08086178: + str r0, [r1] + bl ScriptContext1_Init + bl ScriptContext2_Disable + bl c2_exit_to_overworld_2_switch + pop {r0} + bx r0 + .pool + thumb_func_end c2_8056854 + + thumb_func_start sub_8086194 +sub_8086194: @ 8086194 + push {lr} + bl sub_808631C + ldr r1, =gUnknown_03005DB0 + ldr r0, =sub_80AF6A4 + str r0, [r1] + bl c2_exit_to_overworld_2_switch + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086194 + + thumb_func_start sub_80861B0 +sub_80861B0: @ 80861B0 + push {lr} + bl sub_808631C + ldr r1, =gFieldCallback + ldr r0, =sub_80AF188 + str r0, [r1] + bl c2_exit_to_overworld_2_switch + pop {r0} + bx r0 + .pool + thumb_func_end sub_80861B0 + + thumb_func_start c2_exit_to_overworld_1_continue_scripts_restart_music +c2_exit_to_overworld_1_continue_scripts_restart_music: @ 80861CC + push {lr} + bl sub_808631C + ldr r1, =gFieldCallback + ldr r0, =sub_80AF168 + str r0, [r1] + bl c2_exit_to_overworld_2_switch + pop {r0} + bx r0 + .pool + thumb_func_end c2_exit_to_overworld_1_continue_scripts_restart_music + + thumb_func_start sub_80861E8 +sub_80861E8: @ 80861E8 + push {lr} + bl sub_808631C + ldr r1, =gFieldCallback + ldr r0, =sub_80AF3C8 + str r0, [r1] + bl c2_exit_to_overworld_2_switch + pop {r0} + bx r0 + .pool + thumb_func_end sub_80861E8 + + thumb_func_start sub_8086204 +sub_8086204: @ 8086204 + push {lr} + ldr r0, =gMapHeader + ldrb r1, [r0, 0x1A] + movs r0, 0xF8 + ands r0, r1 + cmp r0, 0x8 + bne _08086222 + bl sub_80E909C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08086222 + bl AddMapNamePopUpWindowTask +_08086222: + bl sub_80AF3C8 + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086204 + + thumb_func_start sub_8086230 +sub_8086230: @ 8086230 + push {r4,lr} + bl sub_808631C + bl StopMapMusic + bl ResetSafariZoneFlag_ + ldr r0, =gSaveFileStatus + ldrh r0, [r0] + cmp r0, 0xFF + bne _0808624A + bl sub_81A3908 +_0808624A: + bl set_current_map_header_from_sav1 + bl set_warp2_warp3_to_neg_1 + bl GetCurrentTrainerHillMapId + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, =gMapHeader + ldrh r1, [r0, 0x12] + ldr r0, =0x00000169 + cmp r1, r0 + bne _08086278 + bl sub_81AA2F8 + b _0808628A + .pool +_08086278: + cmp r4, 0 + beq _08086286 + cmp r4, 0x6 + beq _08086286 + bl sub_81D5F48 + b _0808628A +_08086286: + bl CopyFieldObjectTemplateCoordsToSav1 +_0808628A: + bl UnfreezeMapObjects + bl DoTimeBasedEvents + bl sub_8084788 + ldr r0, =gMapHeader + ldrh r1, [r0, 0x12] + ldr r0, =0x00000169 + cmp r1, r0 + bne _080862B0 + movs r0, 0x1 + bl battle_pyramid_map_load_related + b _080862BE + .pool +_080862B0: + cmp r4, 0 + beq _080862BA + bl trainer_hill_map_load_related + b _080862BE +_080862BA: + bl sub_8087D74 +_080862BE: + bl PlayTimeCounter_Start + bl ScriptContext1_Init + bl ScriptContext2_Disable + bl sub_8195E10 + bl sav2_x1_query_bit1 + cmp r0, 0x1 + bne _080862F4 + bl sav2_x9_clear_bit1 + bl warp1_set_to_sav1w + bl warp_in + bl sub_80EDB44 + ldr r0, =c2_load_new_map + bl SetMainCallback2 + b _08086308 + .pool +_080862F4: + bl sub_80EDB44 + ldr r0, =gFieldCallback + ldr r1, =sub_8086204 + str r1, [r0] + ldr r0, =c1_overworld + bl set_callback1 + bl c2_exit_to_overworld_2_switch +_08086308: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086230 + + thumb_func_start sub_808631C +@ void sub_808631C() +sub_808631C: @ 808631C + push {r4,lr} + bl warp0_in_pokecenter + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _0808632E + bl sub_80097E8 +_0808632E: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08086348 + movs r0, 0xC5 + bl EnableInterrupts + movs r0, 0x2 + bl DisableInterrupts + b _08086362 + .pool +_08086348: + ldr r4, =0x04000208 + ldrh r3, [r4] + strh r0, [r4] + ldr r2, =0x04000200 + ldrh r1, [r2] + ldr r0, =0x0000fffd + ands r0, r1 + strh r0, [r2] + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + strh r3, [r4] +_08086362: + movs r0, 0 + bl SetVBlankCallback + movs r0, 0 + bl SetHBlankCallback + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808631C + + thumb_func_start SetFieldVBlankCallback +@ void SetFieldVBlankCallback() +SetFieldVBlankCallback: @ 8086380 + push {lr} + ldr r0, =VBlankCB_Field + bl SetVBlankCallback + pop {r0} + bx r0 + .pool + thumb_func_end SetFieldVBlankCallback + + thumb_func_start VBlankCB_Field +VBlankCB_Field: @ 8086390 + push {lr} + bl LoadOam + bl ProcessSpriteCopyRequests + bl sub_80BA0A8 + bl FieldUpdateBgTilemapScroll + bl TransferPlttBuffer + bl TransferTilesetAnimsBuffer + pop {r0} + bx r0 + thumb_func_end VBlankCB_Field + + thumb_func_start sub_80863B0 +sub_80863B0: @ 80863B0 + push {lr} + bl sub_81A9E6C + lsls r0, 24 + cmp r0, 0 + beq _080863D4 + bl door_upload_tiles + ldr r2, =gUnknown_08339DBC + ldr r0, [r2] + ldr r1, [r2, 0x4] + ldr r2, [r2, 0x8] + bl sub_80BA038 + b _080863F0 + .pool +_080863D4: + bl sav1_get_flash_used_on_map + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _080863F0 + bl sub_80B00E8 + ldr r2, =gUnknown_08339DBC + ldr r0, [r2] + ldr r1, [r2, 0x4] + ldr r2, [r2, 0x8] + bl sub_80BA038 +_080863F0: + pop {r0} + bx r0 + .pool + thumb_func_end sub_80863B0 + + thumb_func_start map_loading_iteration_3 +map_loading_iteration_3: @ 80863F8 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0xD + bls _08086404 + b _08086512 +_08086404: + lsls r0, 2 + ldr r1, =_08086414 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08086414: + .4byte _0808644C + .4byte _08086462 + .4byte _0808646A + .4byte _08086472 + .4byte _08086484 + .4byte _08086492 + .4byte _08086498 + .4byte _080864A8 + .4byte _080864B8 + .4byte _080864D4 + .4byte _080864DA + .4byte _080864E0 + .4byte _080864FC + .4byte _0808650E +_0808644C: + bl overworld_bg_setup + bl ScriptContext1_Init + bl ScriptContext2_Disable + bl MoveSaveBlocks_ResetHeap_ + bl sub_80867D8 + b _08086506 +_08086462: + movs r0, 0x1 + bl mli0_load_map + b _08086506 +_0808646A: + movs r0, 0x1 + bl sub_8086988 + b _08086506 +_08086472: + bl sub_8086AE4 + bl sub_80869DC + bl sub_8086B14 + bl sub_8086AAC + b _08086506 +_08086484: + bl sub_80863B0 + bl map_loading_lcd_reset + bl sub_8197200 + b _08086506 +_08086492: + bl move_tilemap_camera_to_upper_left_corner + b _08086506 +_08086498: + ldr r0, =gMapHeader + ldr r0, [r0] + bl copy_map_tileset1_to_vram + b _08086506 + .pool +_080864A8: + ldr r0, =gMapHeader + ldr r0, [r0] + bl copy_map_tileset2_to_vram + b _08086506 + .pool +_080864B8: + bl free_temp_tile_data_buffers_if_possible + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _08086512 + ldr r0, =gMapHeader + ldr r0, [r0] + bl apply_map_tileset1_tileset2_palette + b _08086506 + .pool +_080864D4: + bl DrawWholeMapView + b _08086506 +_080864DA: + bl cur_mapheader_run_tileset_funcs_after_some_cpuset + b _08086506 +_080864E0: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08086506 + bl sub_800E0E8 + movs r0, 0 + movs r1, 0 + bl sub_800DFB4 + b _08086506 + .pool +_080864FC: + bl map_post_load_hook_exec + lsls r0, 24 + cmp r0, 0 + beq _08086512 +_08086506: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _08086512 +_0808650E: + movs r0, 0x1 + b _08086514 +_08086512: + movs r0, 0 +_08086514: + pop {r4} + pop {r1} + bx r1 + thumb_func_end map_loading_iteration_3 + + thumb_func_start load_map_stuff +@ int load_map_stuff(u8 *a1, int a2) +load_map_stuff: @ 808651C + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldrb r0, [r4] + cmp r0, 0xD + bls _0808652A + b _0808662E +_0808652A: + lsls r0, 2 + ldr r1, =_08086538 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08086538: + .4byte _08086570 + .4byte _0808657C + .4byte _08086586 + .4byte _0808658E + .4byte _08086598 + .4byte _080865A6 + .4byte _080865AC + .4byte _080865BC + .4byte _080865CC + .4byte _080865E8 + .4byte _080865EE + .4byte _080865F4 + .4byte _08086618 + .4byte _0808662A +_08086570: + bl sub_808631C + adds r0, r5, 0 + bl mli0_load_map + b _08086622 +_0808657C: + bl MoveSaveBlocks_ResetHeap_ + bl sub_80867D8 + b _08086622 +_08086586: + adds r0, r5, 0 + bl sub_8086988 + b _08086622 +_0808658E: + bl mli4_mapscripts_and_other + bl sub_8086A80 + b _08086622 +_08086598: + bl sub_80863B0 + bl map_loading_lcd_reset + bl sub_8197200 + b _08086622 +_080865A6: + bl move_tilemap_camera_to_upper_left_corner + b _08086622 +_080865AC: + ldr r0, =gMapHeader + ldr r0, [r0] + bl copy_map_tileset1_to_vram + b _08086622 + .pool +_080865BC: + ldr r0, =gMapHeader + ldr r0, [r0] + bl copy_map_tileset2_to_vram + b _08086622 + .pool +_080865CC: + bl free_temp_tile_data_buffers_if_possible + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0808662E + ldr r0, =gMapHeader + ldr r0, [r0] + bl apply_map_tileset1_tileset2_palette + b _08086622 + .pool +_080865E8: + bl DrawWholeMapView + b _08086622 +_080865EE: + bl cur_mapheader_run_tileset_funcs_after_some_cpuset + b _08086622 +_080865F4: + ldr r0, =gMapHeader + ldrb r1, [r0, 0x1A] + movs r0, 0xF8 + ands r0, r1 + cmp r0, 0x8 + bne _08086622 + bl sub_80E909C + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08086622 + bl AddMapNamePopUpWindowTask + b _08086622 + .pool +_08086618: + bl map_post_load_hook_exec + lsls r0, 24 + cmp r0, 0 + beq _0808662E +_08086622: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0808662E +_0808662A: + movs r0, 0x1 + b _08086630 +_0808662E: + movs r0, 0 +_08086630: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end load_map_stuff + + thumb_func_start sub_8086638 +sub_8086638: @ 8086638 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0x1 + beq _0808666E + cmp r0, 0x1 + bgt _0808664C + cmp r0, 0 + beq _08086656 + b _0808668E +_0808664C: + cmp r0, 0x2 + beq _08086678 + cmp r0, 0x3 + beq _0808668A + b _0808668E +_08086656: + bl MoveSaveBlocks_ResetHeap_ + bl sub_80867D8 + movs r0, 0 + bl sub_8086988 + bl sub_8086A68 + bl sub_8086A80 + b _08086682 +_0808666E: + bl sub_8086860 + bl sub_81D64C0 + b _08086682 +_08086678: + bl map_post_load_hook_exec + lsls r0, 24 + cmp r0, 0 + beq _0808668E +_08086682: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _0808668E +_0808668A: + movs r0, 0x1 + b _08086690 +_0808668E: + movs r0, 0 +_08086690: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8086638 + + thumb_func_start map_loading_iteration_2_link +map_loading_iteration_2_link: @ 8086698 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4] + cmp r0, 0xD + bls _080866A4 + b _080867A8 +_080866A4: + lsls r0, 2 + ldr r1, =_080866B4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_080866B4: + .4byte _080866EC + .4byte _080866FA + .4byte _08086702 + .4byte _08086710 + .4byte _0808671E + .4byte _08086724 + .4byte _08086734 + .4byte _08086744 + .4byte _08086760 + .4byte _08086766 + .4byte _08086792 + .4byte _0808676C + .4byte _08086788 + .4byte _0808679A +_080866EC: + bl sub_808631C + bl MoveSaveBlocks_ResetHeap_ + bl sub_80867D8 + b _08086792 +_080866FA: + movs r0, 0x1 + bl sub_8086988 + b _08086792 +_08086702: + bl sub_8086B9C + bl sub_8086A68 + bl sub_8086AC8 + b _08086792 +_08086710: + bl sub_80863B0 + bl map_loading_lcd_reset + bl sub_8197200 + b _08086792 +_0808671E: + bl move_tilemap_camera_to_upper_left_corner + b _08086792 +_08086724: + ldr r0, =gMapHeader + ldr r0, [r0] + bl copy_map_tileset1_to_vram + b _08086792 + .pool +_08086734: + ldr r0, =gMapHeader + ldr r0, [r0] + bl copy_map_tileset2_to_vram + b _08086792 + .pool +_08086744: + bl free_temp_tile_data_buffers_if_possible + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _080867A8 + ldr r0, =gMapHeader + ldr r0, [r0] + bl apply_map_tileset1_tileset2_palette + b _08086792 + .pool +_08086760: + bl DrawWholeMapView + b _08086792 +_08086766: + bl cur_mapheader_run_tileset_funcs_after_some_cpuset + b _08086792 +_0808676C: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08086792 + bl sub_800E0E8 + movs r0, 0 + movs r1, 0 + bl sub_800DFB4 + b _08086792 + .pool +_08086788: + bl map_post_load_hook_exec + lsls r0, 24 + cmp r0, 0 + beq _080867A8 +_08086792: + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + b _080867A8 +_0808679A: + bl SetFieldVBlankCallback + ldrb r0, [r4] + adds r0, 0x1 + strb r0, [r4] + movs r0, 0x1 + b _080867AA +_080867A8: + movs r0, 0 +_080867AA: + pop {r4} + pop {r1} + bx r1 + thumb_func_end map_loading_iteration_2_link + + thumb_func_start do_load_map_stuff_loop +do_load_map_stuff_loop: @ 80867B0 + push {r4,lr} + adds r4, r0, 0 +_080867B4: + adds r0, r4, 0 + movs r1, 0 + bl load_map_stuff + cmp r0, 0 + beq _080867B4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end do_load_map_stuff_loop + + thumb_func_start MoveSaveBlocks_ResetHeap_ +MoveSaveBlocks_ResetHeap_: @ 80867C8 + push {lr} + bl sub_81BE6AC + bl MoveSaveBlocks_ResetHeap + pop {r0} + bx r0 + thumb_func_end MoveSaveBlocks_ResetHeap_ + + thumb_func_start sub_80867D8 +sub_80867D8: @ 80867D8 + push {r4-r7,lr} + sub sp, 0x4 + movs r0, 0 + movs r1, 0 + bl SetGpuReg + bl remove_some_task + ldr r2, =0x05000002 + mov r1, sp + movs r0, 0 + strh r0, [r1] + ldr r1, =0x040000d4 + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + ldr r0, =0x810001ff + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r2, 0xC0 + lsls r2, 19 + movs r3, 0xC0 + lsls r3, 9 + mov r4, sp + movs r6, 0 + movs r5, 0x80 + lsls r5, 5 + ldr r7, =0x81000800 + movs r0, 0x81 + lsls r0, 24 + mov r12, r0 +_08086816: + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + str r7, [r1, 0x8] + ldr r0, [r1, 0x8] + adds r2, r5 + subs r3, r5 + cmp r3, r5 + bhi _08086816 + strh r6, [r4] + mov r0, sp + str r0, [r1] + str r2, [r1, 0x4] + lsrs r0, r3, 1 + mov r2, r12 + orrs r0, r2 + str r0, [r1, 0x8] + ldr r0, [r1, 0x8] + movs r0, 0 + movs r1, 0x80 + bl ResetOamRange + bl LoadOam + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80867D8 + + thumb_func_start sub_8086860 +sub_8086860: @ 8086860 + push {lr} + bl sub_80863B0 + bl map_loading_lcd_reset + bl sub_8197200 + bl mapdata_load_assets_to_gpu_and_full_redraw + pop {r0} + bx r0 + thumb_func_end sub_8086860 + + thumb_func_start map_loading_lcd_reset +map_loading_lcd_reset: @ 8086878 + push {r4,lr} + bl clear_scheduled_bg_copies_to_vram + bl reset_temp_tile_data_buffers + movs r0, 0x4C + movs r1, 0 + bl SetGpuReg + ldr r1, =0x00001f1f + movs r0, 0x48 + bl SetGpuReg + ldr r1, =0x00000101 + movs r0, 0x4A + bl SetGpuReg + movs r0, 0x40 + movs r1, 0xFF + bl SetGpuReg + movs r0, 0x44 + movs r1, 0xFF + bl SetGpuReg + ldr r4, =0x0000ffff + movs r0, 0x42 + adds r1, r4, 0 + bl SetGpuReg + movs r0, 0x46 + adds r1, r4, 0 + bl SetGpuReg + ldr r0, =gUnknown_82EC7C4 + ldrh r1, [r0, 0x2] + ldrh r2, [r0, 0x4] + orrs r1, r2 + ldrh r0, [r0, 0x6] + orrs r1, r0 + movs r2, 0x82 + lsls r2, 5 + adds r0, r2, 0 + orrs r1, r0 + movs r0, 0x50 + bl SetGpuReg + ldr r1, =0x0000070d + movs r0, 0x52 + bl SetGpuReg + bl overworld_bg_setup + movs r0, 0x1 + bl schedule_bg_copy_tilemap_to_vram + movs r0, 0x2 + bl schedule_bg_copy_tilemap_to_vram + movs r0, 0x3 + bl schedule_bg_copy_tilemap_to_vram + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl ChangeBgX + movs r0, 0 + movs r1, 0 + movs r2, 0 + bl ChangeBgY + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl ChangeBgX + movs r0, 0x1 + movs r1, 0 + movs r2, 0 + bl ChangeBgY + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl ChangeBgX + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl ChangeBgY + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl ChangeBgX + movs r0, 0x3 + movs r1, 0 + movs r2, 0 + bl ChangeBgY + ldr r1, =0x00007060 + movs r0, 0 + bl SetGpuReg + movs r0, 0 + bl ShowBg + movs r0, 0x1 + bl ShowBg + movs r0, 0x2 + bl ShowBg + movs r0, 0x3 + bl ShowBg + bl sub_8098128 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end map_loading_lcd_reset + + thumb_func_start sub_8086988 +sub_8086988: @ 8086988 + push {r4,lr} + adds r4, r0, 0 + bl ResetTasks + bl ResetSpriteData + bl ResetPaletteFade + bl dp12_8087EA4 + bl dp13_810BB8C + bl ResetCameraUpdateInfo + bl InstallCameraPanAheadCallback + cmp r4, 0 + bne _080869B4 + movs r0, 0 + bl npc_paltag_set_load + b _080869BA +_080869B4: + movs r0, 0x1 + bl npc_paltag_set_load +_080869BA: + bl FieldEffectActiveListClear + bl sub_80AAFA4 + bl sub_80AEE84 + cmp r4, 0 + bne _080869CE + bl overworld_ensure_per_step_coros_running +_080869CE: + bl mapheader_run_script_with_tag_x5 + bl sub_81BE6B8 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8086988 + + thumb_func_start sub_80869DC +sub_80869DC: @ 80869DC + push {lr} + ldr r0, =gUnknown_03005DEC + movs r1, 0 + strh r1, [r0] + ldr r0, =gUnknown_03005DE8 + strh r1, [r0] + bl sub_808D438 + movs r0, 0 + movs r1, 0 + bl SpawnFieldObjectsInView + bl mapheader_run_first_tag4_script_list_match + pop {r0} + bx r0 + .pool + thumb_func_end sub_80869DC + + thumb_func_start mli4_mapscripts_and_other +mli4_mapscripts_and_other: @ 8086A04 + push {r4,r5,lr} + sub sp, 0x4 + ldr r0, =gUnknown_03005DEC + movs r1, 0 + strh r1, [r0] + ldr r0, =gUnknown_03005DE8 + strh r1, [r0] + bl sub_808D438 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sav1_camera_get_focus_coords + bl sub_80852D4 + adds r5, r0, 0 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r4, r2] + ldrb r2, [r5, 0x1] + ldr r3, =gSaveBlock2Ptr + ldr r3, [r3] + ldrb r3, [r3, 0x8] + bl InitPlayerAvatar + ldrb r0, [r5] + bl SetPlayerAvatarTransitionFlags + bl player_avatar_init_params_reset + movs r0, 0 + movs r1, 0 + bl SpawnFieldObjectsInView + bl mapheader_run_first_tag4_script_list_match + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end mli4_mapscripts_and_other + + thumb_func_start sub_8086A68 +sub_8086A68: @ 8086A68 + push {lr} + movs r0, 0 + movs r1, 0 + bl sub_808E16C + bl sub_80FBED0 + bl mapheader_run_script_with_tag_x7 + pop {r0} + bx r0 + thumb_func_end sub_8086A68 + + thumb_func_start sub_8086A80 +sub_8086A80: @ 8086A80 + push {lr} + ldr r2, =gMapObjects + ldr r3, =gPlayerAvatar + ldrb r1, [r3, 0x5] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrb r1, [r0, 0x1] + movs r2, 0x80 + orrs r1, r2 + strb r1, [r0, 0x1] + ldrb r0, [r3, 0x4] + bl InitCameraUpdateCallback + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086A80 + + thumb_func_start sub_8086AAC +sub_8086AAC: @ 8086AAC + push {lr} + ldr r0, =gUnknown_03005DB4 + ldrb r0, [r0] + bl sub_8087858 + lsls r0, 24 + lsrs r0, 24 + bl InitCameraUpdateCallback + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086AAC + + thumb_func_start sub_8086AC8 +sub_8086AC8: @ 8086AC8 + push {lr} + ldr r0, =gUnknown_03005DB4 + ldrb r0, [r0] + bl sub_8087858 + lsls r0, 24 + lsrs r0, 24 + bl InitCameraUpdateCallback + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086AC8 + + thumb_func_start sub_8086AE4 +sub_8086AE4: @ 8086AE4 + push {r4,lr} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sav1_camera_get_focus_coords + mov r2, sp + ldr r0, =gUnknown_03005DB4 + ldrb r1, [r0] + ldrh r0, [r2] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + ldrh r1, [r4] + bl sub_8088B3C + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086AE4 + + thumb_func_start sub_8086B14 +sub_8086B14: @ 8086B14 + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sav1_camera_get_focus_coords + mov r3, sp + mov r2, sp + ldr r0, =gUnknown_03005DB4 + ldrb r1, [r0] + ldrh r0, [r2] + subs r0, r1 + strh r0, [r3] + movs r6, 0 + ldr r0, =gUnknown_03005DB8 + mov r8, r4 + ldrb r0, [r0] + cmp r6, r0 + bcs _08086B7E + ldr r7, =gLinkPlayers +_08086B44: + lsls r5, r6, 24 + lsrs r5, 24 + mov r0, sp + ldrh r1, [r0] + adds r1, r6, r1 + lsls r1, 16 + asrs r1, 16 + mov r0, r8 + movs r3, 0 + ldrsh r2, [r0, r3] + lsls r4, r6, 3 + subs r4, r6 + lsls r4, 2 + adds r4, r7 + ldrb r3, [r4, 0x13] + adds r0, r5, 0 + bl sub_80876F0 + ldrb r1, [r4] + adds r0, r5, 0 + bl sub_8087BCC + adds r0, r6, 0x1 + lsls r0, 16 + lsrs r6, r0, 16 + ldr r0, =gUnknown_03005DB8 + ldrb r0, [r0] + cmp r6, r0 + bcc _08086B44 +_08086B7E: + bl sub_8086C40 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086B14 + + thumb_func_start sub_8086B9C +sub_8086B9C: @ 8086B9C + push {r4,r5,lr} + movs r4, 0 + ldr r0, =gUnknown_03005DB8 + ldrb r0, [r0] + cmp r4, r0 + bcs _08086BCA + ldr r5, =gLinkPlayers +_08086BAA: + lsls r0, r4, 24 + lsrs r0, 24 + lsls r1, r4, 3 + subs r1, r4 + lsls r1, 2 + adds r1, r5 + ldrb r1, [r1] + bl sub_8087BCC + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 + ldr r0, =gUnknown_03005DB8 + ldrb r0, [r0] + cmp r4, r0 + bcc _08086BAA +_08086BCA: + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086B9C + + thumb_func_start c1_link_related +c1_link_related: @ 8086BD8 + push {r4,lr} + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08086BF2 + bl sub_800F0B8 + cmp r0, 0 + beq _08086BF2 + bl sub_8009F3C + cmp r0, 0 + bne _08086C14 +_08086BF2: + ldr r0, =gUnknown_03005DB4 + ldrb r4, [r0] + ldr r0, =gUnknown_03003020 + adds r1, r4, 0 + bl sub_8086F38 + ldr r0, =gUnknown_03000E14 + ldr r1, [r0] + adds r0, r4, 0 + bl _call_via_r1 + lsls r0, 16 + lsrs r0, 16 + bl sub_8086FA0 + bl sub_8086C40 +_08086C14: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end c1_link_related + + thumb_func_start sub_8086C2C +sub_8086C2C: @ 8086C2C + push {lr} + bl sub_8086C90 + ldr r0, =sub_80870B0 + bl c1_link_related_func_set + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086C2C + + thumb_func_start sub_8086C40 +sub_8086C40: @ 8086C40 + push {lr} + ldr r0, =gUnknown_03003020 + bl sub_808709C + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086C40 + + thumb_func_start c1_link_related_func_set +c1_link_related_func_set: @ 8086C50 + ldr r2, =gUnknown_03000E19 + movs r1, 0 + strb r1, [r2] + ldr r1, =gUnknown_03000E14 + str r0, [r1] + bx lr + .pool + thumb_func_end c1_link_related_func_set + + thumb_func_start sub_8086C64 +sub_8086C64: @ 8086C64 + push {lr} + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08086C82 + ldr r1, =gUnknown_03000E19 + ldrb r0, [r1] + adds r0, 0x1 + strb r0, [r1] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3C + bls _08086C82 + bl sub_8010198 +_08086C82: + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086C64 + + thumb_func_start sub_8086C90 +sub_8086C90: @ 8086C90 + push {lr} + ldr r1, =gUnknown_03000E10 + movs r2, 0x80 + adds r0, r1, 0x3 +_08086C98: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08086C98 + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086C90 + + thumb_func_start sub_8086CA8 +sub_8086CA8: @ 8086CA8 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, =gUnknown_03005DB8 + ldrb r2, [r0] + movs r1, 0 + cmp r1, r2 + bge _08086CD6 + ldr r4, =gUnknown_03000E10 +_08086CBA: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + beq _08086CD0 + movs r0, 0 + b _08086CD8 + .pool +_08086CD0: + adds r1, 0x1 + cmp r1, r2 + blt _08086CBA +_08086CD6: + movs r0, 0x1 +_08086CD8: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8086CA8 + + thumb_func_start sub_8086CE0 +sub_8086CE0: @ 8086CE0 + push {r4,lr} + lsls r0, 16 + lsrs r3, r0, 16 + ldr r0, =gUnknown_03005DB8 + ldrb r2, [r0] + movs r1, 0 + cmp r1, r2 + bge _08086D0E + ldr r4, =gUnknown_03000E10 +_08086CF2: + adds r0, r1, r4 + ldrb r0, [r0] + cmp r0, r3 + bne _08086D08 + movs r0, 0x1 + b _08086D10 + .pool +_08086D08: + adds r1, 0x1 + cmp r1, r2 + blt _08086CF2 +_08086D0E: + movs r0, 0 +_08086D10: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8086CE0 + + thumb_func_start sub_8086D18 +sub_8086D18: @ 8086D18 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r0, 0 + adds r6, r2, 0 + mov r9, r3 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + ldr r0, =gUnknown_03000E10 + adds r5, r7, r0 + ldrb r0, [r5] + cmp r0, 0x80 + beq _08086D38 + b _08086EB2 +_08086D38: + adds r0, r6, 0 + bl sub_8087370 + adds r4, r0, 0 + cmp r4, 0 + beq _08086D70 + bl sub_8087480 + mov r1, r9 + strh r0, [r1] + movs r0, 0x81 + strb r0, [r5] + ldrb r0, [r6, 0x1] + cmp r0, 0 + bne _08086D58 + b _08086F26 +_08086D58: + ldr r0, =sub_80870F8 + bl c1_link_related_func_set + adds r0, r4, 0 + bl sub_8087530 + b _08086F26 + .pool +_08086D70: + movs r0, 0x83 + bl sub_8086CE0 + cmp r0, 0x1 + bne _08086D98 + movs r0, 0x81 + strb r0, [r5] + ldrb r0, [r6, 0x1] + cmp r0, 0 + bne _08086D86 + b _08086F26 +_08086D86: + ldr r0, =sub_80870F8 + bl c1_link_related_func_set + bl sub_8087584 + b _08086F26 + .pool +_08086D98: + mov r0, r8 + subs r0, 0x12 + cmp r0, 0xA + bls _08086DA2 + b _08086EB2 +_08086DA2: + lsls r0, 2 + ldr r1, =_08086DB0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08086DB0: + .4byte _08086E08 + .4byte _08086EB2 + .4byte _08086EB2 + .4byte _08086EB2 + .4byte _08086EB2 + .4byte _08086EB2 + .4byte _08086DDC + .4byte _08086E34 + .4byte _08086EB2 + .4byte _08086E64 + .4byte _08086E90 +_08086DDC: + adds r0, r6, 0 + bl sub_8087358 + cmp r0, 0 + beq _08086EB2 + ldr r0, =gUnknown_03000E10 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08086EB2 + ldr r0, =sub_80870F8 + bl c1_link_related_func_set + bl sub_808751C + b _08086EB2 + .pool +_08086E08: + adds r0, r6, 0 + bl sub_8087388 + cmp r0, 0x1 + bne _08086EB2 + ldr r0, =gUnknown_03000E10 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08086EB2 + ldr r0, =sub_80870F8 + bl c1_link_related_func_set + bl sub_808754C + b _08086EB2 + .pool +_08086E34: + adds r0, r6, 0 + bl sub_80873B4 + adds r4, r0, 0 + cmp r4, 0 + beq _08086EB2 + ldr r0, =gUnknown_03000E10 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08086EB2 + ldr r0, =sub_80870F8 + bl c1_link_related_func_set + adds r0, r4, 0 + bl sub_8087568 + b _08086EB2 + .pool +_08086E64: + adds r0, r6, 0 + bl sub_8087340 + cmp r0, 0 + beq _08086EB2 + ldr r0, =gUnknown_03000E10 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08086EB2 + ldr r0, =sub_808711C + bl c1_link_related_func_set + bl sub_8087510 + b _08086EB2 + .pool +_08086E90: + adds r0, r6, 0 + bl sub_8087340 + cmp r0, 0 + beq _08086EB2 + ldr r0, =gUnknown_03000E10 + adds r0, r7, r0 + movs r1, 0x81 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08086EB2 + ldr r0, =sub_8087140 + bl c1_link_related_func_set + bl sub_8087510 +_08086EB2: + mov r0, r8 + cmp r0, 0x17 + beq _08086ED8 + cmp r0, 0x17 + bgt _08086ECC + cmp r0, 0x16 + beq _08086EE8 + b _08086F26 + .pool +_08086ECC: + mov r1, r8 + cmp r1, 0x1A + beq _08086EF8 + cmp r1, 0x1D + beq _08086F18 + b _08086F26 +_08086ED8: + ldr r0, =gUnknown_03000E10 + adds r0, r7, r0 + movs r1, 0x83 + strb r1, [r0] + b _08086F26 + .pool +_08086EE8: + ldr r0, =gUnknown_03000E10 + adds r0, r7, r0 + movs r1, 0x82 + strb r1, [r0] + b _08086F26 + .pool +_08086EF8: + ldr r0, =gUnknown_03000E10 + adds r0, r7, r0 + movs r1, 0x80 + strb r1, [r0] + ldrb r0, [r6, 0x1] + cmp r0, 0 + beq _08086F26 + ldr r0, =sub_80870B0 + bl c1_link_related_func_set + b _08086F26 + .pool +_08086F18: + ldr r0, =gUnknown_03000E10 + adds r1, r7, r0 + ldrb r0, [r1] + cmp r0, 0x82 + bne _08086F26 + movs r0, 0x81 + strb r0, [r1] +_08086F26: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086D18 + + thumb_func_start sub_8086F38 +sub_8086F38: @ 8086F38 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r8, r1 + movs r6, 0 + add r5, sp, 0x10 + mov r9, r5 + adds r7, r0, 0 +_08086F4C: + ldrb r4, [r7] + movs r0, 0 + strh r0, [r5] + adds r0, r6, 0 + mov r1, r8 + mov r2, sp + bl sub_80872D8 + adds r0, r6, 0 + adds r1, r4, 0 + mov r2, sp + adds r3, r5, 0 + bl sub_8086D18 + ldr r0, =gUnknown_03000E10 + adds r0, r6, r0 + ldrb r0, [r0] + cmp r0, 0x80 + bne _08086F7C + adds r0, r4, 0 + bl sub_8087068 + mov r1, r9 + strh r0, [r1] +_08086F7C: + lsls r0, r6, 24 + lsrs r0, 24 + ldrb r1, [r5] + bl sub_808796C + adds r7, 0x2 + adds r6, 0x1 + cmp r6, 0x3 + ble _08086F4C + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086F38 + + thumb_func_start sub_8086FA0 +sub_8086FA0: @ 8086FA0 + push {r4,lr} + lsls r0, 16 + lsrs r4, r0, 16 + ldr r1, =0xffef0000 + adds r0, r1 + lsrs r0, 16 + cmp r0, 0xC + bhi _08086FC0 + ldr r0, =gUnknown_03005DA8 + strh r4, [r0] + b _08086FC6 + .pool +_08086FC0: + ldr r1, =gUnknown_03005DA8 + movs r0, 0x11 + strh r0, [r1] +_08086FC6: + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + beq _08086FFC + bl sub_8087690 + cmp r0, 0x1 + bls _08086FFC + bl is_c1_link_related_active + cmp r0, 0x1 + bne _08086FFC + bl sub_8009F3C + cmp r0, 0x1 + bne _08086FFC + cmp r4, 0x11 + blt _08086FFC + cmp r4, 0x15 + ble _08086FF6 + cmp r4, 0x19 + bgt _08086FFC + cmp r4, 0x18 + blt _08086FFC +_08086FF6: + ldr r1, =gUnknown_03005DA8 + movs r0, 0 + strh r0, [r1] +_08086FFC: + pop {r4} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8086FA0 + + thumb_func_start sub_808700C +sub_808700C: @ 808700C + push {lr} + ldr r2, =gMain + ldrh r1, [r2, 0x2C] + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _08087024 + movs r0, 0x13 + b _08087064 + .pool +_08087024: + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08087030 + movs r0, 0x12 + b _08087064 +_08087030: + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + beq _0808703C + movs r0, 0x14 + b _08087064 +_0808703C: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _08087048 + movs r0, 0x15 + b _08087064 +_08087048: + ldrh r1, [r2, 0x2E] + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08087056 + movs r0, 0x18 + b _08087064 +_08087056: + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08087062 + movs r0, 0x11 + b _08087064 +_08087062: + movs r0, 0x19 +_08087064: + pop {r1} + bx r1 + thumb_func_end sub_808700C + + thumb_func_start sub_8087068 +sub_8087068: @ 8087068 + push {lr} + lsls r0, 16 + lsrs r0, 16 + adds r1, r0, 0 + cmp r0, 0x13 + beq _0808708E + cmp r0, 0x13 + bgt _0808707E + cmp r0, 0x12 + beq _08087092 + b _08087096 +_0808707E: + cmp r1, 0x14 + beq _0808708A + cmp r1, 0x15 + bne _08087096 + movs r0, 0x4 + b _08087098 +_0808708A: + movs r0, 0x3 + b _08087098 +_0808708E: + movs r0, 0x1 + b _08087098 +_08087092: + movs r0, 0x2 + b _08087098 +_08087096: + movs r0, 0 +_08087098: + pop {r1} + bx r1 + thumb_func_end sub_8087068 + + thumb_func_start sub_808709C +sub_808709C: @ 808709C + push {lr} + movs r2, 0x11 + adds r1, r0, 0x6 +_080870A2: + strh r2, [r1] + subs r1, 0x2 + cmp r1, r0 + bge _080870A2 + pop {r0} + bx r0 + thumb_func_end sub_808709C + + thumb_func_start sub_80870B0 +sub_80870B0: @ 80870B0 + push {r4,lr} + adds r4, r0, 0 + bl ScriptContext2_IsEnabled + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _080870C4 + movs r0, 0x11 + b _080870E6 +_080870C4: + bl sub_800B4DC + cmp r0, 0x4 + bls _080870D0 + movs r0, 0x1B + b _080870E6 +_080870D0: + bl sub_8087690 + cmp r0, 0x4 + bls _080870DC + movs r0, 0x1C + b _080870E6 +_080870DC: + adds r0, r4, 0 + bl sub_808700C + lsls r0, 16 + lsrs r0, 16 +_080870E6: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80870B0 + + thumb_func_start sub_80870EC +sub_80870EC: @ 80870EC + push {lr} + bl sub_8086C64 + movs r0, 0x11 + pop {r1} + bx r1 + thumb_func_end sub_80870EC + + thumb_func_start sub_80870F8 +sub_80870F8: @ 80870F8 + push {r4,lr} + bl ScriptContext2_IsEnabled + lsls r0, 24 + lsrs r0, 24 + movs r4, 0x11 + cmp r0, 0x1 + beq _08087110 + movs r4, 0x1A + ldr r0, =sub_80870EC + bl c1_link_related_func_set +_08087110: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80870F8 + + thumb_func_start sub_808711C +sub_808711C: @ 808711C + push {r4,lr} + bl sub_800B4DC + movs r4, 0x11 + cmp r0, 0x2 + bhi _08087134 + movs r4, 0x1A + bl ScriptContext2_Disable + ldr r0, =sub_80870EC + bl c1_link_related_func_set +_08087134: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_808711C + + thumb_func_start sub_8087140 +sub_8087140: @ 8087140 + push {r4,lr} + bl sub_8087690 + movs r4, 0x11 + cmp r0, 0x2 + bhi _08087158 + movs r4, 0x1A + bl ScriptContext2_Disable + ldr r0, =sub_80870EC + bl c1_link_related_func_set +_08087158: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_8087140 + + thumb_func_start sub_8087164 +sub_8087164: @ 8087164 + push {lr} + bl sub_8086C64 + movs r0, 0x11 + pop {r1} + bx r1 + thumb_func_end sub_8087164 + + thumb_func_start sub_8087170 +sub_8087170: @ 8087170 + push {lr} + ldr r1, =gUnknown_03000E10 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x82 + bne _080871A0 + ldr r0, =gMain + ldrh r1, [r0, 0x2E] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _080871A4 + ldr r0, =sub_8087164 + bl c1_link_related_func_set + movs r0, 0x1D + b _080871A6 + .pool +_080871A0: + bl sub_8086C64 +_080871A4: + movs r0, 0x11 +_080871A6: + pop {r1} + bx r1 + thumb_func_end sub_8087170 + + thumb_func_start sub_80871AC +sub_80871AC: @ 80871AC + push {lr} + ldr r0, =sub_8087170 + bl c1_link_related_func_set + movs r0, 0x16 + pop {r1} + bx r1 + .pool + thumb_func_end sub_80871AC + + thumb_func_start sub_80871C0 +sub_80871C0: @ 80871C0 + movs r0, 0x11 + bx lr + thumb_func_end sub_80871C0 + + thumb_func_start sub_80871C4 +sub_80871C4: @ 80871C4 + push {lr} + ldr r1, =gUnknown_03000E10 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x83 + beq _080871D4 + bl sub_8086C64 +_080871D4: + movs r0, 0x83 + bl sub_8086CA8 + cmp r0, 0x1 + bne _080871EA + ldr r0, =gUnknown_08277513 + bl ScriptContext1_SetupScript + ldr r0, =sub_80871C0 + bl c1_link_related_func_set +_080871EA: + movs r0, 0x11 + pop {r1} + bx r1 + .pool + thumb_func_end sub_80871C4 + + thumb_func_start sub_80871FC +sub_80871FC: @ 80871FC + push {lr} + ldr r0, =sub_80871C4 + bl c1_link_related_func_set + movs r0, 0x17 + pop {r1} + bx r1 + .pool + thumb_func_end sub_80871FC + + thumb_func_start sub_8087210 +sub_8087210: @ 8087210 + movs r0, 0x11 + bx lr + thumb_func_end sub_8087210 + + thumb_func_start sub_8087214 +sub_8087214: @ 8087214 + push {lr} + movs r0, 0x83 + bl sub_8086CE0 + cmp r0, 0x1 + beq _08087250 + ldr r0, =gUnknown_03000E14 + ldr r2, [r0] + ldr r1, =sub_8087170 + adds r3, r0, 0 + cmp r2, r1 + bne _0808723A + ldr r1, =gUnknown_03000E10 + ldr r0, =gUnknown_03005DB4 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x82 + bne _08087272 +_0808723A: + ldr r1, [r3] + ldr r0, =sub_8087164 + cmp r1, r0 + bne _08087268 + ldr r1, =gUnknown_03000E10 + ldr r0, =gUnknown_03005DB4 + ldrb r0, [r0] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0x81 + bne _08087268 +_08087250: + movs r0, 0x2 + b _08087278 + .pool +_08087268: + movs r0, 0x82 + bl sub_8086CA8 + cmp r0, 0 + bne _08087276 +_08087272: + movs r0, 0 + b _08087278 +_08087276: + movs r0, 0x1 +_08087278: + pop {r1} + bx r1 + thumb_func_end sub_8087214 + + thumb_func_start sub_808727C +sub_808727C: @ 808727C + push {lr} + movs r0, 0x83 + bl sub_8086CE0 + pop {r1} + bx r1 + thumb_func_end sub_808727C + + thumb_func_start sub_8087288 +sub_8087288: @ 8087288 + push {lr} + ldr r0, =sub_80871AC + bl c1_link_related_func_set + movs r0, 0 + pop {r1} + bx r1 + .pool + thumb_func_end sub_8087288 + + thumb_func_start sub_808729C +sub_808729C: @ 808729C + push {lr} + ldr r0, =sub_80870F8 + bl c1_link_related_func_set + movs r0, 0 + pop {r1} + bx r1 + .pool + thumb_func_end sub_808729C + + thumb_func_start sub_80872B0 +sub_80872B0: @ 80872B0 + push {lr} + ldr r0, =sub_80871FC + bl c1_link_related_func_set + movs r0, 0 + pop {r1} + bx r1 + .pool + thumb_func_end sub_80872B0 + + thumb_func_start sub_80872C4 +sub_80872C4: @ 80872C4 + push {lr} + ldr r0, =sub_8087210 + bl c1_link_related_func_set + movs r0, 0 + pop {r1} + bx r1 + .pool + thumb_func_end sub_80872C4 + + thumb_func_start sub_80872D8 +sub_80872D8: @ 80872D8 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r6, r2, 0 + strb r4, [r6] + movs r0, 0 + cmp r4, r1 + bne _080872EA + movs r0, 0x1 +_080872EA: + strb r0, [r6, 0x1] + ldr r1, =gLinkPlayerMapObjects + lsls r0, r4, 2 + adds r0, r1 + ldrb r0, [r0, 0x3] + strb r0, [r6, 0x2] + lsls r4, 24 + lsrs r4, 24 + adds r0, r4, 0 + bl sub_80878A0 + strb r0, [r6, 0x3] + mov r5, sp + adds r5, 0x2 + adds r0, r4, 0 + mov r1, sp + adds r2, r5, 0 + bl sub_8087878 + mov r0, sp + ldrh r0, [r0] + strh r0, [r6, 0x4] + ldrh r0, [r5] + strh r0, [r6, 0x6] + adds r0, r4, 0 + bl sub_80878C0 + strb r0, [r6, 0x8] + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + movs r2, 0 + ldrsh r1, [r5, r2] + bl MapGridGetMetatileBehaviorAt + strh r0, [r6, 0xC] + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80872D8 + + thumb_func_start sub_8087340 +sub_8087340: @ 8087340 + push {lr} + ldrb r0, [r0, 0x2] + cmp r0, 0x2 + beq _0808734C + cmp r0, 0 + bne _08087350 +_0808734C: + movs r0, 0x1 + b _08087352 +_08087350: + movs r0, 0 +_08087352: + pop {r1} + bx r1 + thumb_func_end sub_8087340 + + thumb_func_start sub_8087358 +sub_8087358: @ 8087358 + push {lr} + ldrb r0, [r0, 0x2] + cmp r0, 0x2 + beq _08087364 + cmp r0, 0 + bne _08087368 +_08087364: + movs r0, 0x1 + b _0808736A +_08087368: + movs r0, 0 +_0808736A: + pop {r1} + bx r1 + thumb_func_end sub_8087358 + + thumb_func_start sub_8087370 +sub_8087370: @ 8087370 + push {lr} + adds r1, r0, 0 + ldrb r0, [r1, 0x2] + cmp r0, 0x2 + bne _08087382 + adds r0, r1, 0x4 + bl sub_809D0F4 + b _08087384 +_08087382: + movs r0, 0 +_08087384: + pop {r1} + bx r1 + thumb_func_end sub_8087370 + + thumb_func_start sub_8087388 +sub_8087388: @ 8087388 + push {r4,lr} + adds r4, r0, 0 + ldrb r0, [r4, 0x2] + cmp r0, 0x2 + beq _08087396 + cmp r0, 0 + bne _080873AC +_08087396: + ldrb r0, [r4, 0xC] + bl MetatileBehavior_IsSouthArrowWarp + lsls r0, 24 + cmp r0, 0 + beq _080873AC + ldrb r0, [r4, 0x3] + cmp r0, 0x1 + bne _080873AC + movs r0, 0x1 + b _080873AE +_080873AC: + movs r0, 0 +_080873AE: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8087388 + + thumb_func_start sub_80873B4 +sub_80873B4: @ 80873B4 + push {r4,lr} + sub sp, 0x8 + adds r4, r0, 0 + ldrb r0, [r4, 0x2] + cmp r0, 0 + beq _080873C8 + cmp r0, 0x2 + beq _080873C8 + movs r0, 0 + b _08087476 +_080873C8: + ldr r0, [r4, 0x4] + ldr r1, [r4, 0x8] + str r0, [sp] + str r1, [sp, 0x4] + ldr r3, =gUnknown_08339D64 + ldrb r0, [r4, 0x3] + lsls r0, 3 + adds r0, r3 + ldr r0, [r0] + mov r1, sp + ldrh r1, [r1] + adds r0, r1 + lsls r0, 16 + lsrs r0, 16 + ldr r1, =0xffff0000 + ldr r2, [sp] + ands r2, r1 + orrs r2, r0 + str r2, [sp] + asrs r1, r2, 16 + ldrb r0, [r4, 0x3] + lsls r0, 3 + adds r3, 0x4 + adds r0, r3 + ldr r0, [r0] + adds r0, r1 + lsls r0, 16 + ldr r1, =0x0000ffff + ands r1, r2 + orrs r1, r0 + str r1, [sp] + ldr r2, =0xffffff00 + ldr r0, [sp, 0x4] + ands r0, r2 + str r0, [sp, 0x4] + mov r0, sp + movs r2, 0 + ldrsh r0, [r0, r2] + asrs r1, 16 + bl sub_808790C + lsls r0, 24 + lsrs r1, r0, 24 + adds r2, r1, 0 + cmp r1, 0x4 + beq _0808746C + ldrb r0, [r4, 0x1] + cmp r0, 0 + beq _08087434 + ldr r0, =gUnknown_03000E10 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, 0x80 + beq _08087450 +_08087434: + ldr r0, =gUnknown_0827749C + b _08087476 + .pool +_08087450: + adds r0, r2, 0 + bl sub_80B39D4 + cmp r0, 0 + bne _08087464 + ldr r0, =gUnknown_0827747E + b _08087476 + .pool +_08087464: + ldr r0, =gUnknown_0827748D + b _08087476 + .pool +_0808746C: + ldrb r1, [r4, 0xC] + ldrb r2, [r4, 0x3] + mov r0, sp + bl sub_809C2C8 +_08087476: + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_80873B4 + + thumb_func_start sub_8087480 +sub_8087480: @ 8087480 + push {lr} + adds r1, r0, 0 + ldr r0, =gUnknown_08277388 + cmp r1, r0 + beq _080874C6 + ldr r0, =gUnknown_082773A3 + cmp r1, r0 + beq _08087508 + ldr r0, =gUnknown_082773BE + cmp r1, r0 + beq _080874C6 + ldr r0, =gUnknown_082773D9 + cmp r1, r0 + beq _08087508 + ldr r0, =gUnknown_0827741D + cmp r1, r0 + beq _080874C6 + ldr r0, =gUnknown_08277432 + cmp r1, r0 + beq _08087508 + ldr r0, =gUnknown_08277447 + cmp r1, r0 + beq _080874C6 + ldr r0, =gUnknown_0827745C + cmp r1, r0 + beq _08087508 + ldr r0, =gUnknown_08277374 + cmp r1, r0 + beq _080874C6 + ldr r0, =gUnknown_0827737E + cmp r1, r0 + beq _08087508 + ldr r0, =gUnknown_082773F5 + cmp r1, r0 + bne _080874F8 +_080874C6: + movs r0, 0xA + b _0808750A + .pool +_080874F8: + ldr r0, =gUnknown_082773FF + cmp r1, r0 + beq _08087508 + movs r0, 0 + b _0808750A + .pool +_08087508: + movs r0, 0x9 +_0808750A: + pop {r1} + bx r1 + thumb_func_end sub_8087480 + + thumb_func_start sub_8087510 +sub_8087510: @ 8087510 + push {lr} + bl ScriptContext2_Enable + pop {r0} + bx r0 + thumb_func_end sub_8087510 + + thumb_func_start sub_808751C +sub_808751C: @ 808751C + push {lr} + movs r0, 0x6 + bl PlaySE + bl sub_809FA9C + bl ScriptContext2_Enable + pop {r0} + bx r0 + thumb_func_end sub_808751C + + thumb_func_start sub_8087530 +sub_8087530: @ 8087530 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x5 + bl PlaySE + adds r0, r4, 0 + bl ScriptContext1_SetupScript + bl ScriptContext2_Enable + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8087530 + + thumb_func_start sub_808754C +sub_808754C: @ 808754C + push {lr} + movs r0, 0x6 + bl PlaySE + ldr r0, =gUnknown_082774EF + bl ScriptContext1_SetupScript + bl ScriptContext2_Enable + pop {r0} + bx r0 + .pool + thumb_func_end sub_808754C + + thumb_func_start sub_8087568 +sub_8087568: @ 8087568 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0x5 + bl PlaySE + adds r0, r4, 0 + bl ScriptContext1_SetupScript + bl ScriptContext2_Enable + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8087568 + + thumb_func_start sub_8087584 +sub_8087584: @ 8087584 + push {lr} + ldr r0, =gUnknown_08277509 + bl ScriptContext1_SetupScript + bl ScriptContext2_Enable + pop {r0} + bx r0 + .pool + thumb_func_end sub_8087584 + + thumb_func_start sub_8087598 +sub_8087598: @ 8087598 + push {lr} + bl is_c1_link_related_active + cmp r0, 0 + bne _080875A6 + movs r0, 0 + b _080875C0 +_080875A6: + bl sub_800B4DC + cmp r0, 0x2 + bls _080875B8 + ldr r1, =gUnknown_03000E18 + movs r0, 0x1 + b _080875BC + .pool +_080875B8: + ldr r1, =gUnknown_03000E18 + movs r0, 0 +_080875BC: + strb r0, [r1] + ldrb r0, [r1] +_080875C0: + pop {r1} + bx r1 + .pool + thumb_func_end sub_8087598 + + thumb_func_start sub_80875C8 +sub_80875C8: @ 80875C8 + push {lr} + bl sub_800B4DC + cmp r0, 0x1 + bls _0808762C + bl is_c1_link_related_active + cmp r0, 0x1 + bne _0808762C + bl sub_8009F3C + cmp r0, 0x1 + bne _0808762C + ldr r0, =gUnknown_03000E14 + ldr r1, [r0] + ldr r0, =sub_808711C + cmp r1, r0 + beq _08087614 + ldr r0, =sub_80870F8 + cmp r1, r0 + bne _0808762C + ldr r0, =gUnknown_03000E18 + ldrb r2, [r0] + movs r1, 0 + strb r1, [r0] + cmp r2, 0x1 + beq _08087614 + ldr r2, =gPaletteFade + ldrb r1, [r2, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _0808762C + ldrb r1, [r2, 0xA] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0808762C +_08087614: + movs r0, 0x1 + b _0808762E + .pool +_0808762C: + movs r0, 0 +_0808762E: + pop {r1} + bx r1 + thumb_func_end sub_80875C8 + + thumb_func_start sub_8087634 +sub_8087634: @ 8087634 + push {lr} + bl sub_8087690 + cmp r0, 0x1 + bls _08087658 + bl is_c1_link_related_active + cmp r0, 0x1 + bne _08087658 + bl sub_8009F3C + cmp r0, 0x1 + bne _08087658 + ldr r0, =gUnknown_03000E14 + ldr r1, [r0] + ldr r0, =sub_8087140 + cmp r1, r0 + beq _08087664 +_08087658: + movs r0, 0 + b _08087666 + .pool +_08087664: + movs r0, 0x1 +_08087666: + pop {r1} + bx r1 + thumb_func_end sub_8087634 + + thumb_func_start sub_808766C +sub_808766C: @ 808766C + push {lr} + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _08087688 + bl sub_8009F3C + cmp r0, 0 + beq _08087688 + movs r0, 0x1 + b _0808768A + .pool +_08087688: + movs r0, 0 +_0808768A: + pop {r1} + bx r1 + thumb_func_end sub_808766C + + thumb_func_start sub_8087690 +sub_8087690: @ 8087690 + push {lr} + ldr r0, =gLinkVSyncDisabled + ldrb r0, [r0] + cmp r0, 0 + bne _080876B0 + ldr r0, =gUnknown_03003170 + ldr r1, =0x00000339 + adds r0, r1 + ldrb r0, [r0] + b _080876B8 + .pool +_080876B0: + ldr r0, =gUnknown_03005000 + ldr r1, =0x00000c1a + adds r0, r1 + ldrb r0, [r0] +_080876B8: + pop {r1} + bx r1 + .pool + thumb_func_end sub_8087690 + + thumb_func_start sub_80876C4 +sub_80876C4: @ 80876C4 + movs r1, 0 + str r1, [r0] + bx lr + thumb_func_end sub_80876C4 + + thumb_func_start strange_npc_table_clear +strange_npc_table_clear: @ 80876CC + push {lr} + ldr r0, =gLinkPlayerMapObjects + movs r1, 0 + movs r2, 0x10 + bl memset + pop {r0} + bx r0 + .pool + thumb_func_end strange_npc_table_clear + + thumb_func_start sub_80876E0 +sub_80876E0: @ 80876E0 + push {lr} + movs r1, 0 + movs r2, 0x24 + bl memset + pop {r0} + bx r0 + thumb_func_end sub_80876E0 + + thumb_func_start sub_80876F0 +sub_80876F0: @ 80876F0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + mov r9, r1 + mov r10, r2 + mov r8, r3 + lsls r0, 24 + lsrs r7, r0, 24 + mov r0, r9 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + mov r1, r10 + lsls r1, 16 + lsrs r1, 16 + mov r10, r1 + mov r2, r8 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + bl sub_808D4F4 + adds r6, r0, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r4, r7, 2 + ldr r0, =gLinkPlayerMapObjects + adds r4, r0 + lsls r5, r6, 3 + adds r5, r6 + lsls r5, 2 + ldr r0, =gMapObjects + adds r5, r0 + adds r0, r4, 0 + bl sub_80876C4 + adds r0, r5, 0 + bl sub_80876E0 + movs r2, 0 + movs r1, 0x1 + movs r0, 0x1 + strb r0, [r4] + strb r7, [r4, 0x1] + strb r6, [r4, 0x2] + strb r2, [r4, 0x3] + ldrb r0, [r5] + orrs r0, r1 + mov r2, r8 + ands r2, r1 + lsls r2, 1 + movs r1, 0x3 + negs r1, r1 + ands r0, r1 + orrs r0, r2 + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, 0x19] + movs r0, 0x40 + strb r0, [r5, 0x4] + mov r0, r9 + lsls r0, 16 + asrs r0, 16 + mov r9, r0 + mov r1, r10 + lsls r1, 16 + asrs r1, 16 + mov r10, r1 + adds r0, r5, 0 + mov r1, r9 + mov r2, r10 + bl sub_808779C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .pool + thumb_func_end sub_80876F0 + + thumb_func_start sub_808779C +sub_808779C: @ 808779C + push {r4,lr} + adds r4, r0, 0 + adds r0, r1, 0 + adds r1, r2, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + strh r0, [r4, 0x10] + strh r1, [r4, 0x12] + strh r0, [r4, 0x14] + strh r1, [r4, 0x16] + lsls r0, 16 + asrs r0, 16 + lsls r1, 16 + asrs r1, 16 + adds r2, r4, 0 + adds r2, 0xC + adds r3, r4, 0 + adds r3, 0xE + bl sub_8093038 + ldrh r0, [r4, 0xC] + adds r0, 0x8 + strh r0, [r4, 0xC] + adds r0, r4, 0 + bl FieldObjectUpdateZCoord + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_808779C + + thumb_func_start sub_80877DC +sub_80877DC: @ 80877DC + push {lr} + lsls r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + ldr r1, =gLinkPlayerMapObjects + lsrs r0, 22 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0 + beq _080877FE + ldrb r0, [r1, 0x2] + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, =gMapObjects + adds r1, r0 + strb r2, [r1, 0x19] +_080877FE: + pop {r0} + bx r0 + .pool + thumb_func_end sub_80877DC + + thumb_func_start sub_808780C +sub_808780C: @ 808780C + push {r4,r5,lr} + lsls r0, 24 + lsrs r0, 22 + ldr r1, =gLinkPlayerMapObjects + adds r5, r0, r1 + ldrb r1, [r5, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r4, r0, r1 + ldrb r0, [r4, 0x4] + cmp r0, 0x40 + beq _08087838 + adds r1, r0, 0 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =gSprites + adds r0, r1 + bl DestroySprite +_08087838: + movs r0, 0 + strb r0, [r5] + ldrb r1, [r4] + subs r0, 0x2 + ands r0, r1 + strb r0, [r4] + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808780C + + thumb_func_start sub_8087858 +sub_8087858: @ 8087858 + lsls r0, 24 + ldr r1, =gLinkPlayerMapObjects + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r0, r1 + ldrb r0, [r0, 0x4] + bx lr + .pool + thumb_func_end sub_8087858 + + thumb_func_start sub_8087878 +sub_8087878: @ 8087878 + lsls r0, 24 + ldr r3, =gLinkPlayerMapObjects + lsrs r0, 22 + adds r0, r3 + ldrb r3, [r0, 0x2] + lsls r0, r3, 3 + adds r0, r3 + lsls r0, 2 + ldr r3, =gMapObjects + adds r0, r3 + ldrh r3, [r0, 0x10] + strh r3, [r1] + ldrh r0, [r0, 0x12] + strh r0, [r2] + bx lr + .pool + thumb_func_end sub_8087878 + + thumb_func_start sub_80878A0 +sub_80878A0: @ 80878A0 + lsls r0, 24 + ldr r1, =gLinkPlayerMapObjects + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r0, r1 + ldrb r0, [r0, 0x19] + bx lr + .pool + thumb_func_end sub_80878A0 + + thumb_func_start sub_80878C0 +sub_80878C0: @ 80878C0 + lsls r0, 24 + ldr r1, =gLinkPlayerMapObjects + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r0, r1 + ldrb r0, [r0, 0xB] + lsls r0, 28 + lsrs r0, 28 + bx lr + .pool + thumb_func_end sub_80878C0 + + thumb_func_start sub_80878E4 +sub_80878E4: @ 80878E4 + lsls r0, 24 + ldr r1, =gLinkPlayerMapObjects + lsrs r0, 22 + adds r0, r1 + ldrb r1, [r0, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r0, r1 + adds r0, 0x21 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x10 + subs r0, r1 + bx lr + .pool + thumb_func_end sub_80878E4 + + thumb_func_start sub_808790C +sub_808790C: @ 808790C + push {r4-r6,lr} + movs r2, 0 + ldr r5, =gLinkPlayerMapObjects + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 16 + asrs r3, r1, 16 +_0808791A: + lsls r0, r2, 2 + adds r1, r0, r5 + ldrb r0, [r1] + cmp r0, 0 + beq _08087958 + ldrb r0, [r1, 0x3] + cmp r0, 0 + beq _0808792E + cmp r0, 0x2 + bne _08087958 +_0808792E: + ldrb r1, [r1, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r1, r0, r1 + movs r6, 0x10 + ldrsh r0, [r1, r6] + cmp r0, r4 + bne _08087958 + movs r6, 0x12 + ldrsh r0, [r1, r6] + cmp r0, r3 + bne _08087958 + adds r0, r2, 0 + b _08087964 + .pool +_08087958: + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x3 + bls _0808791A + movs r0, 0x4 +_08087964: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_808790C + + thumb_func_start sub_808796C +sub_808796C: @ 808796C + push {r4-r6,lr} + lsls r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + adds r2, r3, 0 + lsrs r0, 22 + ldr r1, =gLinkPlayerMapObjects + adds r5, r0, r1 + ldrb r1, [r5, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r6, r0, r1 + ldrb r0, [r5] + cmp r0, 0 + beq _080879C8 + cmp r3, 0xA + bls _080879A4 + ldrb r0, [r6] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r6] + b _080879C8 + .pool +_080879A4: + ldr r4, =gUnknown_08339E00 + ldr r1, =gUnknown_08339DC8 + ldrb r0, [r5, 0x3] + lsls r0, 2 + adds r0, r1 + ldr r3, [r0] + adds r0, r5, 0 + adds r1, r6, 0 + bl _call_via_r3 + lsls r0, 24 + lsrs r0, 22 + adds r0, r4 + ldr r2, [r0] + adds r0, r5, 0 + adds r1, r6, 0 + bl _call_via_r2 +_080879C8: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end sub_808796C + + thumb_func_start sub_80879D8 +sub_80879D8: @ 80879D8 + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + ldr r4, =gUnknown_08339DD4 + lsls r3, r2, 2 + adds r3, r4 + ldr r3, [r3] + bl _call_via_r3 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80879D8 + + thumb_func_start sub_80879F8 +sub_80879F8: @ 80879F8 + movs r0, 0x1 + bx lr + thumb_func_end sub_80879F8 + + thumb_func_start sub_80879FC +sub_80879FC: @ 80879FC + push {r4,lr} + lsls r2, 24 + lsrs r2, 24 + ldr r4, =gUnknown_08339DD4 + lsls r3, r2, 2 + adds r3, r4 + ldr r3, [r3] + bl _call_via_r3 + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + .pool + thumb_func_end sub_80879FC + + thumb_func_start sub_8087A1C +sub_8087A1C: @ 8087A1C + movs r0, 0 + bx lr + thumb_func_end sub_8087A1C + + thumb_func_start sub_8087A20 +sub_8087A20: @ 8087A20 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + adds r5, r1, 0 + lsls r0, r2, 24 + lsrs r0, 24 + ldrb r1, [r5, 0x19] + bl npc_something3 + strb r0, [r5, 0x19] + ldrb r1, [r5, 0x19] + mov r6, sp + adds r6, 0x2 + adds r0, r5, 0 + mov r2, sp + adds r3, r6, 0 + bl FieldObjectMoveDestCoords + ldrb r0, [r4, 0x2] + ldrb r1, [r5, 0x19] + mov r2, sp + movs r3, 0 + ldrsh r2, [r2, r3] + movs r4, 0 + ldrsh r3, [r6, r4] + bl npc_080587EC + lsls r0, 24 + cmp r0, 0 + bne _08087A7E + adds r1, r5, 0 + adds r1, 0x21 + movs r0, 0x10 + strb r0, [r1] + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r3, 0 + ldrsh r2, [r6, r3] + adds r0, r5, 0 + bl npc_coords_shift + adds r0, r5, 0 + bl FieldObjectUpdateZCoord + movs r0, 0x1 + b _08087A80 +_08087A7E: + movs r0, 0 +_08087A80: + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8087A20 + + thumb_func_start sub_8087A88 +sub_8087A88: @ 8087A88 + push {r4,lr} + adds r4, r1, 0 + lsls r0, r2, 24 + lsrs r0, 24 + ldrb r1, [r4, 0x19] + bl npc_something3 + strb r0, [r4, 0x19] + movs r0, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8087A88 + + thumb_func_start sub_8087AA0 +sub_8087AA0: @ 8087AA0 + movs r1, 0 + strb r1, [r0, 0x3] + bx lr + thumb_func_end sub_8087AA0 + + thumb_func_start sub_8087AA8 +sub_8087AA8: @ 8087AA8 + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r4, 0 + adds r5, 0x21 + ldrb r0, [r5] + subs r0, 0x1 + strb r0, [r5] + movs r0, 0x1 + strb r0, [r6, 0x3] + ldrb r0, [r4, 0x19] + adds r1, 0xC + adds r2, r4, 0 + adds r2, 0xE + bl MoveCoords + ldrb r0, [r5] + cmp r0, 0 + bne _08087AD8 + adds r0, r4, 0 + bl npc_coords_shift_still + movs r0, 0x2 + strb r0, [r6, 0x3] +_08087AD8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8087AA8 + + thumb_func_start npc_something3 +npc_something3: @ 8087AE0 + push {lr} + lsls r0, 24 + lsrs r0, 24 + lsls r1, 24 + lsrs r2, r1, 24 + subs r0, 0x1 + cmp r0, 0x9 + bhi _08087B38 + lsls r0, 2 + ldr r1, =_08087B00 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08087B00: + .4byte _08087B28 + .4byte _08087B2C + .4byte _08087B30 + .4byte _08087B34 + .4byte _08087B38 + .4byte _08087B38 + .4byte _08087B28 + .4byte _08087B2C + .4byte _08087B30 + .4byte _08087B34 +_08087B28: + movs r0, 0x2 + b _08087B3A +_08087B2C: + movs r0, 0x1 + b _08087B3A +_08087B30: + movs r0, 0x3 + b _08087B3A +_08087B34: + movs r0, 0x4 + b _08087B3A +_08087B38: + adds r0, r2, 0 +_08087B3A: + pop {r1} + bx r1 + thumb_func_end npc_something3 + + thumb_func_start npc_080587EC +npc_080587EC: @ 8087B40 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + lsls r2, 16 + lsrs r2, 16 + mov r12, r2 + lsls r3, 16 + movs r4, 0 + ldr r0, =gMapObjects + mov r9, r0 + lsrs r2, r3, 16 + mov r10, r2 + asrs r6, r3, 16 +_08087B64: + mov r7, r12 + lsls r3, r7, 16 + mov r0, r10 + lsls r5, r0, 16 + cmp r4, r8 + beq _08087BA8 + lsls r0, r4, 3 + adds r0, r4 + lsls r0, 2 + mov r2, r9 + adds r1, r0, r2 + movs r7, 0x10 + ldrsh r0, [r1, r7] + asrs r2, r3, 16 + cmp r0, r2 + bne _08087B8C + movs r7, 0x12 + ldrsh r0, [r1, r7] + cmp r0, r6 + beq _08087B9E +_08087B8C: + movs r7, 0x14 + ldrsh r0, [r1, r7] + cmp r0, r2 + bne _08087BA8 + movs r0, 0x16 + ldrsh r1, [r1, r0] + asrs r0, r5, 16 + cmp r1, r0 + bne _08087BA8 +_08087B9E: + movs r0, 0x1 + b _08087BBE + .pool +_08087BA8: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0xF + bls _08087B64 + asrs r0, r3, 16 + asrs r1, r5, 16 + bl MapGridIsImpassableAt + lsls r0, 24 + lsrs r0, 24 +_08087BBE: + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end npc_080587EC + + thumb_func_start sub_8087BCC +sub_8087BCC: @ 8087BCC + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 24 + lsrs r3, r1, 24 + lsls r2, r5, 2 + ldr r0, =gLinkPlayerMapObjects + adds r2, r0 + ldrb r1, [r2, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r4, r0, r1 + ldrb r0, [r2] + cmp r0, 0 + beq _08087C7A + subs r0, r3, 0x1 + cmp r0, 0x4 + bhi _08087C56 + lsls r0, 2 + ldr r1, =_08087C0C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .pool + .align 2, 0 +_08087C0C: + .4byte _08087C2C + .4byte _08087C2C + .4byte _08087C38 + .4byte _08087C20 + .4byte _08087C20 +_08087C20: + ldrb r0, [r4] + lsls r0, 30 + lsrs r0, 31 + bl sub_808BD6C + b _08087C44 +_08087C2C: + ldrb r0, [r4] + lsls r0, 30 + lsrs r0, 31 + bl sub_808BD7C + b _08087C44 +_08087C38: + ldrb r1, [r4] + lsls r1, 30 + lsrs r1, 31 + movs r0, 0 + bl sub_808BD3C +_08087C44: + lsls r0, 24 + lsrs r0, 24 + ldr r1, =sub_8087C8C + movs r2, 0 + str r2, [sp] + movs r3, 0 + bl AddPseudoFieldObject + strb r0, [r4, 0x4] +_08087C56: + ldrb r1, [r4, 0x4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, =gSprites + adds r0, r1 + adds r3, r0, 0 + adds r3, 0x3E + ldrb r1, [r3] + movs r2, 0x2 + orrs r1, r2 + strb r1, [r3] + strh r5, [r0, 0x2E] + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4] +_08087C7A: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .pool + thumb_func_end sub_8087BCC + + thumb_func_start sub_8087C8C +sub_8087C8C: @ 8087C8C + push {r4-r6,lr} + adds r5, r0, 0 + movs r0, 0x2E + ldrsh r4, [r5, r0] + lsls r4, 2 + ldr r0, =gLinkPlayerMapObjects + adds r4, r0 + ldrb r1, [r4, 0x2] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 2 + ldr r1, =gMapObjects + adds r6, r0, r1 + ldrh r0, [r6, 0xC] + strh r0, [r5, 0x20] + ldrh r0, [r6, 0xE] + strh r0, [r5, 0x22] + ldrb r0, [r6, 0xB] + lsrs r0, 4 + adds r1, r5, 0 + movs r2, 0x1 + bl SetObjectSubpriorityByZCoord + ldrb r0, [r6, 0xB] + lsrs r0, 4 + bl ZCoordToPriority + movs r1, 0x3 + 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] + ldrb r0, [r4, 0x3] + cmp r0, 0 + bne _08087CF8 + ldrb r0, [r6, 0x19] + bl FieldObjectDirectionToImageAnimId + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnim + b _08087D0A + .pool +_08087CF8: + ldrb r0, [r6, 0x19] + bl get_go_image_anim_num + adds r1, r0, 0 + lsls r1, 24 + lsrs r1, 24 + adds r0, r5, 0 + bl StartSpriteAnimIfDifferent +_08087D0A: + adds r0, r5, 0 + movs r1, 0 + bl sub_80979D4 + ldrb r0, [r6] + lsls r0, 29 + cmp r0, 0 + bge _08087D3C + ldrh r0, [r5, 0x3C] + movs r1, 0x4 + ands r1, r0 + lsls r1, 16 + adds r3, r5, 0 + adds r3, 0x3E + lsrs r1, 18 + lsls r1, 2 + ldrb r2, [r3] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] +_08087D3C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8087C8C + + .align 2, 0 @ Don't pad with nop. |