.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 HealPlayerParty 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 TryUpdateRandomTrainerRematches bl DoTimeBasedEvents bl sub_80AEDBC bl sub_8085B2C bl update_sav1_flash_used_on_map bl Overworld_ClearSavedMusic 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 TryUpdateRandomTrainerRematches 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 Overworld_ClearSavedMusic 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 Overworld_GetFlashLevel Overworld_GetFlashLevel: @ 8085514 ldr r0, =gSaveBlock1Ptr ldr r0, [r0] adds r0, 0x30 ldrb r0, [r0] bx lr .pool thumb_func_end Overworld_GetFlashLevel 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 GetSav1Weather 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 Overworld_ClearSavedMusic Overworld_ClearSavedMusic: @ 8085800 ldr r0, =gSaveBlock1Ptr ldr r1, [r0] movs r0, 0 strh r0, [r1, 0x2C] bx lr .pool thumb_func_end Overworld_ClearSavedMusic 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 GetCurrentMapBattleScene GetCurrentMapBattleScene: @ 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 GetCurrentMapBattleScene 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 CB2_WhiteOut CB2_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 CB2_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 Overworld_GetFlashLevel 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.