From 382442c4c8754262c77acb50930df31c63a62355 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 12 Feb 2018 15:01:43 +0100 Subject: [PATCH 1/6] start decompiling overworld.s --- asm/battle_frontier_1.s | 2 +- asm/battle_frontier_2.s | 4 +- asm/battle_records.s | 6 +- asm/field_control_avatar.s | 2 +- asm/field_effect.s | 6 +- asm/field_screen.s | 4 +- asm/fieldmap.s | 2 +- asm/fldeff_flash.s | 2 +- asm/overworld.s | 1073 ++------------------------------- asm/party_menu.s | 4 +- asm/pokedex_area_screen.s | 6 +- asm/pokenav.s | 6 +- asm/post_battle_event_funcs.s | 2 +- asm/rom6.s | 2 +- asm/roulette.s | 2 +- data/event_scripts.s | 6 +- data/overworld.s | 52 -- include/constants/game_stat.h | 5 +- include/global.h | 19 +- include/overworld.h | 51 +- ld_script.txt | 3 +- src/battle_script_commands.c | 4 +- src/field_map_obj.c | 2 +- src/item_use.c | 4 +- src/overworld.c | 541 ++++++++++++++++- src/region_map.c | 12 +- sym_ewram.txt | 16 +- 27 files changed, 675 insertions(+), 1163 deletions(-) delete mode 100644 data/overworld.s diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 60ac46859..43966b607 100644 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -14665,7 +14665,7 @@ sub_819672C: @ 819672C ldrh r2, [r0, 0xA] ldrh r1, [r0, 0xC] adds r0, r2, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 11220f369..491a87948 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -18683,7 +18683,7 @@ _081A4294: adds r0, r3, r4 ldrh r1, [r0] movs r0, 0x20 - bl sav12_xor_set + bl SetGameStat ldr r1, [r7] adds r0, r1, r6 adds r0, r4 @@ -31002,7 +31002,7 @@ sub_81AA810: @ 81AA810 ldrb r1, [r3] adds r1, 0x2C movs r0, 0x19 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r5, r0, 0 movs r7, 0 ldr r1, [r5, 0x4] diff --git a/asm/battle_records.s b/asm/battle_records.s index f688144d9..b203f339b 100644 --- a/asm/battle_records.s +++ b/asm/battle_records.s @@ -45,13 +45,13 @@ _0813BFCA: bge _0813BFCA movs r0, 0x17 movs r1, 0 - bl sav12_xor_set + bl SetGameStat movs r0, 0x18 movs r1, 0 - bl sav12_xor_set + bl SetGameStat movs r0, 0x19 movs r1, 0 - bl sav12_xor_set + bl SetGameStat pop {r4,r5} pop {r0} bx r0 diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 89e6efa6a..240437049 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -2006,7 +2006,7 @@ _0809CF20: bl sub_8084D5C ldrb r0, [r5, 0x7] ldrb r1, [r5, 0x6] - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldr r1, [r0, 0x4] ldrb r0, [r5, 0x5] ldr r1, [r1, 0x8] diff --git a/asm/field_effect.s b/asm/field_effect.s index 80f2030aa..6d35cca61 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -2008,7 +2008,7 @@ _080B6A64: lsls r0, 24 cmp r0, 0 bne _080B6A8A - bl flag_var_implications_of_teleport_ + bl Overworld_ResetStateAfterFly bl warp_in ldr r0, =c2_load_new_map bl SetMainCallback2 @@ -4881,7 +4881,7 @@ _080B81B8: lsrs r0, 24 cmp r0, 0x1 bne _080B81E6 - bl copy_saved_warp3_bank_and_enter_x_to_warp1 + bl Overworld_SetWarpDestToLastHealLoc bl warp_in ldr r0, =c2_load_new_map bl SetMainCallback2 @@ -5211,7 +5211,7 @@ _080B8484: thumb_func_start sub_80B849C sub_80B849C: @ 80B849C push {r4,lr} - bl sav1_map_get_light_level + bl Overworld_GetMapTypeOfSaveblockLocation lsls r0, 24 lsrs r0, 24 bl is_light_level_1_2_3_5_or_6 diff --git a/asm/field_screen.s b/asm/field_screen.s index 0943fe1e3..0839e4bac 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -7855,7 +7855,7 @@ pal_fill_for_maplights: @ 80AF040 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sav1_map_get_light_level + bl Overworld_GetMapTypeOfSaveblockLocation adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -7910,7 +7910,7 @@ pal_fill_black: @ 80AF0A0 thumb_func_start sub_80AF0B4 sub_80AF0B4: @ 80AF0B4 push {r4,lr} - bl sav1_map_get_light_level + bl Overworld_GetMapTypeOfSaveblockLocation adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 diff --git a/asm/fieldmap.s b/asm/fieldmap.s index dbb8a3fa3..21aea8ad7 100644 --- a/asm/fieldmap.s +++ b/asm/fieldmap.s @@ -11,7 +11,7 @@ mapconnection_get_mapheader: @ 8087D44 ldrb r2, [r0, 0x8] ldrb r1, [r0, 0x9] adds r0, r2, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId pop {r1} bx r1 thumb_func_end mapconnection_get_mapheader diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s index d52ee34fc..e7e605abe 100644 --- a/asm/fldeff_flash.s +++ b/asm/fldeff_flash.s @@ -217,7 +217,7 @@ sub_8137304: @ 8137304 bl get_map_light_from_warp0 lsls r0, 24 lsrs r6, r0, 24 - bl sav1_map_get_light_level + bl Overworld_GetMapTypeOfSaveblockLocation lsls r0, 24 lsrs r5, r0, 24 movs r3, 0 diff --git a/asm/overworld.s b/asm/overworld.s index 64ee678df..25c479c10 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -5,1008 +5,9 @@ .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 Overworld_ResetStateAfterTeleport -Overworld_ResetStateAfterTeleport: @ 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 Overworld_ResetStateAfterTeleport - - 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 ResetCyclingRoadChallengeData - 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 r2, =gWarpDestination ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, [r0, 0x28] @@ -1041,7 +42,7 @@ sub_8084E2C: @ 8084E2C adds r1, r4, 0 adds r2, r5, 0 adds r3, r6, 0 - bl warp_set + bl SetWarpData add sp, 0x8 pop {r4-r6} pop {r0} @@ -1051,7 +52,7 @@ sub_8084E2C: @ 8084E2C thumb_func_start warp1_set_to_warp2 warp1_set_to_warp2: @ 8084E68 - ldr r2, =gUnknown_020322E4 + ldr r2, =gWarpDestination ldr r0, =gUnknown_020322EC ldr r1, [r0, 0x4] ldr r0, [r0] @@ -1085,7 +86,7 @@ sub_8084E80: @ 8084E80 adds r1, r4, 0 adds r2, r5, 0 adds r3, r6, 0 - bl warp_set + bl SetWarpData add sp, 0x8 pop {r4-r6} pop {r0} @@ -1106,7 +107,7 @@ sub_8084EBC: @ 8084EBC bl warp_data_is_not_neg_1 cmp r0, 0x1 bne _08084EF0 - ldr r2, =gUnknown_020322E4 + ldr r2, =gWarpDestination ldr r0, =gUnknown_020322DC ldr r1, [r0, 0x4] ldr r0, [r0] @@ -1136,7 +137,7 @@ _08084F0A: thumb_func_start warp1_set_to_sav1w warp1_set_to_sav1w: @ 8084F14 - ldr r2, =gUnknown_020322E4 + ldr r2, =gWarpDestination ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, [r0, 0x10] @@ -1173,7 +174,7 @@ sub_8084F2C: @ 8084F2C adds r1, r4, 0 adds r2, r5, 0 adds r3, r6, 0 - bl warp_set + bl SetWarpData add sp, 0x8 pop {r4-r6} pop {r0} @@ -1206,7 +207,7 @@ sub_8084F6C: @ 8084F6C movs r4, 0x4 ldrsb r4, [r5, r4] str r4, [sp, 0x4] - bl warp_set + bl SetWarpData _08084FA0: add sp, 0x8 pop {r4,r5} @@ -1372,9 +373,9 @@ mliX_load_map: @ 8085098 beq _080850C8 bl sub_8085810 _080850C8: - bl warp_shift + bl ApplyCurrentWarp bl set_current_map_header_from_sav1_save_old_name - bl CopyFieldObjectTemplatesToSav1 + bl LoadMapObjTemplatesFromHeader bl TrySetMapSaveWarpStatus bl ClearTempFieldEventData bl ResetCyclingRoadChallengeData @@ -1384,7 +385,7 @@ _080850C8: bl TryUpdateRandomTrainerRematches bl DoTimeBasedEvents bl SetSav1WeatherFromCurrMapHeader - bl sub_8085B2C + bl ChooseAmbientCrySpecies bl update_sav1_flash_used_on_map bl Overworld_ClearSavedMusic bl mapheader_run_script_with_tag_x3 @@ -1411,7 +412,7 @@ _08085116: ldrb r0, [r2, 0x14] cmp r0, 0x3A bne _0808514C - ldr r1, =gUnknown_020322FC + ldr r1, =gLastMapSectionId ldrh r1, [r1] cmp r0, r1 beq _08085150 @@ -1451,7 +452,7 @@ _08085190: bl sub_81D5DF8 b _080851A2 _0808519E: - bl CopyFieldObjectTemplatesToSav1 + bl LoadMapObjTemplatesFromHeader _080851A2: ldr r4, =gMapHeader ldrb r0, [r4, 0x17] @@ -1484,7 +485,7 @@ _080851A2: bl DoTimeBasedEvents _080851EE: bl SetSav1WeatherFromCurrMapHeader - bl sub_8085B2C + bl ChooseAmbientCrySpecies cmp r5, 0 beq _08085200 ldr r0, =0x00000888 @@ -1589,7 +590,7 @@ _080852CA: thumb_func_start sub_80852D4 sub_80852D4: @ 80852D4 push {r4-r7,lr} - bl sav1_map_get_light_level + bl Overworld_GetMapTypeOfSaveblockLocation adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 @@ -2111,7 +1112,7 @@ _080856A4: ldrsb r1, [r4, r1] lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrh r0, [r0, 0x10] b _080856CE _080856CA: @@ -2175,7 +1176,7 @@ _08085730: thumb_func_start warp1_target_get_music warp1_target_get_music: @ 8085738 push {lr} - ldr r0, =gUnknown_020322E4 + ldr r0, =gWarpDestination bl warp_target_get_music lsls r0, 16 lsrs r1, r0, 16 @@ -2233,7 +1234,7 @@ Overworld_PlaySpecialMapMusic: @ 8085784 b _080857D6 .pool _080857B4: - bl sav1_map_get_light_level + bl Overworld_GetMapTypeOfSaveblockLocation lsls r0, 24 lsrs r0, 24 cmp r0, 0x5 @@ -2441,7 +1442,7 @@ music_something: @ 8085910 lsls r0, 3 cmp r2, r0 bne _08085972 - ldr r3, =gUnknown_020322E4 + ldr r3, =gWarpDestination ldrh r0, [r3] ands r1, r0 cmp r1, r2 @@ -2658,8 +1659,8 @@ _08085B20: bx r0 thumb_func_end wild_encounter_related - thumb_func_start sub_8085B2C -sub_8085B2C: @ 8085B2C + thumb_func_start ChooseAmbientCrySpecies +ChooseAmbientCrySpecies: @ 8085B2C push {lr} ldr r0, =gSaveBlock1Ptr ldr r0, [r0] @@ -2687,11 +1688,11 @@ _08085B62: pop {r0} bx r0 .pool - thumb_func_end sub_8085B2C + thumb_func_end ChooseAmbientCrySpecies - 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 + thumb_func_start GetMapTypeByGroupAndId +@ int GetMapTypeByGroupAndId(int bank, int number) +GetMapTypeByGroupAndId: @ 8085B74 push {lr} lsls r0, 24 asrs r0, 8 @@ -2699,11 +1700,11 @@ get_map_light_level_by_bank_and_number: @ 8085B74 lsls r1, 24 asrs r1, 8 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x17] pop {r1} bx r1 - thumb_func_end get_map_light_level_by_bank_and_number + thumb_func_end GetMapTypeByGroupAndId thumb_func_start get_map_light_level_from_warp @ int get_map_light_level_from_warp(warpdata *warp) @@ -2714,15 +1715,15 @@ get_map_light_level_from_warp: @ 8085B8C movs r1, 0x1 ldrsb r1, [r0, r1] adds r0, r2, 0 - bl get_map_light_level_by_bank_and_number + bl GetMapTypeByGroupAndId 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 + thumb_func_start Overworld_GetMapTypeOfSaveblockLocation +Overworld_GetMapTypeOfSaveblockLocation: @ 8085BA4 push {lr} ldr r0, =gSaveBlock1Ptr ldr r0, [r0] @@ -2733,7 +1734,7 @@ sav1_map_get_light_level: @ 8085BA4 pop {r1} bx r1 .pool - thumb_func_end sav1_map_get_light_level + thumb_func_end Overworld_GetMapTypeOfSaveblockLocation thumb_func_start get_map_light_from_warp0 get_map_light_from_warp0: @ 8085BBC @@ -2828,7 +1829,7 @@ sav1_saved_warp2_map_get_name: @ 8085C30 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 @@ -2849,7 +1850,7 @@ sav1_map_get_name: @ 8085C58 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 @@ -2870,7 +1871,7 @@ GetCurrentMapBattleScene: @ 8085C80 asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x1B] pop {r1} bx r1 @@ -3210,7 +2211,7 @@ CB2_WhiteOut: @ 8085F58 bl sub_808631C bl StopMapMusic bl ResetSafariZoneFlag_ - bl sub_8084620 + bl DoWhiteOut bl player_avatar_init_params_reset bl ScriptContext1_Init bl ScriptContext2_Disable @@ -3502,7 +2503,7 @@ sub_8086230: @ 8086230 bne _0808624A bl sub_81A3908 _0808624A: - bl set_current_map_header_from_sav1 + bl LoadSaveblockMapHeader bl set_warp2_warp3_to_neg_1 bl GetCurrentTrainerHillMapId lsls r0, 24 @@ -3523,7 +2524,7 @@ _08086278: bl sub_81D5F48 b _0808628A _08086286: - bl CopyFieldObjectTemplateCoordsToSav1 + bl LoadSaveblockMapObjScripts _0808628A: bl UnfreezeMapObjects bl DoTimeBasedEvents diff --git a/asm/party_menu.s b/asm/party_menu.s index 6e134d444..0827a5a12 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -10032,7 +10032,7 @@ _081B557C: asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r1, r0, 0 ldr r0, =gStringVar1 ldrb r1, [r1, 0x14] @@ -10057,7 +10057,7 @@ _081B55B8: asrs r1, 24 lsls r1, 16 lsrs r1, 16 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId adds r1, r0, 0 ldr r0, =gStringVar1 ldrb r1, [r1, 0x14] diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index 5f9e01974..579788e14 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -308,7 +308,7 @@ _0813CCB8: ldr r1, [r5] ldrb r0, [r1, 0x10] ldrb r1, [r1, 0x11] - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldr r1, [r5] ldrb r0, [r0, 0x14] strh r0, [r1, 0x12] @@ -360,7 +360,7 @@ sub_813CD04: @ 813CD04 strb r3, [r1, 0x11] adds r0, r5, 0 adds r1, r3, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] bl CorrectSpecialMapSecId ldr r2, [r4] @@ -496,7 +496,7 @@ sub_813CE34: @ 813CE34 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 diff --git a/asm/pokenav.s b/asm/pokenav.s index 680752c85..d98605dde 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -8095,7 +8095,7 @@ sub_81CB0C8: @ 81CB0C8 ldrh r2, [r0, 0xA] ldrh r1, [r0, 0xC] adds r0, r2, 0 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldrb r0, [r0, 0x14] pop {r1} bx r1 @@ -30295,7 +30295,7 @@ sub_81D6120: @ 81D6120 push {lr} movs r0, 0x1A movs r1, 0x40 - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldr r0, [r0, 0x4] ldr r0, [r0, 0x8] adds r0, 0x8 @@ -30334,7 +30334,7 @@ _081D6162: adds r0, r1 ldrh r1, [r0] movs r0, 0x1A - bl get_mapheader_by_bank_and_number + bl Overworld_GetMapHeaderByGroupAndId ldr r0, [r0, 0x4] ldr r0, [r0, 0x8] _081D6176: diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s index da84a6565..c6d4fd88f 100644 --- a/asm/post_battle_event_funcs.s +++ b/asm/post_battle_event_funcs.s @@ -44,7 +44,7 @@ _0813776C: ldrb r0, [r2, 0x11] orrs r1, r0 movs r0, 0x1 - bl sav12_xor_set + bl SetGameStat _0813778E: bl sub_8076D48 ldr r0, =gSaveBlock2Ptr diff --git a/asm/rom6.s b/asm/rom6.s index 297c81128..b103c0875 100644 --- a/asm/rom6.s +++ b/asm/rom6.s @@ -376,7 +376,7 @@ _0813574C: thumb_func_start hm2_dig hm2_dig: @ 8135760 push {lr} - bl flagmods_08054D70 + bl Overworld_ResetStateAfterDigEscRope movs r0, 0x26 bl FieldEffectStart bl GetCursorSelectionMonId diff --git a/asm/roulette.s b/asm/roulette.s index e03bbea91..ab873dd32 100644 --- a/asm/roulette.s +++ b/asm/roulette.s @@ -2570,7 +2570,7 @@ sub_8141800: @ 8141800 movs r0, 0x1E ldrsh r1, [r4, r0] movs r0, 0x1D - bl sav12_xor_set + bl SetGameStat _08141848: ldr r1, =sub_8141A18 ldr r2, =0x0000ffff diff --git a/data/event_scripts.s b/data/event_scripts.s index b2b895903..7b9d6519c 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1287,12 +1287,12 @@ EverGrandeCity_HallOfFame_EventScript_271851:: @ 8271851 setvar VAR_0x40D3, 1 return -EverGrandeCity_HallOfFame_EventScript_271857:: @ 8271857 +EventScript_WhiteOut:: @ 8271857 call EverGrandeCity_HallOfFame_EventScript_2718CC - goto EverGrandeCity_HallOfFame_EventScript_271862 + goto EventScript_271862 end -EverGrandeCity_HallOfFame_EventScript_271862:: @ 8271862 +EventScript_271862:: @ 8271862 compare VAR_0x4096, 1 goto_eq EverGrandeCity_HallOfFame_EventScript_271884 compare VAR_0x4096, 2 diff --git a/data/overworld.s b/data/overworld.s deleted file mode 100644 index 186af6f44..000000000 --- a/data/overworld.s +++ /dev/null @@ -1,52 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2, 0 -gUnknown_08339D3C:: @ 8339D3C - .4byte 0xFFFFFF, 0xFFFFFFFF, 0x4B0, 0xE10, 0x4B0, 0x960, 0x32, 0x50, 0xFFFFFFD4, 0x2C - -gUnknown_08339D64:: @ 8339D64 - .4byte 0, 0 - .4byte 0, 1 - .4byte 0, -1 - .4byte -1, 0 - .4byte 1, 0 - .4byte -1, 1 - .4byte 1, 1 - .4byte -1, -1 - .4byte 1, -1 - -gUnknown_08339DAC:: @ 8339DAC - .4byte 0x1F8 - .4byte 0x11D1 - .4byte 0x21C2 - .4byte 0x31E3 - -gUnknown_08339DBC:: @ 8339DBC - .4byte REG_WIN0H - .4byte 0xa2600001 - .byte 1, 0 - - .align 2 -gUnknown_08339DC8:: @ 8339DC8 - .4byte sub_80879D8 - .4byte sub_80879F8 - .4byte sub_80879FC - -gUnknown_08339DD4:: @ 8339DD4 - .4byte sub_8087A1C - .4byte sub_8087A20 - .4byte sub_8087A20 - .4byte sub_8087A20 - .4byte sub_8087A20 - .4byte sub_8087A1C - .4byte sub_8087A1C - .4byte sub_8087A88 - .4byte sub_8087A88 - .4byte sub_8087A88 - .4byte sub_8087A88 - -gUnknown_08339E00:: @ 8339E00 - .4byte sub_8087AA0 - .4byte sub_8087AA8 diff --git a/include/constants/game_stat.h b/include/constants/game_stat.h index b1f3d4197..7ebf3501b 100644 --- a/include/constants/game_stat.h +++ b/include/constants/game_stat.h @@ -51,9 +51,10 @@ #define GAME_STAT_USED_DAYCARE 47 #define GAME_STAT_RODE_CABLE_CAR 48 #define GAME_STAT_ENTERED_HOT_SPRINGS 49 +#define GAME_STAT_50 50 +#define GAME_STAT_51 51 -/*TODO: add new stats added in Emerald*/ - +#define NUM_USED_GAME_STATS 52 #define NUM_GAME_STATS 64 #endif // GUARD_CONSTANTS_GAME_STAT_H diff --git a/include/global.h b/include/global.h index 4a71a8a87..8913432ba 100644 --- a/include/global.h +++ b/include/global.h @@ -618,7 +618,7 @@ struct SaveBlock1 /*0x04*/ struct WarpData location; /*0x0C*/ struct WarpData warp1; /*0x14*/ struct WarpData warp2; - /*0x1C*/ struct WarpData warp3; + /*0x1C*/ struct WarpData lastHealLocation; /*0x24*/ struct WarpData warp4; /*0x2C*/ u16 battleMusic; /*0x2E*/ u8 weather; @@ -705,6 +705,23 @@ struct SaveBlock1 extern struct SaveBlock1* gSaveBlock1Ptr; +struct MapPosition +{ + s16 x; + s16 y; + u8 height; +}; + +struct UnkStruct_8054FF8 +{ + u8 a; + u8 b; + u8 c; + u8 d; + struct MapPosition sub; + u16 field_C; +}; + struct Bitmap // TODO: Find a better spot for this { u8* pixels; diff --git a/include/overworld.h b/include/overworld.h index 630b0a617..904f61c8e 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -25,11 +25,49 @@ struct UCoords32 extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; extern MainCallback gFieldCallback; +void DoWhiteOut(void); +void Overworld_ResetStateAfterFly(void); +void Overworld_ResetStateAfterTeleport(void); +void Overworld_ResetStateAfterDigEscRope(void); +void sub_8084788(void); +void ResetGameStats(void); +void IncrementGameStat(u8 index); +u32 GetGameStat(u8 index); +void SetGameStat(u8 index, u32 value); +void ApplyNewEncryptionKeyToGameStats(u32 newKey); +void LoadMapObjTemplatesFromHeader(void); +void LoadSaveblockMapObjScripts(void); +void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y); +void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType); +void mapdata_load_assets_to_gpu_and_full_redraw(void); +struct MapData *get_mapdata_header(void); +void ApplyCurrentWarp(void); +void set_warp2_warp3_to_neg_1(void); +void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +bool32 warp_data_is_not_neg_1(struct WarpData *warp); +struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); +struct MapHeader *const warp1_get_mapheader(void); +void set_current_map_header_from_sav1_save_old_name(void); +void LoadSaveblockMapHeader(void); +void update_camera_pos_from_warpid(void); +void warp_in(void); +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId); +void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); +void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); +void sub_8084CCC(u8 a1); +void Overworld_SetWarpDestToLastHealLoc(void); +void Overworld_SetHealLocationWarp(u8 healLocationId); +void sub_8084D5C(s16 a1, s16 a2); +void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); + +// to erase later +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); +u8 Overworld_GetMapTypeOfSaveblockLocation(void); void Overworld_SetMapObjTemplateCoords(u8, s16, s16); void Overworld_SetMapObjTemplateMovementType(u8, u8); - void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); - void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void Overworld_SetHealLocationWarp(u8); @@ -37,25 +75,18 @@ void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void sub_8084E2C(s8, s8, s8, s8, s8); void sub_8084E80(s8, s8, s8, s8, s8); void sub_8084EBC(s16, s16); - void player_avatar_init_params_reset(void); - bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); void Overworld_ResetStateAfterTeleport(void); - void Overworld_SetFlashLevel(s32 a1); //u8 Overworld_GetFlashLevel(void); void sub_8085524(u16); - void Overworld_SetSavedMusic(u16); void Overworld_ChangeMusicToDefault(void); void Overworld_ChangeMusicTo(u16); - bool32 is_c1_link_related_active(void); extern u16 gUnknown_03005DA8; - void strange_npc_table_clear(void); -const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16); void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); void sub_8086230(void); void c2_exit_to_overworld_2_switch(void); @@ -71,13 +102,11 @@ void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); void mapldr_default(void); u8 get_map_light_from_warp0(void); bool8 is_light_level_1_2_3_5_or_6(u8 a1); - bool32 sub_80875C8(void); bool32 sub_8087634(void); bool32 sub_808766C(void); void IncrementGameStat(u8); u32 GetGameStat(u8); - void CB2_OverworldBasic(void); #endif //GUARD_ROM4_H diff --git a/ld_script.txt b/ld_script.txt index 81911e574..bb015446f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -86,6 +86,7 @@ SECTIONS { src/berry_blender.o(.text); src/play_time.o(.text); src/new_game.o(.text); + src/overworld.o(.text); asm/overworld.o(.text); asm/fieldmap.o(.text); src/metatile_behavior.o(.text); @@ -393,7 +394,7 @@ SECTIONS { data/trade.o(.rodata); src/berry_blender.o(.rodata); src/new_game.o(.rodata); - data/overworld.o(.rodata); + src/overworld.o(.rodata); data/tilesets.o(.rodata); data/maps.o(.rodata); data/fieldmap.o(.rodata); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 75f05e86f..2da48de49 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -76,7 +76,7 @@ extern bool8 sub_81B1250(void); // ? extern bool8 InBattlePike(void); extern bool8 InBattlePyramid(void); extern u16 GetBattlePyramidPickupItemId(void); -extern u8 sav1_map_get_light_level(void); +extern u8 Overworld_GetMapTypeOfSaveblockLocation(void); extern u8 sub_813B21C(void); extern u16 get_unknown_box_id(void); @@ -10578,7 +10578,7 @@ static void atkEF_handleballthrow(void) ballMultiplier = 10; break; case ITEM_DIVE_BALL: - if (sav1_map_get_light_level() == 5) + if (Overworld_GetMapTypeOfSaveblockLocation() == 5) ballMultiplier = 35; else ballMultiplier = 10; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 906eff4b7..84613365c 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1673,7 +1673,7 @@ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 m } else { - mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); templates = mapHeader->events->mapObjects; count = mapHeader->events->mapObjectCount; } diff --git a/src/item_use.c b/src/item_use.c index bcd453660..99dce9cbd 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -85,7 +85,7 @@ extern void sub_81C59BC(void); extern void sub_81AB9A8(u8); extern void sub_81ABA88(u8); extern void sub_80B7CC8(void); -extern void flagmods_08054D70(void); +extern void Overworld_ResetStateAfterDigEscRope(void); extern u8* sub_806CF78(u16); extern void sub_81B89F0(void); extern u8 GetItemEffectType(u16); @@ -904,7 +904,7 @@ void task08_080A1C44(u8 taskId) void re_escape_rope(u8 taskId) { - flagmods_08054D70(); + Overworld_ResetStateAfterDigEscRope(); sub_80FE058(); gTasks[taskId].data[0] = 0; DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44); diff --git a/src/overworld.c b/src/overworld.c index c538595f2..5757ca20a 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1,10 +1,82 @@ - -// Includes #include "global.h" +#include "overworld.h" +#include "battle_setup.h" +#include "berry.h" +// #include "cable_club.h" +#include "clock.h" +#include "event_data.h" +#include "field_camera.h" +// #include "field_control_avatar.h" +#include "field_effect.h" +#include "field_fadetransition.h" +#include "field_ground_effect.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "field_message_box.h" +#include "field_player_avatar.h" +#include "field_screen_effect.h" +// #include "field_special_scene.h" +#include "field_specials.h" +#include "field_tasks.h" +#include "field_weather.h" +#include "fieldmap.h" +// #include "fldeff_flash.h" +#include "heal_location.h" +#include "link.h" +#include "load_save.h" +#include "main.h" +#include "m4a.h" +#include "constants/maps.h" +#include "map_name_popup.h" +#include "menu.h" +#include "metatile_behavior.h" +#include "new_game.h" +#include "palette.h" +#include "play_time.h" +#include "random.h" +#include "roamer.h" +// #include "rotating_gate.h" +#include "safari_zone.h" +#include "script.h" +// #include "script_pokemon_80C4.h" +#include "secret_base.h" +#include "constants/songs.h" +#include "sound.h" +#include "constants/species.h" +#include "start_menu.h" +#include "task.h" +// #include "tileset_anim.h" +#include "time_events.h" +#include "tv.h" +#include "scanline_effect.h" +#include "wild_encounter.h" +#include "bg.h" +#include "money.h" -// Static type declarations +// event scripts +extern const u8 EventScript_WhiteOut[]; +extern const u8 EventScript_271862[]; -// Static RAM declarations +// vars +extern struct MapData * const gMapAttributes[]; +extern struct MapHeader * const * const gMapGroups[]; +extern s32 gMaxFlashLevel; + +// functions +extern void HealPlayerParty(void); +extern void move_tilemap_camera_to_upper_left_corner(void); +extern void cur_mapheader_run_tileset_funcs_after_some_cpuset(void); +extern void DrawWholeMapView(void); +extern void copy_map_tileset1_tileset2_to_vram(struct MapData *); +extern void apply_map_tileset1_tileset2_palette(struct MapData *); +extern void ResetCyclingRoadChallengeData(void); +extern void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey); + +// this file's functions +static void Overworld_ResetStateAfterWhiteOut(void); +void ChooseAmbientCrySpecies(void); + +// IWRAM bss vars IWRAM_DATA void *gUnknown_03000E0C; IWRAM_DATA u8 gUnknown_03000E10[4]; IWRAM_DATA u8 (*gUnknown_03000E14)(u32); @@ -12,8 +84,463 @@ IWRAM_DATA u8 gUnknown_03000E18; IWRAM_DATA u8 gUnknown_03000E19; IWRAM_DATA void *rom4_c_unused_03000e1c; -// Static ROM declarations +// EWRAM vars +EWRAM_DATA struct WarpData gUnknown_020322DC = {0}; +EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position +EWRAM_DATA struct WarpData gUnknown_020322EC = {0}; +EWRAM_DATA struct WarpData gUnknown_020322F4 = {0}; +EWRAM_DATA u16 gLastMapSectionId = 0; +// EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0}; +// EWRAM_DATA u16 sAmbientCrySpecies = 0; +// EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE; +// EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0}; -// .rodata +// const rom data +const struct WarpData sDummyWarpData = +{ + .mapGroup = -1, + .mapNum = -1, + .warpId = -1, + .x = -1, + .y = -1, +}; -// .text +const u8 sUnusedData[] = +{ + 0xB0, 0x04, 0x00, 0x00, + 0x10, 0x0E, 0x00, 0x00, + 0xB0, 0x04, 0x00, 0x00, + 0x60, 0x09, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, + 0xD4, 0xFF, 0xFF, 0xFF, + 0x2C, 0x00, 0x00, 0x00, +}; + +const struct UCoords32 gUnknown_08339D64[] = +{ + { 0, 0}, + { 0, 1}, + { 0, -1}, + {-1, 0}, + { 1, 0}, + {-1, 1}, + { 1, 1}, + {-1, -1}, + { 1, -1}, +}; + +const struct BgTemplate gUnknown_08339DAC[] = +{ + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + } +}; + +const struct ScanlineEffectParams gUnknown_08339DBC = +{ + (void *)REG_ADDR_WIN0H, + ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, + 1, + 0, +}; + +u8 sub_80879D8(struct LinkPlayerMapObject *, struct MapObject *, u8); +u8 sub_80879F8(struct LinkPlayerMapObject *, struct MapObject *, u8); +u8 sub_80879FC(struct LinkPlayerMapObject *, struct MapObject *, u8); + +u8 (*const gUnknown_08339DC8[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = +{ + sub_80879D8, + sub_80879F8, + sub_80879FC, +}; + +u8 sub_8087A1C(struct LinkPlayerMapObject *, struct MapObject *, u8); +u8 sub_8087A20(struct LinkPlayerMapObject *, struct MapObject *, u8); +u8 sub_8087A88(struct LinkPlayerMapObject *, struct MapObject *, u8); + +u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = +{ + sub_8087A1C, + sub_8087A20, + sub_8087A20, + sub_8087A20, + sub_8087A20, + sub_8087A1C, + sub_8087A1C, + sub_8087A88, + sub_8087A88, + sub_8087A88, + sub_8087A88, +}; + +void sub_8087AA0(struct LinkPlayerMapObject *, struct MapObject *); +void sub_8087AA8(struct LinkPlayerMapObject *, struct MapObject *); + +void (*const gUnknown_08339E00[])(struct LinkPlayerMapObject *, struct MapObject *) = +{ + sub_8087AA0, + sub_8087AA8, +}; + +// code +void DoWhiteOut(void) +{ + ScriptContext2_RunNewScript(EventScript_WhiteOut); + SetMoney(&gSaveBlock1Ptr->money, GetMoney(&gSaveBlock1Ptr->money) / 2); + HealPlayerParty(); + Overworld_ResetStateAfterWhiteOut(); + Overworld_SetWarpDestToLastHealLoc(); + warp_in(); +} + +void Overworld_ResetStateAfterFly(void) +{ + player_avatar_init_params_reset(); + FlagClear(FLAG_SYS_CYCLING_ROAD); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_USE_FLASH); +} + +void Overworld_ResetStateAfterTeleport(void) +{ + player_avatar_init_params_reset(); + FlagClear(FLAG_SYS_CYCLING_ROAD); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_USE_FLASH); + ScriptContext2_RunNewScript(EventScript_271862); +} + +void Overworld_ResetStateAfterDigEscRope(void) +{ + player_avatar_init_params_reset(); + FlagClear(FLAG_SYS_CYCLING_ROAD); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_USE_FLASH); +} + +static void Overworld_ResetStateAfterWhiteOut(void) +{ + player_avatar_init_params_reset(); + FlagClear(FLAG_SYS_CYCLING_ROAD); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_USE_FLASH); + if (VarGet(VAR_0x4039) == 1) + { + VarSet(VAR_0x4039, 0); + VarSet(VAR_0x4037, 0); + } +} + +void sub_8084788(void) +{ + FlagClear(FLAG_SYS_SAFARI_MODE); + ChooseAmbientCrySpecies(); + ResetCyclingRoadChallengeData(); + UpdateLocationHistoryForRoamer(); + RoamerMoveToOtherLocationSet(); +} + +void ResetGameStats(void) +{ + s32 i; + + for (i = 0; i < NUM_GAME_STATS; i++) + SetGameStat(i, 0); +} + +void IncrementGameStat(u8 index) +{ + if (index < NUM_USED_GAME_STATS) + { + u32 statVal = GetGameStat(index); + if (statVal < 0xFFFFFF) + statVal++; + else + statVal = 0xFFFFFF; + + SetGameStat(index, statVal); + } +} + +u32 GetGameStat(u8 index) +{ + if (index >= NUM_USED_GAME_STATS) + return 0; + + return gSaveBlock1Ptr->gameStats[index] ^ gSaveBlock2Ptr->encryptionKey; +} + +void SetGameStat(u8 index, u32 value) +{ + if (index < NUM_USED_GAME_STATS) + gSaveBlock1Ptr->gameStats[index] = value ^ gSaveBlock2Ptr->encryptionKey; +} + +void ApplyNewEncryptionKeyToGameStats(u32 newKey) +{ + u8 i; + + for (i = 0; i < NUM_GAME_STATS; i++) + ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->gameStats[i], newKey); +} + +void LoadMapObjTemplatesFromHeader(void) +{ + // Clear map object templates + CpuFill32(0, gSaveBlock1Ptr->mapObjectTemplates, sizeof(gSaveBlock1Ptr->mapObjectTemplates)); + + // Copy map header events to save block + CpuCopy32(gMapHeader.events->mapObjects, + gSaveBlock1Ptr->mapObjectTemplates, + gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate)); +} + +void LoadSaveblockMapObjScripts(void) +{ + struct MapObjectTemplate *mapHeaderObjTemplates = gMapHeader.events->mapObjects; + struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates; + s32 i; + + for (i = 0; i < 64; i++) + savObjTemplates[i].script = mapHeaderObjTemplates[i].script; +} + +void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y) +{ + s32 i; + struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates; + + for (i = 0; i < 64; i++) + { + struct MapObjectTemplate *mapObjectTemplate = &savObjTemplates[i]; + if (mapObjectTemplate->localId == localId) + { + mapObjectTemplate->x = x; + mapObjectTemplate->y = y; + return; + } + } +} + +void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType) +{ + s32 i; + + struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates; + for (i = 0; i < 64; i++) + { + struct MapObjectTemplate *mapObjectTemplate = &savObjTemplates[i]; + if (mapObjectTemplate->localId == localId) + { + mapObjectTemplate->movementType = movementType; + return; + } + } +} + +void mapdata_load_assets_to_gpu_and_full_redraw(void) +{ + move_tilemap_camera_to_upper_left_corner(); + copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData); + apply_map_tileset1_tileset2_palette(gMapHeader.mapData); + DrawWholeMapView(); + cur_mapheader_run_tileset_funcs_after_some_cpuset(); +} + +struct MapData *get_mapdata_header(void) +{ + u16 mapDataId = gSaveBlock1Ptr->mapDataId; + if (mapDataId) + return gMapAttributes[mapDataId - 1]; + return NULL; +} + +void ApplyCurrentWarp(void) +{ + gUnknown_020322DC = gSaveBlock1Ptr->location; + gSaveBlock1Ptr->location = gWarpDestination; + gUnknown_020322EC = sDummyWarpData; + gUnknown_020322F4 = sDummyWarpData; +} + +void set_warp2_warp3_to_neg_1(void) +{ + gUnknown_020322EC = sDummyWarpData; + gUnknown_020322F4 = sDummyWarpData; +} + +void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + warp->mapGroup = mapGroup; + warp->mapNum = mapNum; + warp->warpId = warpId; + warp->x = x; + warp->y = y; +} + +bool32 warp_data_is_not_neg_1(struct WarpData *warp) +{ + if (warp->mapGroup != -1) + return FALSE; + if (warp->mapNum != -1) + return FALSE; + if (warp->warpId != -1) + return FALSE; + if (warp->x != -1) + return FALSE; + if (warp->y != -1) + return FALSE; + return TRUE; +} + +struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum) +{ + return gMapGroups[mapGroup][mapNum]; +} + +struct MapHeader *const warp1_get_mapheader(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); +} + +void set_current_map_header_from_sav1_save_old_name(void) +{ + gLastMapSectionId = gMapHeader.regionMapSectionId; + gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + gSaveBlock1Ptr->mapDataId = gMapHeader.mapDataId; + gMapHeader.mapData = get_mapdata_header(); +} + +void LoadSaveblockMapHeader(void) +{ + gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + gMapHeader.mapData = get_mapdata_header(); +} + +void update_camera_pos_from_warpid(void) +{ + if (gSaveBlock1Ptr->location.warpId >= 0 && gSaveBlock1Ptr->location.warpId < gMapHeader.events->warpCount) + { + gSaveBlock1Ptr->pos.x = gMapHeader.events->warps[gSaveBlock1Ptr->location.warpId].x; + gSaveBlock1Ptr->pos.y = gMapHeader.events->warps[gSaveBlock1Ptr->location.warpId].y; + } + else if (gSaveBlock1Ptr->location.x >= 0 && gSaveBlock1Ptr->location.y >= 0) + { + gSaveBlock1Ptr->pos.x = gSaveBlock1Ptr->location.x; + gSaveBlock1Ptr->pos.y = gSaveBlock1Ptr->location.y; + } + else + { + gSaveBlock1Ptr->pos.x = gMapHeader.mapData->width / 2; + gSaveBlock1Ptr->pos.y = gMapHeader.mapData->height / 2; + } +} + +void warp_in(void) +{ + ApplyCurrentWarp(); + set_current_map_header_from_sav1_save_old_name(); + update_camera_pos_from_warpid(); +} + +void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gWarpDestination, mapGroup, mapNum, warpId, x, y); +} + +void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId) +{ + Overworld_SetWarpDestination(mapGroup, mapNum, warpId, -1, -1); +} + +void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId) +{ + SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y); +} + +void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, x, y); +} + +void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused) +{ + gWarpDestination = gSaveBlock1Ptr->warp2; +} + +void sub_8084CCC(u8 a1) +{ + const struct HealLocation *warp = GetHealLocationPointer(a1); + + if (warp) + Overworld_SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y); +} + +void Overworld_SetWarpDestToLastHealLoc(void) +{ + gWarpDestination = gSaveBlock1Ptr->lastHealLocation; +} + +void Overworld_SetHealLocationWarp(u8 healLocationId) +{ + const struct HealLocation *healLocation = GetHealLocationPointer(healLocationId); + + if (healLocation != NULL) + SetWarpData(&gSaveBlock1Ptr->lastHealLocation, healLocation->group, healLocation->map, -1, healLocation->x, healLocation->y); +} + +void sub_8084D5C(s16 a1, s16 a2) +{ + u8 currMapType = Overworld_GetMapTypeOfSaveblockLocation(); + u8 destMapType = GetMapTypeByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); + if (is_light_level_1_2_3_5_or_6(currMapType) && is_light_level_1_2_3_5_or_6(destMapType) != TRUE) + sub_8084DD4(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, a1 - 7, a2 - 6); +} + +void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gSaveBlock1Ptr->warp4, mapGroup, mapNum, warpId, x, y); +} diff --git a/src/region_map.c b/src/region_map.c index 086c0ba68..7f121d1de 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -881,7 +881,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) return; } - switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) + switch (GetMapTypeByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) { default: case 1: @@ -904,7 +904,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) case 7: if (gMapHeader.flags & 0x02) { - mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapData->width; @@ -923,7 +923,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) } break; case 9: - mapHeader = get_mapheader_by_bank_and_number((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapData->width; @@ -937,12 +937,12 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) if (gRegionMap->mapSecId != MAPSEC_DYNAMIC) { storedWarp = &gSaveBlock1Ptr->warp4; - mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(storedWarp->mapGroup, storedWarp->mapNum); } else { storedWarp = &gSaveBlock1Ptr->warp2; - mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(storedWarp->mapGroup, storedWarp->mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; } if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId)) @@ -1065,7 +1065,7 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void) break; default: case 0: - mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum); + mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); gRegionMap->mapSecId = mapHeader->regionMapSectionId; dimensionScale = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width; diff --git a/sym_ewram.txt b/sym_ewram.txt index 206fa96e8..ed231e96f 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -214,21 +214,9 @@ gUnknown_020322D5: @ 20322D5 gUnknown_020322D8: @ 20322D8 .space 0x4 -gUnknown_020322DC: @ 20322DC - .space 0x8 - -gUnknown_020322E4: @ 20322E4 - .space 0x8 - -gUnknown_020322EC: @ 20322EC - .space 0x8 - -gUnknown_020322F4: @ 20322F4 - .space 0x8 - -gUnknown_020322FC: @ 20322FC - .space 0x4 + .include "src/overworld.o" +.align 2 gUnknown_02032300: @ 2032300 .space 0x4 From f22be4d0105304147ca982a91c239b9e3a7d31aa Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 12 Feb 2018 18:26:26 +0100 Subject: [PATCH 2/6] more overworld work --- asm/cable_club.s | 2 +- asm/field_screen.s | 8 +- asm/field_tasks.s | 6 +- asm/map_name_popup.s | 8 +- asm/overworld.s | 1496 +---------------- data/field_screen.s | 2 +- ...attleFrontier_BattlePyramidEmptySquare.inc | 2 +- .../maps/BattleFrontier_BattlePyramidTop.inc | 2 +- data/specials.inc | 4 +- include/constants/vars.h | 2 +- include/global.h | 4 +- include/overworld.h | 8 + src/item_use.c | 4 +- src/overworld.c | 579 ++++++- sym_ewram.txt | 16 - 15 files changed, 613 insertions(+), 1530 deletions(-) diff --git a/asm/cable_club.s b/asm/cable_club.s index 3b5c392fc..885689e85 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -2156,7 +2156,7 @@ sub_80B360C: @ 80B360C negs r1, r1 ands r0, r1 str r0, [r2] - bl call_ResetMapMusic + bl Overworld_ResetMapMusic bl copy_player_party_from_sav1 bl copy_bags_and_unk_data_to_save_blocks bl sub_813BF10 diff --git a/asm/field_screen.s b/asm/field_screen.s index 0839e4bac..0caa07a1b 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -1884,8 +1884,8 @@ _080ABEF4: .pool thumb_func_end sub_80ABE18 - thumb_func_start sub_80ABF00 -sub_80ABF00: @ 80ABF00 + thumb_func_start ApplyWeatherGammaShiftToPal +ApplyWeatherGammaShiftToPal: @ 80ABF00 push {lr} lsls r0, 24 lsrs r0, 24 @@ -1900,7 +1900,7 @@ sub_80ABF00: @ 80ABF00 pop {r0} bx r0 .pool - thumb_func_end sub_80ABF00 + thumb_func_end ApplyWeatherGammaShiftToPal thumb_func_start sub_80ABF20 sub_80ABF20: @ 80ABF20 @@ -10478,7 +10478,7 @@ sub_80B058C: @ 80B058C thumb_func_start sub_80B05B4 sub_80B05B4: @ 80B05B4 push {lr} - bl sub_80859B0 + bl Overworld_FadeOutMapMusic ldr r0, =task50_0807F0C8 movs r1, 0x50 bl CreateTask diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 4befe0ca7..79980ec46 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -182,8 +182,8 @@ _0809D9EA: bx r0 thumb_func_end ActivatePerStepCallback - thumb_func_start wild_encounter_reset_coro_args -wild_encounter_reset_coro_args: @ 809D9F0 + thumb_func_start ResetFieldTasksArgs +ResetFieldTasksArgs: @ 809D9F0 push {lr} ldr r0, =task_per_step_callback_manager bl FindTaskIdByFunc @@ -207,7 +207,7 @@ _0809DA1A: pop {r0} bx r0 .pool - thumb_func_end wild_encounter_reset_coro_args + thumb_func_end ResetFieldTasksArgs thumb_func_start nullsub_34 nullsub_34: @ 809DA2C diff --git a/asm/map_name_popup.s b/asm/map_name_popup.s index 9802c3151..76edd1f1f 100644 --- a/asm/map_name_popup.s +++ b/asm/map_name_popup.s @@ -9,14 +9,14 @@ sub_80D47D4: @ 80D47D4 push {lr} bl sub_80A0934 - bl AddMapNamePopUpWindowTask + bl ShowMapNamePopup movs r0, 0x1 pop {r1} bx r1 thumb_func_end sub_80D47D4 - thumb_func_start AddMapNamePopUpWindowTask -AddMapNamePopUpWindowTask: @ 80D47E4 + thumb_func_start ShowMapNamePopup +ShowMapNamePopup: @ 80D47E4 push {r4,lr} movs r0, 0x80 lsls r0, 7 @@ -83,7 +83,7 @@ _080D486C: pop {r0} bx r0 .pool - thumb_func_end AddMapNamePopUpWindowTask + thumb_func_end ShowMapNamePopup thumb_func_start Task_MapNamePopUpWindow Task_MapNamePopUpWindow: @ 80D487C diff --git a/asm/overworld.s b/asm/overworld.s index 25c479c10..d74a2674b 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -5,1482 +5,8 @@ .text - thumb_func_start sub_8084E14 -sub_8084E14: @ 8084E14 - ldr r2, =gWarpDestination - 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 SetWarpData - 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, =gWarpDestination - 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 SetWarpData - 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, =gWarpDestination - 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, =gWarpDestination - 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 SetWarpData - 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 SetWarpData -_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 ApplyCurrentWarp - bl set_current_map_header_from_sav1_save_old_name - bl LoadMapObjTemplatesFromHeader - bl TrySetMapSaveWarpStatus - bl ClearTempFieldEventData - bl ResetCyclingRoadChallengeData - bl prev_quest_postbuffer_cursor_backup_reset - adds r0, r6, 0 - adds r1, r5, 0 - bl TryUpdateRandomTrainerRematches - bl DoTimeBasedEvents - bl SetSav1WeatherFromCurrMapHeader - bl ChooseAmbientCrySpecies - 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, =gLastMapSectionId - 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 LoadMapObjTemplatesFromHeader -_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 ResetCyclingRoadChallengeData - 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 SetSav1WeatherFromCurrMapHeader - bl ChooseAmbientCrySpecies - 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 Overworld_GetMapTypeOfSaveblockLocation - 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 Overworld_GetMapHeaderByGroupAndId - 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, =gWarpDestination - 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 Overworld_PlaySpecialMapMusic -Overworld_PlaySpecialMapMusic: @ 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 Overworld_GetMapTypeOfSaveblockLocation - 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 Overworld_PlaySpecialMapMusic - - 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, =gWarpDestination - 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 @@ -1491,7 +17,7 @@ sub_80859BC: @ 80859BC mov r0, sp adds r1, r4, 0 bl PlayerGetDestCoords - ldr r0, =gUnknown_02032306 + ldr r0, =sIsAmbientCryWaterMon ldrb r0, [r0] cmp r0, 0x1 bne _080859F0 @@ -1524,7 +50,7 @@ _080859F0: bl __umodsi3 adds r2, r0, 0 adds r2, 0x32 - ldr r0, =gUnknown_02032304 + ldr r0, =sAmbientCrySpecies ldrh r0, [r0] lsls r4, 24 asrs r4, 24 @@ -1567,7 +93,7 @@ _08085A60: .4byte _08085B0C .4byte _08085B20 _08085A74: - ldr r0, =gUnknown_02032304 + ldr r0, =sAmbientCrySpecies ldrh r0, [r0] cmp r0, 0 bne _08085A84 @@ -1673,17 +199,17 @@ ChooseAmbientCrySpecies: @ 8085B2C lsls r0, 24 cmp r0, 0 bne _08085B5C - ldr r1, =gUnknown_02032306 + ldr r1, =sIsAmbientCryWaterMon movs r0, 0x1 strb r0, [r1] bl GetLocalWaterMon b _08085B62 .pool _08085B5C: - ldr r0, =gUnknown_02032306 + ldr r0, =sIsAmbientCryWaterMon bl GetLocalWildMon _08085B62: - ldr r1, =gUnknown_02032304 + ldr r1, =sAmbientCrySpecies strh r0, [r1] pop {r0} bx r0 @@ -1796,8 +322,8 @@ _08085C10: bx r1 thumb_func_end Overworld_MapTypeAllowsTeleportAndFly - thumb_func_start is_light_level_8_or_9 -is_light_level_8_or_9: @ 8085C14 + thumb_func_start Overworld_MapTypeIsIndoors +Overworld_MapTypeIsIndoors: @ 8085C14 push {lr} lsls r0, 24 movs r1, 0xF8 @@ -1813,7 +339,7 @@ _08085C28: _08085C2A: pop {r1} bx r1 - thumb_func_end is_light_level_8_or_9 + thumb_func_end Overworld_MapTypeIsIndoors thumb_func_start sav1_saved_warp2_map_get_name sav1_saved_warp2_map_get_name: @ 8085C30 @@ -2483,7 +1009,7 @@ sub_8086204: @ 8086204 lsrs r0, 24 cmp r0, 0x1 bne _08086222 - bl AddMapNamePopUpWindowTask + bl ShowMapNamePopup _08086222: bl sub_80AF3C8 pop {r0} @@ -2899,7 +1425,7 @@ _080865F4: lsrs r0, 24 cmp r0, 0x1 bne _08086622 - bl AddMapNamePopUpWindowTask + bl ShowMapNamePopup b _08086622 .pool _08086618: diff --git a/data/field_screen.s b/data/field_screen.s index f95e7e0ec..968e2e7f3 100644 --- a/data/field_screen.s +++ b/data/field_screen.s @@ -483,7 +483,7 @@ gUnknown_0854FE64:: @ 854FE64 .2byte 0x00c8, 0x0048, 0x0040, 0x0038, 0x0030, 0x0028, 0x0020, 0x0018, 0x0000, 0x0000 .align 2 -gUnknown_0854FE78:: @ 854FE78 +gMaxFlashLevel:: @ 854FE78 .4byte 0x00000008 .align 2 diff --git a/data/scripts/maps/BattleFrontier_BattlePyramidEmptySquare.inc b/data/scripts/maps/BattleFrontier_BattlePyramidEmptySquare.inc index cff676124..c2b70944b 100644 --- a/data/scripts/maps/BattleFrontier_BattlePyramidEmptySquare.inc +++ b/data/scripts/maps/BattleFrontier_BattlePyramidEmptySquare.inc @@ -28,7 +28,7 @@ BattleFrontier_BattlePyramidEmptySquare_EventScript_252A77:: @ 8252A77 end BattleFrontier_BattlePyramidEmptySquare_EventScript_252A8F:: @ 8252A8F - special AddMapNamePopUpWindowTask + special ShowMapNamePopup setvar VAR_0x400F, 0 end diff --git a/data/scripts/maps/BattleFrontier_BattlePyramidTop.inc b/data/scripts/maps/BattleFrontier_BattlePyramidTop.inc index 6c44e0044..3ba3a5a6a 100644 --- a/data/scripts/maps/BattleFrontier_BattlePyramidTop.inc +++ b/data/scripts/maps/BattleFrontier_BattlePyramidTop.inc @@ -64,7 +64,7 @@ BattleFrontier_BattlePyramidTop_EventScript_255180:: @ 8255180 end BattleFrontier_BattlePyramidTop_EventScript_25518A:: @ 825518A - special AddMapNamePopUpWindowTask + special ShowMapNamePopup setvar VAR_0x400F, 0 end diff --git a/data/specials.inc b/data/specials.inc index a4bd17699..f9f7c97d7 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -417,8 +417,8 @@ gSpecials:: @ 81DBA64 def_special sub_813B880 def_special sub_81A085C def_special ShouldTryGetTrainerScript - def_special AddMapNamePopUpWindowTask - def_special AddMapNamePopUpWindowTask + def_special ShowMapNamePopup + def_special ShowMapNamePopup def_special sub_81BE994 def_special sub_81BE79C def_special sub_81BE7F4 diff --git a/include/constants/vars.h b/include/constants/vars.h index c0e3313b6..be21f1730 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -184,7 +184,7 @@ #define VAR_0x40B0 0x40B0 #define VAR_0x40B1 0x40B1 #define VAR_0x40B2 0x40B2 -#define VAR_0x40B3 0x40B3 +#define VAR_WEATHER_INSTITUTE_STATE 0x40B3 #define VAR_PORTHOLE 0x40B4 #define VAR_0x40B5 0x40B5 #define VAR_0x40B6 0x40B6 diff --git a/include/global.h b/include/global.h index 8913432ba..b815e1e5f 100644 --- a/include/global.h +++ b/include/global.h @@ -620,10 +620,10 @@ struct SaveBlock1 /*0x14*/ struct WarpData warp2; /*0x1C*/ struct WarpData lastHealLocation; /*0x24*/ struct WarpData warp4; - /*0x2C*/ u16 battleMusic; + /*0x2C*/ u16 savedMusic; /*0x2E*/ u8 weather; /*0x2F*/ u8 filler_2F; - /*0x30*/ u8 flashUsed; + /*0x30*/ u8 flashLevel; /*0x32*/ u16 mapDataId; /*0x34*/ u16 mapView[0x100]; /*0x234*/ u8 playerPartyCount; diff --git a/include/overworld.h b/include/overworld.h index 904f61c8e..cedad6266 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -63,6 +63,14 @@ void sub_8084D5C(s16 a1, s16 a2); void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); // to erase later +bool32 Overworld_IsBikingAllowed(void); +u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3); +u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4); +u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); +bool8 Overworld_MapTypeIsIndoors(u8 mapType); +void SetDefaultFlashLevel(void); +void Overworld_ClearSavedMusic(void); +void sub_8085810(void); u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); u8 Overworld_GetMapTypeOfSaveblockLocation(void); void Overworld_SetMapObjTemplateCoords(u8, s16, s16); diff --git a/src/item_use.c b/src/item_use.c index 99dce9cbd..bc70c5884 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -45,7 +45,7 @@ extern void ItemUseOutOfBattle_EvolutionStone(u8 b); extern void bag_menu_mail_related(void); extern void OpenPokeblockCase(u8 a, void(*b)(void)); extern void overworld_free_bg_tilemaps(void); -extern bool32 sav1_map_is_biking_allowed(void); +extern bool32 Overworld_IsBikingAllowed(void); extern bool8 IsPlayerFacingSurfableFishableWater(void); extern bool8 sub_81221AC(void); extern u8 gText_ItemFinderNothing[]; @@ -236,7 +236,7 @@ void ItemUseOutOfBattle_Bike(u8 taskId) DisplayCannotDismountBikeMessage(taskId, data[3]); else { - if (sav1_map_is_biking_allowed() == TRUE && IsBikingDisallowedByPlayer() == 0) + if (Overworld_IsBikingAllowed() == TRUE && IsBikingDisallowedByPlayer() == 0) { gUnknown_0203A0F4 = ItemUseOnFieldCB_Bike; SetUpItemUseOnFieldCallback(taskId); diff --git a/src/overworld.c b/src/overworld.c index 5757ca20a..f5457242d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -52,15 +52,16 @@ #include "wild_encounter.h" #include "bg.h" #include "money.h" +#include "save_location.h" // event scripts extern const u8 EventScript_WhiteOut[]; extern const u8 EventScript_271862[]; // vars -extern struct MapData * const gMapAttributes[]; -extern struct MapHeader * const * const gMapGroups[]; -extern s32 gMaxFlashLevel; +extern struct MapData *const gMapAttributes[]; +extern struct MapHeader *const *const gMapGroups[]; +extern const s32 gMaxFlashLevel; // functions extern void HealPlayerParty(void); @@ -71,6 +72,22 @@ extern void copy_map_tileset1_tileset2_to_vram(struct MapData *); extern void apply_map_tileset1_tileset2_palette(struct MapData *); extern void ResetCyclingRoadChallengeData(void); extern void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey); +extern void mapheader_run_script_with_tag_x5(void); +extern void ResetFieldTasksArgs(void); +extern void sub_80A0A2C(void); +extern void not_trainer_hill_battle_pyramid(void); +extern void apply_map_tileset2_palette(struct MapData *); +extern void copy_map_tileset2_to_vram_2(struct MapData *); +extern void prev_quest_postbuffer_cursor_backup_reset(void); +extern void ShowMapNamePopup(void); +extern bool32 InTrainerHill(void); +extern void sub_81AA1D8(void); +extern void sub_81D5DF8(void); +extern void sub_80EB218(void); +extern void trainer_hill_map_load_related(void); +extern void battle_pyramid_map_load_related(u8); +extern void UpdateTVScreensOnMap(u32, u32); +extern void sub_80E9238(u8); // this file's functions static void Overworld_ResetStateAfterWhiteOut(void); @@ -85,15 +102,16 @@ IWRAM_DATA u8 gUnknown_03000E19; IWRAM_DATA void *rom4_c_unused_03000e1c; // EWRAM vars +EWRAM_DATA u8 gUnknown_020322D8 = 0; EWRAM_DATA struct WarpData gUnknown_020322DC = {0}; EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position EWRAM_DATA struct WarpData gUnknown_020322EC = {0}; EWRAM_DATA struct WarpData gUnknown_020322F4 = {0}; EWRAM_DATA u16 gLastMapSectionId = 0; -// EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0}; -// EWRAM_DATA u16 sAmbientCrySpecies = 0; -// EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE; -// EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0}; +EWRAM_DATA struct UnkPlayerStruct gUnknown_02032300 = {0}; +EWRAM_DATA u16 sAmbientCrySpecies = 0; +EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE; +EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0}; // const rom data const struct WarpData sDummyWarpData = @@ -544,3 +562,550 @@ void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { SetWarpData(&gSaveBlock1Ptr->warp4, mapGroup, mapNum, warpId, x, y); } + +void sub_8084E14(void) +{ + gWarpDestination = gSaveBlock1Ptr->warp4; +} + +void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gUnknown_020322EC, mapGroup, mapNum, warpId, x, y); +} + +void warp1_set_to_warp2(void) +{ + gWarpDestination = gUnknown_020322EC; +} + +void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gUnknown_020322F4, mapGroup, mapNum, warpId, x, y); +} + +void sub_8084EBC(s16 x, s16 y) +{ + if (warp_data_is_not_neg_1(&gUnknown_020322F4) == TRUE) + { + gWarpDestination = gUnknown_020322DC; + } + else + { + Overworld_SetWarpDestination(gUnknown_020322F4.mapGroup, gUnknown_020322F4.mapNum, -1, x, y); + } +} + +void warp1_set_to_sav1w(void) +{ + gWarpDestination = gSaveBlock1Ptr->warp1; +} + +void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + SetWarpData(&gSaveBlock1Ptr->warp1, mapGroup, mapNum, warpId, x, y); +} + +void sub_8084F6C(u8 a1) +{ + const struct HealLocation *warp = GetHealLocationPointer(a1); + if (warp) + SetWarpData(&gSaveBlock1Ptr->warp1, warp->group, warp->map, -1, warp->x, warp->y); +} + +void sub_8084FAC(void) +{ + gSaveBlock1Ptr->warp1 = gSaveBlock1Ptr->warp2; +} + +struct MapConnection *GetMapConnection(u8 dir) +{ + s32 i; + s32 count = gMapHeader.connections->count; + struct MapConnection *connection = gMapHeader.connections->connections; + + if (connection == NULL) + return NULL; + + for(i = 0; i < count; i++, connection++) + if (connection->direction == dir) + return connection; + + return NULL; +} + +bool8 sub_8084FF8(u8 dir, u16 x, u16 y) +{ + struct MapConnection *connection = GetMapConnection(dir); + + if (connection != NULL) + { + Overworld_SetWarpDestination(connection->mapGroup, connection->mapNum, -1, x, y); + } + else + { + mapheader_run_script_with_tag_x6(); + if (warp_data_is_not_neg_1(&gUnknown_020322EC)) + return FALSE; + warp1_set_to_warp2(); + } + return TRUE; +} + +bool8 sub_8085058(u16 x, u16 y) +{ + return sub_8084FF8(CONNECTION_EMERGE, x, y); +} + +bool8 sub_8085078(u16 x, u16 y) +{ + return sub_8084FF8(CONNECTION_DIVE, x, y); +} + +void mliX_load_map(u8 mapGroup, u8 mapNum) +{ + s32 paletteIndex; + + Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1); + if (gMapHeader.regionMapSectionId != 0x3A) + sub_8085810(); + + ApplyCurrentWarp(); + set_current_map_header_from_sav1_save_old_name(); + LoadMapObjTemplatesFromHeader(); + TrySetMapSaveWarpStatus(); + ClearTempFieldEventData(); + ResetCyclingRoadChallengeData(); + prev_quest_postbuffer_cursor_backup_reset(); + TryUpdateRandomTrainerRematches(mapGroup, mapNum); + DoTimeBasedEvents(); + SetSav1WeatherFromCurrMapHeader(); + ChooseAmbientCrySpecies(); + SetDefaultFlashLevel(); + Overworld_ClearSavedMusic(); + mapheader_run_script_with_tag_x3(); + not_trainer_hill_battle_pyramid(); + copy_map_tileset2_to_vram_2(gMapHeader.mapData); + apply_map_tileset2_palette(gMapHeader.mapData); + + for (paletteIndex = 6; paletteIndex < 13; paletteIndex++) + ApplyWeatherGammaShiftToPal(paletteIndex); + + sub_80A0A2C(); + UpdateLocationHistoryForRoamer(); + RoamerMove(); + DoCurrentWeather(); + ResetFieldTasksArgs(); + mapheader_run_script_with_tag_x5(); + + if (gMapHeader.regionMapSectionId != 0x3A || gMapHeader.regionMapSectionId != gLastMapSectionId) + ShowMapNamePopup(); +} + +void mli0_load_map(u32 a1) +{ + bool8 v2; + bool8 indoors; + + set_current_map_header_from_sav1_save_old_name(); + if (!(gUnknown_020322D8 & 1)) + { + if (gMapHeader.mapDataId == 0x169) + sub_81AA1D8(); + else if (InTrainerHill()) + sub_81D5DF8(); + else + LoadMapObjTemplatesFromHeader(); + } + + v2 = is_light_level_1_2_3_5_or_6(gMapHeader.mapType); + indoors = Overworld_MapTypeIsIndoors(gMapHeader.mapType); + + sub_80EB218(); + TrySetMapSaveWarpStatus(); + ClearTempFieldEventData(); + ResetCyclingRoadChallengeData(); + prev_quest_postbuffer_cursor_backup_reset(); + TryUpdateRandomTrainerRematches(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + if (a1 != 1) + DoTimeBasedEvents(); + SetSav1WeatherFromCurrMapHeader(); + ChooseAmbientCrySpecies(); + if (v2) + FlagClear(FLAG_SYS_USE_FLASH); + SetDefaultFlashLevel(); + Overworld_ClearSavedMusic(); + mapheader_run_script_with_tag_x3(); + UpdateLocationHistoryForRoamer(); + RoamerMoveToOtherLocationSet(); + if (gMapHeader.mapDataId == 0x169) + battle_pyramid_map_load_related(0); + else if (InTrainerHill()) + trainer_hill_map_load_related(); + else + not_trainer_hill_battle_pyramid(); + + if (a1 != 1 && indoors) + { + UpdateTVScreensOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height); + sub_80E9238(1); + } +} + +void player_avatar_init_params_reset(void) +{ + gUnknown_02032300.player_field_1 = 1; + gUnknown_02032300.player_field_0 = 1; +} + +void walkrun_find_lowest_active_bit_in_bitfield(void) +{ + gUnknown_02032300.player_field_1 = player_get_direction_lower_nybble(); + + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE)) + gUnknown_02032300.player_field_0 = 2; + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) + gUnknown_02032300.player_field_0 = 4; + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + gUnknown_02032300.player_field_0 = 8; + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4)) + gUnknown_02032300.player_field_0 = 16; + else + gUnknown_02032300.player_field_0 = 1; +} + +struct UnkPlayerStruct *sub_80852D4(void) +{ + struct UnkPlayerStruct playerStruct; + u8 mapType = Overworld_GetMapTypeOfSaveblockLocation(); + u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1(); + u8 v4 = sub_808532C(&gUnknown_02032300, v2, mapType); + playerStruct.player_field_0 = v4; + playerStruct.player_field_1 = sub_808538C(&gUnknown_02032300, v4, v2, mapType); + gUnknown_02032300 = playerStruct; + return &gUnknown_02032300; +} + +u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) +{ + if (a3 != 8 && FlagGet(FLAG_SYS_CRUISE_MODE)) + return 1; + if (a3 == 5) + return 16; + if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) + return 8; + if (Overworld_IsBikingAllowed() != TRUE) + return 1; + if (playerStruct->player_field_0 == 2) + return 2; + if (playerStruct->player_field_0 != 4) + return 1; + return 4; +} + +u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) +{ + if (FlagGet(FLAG_SYS_CRUISE_MODE) && a4 == 6) + return 4; + if (MetatileBehavior_IsDeepSouthWarp(a3) == TRUE) + return 2; + if (MetatileBehavior_IsNonAnimDoor(a3) == TRUE || MetatileBehavior_IsDoor(a3) == TRUE) + return 1; + if (MetatileBehavior_IsSouthArrowWarp(a3) == TRUE) + return 2; + if (MetatileBehavior_IsNorthArrowWarp(a3) == TRUE) + return 1; + if (MetatileBehavior_IsWestArrowWarp(a3) == TRUE) + return 4; + if (MetatileBehavior_IsEastArrowWarp(a3) == TRUE) + return 3; + if ((playerStruct->player_field_0 == 16 && a2 == 8) + || (playerStruct->player_field_0 == 8 && a2 == 16)) + return playerStruct->player_field_1; + if (MetatileBehavior_IsLadder(a3) == TRUE) + return playerStruct->player_field_1; + return 1; +} + +u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) +{ + return MapGridGetMetatileBehaviorAt(gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7); +} + +bool32 Overworld_IsBikingAllowed(void) +{ + if (!(gMapHeader.flags & 1)) + return FALSE; + else + return TRUE; +} + +void SetDefaultFlashLevel(void) +{ + if (!gMapHeader.cave) + gSaveBlock1Ptr->flashLevel = 0; + else if (FlagGet(FLAG_SYS_USE_FLASH)) + gSaveBlock1Ptr->flashLevel = 1; + else + gSaveBlock1Ptr->flashLevel = gMaxFlashLevel - 1; +} + +void Overworld_SetFlashLevel(s32 flashLevel) +{ + if (flashLevel < 0 || flashLevel > gMaxFlashLevel) + flashLevel = 0; + gSaveBlock1Ptr->flashLevel = flashLevel; +} + +u8 Overworld_GetFlashLevel(void) +{ + return gSaveBlock1Ptr->flashLevel; +} + +void sub_8085524(u16 mapDataId) +{ + gSaveBlock1Ptr->mapDataId = mapDataId; + gMapHeader.mapData = get_mapdata_header(); +} + +void sub_8085540(u8 var) +{ + gUnknown_020322D8 = var; +} + +u8 sub_808554C(void) +{ + return gUnknown_020322D8; +} + +bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) +{ + if (!FlagGet(FLAG_SYS_WEATHER_CTRL)) + return FALSE; + if (warp->mapGroup == 0) + { + switch (warp->mapNum) + { + case MAP_NUM(LILYCOVE_CITY): + case MAP_NUM(MOSSDEEP_CITY): + case MAP_NUM(SOOTOPOLIS_CITY): + case MAP_NUM(EVER_GRANDE_CITY): + case MAP_NUM(ROUTE124): + case MAP_NUM(ROUTE125): + case MAP_NUM(ROUTE126): + case MAP_NUM(ROUTE127): + case MAP_NUM(ROUTE128): + return TRUE; + default: + if (VarGet(VAR_0x405E) < 4) + return FALSE; + switch (warp->mapNum) + { + case MAP_NUM(ROUTE129): + case MAP_NUM(ROUTE130): + case MAP_NUM(ROUTE131): + return TRUE; + } + } + } + return FALSE; +} + +bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp) +{ + if (VarGet(VAR_0x40CA) != 1) + return FALSE; + if (warp->mapGroup != MAP_GROUP(SOOTOPOLIS_CITY)) + return FALSE; + if (warp->mapNum == MAP_NUM(SOOTOPOLIS_CITY)) + return TRUE; + return FALSE; +} + +bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) +{ + if (VarGet(VAR_WEATHER_INSTITUTE_STATE)) + return FALSE; + if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F)) + return FALSE; + if (warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_1F) + || warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_2F)) + return TRUE; + return FALSE; +} + +bool16 IsInflitratedSpaceCenter(struct WarpData *warp) +{ + if (VarGet(VAR_0x405D) == 0) + return FALSE; + if (VarGet(VAR_0x405D) > 2) + return FALSE; + if (warp->mapGroup != MAP_GROUP(MOSSDEEP_CITY_SPACE_CENTER_1F)) + return FALSE; + if (warp->mapNum == MAP_NUM(MOSSDEEP_CITY_SPACE_CENTER_1F) + || warp->mapNum == MAP_NUM(MOSSDEEP_CITY_SPACE_CENTER_2F)) + return TRUE; + return FALSE; +} + +u16 GetLocationMusic(struct WarpData *warp) +{ + if (NoMusicInSotopolisWithLegendaries(warp) == TRUE) + return 0xFFFF; + else if (ShouldLegendaryMusicPlayAtLocation(warp) == TRUE) + return MUS_OOAME; + else if (IsInflitratedSpaceCenter(warp) == TRUE) + return MUS_MGM0; + else if (IsInfiltratedWeatherInstitute(warp) == TRUE) + return MUS_TOZAN; + else + return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music; +} + +u16 GetCurrLocationDefaultMusic(void) +{ + u16 music; + + // Play the desert music only when the sandstorm is active on Route 111. + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE111) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE111) + && GetSav1Weather() == 8) + return MUS_ASHROAD; + + music = GetLocationMusic(&gSaveBlock1Ptr->location); + if (music != 0x7FFF) + { + return music; + } + else + { + if (gSaveBlock1Ptr->pos.x < 24) + return MUS_DOORO_X1; + else + return MUS_GRANROAD; + } +} + +u16 GetWarpDestinationMusic(void) +{ + u16 music = GetLocationMusic(&gWarpDestination); + if (music != 0x7FFF) + { + return music; + } + else + { + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAUVILLE_CITY) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAUVILLE_CITY)) + return MUS_DOORO_X1; + else + return MUS_GRANROAD; + } +} + +void Overworld_ResetMapMusic(void) +{ + ResetMapMusic(); +} + +void Overworld_PlaySpecialMapMusic(void) +{ + u16 music = GetCurrLocationDefaultMusic(); + + if (music != MUS_OOAME && music != 0xFFFF) + { + if (gSaveBlock1Ptr->savedMusic) + music = gSaveBlock1Ptr->savedMusic; + else if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER) + music = MUS_DEEPDEEP; + else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + music = MUS_NAMINORI; + } + + if (music != GetCurrentMapMusic()) + PlayNewMapMusic(music); +} + +void Overworld_SetSavedMusic(u16 songNum) +{ + gSaveBlock1Ptr->savedMusic = songNum; +} + +void Overworld_ClearSavedMusic(void) +{ + gSaveBlock1Ptr->savedMusic = 0; +} + +void sub_8085810(void) +{ + if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE) + { + u16 newMusic = GetWarpDestinationMusic(); + u16 currentMusic = GetCurrentMapMusic(); + if (newMusic != MUS_OOAME && newMusic != 0xFFFF) + { + if (currentMusic == MUS_DEEPDEEP || currentMusic == MUS_NAMINORI) + return; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) + newMusic = MUS_NAMINORI; + } + if (newMusic != currentMusic) + { + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) + FadeOutAndFadeInNewMapMusic(newMusic, 4, 4); + else + FadeOutAndPlayNewMapMusic(newMusic, 8); + } + } +} + +void Overworld_ChangeMusicToDefault(void) +{ + u16 currentMusic = GetCurrentMapMusic(); + if (currentMusic != GetCurrLocationDefaultMusic()) + FadeOutAndPlayNewMapMusic(GetCurrLocationDefaultMusic(), 8); +} + +void Overworld_ChangeMusicTo(u16 newMusic) +{ + u16 currentMusic = GetCurrentMapMusic(); + if (currentMusic != newMusic && currentMusic != MUS_OOAME) + FadeOutAndPlayNewMapMusic(newMusic, 8); +} + +u8 GetMapMusicFadeoutSpeed(void) +{ + struct MapHeader *mapHeader = warp1_get_mapheader(); + if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE) + return 2; + else + return 4; +} + +void music_something(void) +{ + u16 currentMusic = GetCurrentMapMusic(); + u16 warpMusic = GetWarpDestinationMusic(); + if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE && warpMusic != GetCurrentMapMusic()) + { + if (currentMusic == MUS_NAMINORI + && VarGet(VAR_0x40CA) == 2 + && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY) + && gWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY) + && gWarpDestination.mapNum == MAP_NUM(SOOTOPOLIS_CITY) + && gWarpDestination.x == 0x1D + && gWarpDestination.y == 0x35) + return; + FadeOutMapMusic(GetMapMusicFadeoutSpeed()); + } +} + +bool8 sub_80859A0(void) +{ + return IsNotWaitingForBGMStop(); +} + +void Overworld_FadeOutMapMusic(void) +{ + FadeOutMapMusic(4); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index ed231e96f..05118682e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -211,24 +211,8 @@ gDifferentSaveFile: @ 20322D4 gUnknown_020322D5: @ 20322D5 .space 0x3 -gUnknown_020322D8: @ 20322D8 - .space 0x4 - .include "src/overworld.o" -.align 2 -gUnknown_02032300: @ 2032300 - .space 0x4 - -gUnknown_02032304: @ 2032304 - .space 0x2 - -gUnknown_02032306: @ 2032306 - .space 0x2 - -gLinkPlayerMapObjects: @ 2032308 - .space 0x10 - gUnknown_02032318: @ 2032318 .space 0x5000 From 94b47c0686d3f4c5da962011797cc89a2efdd88c Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 14 Feb 2018 00:58:22 +0100 Subject: [PATCH 3/6] decompile overworld --- asm/battle_frontier_1.s | 6 +- asm/battle_records.s | 2 +- asm/battle_tower.s | 2 +- asm/cable_car.s | 2 +- asm/cable_club.s | 10 +- asm/contest.s | 2 +- asm/contest_link_80F57C4.s | 2 +- asm/field_control_avatar.s | 14 +- asm/field_effect.s | 14 +- asm/field_screen.s | 6 +- asm/field_specials.s | 8 +- asm/field_tasks.s | 8 +- asm/item_menu.s | 8 +- asm/learn_move.s | 2 +- asm/main_menu.s | 2 +- asm/overworld.s | 4352 ----------------- asm/party_menu.s | 22 +- asm/player_pc.s | 6 +- asm/pokedex.s | 2 +- asm/pokemon_storage_system.s | 2 +- asm/pokemon_summary_screen.s | 4 +- asm/pokenav.s | 10 +- asm/rom_8011DC0.s | 30 +- asm/rotating_gate.s | 6 +- asm/roulette.s | 2 +- asm/script_pokemon_util_80F87D8.s | 6 +- asm/shop.s | 4 +- asm/start_menu.s | 10 +- asm/trade.s | 4 +- data/event_scripts.s | 1 - data/item_use.s | 2 +- data/scripts/cable_club.inc | 8 +- data/scripts/maps/FortreeCity_Gym.inc | 2 +- .../maps/Route110_TrickHousePuzzle6.inc | 2 +- data/scripts/maps/Route119.inc | 4 +- .../maps/Route119_WeatherInstitute_1F.inc | 4 +- .../maps/Route119_WeatherInstitute_2F.inc | 6 +- data/specials.inc | 2 +- include/field_camera.h | 9 + include/field_control_avatar.h | 41 + include/field_ground_effect.h | 2 + include/field_map_obj.h | 3 + include/field_player_avatar.h | 3 +- include/fieldmap.h | 1 + include/global.fieldmap.h | 6 +- include/global.h | 12 + include/overworld.h | 152 +- ld_script.txt | 1 - src/battle_setup.c | 20 +- src/battle_transition.c | 2 +- src/berry_blender.c | 6 +- src/clock.c | 2 +- src/daycare.c | 4 +- src/decoration.c | 4 +- src/egg_hatch.c | 6 +- src/field_map_obj.c | 2 +- src/hof_pc.c | 2 +- src/item_use.c | 4 +- src/lilycove_lady.c | 2 +- src/load_save.c | 4 +- src/naming_screen.c | 8 +- src/overworld.c | 2277 ++++++++- src/pokeblock.c | 4 +- src/region_map.c | 2 +- src/reset_save_heap.c | 2 +- src/safari_zone.c | 12 +- src/scrcmd.c | 2 +- src/secret_base.c | 6 +- src/tv.c | 4 +- src/walda_phrase.c | 4 +- sym_common.txt | 2 +- 71 files changed, 2501 insertions(+), 4689 deletions(-) delete mode 100644 asm/overworld.s create mode 100644 include/field_control_avatar.h diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s index 43966b607..e3094b955 100644 --- a/asm/battle_frontier_1.s +++ b/asm/battle_frontier_1.s @@ -6481,7 +6481,7 @@ _0819218E: mov r0, r9 cmp r0, 0 bne _081921C4 - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 b _081921FC .pool @@ -9539,7 +9539,7 @@ _08193B84: ldr r0, [r4] bl Free str r6, [r4] - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 ldr r1, =gTasks lsls r0, r5, 2 @@ -11320,7 +11320,7 @@ _08194B24: ands r0, r1 cmp r0, 0 bne _08194B3C - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask diff --git a/asm/battle_records.s b/asm/battle_records.s index b203f339b..1880e7b45 100644 --- a/asm/battle_records.s +++ b/asm/battle_records.s @@ -855,7 +855,7 @@ sub_813C664: @ 813C664 ands r0, r1 cmp r0, 0 bne _0813C694 - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 ldr r0, =gUnknown_0203AB78 ldr r0, [r0] diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 13641fef0..eb89d4d79 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -3172,7 +3172,7 @@ _08163A3C: _08163A74: bl sub_816537C _08163A78: - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 add sp, 0x4 pop {r4-r6} diff --git a/asm/cable_car.s b/asm/cable_car.s index 6fd44dd9f..bfb96cb9b 100644 --- a/asm/cable_car.s +++ b/asm/cable_car.s @@ -777,7 +777,7 @@ _08150340: bl warp_in ldr r0, =gFieldCallback str r4, [r0] - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 add sp, 0x8 pop {r3} diff --git a/asm/cable_club.s b/asm/cable_club.s index 885689e85..0bdda588e 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -736,7 +736,7 @@ _080B2984: .pool _080B2994: bl GetLinkPlayerCount_2 - ldr r4, =gUnknown_03005DB8 + ldr r4, =gFieldLinkPlayerCount strb r0, [r4] bl GetMultiplayerId ldr r1, =gUnknown_03005DB4 @@ -826,7 +826,7 @@ _080B2A4E: .pool _080B2A6C: bl GetLinkPlayerCount_2 - ldr r4, =gUnknown_03005DB8 + ldr r4, =gFieldLinkPlayerCount strb r0, [r4] bl GetMultiplayerId ldr r1, =gUnknown_03005DB4 @@ -2132,12 +2132,12 @@ _080B35E0: ldrb r0, [r0] cmp r0, 0 bne _080B35FE - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 b _080B35FE .pool _080B35F8: - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 _080B35FE: bl RunTasks @@ -2586,7 +2586,7 @@ sp02A_crash_sound: @ 80B39BC push {lr} ldr r0, =gSpecialVar_0x8006 ldrb r0, [r0] - ldr r1, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r1, =CB2_ReturnToFieldContinueScript bl sub_80C4E74 pop {r0} bx r0 diff --git a/asm/contest.s b/asm/contest.s index 8ea0d2d94..327a80d75 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -5588,7 +5588,7 @@ sub_80DA830: @ 80DA830 bl FreeAllWindowBuffers bl sub_80D7A5C bl FreeMonSpritesGfx - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 _080DA860: pop {r0} diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s index c07be821f..450a235d5 100644 --- a/asm/contest_link_80F57C4.s +++ b/asm/contest_link_80F57C4.s @@ -1825,7 +1825,7 @@ _080F6884: adds r0, r5, 0 bl DestroyTask bl FreeAllWindowBuffers - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 bl sub_80F7E64 _080F68A8: diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s index 240437049..c1c96272f 100644 --- a/asm/field_control_avatar.s +++ b/asm/field_control_avatar.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_809BEDC -sub_809BEDC: @ 809BEDC + thumb_func_start FieldClearPlayerInput +FieldClearPlayerInput: @ 809BEDC push {r4,r5,lr} movs r1, 0x2 negs r1, r1 @@ -29,11 +29,11 @@ sub_809BEDC: @ 809BEDC pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_809BEDC + thumb_func_end FieldClearPlayerInput - thumb_func_start process_overworld_input -@ void process_overworld_input(overworld_input_data *input_data, char buttons_new, char buttons_held) -process_overworld_input: @ 809BF08 + thumb_func_start FieldGetPlayerInput +@ void FieldGetPlayerInput(overworld_input_data *input_data, char buttons_new, char buttons_held) +FieldGetPlayerInput: @ 809BF08 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -176,7 +176,7 @@ _0809C006: pop {r4-r7} pop {r0} bx r0 - thumb_func_end process_overworld_input + thumb_func_end FieldGetPlayerInput thumb_func_start sub_809C014 @ int sub_809C014(overworld_input_data *input_data) diff --git a/asm/field_effect.s b/asm/field_effect.s index 6d35cca61..91cd0c972 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -1943,7 +1943,7 @@ _080B69D4: thumb_func_start sub_80B69DC sub_80B69DC: @ 80B69DC push {lr} - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 ldr r1, =gFieldCallback ldr r0, =mapldr_080842E8 @@ -2010,7 +2010,7 @@ _080B6A64: bne _080B6A8A bl Overworld_ResetStateAfterFly bl warp_in - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 ldr r1, =gFieldCallback ldr r0, =mapldr_08084390 @@ -2764,7 +2764,7 @@ sub_80B7060: @ 80B7060 ldr r1, =gFieldCallback ldr r0, =sub_80B70B4 str r0, [r1] - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 ldr r0, =sub_80B6E88 bl FindTaskIdByFunc @@ -3730,7 +3730,7 @@ sub_80B7814: @ 80B7814 ldr r1, =gFieldCallback ldr r0, =mapldr_080851BC str r0, [r1] - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 ldr r0, =sub_80B75F0 bl FindTaskIdByFunc @@ -4205,7 +4205,7 @@ sub_80B7BF4: @ 80B7BF4 ldr r1, =gFieldCallback ldr r0, =sub_80B6B68 str r0, [r1] - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 ldr r0, =sub_80B7A8C bl FindTaskIdByFunc @@ -4402,7 +4402,7 @@ _080B7D86: ldr r1, =gFieldCallback ldr r0, =mapldr_080859D4 str r0, [r1] - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 ldr r0, =sub_80B7CE4 bl FindTaskIdByFunc @@ -4883,7 +4883,7 @@ _080B81B8: bne _080B81E6 bl Overworld_SetWarpDestToLastHealLoc bl warp_in - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 ldr r1, =gFieldCallback ldr r0, =mapldr_08085D88 diff --git a/asm/field_screen.s b/asm/field_screen.s index 0caa07a1b..2a539d111 100644 --- a/asm/field_screen.s +++ b/asm/field_screen.s @@ -9015,7 +9015,7 @@ _080AF9D0: cmp r0, 0 bne _080AF9E8 bl warp_in - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 adds r0, r5, 0 bl DestroyTask @@ -9087,7 +9087,7 @@ _080AFA64: b _080AFA7C _080AFA6C: bl warp_in - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 adds r0, r6, 0 bl DestroyTask @@ -10060,7 +10060,7 @@ _080B0222: b _080B023A _080B022A: bl warp_in - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl SetMainCallback2 adds r0, r5, 0 bl DestroyTask diff --git a/asm/field_specials.s b/asm/field_specials.s index c1624cd0a..29c6dc800 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -20,7 +20,7 @@ Special_ShowDiploma: @ 8137CB4 Special_ViewWallClock: @ 8137CC8 push {lr} ldr r0, =gMain - ldr r1, =c2_exit_to_overworld_2_switch + ldr r1, =CB2_ReturnToField str r1, [r0, 0x8] ldr r0, =Cb2_ViewWallClock bl SetMainCallback2 @@ -1906,7 +1906,7 @@ _08138C7E: thumb_func_start CB2_FieldShowRegionMap CB2_FieldShowRegionMap: @ 8138C84 push {lr} - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl sub_817018C pop {r0} bx r0 @@ -7153,14 +7153,14 @@ sub_813B7D8: @ 813B7D8 ldrh r0, [r0] cmp r0, 0 bne _0813B7F8 - ldr r2, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r2, =CB2_ReturnToFieldContinueScript movs r0, 0 movs r1, 0x1 bl DoRayquazaScene b _0813B802 .pool _0813B7F8: - ldr r2, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r2, =CB2_ReturnToFieldContinueScript movs r0, 0x1 movs r1, 0 bl DoRayquazaScene diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 79980ec46..09f5bbc9b 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -88,7 +88,7 @@ sub_809D908: @ 809D908 bl sub_809D8B8 adds r0, r4, 0x2 adds r1, r4, 0x4 - bl wild_encounter_related + bl UpdateAmbientCry _0809D930: pop {r4} pop {r0} @@ -96,8 +96,8 @@ _0809D930: .pool thumb_func_end sub_809D908 - thumb_func_start overworld_ensure_per_step_coros_running -overworld_ensure_per_step_coros_running: @ 809D93C + thumb_func_start SetUpFieldTasks +SetUpFieldTasks: @ 809D93C push {r4,r5,lr} ldr r5, =task_per_step_callback_manager adds r0, r5, 0 @@ -142,7 +142,7 @@ _0809D992: pop {r0} bx r0 .pool - thumb_func_end overworld_ensure_per_step_coros_running + thumb_func_end SetUpFieldTasks thumb_func_start ActivatePerStepCallback ActivatePerStepCallback: @ 809D9A8 diff --git a/asm/item_menu.s b/asm/item_menu.s index 010e83c49..654729a94 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -31,7 +31,7 @@ ResetBagScrollPositions: @ 81AAB70 @ void CB2_BagMenuFromStartMenu() CB2_BagMenuFromStartMenu: @ 81AAB9C push {lr} - ldr r2, =sub_8086194 + ldr r2, =CB2_ReturnToFieldWithOpenMenu movs r0, 0 movs r1, 0x5 bl GoToBagMenu @@ -5747,7 +5747,7 @@ bag_menu_leave_maybe_3: @ 81ADE6C ldr r0, =gFieldCallback ldr r1, =sub_819FA50 str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 @@ -5782,7 +5782,7 @@ bag_menu_leave_maybe_2: @ 81ADEBC ldr r0, =gFieldCallback ldr r1, =sub_818DEF4 str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 @@ -5813,7 +5813,7 @@ bag_menu_leave_maybe: @ 81ADF00 ldr r0, =gFieldCallback ldr r1, =sub_818E564 str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 diff --git a/asm/learn_move.s b/asm/learn_move.s index f42514e68..56f6f84c7 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -713,7 +713,7 @@ _08160CD8: b _08160E8A _08160CE6: bl sub_8160EA0 - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 b _08160E8A .pool diff --git a/asm/main_menu.s b/asm/main_menu.s index 48d1411c5..8ea65fbec 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -1480,7 +1480,7 @@ _08030444: strh r1, [r0] ldr r0, =gPlttBufferFaded strh r1, [r0] - ldr r0, =sub_8086230 + ldr r0, =CB2_ContinueSavedGame b _0803048A .pool _08030460: diff --git a/asm/overworld.s b/asm/overworld.s deleted file mode 100644 index d74a2674b..000000000 --- a/asm/overworld.s +++ /dev/null @@ -1,4352 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - - - - 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, =sIsAmbientCryWaterMon - 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, =sAmbientCrySpecies - 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, =sAmbientCrySpecies - 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 ChooseAmbientCrySpecies -ChooseAmbientCrySpecies: @ 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 IsMirageIslandPresent - lsls r0, 24 - cmp r0, 0 - bne _08085B5C - ldr r1, =sIsAmbientCryWaterMon - movs r0, 0x1 - strb r0, [r1] - bl GetLocalWaterMon - b _08085B62 - .pool -_08085B5C: - ldr r0, =sIsAmbientCryWaterMon - bl GetLocalWildMon -_08085B62: - ldr r1, =sAmbientCrySpecies - strh r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end ChooseAmbientCrySpecies - - thumb_func_start GetMapTypeByGroupAndId -@ int GetMapTypeByGroupAndId(int bank, int number) -GetMapTypeByGroupAndId: @ 8085B74 - push {lr} - lsls r0, 24 - asrs r0, 8 - lsrs r0, 16 - lsls r1, 24 - asrs r1, 8 - lsrs r1, 16 - bl Overworld_GetMapHeaderByGroupAndId - ldrb r0, [r0, 0x17] - pop {r1} - bx r1 - thumb_func_end GetMapTypeByGroupAndId - - 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 GetMapTypeByGroupAndId - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end get_map_light_level_from_warp - - thumb_func_start Overworld_GetMapTypeOfSaveblockLocation -Overworld_GetMapTypeOfSaveblockLocation: @ 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 Overworld_GetMapTypeOfSaveblockLocation - - 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 Overworld_MapTypeAllowsTeleportAndFly -Overworld_MapTypeAllowsTeleportAndFly: @ 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 Overworld_MapTypeAllowsTeleportAndFly - - thumb_func_start Overworld_MapTypeIsIndoors -Overworld_MapTypeIsIndoors: @ 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 Overworld_MapTypeIsIndoors - - 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 Overworld_GetMapHeaderByGroupAndId - 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 Overworld_GetMapHeaderByGroupAndId - 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 Overworld_GetMapHeaderByGroupAndId - 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 OverworldBasic -@ void OverworldBasic() -OverworldBasic: @ 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 OverworldBasic - - thumb_func_start CB2_OverworldBasic -CB2_OverworldBasic: @ 8085E50 - push {lr} - bl OverworldBasic - pop {r0} - bx r0 - thumb_func_end CB2_OverworldBasic - - 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 OverworldBasic - 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, =gMain+0x438 - 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 DoWhiteOut - 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, =gMain+0x438 - 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, =gMain+0x438 - 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, =gMain+0x438 - 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, =gMain+0x438 - 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, =gWirelessCommType - 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 ShowMapNamePopup -_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 LoadSaveblockMapHeader - 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 LoadSaveblockMapObjScripts -_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 CloseLink -_0808632E: - ldr r0, =gWirelessCommType - 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 ScanlineEffect_InitHBlankDmaTransfer - 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 ScanlineEffect_SetParams - 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 ScanlineEffect_SetParams -_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, =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08086506 - bl sub_800E0E8 - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - 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 ShowMapNamePopup - 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, =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _08086792 - bl sub_800E0E8 - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite - 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 ScanlineEffect_Stop - 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 ScanlineEffect_Clear - 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, =gWirelessCommType - 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, =gLinkPartnersHeldKeys - 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, =gLinkPartnersHeldKeys - 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, =gWirelessCommType - 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, =gWirelessCommType - 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, =gWirelessCommType - 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, =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - bne _080876B0 - ldr r0, =gLink - 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 GetRivalAvatarGraphicsIdByStateIdAndGender -_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. diff --git a/asm/party_menu.s b/asm/party_menu.s index 0827a5a12..b71804617 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -10083,7 +10083,7 @@ _081B5614: .pool _081B5624: ldr r1, =gUnknown_0203CEC8 - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField _081B5628: str r0, [r1] adds r0, r6, 0 @@ -10189,7 +10189,7 @@ _081B56F8: b _081B572A _081B56FE: ldr r1, =gUnknown_0203CEC8 - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField str r0, [r1] adds r0, r4, 0 bl sub_81B12C0 @@ -10408,7 +10408,7 @@ sub_81B58A8: @ 81B58A8 str r0, [sp] ldr r0, =sub_81B1370 str r0, [sp, 0x4] - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 @@ -14836,7 +14836,7 @@ CB2_PartyMenuFromStartMenu: @ 81B7F34 str r0, [sp] ldr r0, =sub_81B1370 str r0, [sp, 0x4] - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu str r0, [sp, 0x8] movs r0, 0 movs r1, 0 @@ -16021,7 +16021,7 @@ sub_81B892C: @ 81B892C str r0, [sp] ldr r0, =sub_81B1370 str r0, [sp, 0x4] - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript str r0, [sp, 0x8] movs r0, 0 movs r1, 0 @@ -16042,7 +16042,7 @@ sub_81B8958: @ 81B8958 str r0, [sp] ldr r0, =sub_81B1370 str r0, [sp, 0x4] - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript str r0, [sp, 0x8] movs r0, 0xB movs r1, 0 @@ -17283,7 +17283,7 @@ sub_81B9354: @ 81B9354 str r1, [sp] ldr r1, =sub_81B1370 str r1, [sp, 0x4] - ldr r1, =c2_exit_to_overworld_2_switch + ldr r1, =CB2_ReturnToField str r1, [sp, 0x8] movs r1, 0 movs r2, 0xB @@ -17311,7 +17311,7 @@ _081B93A6: ldr r0, =gUnknown_03005DB0 ldr r1, =hm_add_c3_without_phase_2 str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r4} pop {r0} @@ -17420,7 +17420,7 @@ _081B9486: ldr r1, =gUnknown_03005DB0 ldr r0, =hm_add_c3_without_phase_2 str r0, [r1] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 @@ -17556,7 +17556,7 @@ _081B95BA: ldr r0, =gUnknown_03005DB0 ldr r1, =hm_add_c3_without_phase_2 str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r4,r5} pop {r0} @@ -17660,7 +17660,7 @@ sub_81B968C: @ 81B968C subs r3, 0x1 lsls r3, 24 lsrs r3, 24 - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField str r0, [sp] movs r0, 0x3 bl sub_81BF8EC diff --git a/asm/player_pc.s b/asm/player_pc.s index 1ae5b4d14..8a329a2fe 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -586,7 +586,7 @@ sub_816B31C: @ 816B31C ldr r0, =gFieldCallback ldr r1, =mapldr_080EBC0C str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 @@ -1279,7 +1279,7 @@ sub_816B900: @ 816B900 ldr r0, =gFieldCallback ldr r1, =pal_fill_for_maplights_or_black str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 @@ -1538,7 +1538,7 @@ sub_816BB28: @ 816BB28 ldr r0, =gFieldCallback ldr r1, =sub_816BB48 str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 diff --git a/asm/pokedex.s b/asm/pokedex.s index cb40f0eda..526188cca 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -1244,7 +1244,7 @@ _080BBE18: bl sub_80BC890 adds r0, r6, 0 bl DestroyTask - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu bl SetMainCallback2 ldr r0, =gMPlayInfo_BGM ldr r1, =0x0000ffff diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 2ff444f56..a74538fb1 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -657,7 +657,7 @@ sub_80C7678: @ 80C7678 ldr r1, =gFieldCallback ldr r0, =mapldr_0808C6D8 str r0, [r1] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 6e7c3af57..14dc569fe 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -2024,7 +2024,7 @@ sub_81C4EEC: @ 81C4EEC thumb_func_start sub_81C4EFC sub_81C4EFC: @ 81C4EFC push {lr} - ldr r1, =sub_8086194 + ldr r1, =CB2_ReturnToFieldWithOpenMenu movs r0, 0 bl sub_81C4F98 pop {r0} @@ -2073,7 +2073,7 @@ sub_81C4F44: @ 81C4F44 ldr r0, =gUnknown_03005DB0 ldr r1, =hm_add_c3_without_phase_2 str r1, [r0] - ldr r1, =c2_exit_to_overworld_2_switch + ldr r1, =CB2_ReturnToField movs r0, 0x3 bl sub_81C4F98 adds r0, r4, 0 diff --git a/asm/pokenav.s b/asm/pokenav.s index d98605dde..99b99383c 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -14,7 +14,7 @@ CB2_PokeNav: @ 81C7250 str r0, [r4] cmp r0, 0 bne _081C7270 - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu bl SetMainCallback2 b _081C7292 .pool @@ -66,7 +66,7 @@ sub_81C72BC: @ 81C72BC str r0, [r4] cmp r0, 0 bne _081C72F0 - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 b _081C7320 .pool @@ -351,12 +351,12 @@ _081C752C: bl sub_81C7334 cmp r4, 0 beq _081C755C - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 b _081C7562 .pool _081C755C: - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu bl SetMainCallback2 _081C7562: pop {r4-r7} @@ -3757,7 +3757,7 @@ sub_81C8EF8: @ 81C8EF8 lsls r2, 2 add r2, r8 str r2, [r5, 0x44] - ldrh r3, [r2, 0x4] + ldrh r3, [r2( 0x4] lsls r1, r3, 22 lsrs r1, 22 adds r1, 0x2 diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s index 80bc66f3f..b069ec58e 100644 --- a/asm/rom_8011DC0.s +++ b/asm/rom_8011DC0.s @@ -3116,7 +3116,7 @@ _08014070: movs r0, 0x6 strb r0, [r1, 0x1] ldr r1, =gMain - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField str r0, [r1, 0x8] ldr r0, =sub_807AE50 bl SetMainCallback2 @@ -3258,7 +3258,7 @@ _080141D4: eors r0, r1 lsls r0, 24 lsrs r0, 24 - ldr r1, =c2_exit_to_overworld_2_switch + ldr r1, =CB2_ReturnToField bl sub_80C4E74 _080141F2: bl RunTasks @@ -3399,7 +3399,7 @@ sub_8014304: @ 8014304 ldr r0, =0x00004087 bl VarSet bl GetLinkPlayerCount - ldr r1, =gUnknown_03005DB8 + ldr r1, =gFieldLinkPlayerCount strb r0, [r1] bl GetMultiplayerId ldr r1, =gUnknown_03005DB4 @@ -3757,7 +3757,7 @@ _08014714: bl GetCursorSelectionMonId lsls r0, 24 lsrs r0, 24 - ldr r1, =c2_load_new_map + ldr r1, =CB2_LoadMap bl sub_802A9A8 b _08014764 .pool @@ -3766,7 +3766,7 @@ _08014734: movs r1, 0x9 movs r2, 0x1 bl sub_8014290 - ldr r0, =c2_load_new_map + ldr r0, =CB2_LoadMap bl sub_8020C70 b _08014764 .pool @@ -3778,7 +3778,7 @@ _0801474C: bl GetCursorSelectionMonId lsls r0, 24 lsrs r0, 24 - ldr r1, =c2_load_new_map + ldr r1, =CB2_LoadMap bl sub_802493C _08014764: adds r0, r4, 0 @@ -6931,7 +6931,7 @@ _08016502: ldr r1, =gFieldCallback ldr r0, =sub_80AF128 str r0, [r1] - ldr r1, =c2_exit_to_overworld_2_switch + ldr r1, =CB2_ReturnToField movs r0, 0x8 bl sub_81B8904 b _08016878 @@ -7229,7 +7229,7 @@ _0801677E: ldr r1, =gFieldCallback ldr r0, =sub_80AF128 str r0, [r1] - ldr r1, =c2_exit_to_overworld_2_switch + ldr r1, =CB2_ReturnToField movs r0, 0x9 bl sub_81B8904 adds r0, r6, 0 @@ -14941,7 +14941,7 @@ _0801A58C: ldr r0, =gUnknown_03000DAC ldr r0, [r0] bl Free - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 pop {r4} pop {r0} @@ -16076,7 +16076,7 @@ _0801AF58: bl sub_801ABDC cmp r0, 0 beq _0801AFAE - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 b _0801AFAE .pool @@ -16102,7 +16102,7 @@ _0801AF98: bl sub_801ABDC cmp r0, 0 beq _0801AFAE - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 _0801AFAE: bl RunTasks @@ -23568,7 +23568,7 @@ _0801EBA8: bne _0801EBC2 bl sub_801F544 bl sub_801DE30 - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 _0801EBC2: add sp, 0x4 @@ -27694,7 +27694,7 @@ _08020C26: str r0, [r5] adds r0, r4, 0 bl SetMainCallback2 - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField cmp r4, r0 bne _08020C5A ldr r2, =gTextFlags @@ -27705,8 +27705,8 @@ _08020C26: movs r0, 0xC8 lsls r0, 1 bl PlayNewMapMusic - ldr r0, =c1_overworld - bl set_callback1 + ldr r0, =CB1_Overworld + bl SetMainCallback1 _08020C5A: movs r0, 0 _08020C5C: diff --git a/asm/rotating_gate.s b/asm/rotating_gate.s index da5e73034..9b57dc1b0 100644 --- a/asm/rotating_gate.s +++ b/asm/rotating_gate.s @@ -915,8 +915,8 @@ _080FBECA: bx r0 thumb_func_end RotatingGatePuzzleCameraUpdate - thumb_func_start sub_80FBED0 -sub_80FBED0: @ 80FBED0 + thumb_func_start RotatingGate_InitPuzzleAndGraphics +RotatingGate_InitPuzzleAndGraphics: @ 80FBED0 push {lr} bl GetCurrentMapRotatingGatePuzzleType cmp r0, 0 @@ -929,7 +929,7 @@ sub_80FBED0: @ 80FBED0 _080FBEEA: pop {r0} bx r0 - thumb_func_end sub_80FBED0 + thumb_func_end RotatingGate_InitPuzzleAndGraphics thumb_func_start CheckForRotatingGatePuzzleCollision CheckForRotatingGatePuzzleCollision: @ 80FBEF0 diff --git a/asm/roulette.s b/asm/roulette.s index ab873dd32..d3dd5fd9e 100644 --- a/asm/roulette.s +++ b/asm/roulette.s @@ -3276,7 +3276,7 @@ sub_8141E7C: @ 8141E7C ldr r1, =gFieldCallback ldr r0, =sub_80AF168 str r0, [r1] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 adds r0, r5, 0 bl DestroyTask diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s index 1869811c2..b241e3778 100644 --- a/asm/script_pokemon_util_80F87D8.s +++ b/asm/script_pokemon_util_80F87D8.s @@ -390,7 +390,7 @@ _080F8AB6: thumb_func_start sub_80F8ACC sub_80F8ACC: @ 80F8ACC push {lr} - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 pop {r0} bx r0 @@ -1559,7 +1559,7 @@ _080F9478: movs r0, 0x1 strh r0, [r1] _080F947E: - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 pop {r0} bx r0 @@ -1599,7 +1599,7 @@ _080F94D0: movs r0, 0x1 strh r0, [r1] _080F94D6: - ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music + ldr r0, =CB2_ReturnToFieldContinueScript bl SetMainCallback2 pop {r0} bx r0 diff --git a/asm/shop.s b/asm/shop.s index 97dbd07c8..c42af8ef1 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -230,7 +230,7 @@ CB2_ExitSellMenu: @ 80DFC48 ldr r0, =gFieldCallback ldr r1, =MapPostLoadHook_ExitBuyOrSellMenu str r1, [r0] - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 pop {r0} bx r0 @@ -2706,7 +2706,7 @@ Task_ExitBuyMenu: @ 80E11B0 bne _080E11D6 bl RemoveMoneyLabelObject bl BuyMenuFreeMemory - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 adds r0, r4, 0 bl DestroyTask diff --git a/asm/start_menu.s b/asm/start_menu.s index 23ac3710a..03cb18341 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -591,7 +591,7 @@ StartMenu_PlayerName: @ 809FC8C cmp r0, 0 beq _0809FCC8 _0809FCB6: - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu bl sub_80C4DDC b _0809FCEA .pool @@ -601,12 +601,12 @@ _0809FCC8: lsls r0, 24 cmp r0, 0 beq _0809FCE4 - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu bl sub_80C51C4 b _0809FCEA .pool _0809FCE4: - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu bl sub_80C4DDC _0809FCEA: movs r0, 0x1 @@ -656,7 +656,7 @@ _0809FD38: ldr r0, =CB2_InitOptionMenu bl SetMainCallback2 ldr r1, =gMain - ldr r0, =sub_8086194 + ldr r0, =CB2_ReturnToFieldWithOpenMenu str r0, [r1, 0x8] movs r0, 0x1 _0809FD52: @@ -703,7 +703,7 @@ _0809FDA0: bl overworld_free_bg_tilemaps ldr r0, =gUnknown_03005DB4 ldrb r0, [r0] - ldr r1, =sub_8086194 + ldr r1, =CB2_ReturnToFieldWithOpenMenu bl sub_80C4E74 movs r0, 0x1 _0809FDB4: diff --git a/asm/trade.s b/asm/trade.s index f565cd7ba..7d3ec4a8a 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -10669,7 +10669,7 @@ _0807CF5C: bl Free str r4, [r7] _0807CFAA: - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 bl sub_807E784 _0807CFB4: @@ -12774,7 +12774,7 @@ _0807E3A8: bl Free str r4, [r7] _0807E3F6: - ldr r0, =c2_exit_to_overworld_2_switch + ldr r0, =CB2_ReturnToField bl SetMainCallback2 bl sub_807E784 _0807E400: diff --git a/data/event_scripts.s b/data/event_scripts.s index 7b9d6519c..6668f0d1f 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -8,7 +8,6 @@ .include "asm/macros.inc" .include "asm/macros/event.inc" .include "constants/constants.inc" - .section script_data, "aw", %progbits diff --git a/data/item_use.s b/data/item_use.s index d9bcc44f6..6c9affbc8 100644 --- a/data/item_use.s +++ b/data/item_use.s @@ -8,7 +8,7 @@ .align 2 gUnknown_085920D8:: @ 85920D8 .4byte sub_81B617C - .4byte c2_exit_to_overworld_2_switch + .4byte CB2_ReturnToField .4byte NULL .align 2 diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index b8aef7c3d..e5b330bf3 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -916,21 +916,21 @@ RecordCorner_EventScript_277471:: @ 8277471 releaseall end -gUnknown_0827747E:: @ 827747E +EventScript_TradeRoom_ReadTrainerCard1:: @ 827747E msgbox Text_278452, 4 fadescreen 1 special sp02A_crash_sound waitstate end -gUnknown_0827748D:: @ 827748D +EventScript_TradeRoom_ReadTrainerCard2:: @ 827748D msgbox Text_27847B, 4 fadescreen 1 special sp02A_crash_sound waitstate end -gUnknown_0827749C:: @ 827749C +EventScript_TradeRoom_TooBusyToNotice:: @ 827749C msgbox Text_27842E, 4 closemessage end @@ -983,7 +983,7 @@ gUnknown_08277509:: @ 8277509 special sub_80B371C end -gUnknown_08277513:: @ 8277513 +EventScript_277513:: @ 8277513 special sub_80B36EC special sub_80AF9F8 waitstate diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc index fc069a8ee..01ce60717 100644 --- a/data/scripts/maps/FortreeCity_Gym.inc +++ b/data/scripts/maps/FortreeCity_Gym.inc @@ -12,7 +12,7 @@ FortreeCity_Gym_MapScript2_2165BA: @ 82165BA .2byte 0 FortreeCity_Gym_EventScript_2165C4:: @ 82165C4 - special sub_80FBED0 + special RotatingGate_InitPuzzleAndGraphics end FortreeCity_Gym_EventScript_2165C8:: @ 82165C8 diff --git a/data/scripts/maps/Route110_TrickHousePuzzle6.inc b/data/scripts/maps/Route110_TrickHousePuzzle6.inc index a043b2ec4..6b13cf8cb 100644 --- a/data/scripts/maps/Route110_TrickHousePuzzle6.inc +++ b/data/scripts/maps/Route110_TrickHousePuzzle6.inc @@ -12,7 +12,7 @@ Route110_TrickHousePuzzle6_MapScript2_26DDB6: @ 826DDB6 .2byte 0 Route110_TrickHousePuzzle6_EventScript_26DDC0:: @ 826DDC0 - special sub_80FBED0 + special RotatingGate_InitPuzzleAndGraphics end Route110_TrickHousePuzzle6_EventScript_26DDC4:: @ 826DDC4 diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc index 72707186b..2f99f7c4e 100644 --- a/data/scripts/maps/Route119.inc +++ b/data/scripts/maps/Route119.inc @@ -18,7 +18,7 @@ Route119_EventScript_1F4439:: @ 81F4439 Route119_MapScript1_1F444D: @ 81F444D call Route119_EventScript_271ED7 call Route119_EventScript_271EFB - compare VAR_0x40B3, 1 + compare VAR_WEATHER_INSTITUTE_STATE, 1 call_if 1, Route119_EventScript_1F4466 special SetRoute119Weather end @@ -26,7 +26,7 @@ Route119_MapScript1_1F444D: @ 81F444D Route119_EventScript_1F4466:: @ 81F4466 setflag FLAG_0x37D clearflag FLAG_0x37C - setvar VAR_0x40B3, 2 + setvar VAR_WEATHER_INSTITUTE_STATE, 2 return Route119_EventScript_1F4472:: @ 81F4472 diff --git a/data/scripts/maps/Route119_WeatherInstitute_1F.inc b/data/scripts/maps/Route119_WeatherInstitute_1F.inc index 399692db3..b008f52c0 100644 --- a/data/scripts/maps/Route119_WeatherInstitute_1F.inc +++ b/data/scripts/maps/Route119_WeatherInstitute_1F.inc @@ -3,7 +3,7 @@ Route119_WeatherInstitute_1F_MapScripts:: @ 826FA86 .byte 0 Route119_WeatherInstitute_1F_MapScript1_26FA8C: @ 826FA8C - compare VAR_0x40B3, 0 + compare VAR_WEATHER_INSTITUTE_STATE, 0 call_if 1, Route119_WeatherInstitute_1F_EventScript_26FA98 end @@ -16,7 +16,7 @@ Route119_WeatherInstitute_1F_EventScript_26FAA4:: @ 826FAA4 lock faceplayer special GetPlayerBigGuyGirlString - compare VAR_0x40B3, 0 + compare VAR_WEATHER_INSTITUTE_STATE, 0 goto_eq Route119_WeatherInstitute_1F_EventScript_26FABE msgbox Route119_WeatherInstitute_1F_Text_26FCE5, 4 release diff --git a/data/scripts/maps/Route119_WeatherInstitute_2F.inc b/data/scripts/maps/Route119_WeatherInstitute_2F.inc index 38f79763d..c8f24f33d 100644 --- a/data/scripts/maps/Route119_WeatherInstitute_2F.inc +++ b/data/scripts/maps/Route119_WeatherInstitute_2F.inc @@ -3,9 +3,9 @@ Route119_WeatherInstitute_2F_MapScripts:: @ 826FF1E .byte 0 Route119_WeatherInstitute_2F_MapScript1_26FF24: @ 826FF24 - compare VAR_0x40B3, 0 + compare VAR_WEATHER_INSTITUTE_STATE, 0 call_if 1, Route119_WeatherInstitute_2F_EventScript_26FF44 - compare VAR_0x40B3, 1 + compare VAR_WEATHER_INSTITUTE_STATE, 1 call_if 1, Route119_WeatherInstitute_2F_EventScript_26FF50 checkflag FLAG_SYS_GAME_CLEAR call_if 1, Route119_WeatherInstitute_2F_EventScript_26FF5C @@ -62,7 +62,7 @@ Route119_WeatherInstitute_2F_EventScript_26FFC8:: @ 826FFC8 waitmovement 0 msgbox Route119_WeatherInstitute_2F_Text_2705DD, 4 closemessage - setvar VAR_0x40B3, 1 + setvar VAR_WEATHER_INSTITUTE_STATE, 1 clearflag FLAG_0x37D fadedefaultbgm fadescreen 1 diff --git a/data/specials.inc b/data/specials.inc index f9f7c97d7..62dd9717e 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -213,7 +213,7 @@ gSpecials:: @ 81DBA64 def_special sub_80F972C def_special sp0C8_whiteout_maybe def_special sub_80FBE90 - def_special sub_80FBED0 + def_special RotatingGate_InitPuzzleAndGraphics def_special SetSSTidalFlag def_special ResetSSTidalFlag def_special EnterSafariMode diff --git a/include/field_camera.h b/include/field_camera.h index 6daa9a8a2..6ff8ce006 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -26,5 +26,14 @@ void DrawWholeMapView(void); void CurrentMapDrawMetatileAt(int x, int y); void sub_8089C08(s16 *a0, s16 *a1); void DrawDoorMetatileAt(int x, int y, u16 *arr); +void move_tilemap_camera_to_upper_left_corner(void); +void sub_8057A58(void); +void ResetCameraUpdateInfo(void); +u32 InitCameraUpdateCallback(u8 a); +void CameraUpdate(void); +void SetCameraPanningCallback(void (*a)(void)); +void SetCameraPanning(s16 a, s16 b); +void InstallCameraPanAheadCallback(void); +void UpdateCameraPanning(void); #endif //GUARD_FIELD_CAMERA_H diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h new file mode 100644 index 000000000..b915d1419 --- /dev/null +++ b/include/field_control_avatar.h @@ -0,0 +1,41 @@ +#ifndef GUARD_FIELDCONTROLAVATAR_H +#define GUARD_FIELDCONTROLAVATAR_H + +struct FieldInput +{ + u8 pressedAButton:1; + u8 input_field_0_1:1; + u8 pressedStartButton:1; + u8 pressedSelectButton:1; + u8 input_field_0_4:1; + u8 input_field_0_5:1; + u8 input_field_0_6:1; + u8 pressedBButton:1; + u8 input_field_1_0:1; + u8 input_field_1_1:1; + u8 input_field_1_2:1; + u8 input_field_1_3:1; + u8 input_field_1_4:1; + u8 input_field_1_5:1; + u8 input_field_1_6:1; + u8 input_field_1_7:1; + u8 dpadDirection; + u8 input_field_3; +}; + +void FieldClearPlayerInput(struct FieldInput *pStruct); +void FieldGetPlayerInput(struct FieldInput *pStruct, u16 keys, u16 heldKeys); +int sub_809C014(struct FieldInput *pStruct); +u8 *sub_80682A8(struct MapPosition *, u8, u8); +void overworld_poison_timer_set(void); +void prev_quest_postbuffer_cursor_backup_reset(void); +u8 *sub_8068E24(struct MapPosition *); +u8 *GetFieldObjectScriptPointerPlayerFacing(void); +bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *); +bool8 sub_8068870(u16 a); +bool8 sub_8068894(void); +bool8 sub_8068A64(struct MapPosition *, u16); +u8 sub_8068F18(void); +bool8 dive_warp(struct MapPosition *position, u16 b); + +#endif // GUARD_FIELDCONTROLAVATAR_H diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h index 63b67ceaf..89b14aed1 100644 --- a/include/field_ground_effect.h +++ b/include/field_ground_effect.h @@ -10,6 +10,8 @@ // Exported RAM declarations // Exported ROM declarations +u8 ZCoordToPriority(u8); +void FieldObjectUpdateZCoord(struct MapObject *pObject); void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8); void InitObjectPriorityByZCoord(struct Sprite *, u8); bool8 IsZCoordMismatchAt(u8, s16, s16); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 198dd9759..8b7e296dd 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -25,6 +25,7 @@ enum SpinnerRunnerFollowPatterns { // Exported ROM declarations void sub_808D438(void); +u8 get_go_image_anim_num(u8); u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8); bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *); u8 GetFieldObjectIdByXY(s16, s16); @@ -88,6 +89,8 @@ bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *ma u8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject); void sub_808F23C(const struct MapObject *mapObject, u8 movementType); void sub_808F208(const struct MapObject *mapObject); +void npc_coords_shift_still(struct MapObject *pObject); +void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1); // Exported data declarations diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index af602245b..de6db5d63 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -1,6 +1,7 @@ #ifndef GUARD_FIELD_PLAYER_AVATAR_H #define GUARD_FIELD_PLAYER_AVATAR_H +void player_step(u8 a, u16 b, u16 c); void ClearPlayerAvatarInfo(void); void SetPlayerAvatarExtraStateTransition(u8, u8); u8 GetPlayerAvatarGenderByGraphicsId(u8); @@ -31,7 +32,7 @@ u8 CheckForFieldObjectCollision(struct MapObject *a, s16 b, s16 c, u8 d, u8 e); u8 PlayerGetZCoord(void); void SetPlayerAvatarTransitionFlags(u16 a); void sub_808BCE8(void); - +void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d); void sub_808D074(u8); void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr); u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8); diff --git a/include/fieldmap.h b/include/fieldmap.h index 06cb7cc77..23654f536 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -15,5 +15,6 @@ bool8 MapGridIsImpassableAt(s16, s16); s32 GetMapBorderIdAt(s16, s16); bool32 CanCameraMoveInDirection(u8); u16 GetBehaviorByMetatileId(u16 metatileId); +void sav1_camera_get_focus_coords(u16 *x, u16 *y); #endif //GUARD_FIELDMAP_H diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index b12febefd..6e262dc9c 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -162,10 +162,10 @@ struct MapConnections struct MapHeader { - /* 0x00 */ struct MapData *mapData; - /* 0x04 */ struct MapEvents *events; + /* 0x00 */ const struct MapData *mapData; + /* 0x04 */ const struct MapEvents *events; /* 0x08 */ u8 *mapScripts; - /* 0x0C */ struct MapConnections *connections; + /* 0x0C */ const struct MapConnections *connections; /* 0x10 */ u16 music; /* 0x12 */ u16 mapDataId; /* 0x14 */ u8 regionMapSectionId; diff --git a/include/global.h b/include/global.h index b815e1e5f..8c56c0a58 100644 --- a/include/global.h +++ b/include/global.h @@ -144,6 +144,18 @@ struct UCoords16 u16 y; }; +struct Coords32 +{ + s32 x; + s32 y; +}; + +struct UCoords32 +{ + u32 x; + u32 y; +}; + struct Time { /*0x00*/ s16 days; diff --git a/include/overworld.h b/include/overworld.h index cedad6266..7f0a1795f 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -1,7 +1,5 @@ -#ifndef GUARD_ROM4_H -#define GUARD_ROM4_H - -#include "main.h" +#ifndef GUARD_OVERWORLD_H +#define GUARD_OVERWORLD_H struct UnkPlayerStruct { @@ -17,19 +15,15 @@ struct LinkPlayerMapObject u8 mode; }; -struct UCoords32 -{ - u32 x, y; -}; - +extern struct WarpData gUnknown_020322DC; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; -extern MainCallback gFieldCallback; + +extern const struct UCoords32 gUnknown_08339D64[]; void DoWhiteOut(void); void Overworld_ResetStateAfterFly(void); void Overworld_ResetStateAfterTeleport(void); void Overworld_ResetStateAfterDigEscRope(void); -void sub_8084788(void); void ResetGameStats(void); void IncrementGameStat(u8 index); u32 GetGameStat(u8 index); @@ -39,82 +33,106 @@ void LoadMapObjTemplatesFromHeader(void); void LoadSaveblockMapObjScripts(void); void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y); void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType); -void mapdata_load_assets_to_gpu_and_full_redraw(void); -struct MapData *get_mapdata_header(void); +const struct MapData *get_mapdata_header(void); void ApplyCurrentWarp(void); void set_warp2_warp3_to_neg_1(void); void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); bool32 warp_data_is_not_neg_1(struct WarpData *warp); -struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); -struct MapHeader *const warp1_get_mapheader(void); +const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum); +const struct MapHeader *warp1_get_mapheader(void); void set_current_map_header_from_sav1_save_old_name(void); void LoadSaveblockMapHeader(void); void update_camera_pos_from_warpid(void); void warp_in(void); void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId); -void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); -void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId); +void saved_warp2_set_2(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); void sub_8084CCC(u8 a1); void Overworld_SetWarpDestToLastHealLoc(void); void Overworld_SetHealLocationWarp(u8 healLocationId); void sub_8084D5C(s16 a1, s16 a2); void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); - -// to erase later -bool32 Overworld_IsBikingAllowed(void); -u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3); -u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4); -u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); -bool8 Overworld_MapTypeIsIndoors(u8 mapType); -void SetDefaultFlashLevel(void); -void Overworld_ClearSavedMusic(void); -void sub_8085810(void); -u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); -u8 Overworld_GetMapTypeOfSaveblockLocation(void); -void Overworld_SetMapObjTemplateCoords(u8, s16, s16); -void Overworld_SetMapObjTemplateMovementType(u8, u8); -void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId); -void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void Overworld_SetHealLocationWarp(u8); -void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); -void sub_8084E2C(s8, s8, s8, s8, s8); -void sub_8084E80(s8, s8, s8, s8, s8); -void sub_8084EBC(s16, s16); +void sub_8084E14(void); +void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void warp1_set_to_warp2(void); +void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void sub_8084EBC(s16 x, s16 y); +void warp1_set_to_sav1w(void); +void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y); +void sub_8084F6C(u8 a1); +void sub_8084FAC(void); +const struct MapConnection *GetMapConnection(u8 dir); +bool8 sub_8084FF8(u8 dir, u16 x, u16 y); +bool8 sub_8085058(u16 x, u16 y); +bool8 sub_8085078(u16 x, u16 y); +void mliX_load_map(u8 mapGroup, u8 mapNum); void player_avatar_init_params_reset(void); -bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); -void Overworld_ResetStateAfterTeleport(void); -void Overworld_SetFlashLevel(s32 a1); -//u8 Overworld_GetFlashLevel(void); -void sub_8085524(u16); -void Overworld_SetSavedMusic(u16); +void walkrun_find_lowest_active_bit_in_bitfield(void); +bool32 Overworld_IsBikingAllowed(void); +void SetDefaultFlashLevel(void); +void Overworld_SetFlashLevel(s32 flashLevel); +u8 Overworld_GetFlashLevel(void); +void sub_8085524(u16 mapDataId); +void sub_8085540(u8 var); +u8 sub_808554C(void); +u16 GetLocationMusic(struct WarpData *warp); +u16 GetCurrLocationDefaultMusic(void); +u16 GetWarpDestinationMusic(void); +void Overworld_ResetMapMusic(void); +void Overworld_PlaySpecialMapMusic(void); +void Overworld_SetSavedMusic(u16 songNum); +void Overworld_ClearSavedMusic(void); void Overworld_ChangeMusicToDefault(void); -void Overworld_ChangeMusicTo(u16); -bool32 is_c1_link_related_active(void); -extern u16 gUnknown_03005DA8; -void strange_npc_table_clear(void); -void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *); -void sub_8086230(void); -void c2_exit_to_overworld_2_switch(void); -bool32 sub_8087598(void); -void c2_exit_to_overworld_1_continue_scripts_restart_music(void); -void warp_in(void); -u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum); -void sub_8086194(void); -void sub_8084CCC(u8 spawn); -void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum); -void c2_load_new_map(void); -void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); -void mapldr_default(void); +void Overworld_ChangeMusicTo(u16 newMusic); +u8 GetMapMusicFadeoutSpeed(void); +void music_something(void); +bool8 sub_80859A0(void); +void Overworld_FadeOutMapMusic(void); +void UpdateAmbientCry(s16 *state, u16 *delayCounter); +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum); +u8 GetMapTypeByWarpData(struct WarpData *warp); +u8 Overworld_GetMapTypeOfSaveblockLocation(void); u8 get_map_light_from_warp0(void); -bool8 is_light_level_1_2_3_5_or_6(u8 a1); +bool8 is_light_level_1_2_3_5_or_6(u8 mapType); +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType); +bool8 Overworld_MapTypeIsIndoors(u8 mapType); +u8 sav1_saved_warp2_map_get_name(void); +u8 sav1_map_get_name(void); +u8 GetCurrentMapBattleScene(void); +void overworld_free_bg_tilemaps(void); +bool32 is_c1_link_related_active(void); +void CB1_Overworld(void); +void CB2_OverworldBasic(void); +void CB2_Overworld(void); +void SetMainCallback1(void (*cb)(void)); +void sub_8085E94(void *a0); +void CB2_NewGame(void); +void CB2_WhiteOut(void); +void CB2_LoadMap(void); +void sub_8086024(void); +void sub_8086074(void); +void CB2_ReturnToField(void); +void CB2_ReturnToFieldLocal(void); +void CB2_ReturnToFieldLink(void); +void c2_8056854(void); +void CB2_ReturnToFieldWithOpenMenu(void); +void sub_80861B0(void); +void CB2_ReturnToFieldContinueScript(void); +void sub_80861E8(void); +void CB2_ContinueSavedGame(void); +void sub_8086C2C(void); +u32 sub_8087214(void); +bool32 sub_808727C(void); +u16 sub_8087288(void); +u16 sub_808729C(void); +u16 sub_80872B0(void); +u16 sub_80872C4(void); +bool32 sub_8087598(void); bool32 sub_80875C8(void); bool32 sub_8087634(void); bool32 sub_808766C(void); -void IncrementGameStat(u8); -u32 GetGameStat(u8); -void CB2_OverworldBasic(void); +void ZeroAllLinkPlayerMapObjects(void); -#endif //GUARD_ROM4_H +#endif // GUARD_OVERWORLD_H diff --git a/ld_script.txt b/ld_script.txt index bb015446f..c1bad970e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -87,7 +87,6 @@ SECTIONS { src/play_time.o(.text); src/new_game.o(.text); src/overworld.o(.text); - asm/overworld.o(.text); asm/fieldmap.o(.text); src/metatile_behavior.o(.text); asm/field_camera.o(.text); diff --git a/src/battle_setup.c b/src/battle_setup.c index fdf6e77b6..6b981d0c5 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -472,7 +472,7 @@ void StartWallyTutorialBattle(void) { CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5); ScriptContext2_Enable(); - gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music; + gMain.savedCallback = CB2_ReturnToFieldContinueScript; gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL; CreateBattleStartTask(B_TRANSITION_SLICE, 0); } @@ -601,7 +601,7 @@ static void CB2_EndWildBattle(void) } else { - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); gFieldCallback = sub_80AF6F0; } } @@ -614,13 +614,13 @@ static void CB2_EndScriptedWildBattle(void) if (IsPlayerDefeated(gBattleOutcome) == TRUE) { if (InBattlePyramid()) - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); else SetMainCallback2(CB2_WhiteOut); } else { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); } } @@ -937,7 +937,7 @@ static void CB2_StartFirstBattle(void) static void CB2_EndFirstBattle(void) { Overworld_ClearSavedMusic(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); } static void sub_80B1218(void) @@ -1313,18 +1313,18 @@ static void CB2_EndTrainerBattle(void) { if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { if (InBattlePyramid() || sub_81D5C18()) - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); else SetMainCallback2(CB2_WhiteOut); } else { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); if (!InBattlePyramid() && !sub_81D5C18()) { RegisterTrainerInMatchCall(); @@ -1337,7 +1337,7 @@ static void CB2_EndRematchBattle(void) { if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); } else if (IsPlayerDefeated(gBattleOutcome) == TRUE) { @@ -1345,7 +1345,7 @@ static void CB2_EndRematchBattle(void) } else { - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); RegisterTrainerInMatchCall(); SetBattledTrainersFlags(); HandleRematchVarsOnBattleEnd(); diff --git a/src/battle_transition.c b/src/battle_transition.c index e0d208f23..8b9b50140 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -919,7 +919,7 @@ static void CB2_TestBattleTransition(void) if (IsBattleTransitionDone()) { sTestingTransitionState = 0; - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); } break; } diff --git a/src/berry_blender.c b/src/berry_blender.c index 23594ba46..1ac52dd6c 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -161,7 +161,7 @@ extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8); extern void sub_81AABF0(void (*callback)(void)); extern void sub_800B4C0(void); extern void ClearLinkCallback(void); -extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void); +extern void CB2_ReturnToFieldContinueScript(void); extern void sub_8153430(void); extern bool8 sub_8153474(void); extern void sub_80EECEC(void); @@ -2692,7 +2692,7 @@ static void CB2_HandlePlayerLinkPlayAgainChoice(void) if (gReceivedRemoteLinkPlayers == 0) { FREE_AND_SET_NULL(sBerryBlenderData); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); } break; } @@ -2742,7 +2742,7 @@ static void CB2_HandlePlayerPlayAgainChoice(void) if (sBerryBlenderData->playAgainState == PLAY_AGAIN_OK) SetMainCallback2(DoBerryBlending); else - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); FreeAllWindowBuffers(); UnsetBgTilemapBuffer(2); diff --git a/src/clock.c b/src/clock.c index 7cea30166..71c433ed2 100644 --- a/src/clock.c +++ b/src/clock.c @@ -83,7 +83,7 @@ static void UpdatePerMinute(struct Time *localTime) static void ReturnFromStartWallClock(void) { InitTimeBasedEvents(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); } void StartWallClock(void) diff --git a/src/daycare.c b/src/daycare.c index 89c0a48d8..36e8b208d 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -46,7 +46,7 @@ extern void sub_819746C(u8, bool8); extern void NewMenuHelpers_DrawStdWindowFrame(u8, bool8); extern void sub_81B9328(void); extern void sub_81AF078(u32, bool8, struct ListMenu *); -extern void c2_exit_to_overworld_2_switch(void); +extern void CB2_ReturnToField(void); // this file's functions static void ClearDaycareMonMisc(struct DaycareMiscMon *misc); @@ -1315,5 +1315,5 @@ void ShowDaycareLevelMenu(void) void ChooseSendDaycareMon(void) { sub_81B9328(); - gMain.savedCallback = c2_exit_to_overworld_2_switch; + gMain.savedCallback = CB2_ReturnToField; } diff --git a/src/decoration.c b/src/decoration.c index 8eb875560..aa2d3aef9 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1682,7 +1682,7 @@ void c1_overworld_prev_quest(u8 taskId) sub_812A3C8(); FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG); gFieldCallback = sub_8128CD4; - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); DestroyTask(taskId); break; } @@ -2673,7 +2673,7 @@ void sub_812A25C(u8 taskId) case 1: sub_812A3C8(); gFieldCallback = sub_812A334; - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); DestroyTask(taskId); break; } diff --git a/src/egg_hatch.c b/src/egg_hatch.c index b78b9433e..e64a98ab1 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -63,7 +63,7 @@ extern void FadeScreen(u8, u8); extern void overworld_free_bg_tilemaps(void); extern void sub_80AF168(void); extern void ScanlineEffect_Stop(void); -extern void c2_exit_to_overworld_2_switch(void); +extern void CB2_ReturnToField(void); extern void play_some_sound(void); extern void DoNamingScreen(u8, const u8*, u16, u8, u32, MainCallback); extern u16 sub_80D22D0(void); @@ -564,7 +564,7 @@ static void EggHatchSetMonNickname(void) SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3); FreeMonSpritesGfx(); Free(sEggHatchData); - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); } static void Task_EggHatchPlayBGM(u8 taskID) @@ -688,7 +688,7 @@ static void CB2_EggHatch_1(void) UnsetBgTilemapBuffer(0); UnsetBgTilemapBuffer(1); Free(sEggHatchData); - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); } break; } diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 84613365c..a5be62442 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -198,7 +198,7 @@ static void npcs_clear_ids_and_state(void) void sub_808D438(void) { - strange_npc_table_clear(); + ZeroAllLinkPlayerMapObjects(); npcs_clear_ids_and_state(); ClearPlayerAvatarInfo(); sub_808D450(); diff --git a/src/hof_pc.c b/src/hof_pc.c index e772f04e8..e5b6f96f8 100644 --- a/src/hof_pc.c +++ b/src/hof_pc.c @@ -25,7 +25,7 @@ void AccessHallOfFamePC(void) void ReturnFromHallOfFamePC(void) { - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); gFieldCallback = ReshowPCMenuAfterHallOfFamePC; } diff --git a/src/item_use.c b/src/item_use.c index bc70c5884..b9d84ad95 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -637,7 +637,7 @@ void sub_80FDC00(u8 taskId) if (!gPaletteFade.active) { overworld_free_bg_tilemaps(); - OpenPokeblockCase(0, c2_exit_to_overworld_2_switch); + OpenPokeblockCase(0, CB2_ReturnToField); DestroyTask(taskId); } } @@ -678,7 +678,7 @@ void sub_80FDD10(u8 taskId) { gUnknown_0203A0F4 = sub_80FDD74; gFieldCallback = MapPostLoadHook_UseItem; - *gUnknown_0203CE54 = c2_exit_to_overworld_2_switch; + *gUnknown_0203CE54 = CB2_ReturnToField; unknown_ItemMenu_Confirm(taskId); } else diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c index dcdf9b45a..81a10f8a4 100644 --- a/src/lilycove_lady.c +++ b/src/lilycove_lady.c @@ -1079,7 +1079,7 @@ void sub_818E914(void) void sub_818E92C(void) { - OpenPokeblockCase(3, c2_exit_to_overworld_2_switch); + OpenPokeblockCase(3, CB2_ReturnToField); } void sub_818E940(void) diff --git a/src/load_save.c b/src/load_save.c index a516c08c2..e3de66bb8 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -133,12 +133,12 @@ void MoveSaveBlocks_ResetHeap(void) } -u8 sav2_x1_query_bit1(void) +u32 GetSecretBase2Field_9(void) { return gSaveBlock2Ptr->specialSaveWarp & 1; } -void sav2_x9_clear_bit1(void) +void ClearSecretBase2Field_9(void) { gSaveBlock2Ptr->specialSaveWarp &= ~1; } diff --git a/src/naming_screen.c b/src/naming_screen.c index 47d8b8ad1..be306c765 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1798,22 +1798,22 @@ static bool8 sub_80E503C(u8 character) static void sub_80E5074(void) { - DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8086194); + DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu); } static void sub_80E509C(void) { - DoNamingScreen(1, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8086194); + DoNamingScreen(1, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu); } static void sub_80E50C4(void) { - DoNamingScreen(2, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8086194); + DoNamingScreen(2, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu); } static void sub_80E50EC(void) { - DoNamingScreen(3, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8086194); + DoNamingScreen(3, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu); } //-------------------------------------------------- diff --git a/src/overworld.c b/src/overworld.c index f5457242d..5e6654cad 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1,12 +1,13 @@ #include "global.h" #include "overworld.h" +#include "main.h" #include "battle_setup.h" #include "berry.h" // #include "cable_club.h" #include "clock.h" #include "event_data.h" #include "field_camera.h" -// #include "field_control_avatar.h" +#include "field_control_avatar.h" #include "field_effect.h" #include "field_fadetransition.h" #include "field_ground_effect.h" @@ -53,68 +54,229 @@ #include "bg.h" #include "money.h" #include "save_location.h" +#include "constants/abilities.h" +#include "malloc.h" +#include "gpu_regs.h" +#include "link_rfu.h" // event scripts extern const u8 EventScript_WhiteOut[]; extern const u8 EventScript_271862[]; +extern const u8 EventScript_277513[]; +extern const u8 EventScript_TradeRoom_TooBusyToNotice[]; +extern const u8 EventScript_TradeRoom_ReadTrainerCard1[]; +extern const u8 EventScript_TradeRoom_ReadTrainerCard2[]; +extern const u8 gUnknown_08277388[]; +extern const u8 gUnknown_082773A3[]; +extern const u8 gUnknown_082773BE[]; +extern const u8 gUnknown_082773D9[]; +extern const u8 gUnknown_0827741D[]; +extern const u8 gUnknown_08277432[]; +extern const u8 gUnknown_08277447[]; +extern const u8 gUnknown_0827745C[]; +extern const u8 gUnknown_08277374[]; +extern const u8 gUnknown_0827737E[]; +extern const u8 gUnknown_082773FF[]; +extern const u8 gUnknown_082773F5[]; +extern const u8 gUnknown_082774EF[]; +extern const u8 gUnknown_08277509[]; // vars -extern struct MapData *const gMapAttributes[]; -extern struct MapHeader *const *const gMapGroups[]; +extern const struct MapData *const gMapAttributes[]; +extern const struct MapHeader *const *const gMapGroups[]; extern const s32 gMaxFlashLevel; +extern const u16 gUnknown_82EC7C4[]; + +extern u16 gSaveFileStatus; +extern u16 gUnknown_03005DA8; +extern u8 *gUnknown_03005DA0; +extern u8 *gUnknown_03005D9C; +extern u8 *gUnknown_03005DA4; +extern bool8 (*gUnknown_03005DB0)(void); +extern u8 gUnknown_03005DB4; +extern u8 gFieldLinkPlayerCount; +extern MainCallback gFieldCallback; // functions extern void HealPlayerParty(void); extern void move_tilemap_camera_to_upper_left_corner(void); extern void cur_mapheader_run_tileset_funcs_after_some_cpuset(void); extern void DrawWholeMapView(void); -extern void copy_map_tileset1_tileset2_to_vram(struct MapData *); -extern void apply_map_tileset1_tileset2_palette(struct MapData *); +extern void copy_map_tileset1_tileset2_to_vram(const struct MapData *); +extern void apply_map_tileset1_tileset2_palette(const struct MapData *); extern void ResetCyclingRoadChallengeData(void); extern void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey); extern void mapheader_run_script_with_tag_x5(void); extern void ResetFieldTasksArgs(void); extern void sub_80A0A2C(void); extern void not_trainer_hill_battle_pyramid(void); -extern void apply_map_tileset2_palette(struct MapData *); -extern void copy_map_tileset2_to_vram_2(struct MapData *); +extern void apply_map_tileset2_palette(const struct MapData *); +extern void copy_map_tileset2_to_vram_2(const struct MapData *); extern void prev_quest_postbuffer_cursor_backup_reset(void); extern void ShowMapNamePopup(void); extern bool32 InTrainerHill(void); +extern bool32 sub_808651C(void); +extern bool8 sub_80AF6A4(void); +extern bool8 sub_81A9E6C(void); +extern bool8 sub_80E909C(void); extern void sub_81AA1D8(void); +extern void c2_change_map(void); extern void sub_81D5DF8(void); extern void sub_80EB218(void); +extern void sub_81BE72C(void); +extern void sub_80AF3C8(void); +extern void sub_81971F4(void); +extern void sub_808B578(void); +extern void sub_80AF314(void); +extern void sub_80AF214(void); +extern void sub_80AF188(void); +extern void door_upload_tiles(void); +extern void RotatingGate_InitPuzzleAndGraphics(void); +extern void sub_80AF168(void); +extern void sub_80AF3C8(void); +extern void ExecuteTruckSequence(void); +extern void sub_80A0A38(void); extern void trainer_hill_map_load_related(void); +extern void sub_8087D74(void); extern void battle_pyramid_map_load_related(u8); +extern void sub_80B00E8(u8); extern void UpdateTVScreensOnMap(u32, u32); extern void sub_80E9238(u8); +extern void sub_81A3908(void); +extern void sub_81AA2F8(void); +extern void sub_8195E10(void); +extern void sub_80EDB44(void); +extern void sub_81D64C0(void); +extern void sub_81BE6AC(void); +extern void sub_8098128(void); +extern void copy_map_tileset1_to_vram(const struct MapData *); +extern void copy_map_tileset2_to_vram(const struct MapData *); +extern void FieldUpdateBgTilemapScroll(void); +extern void TransferTilesetAnimsBuffer(void); +extern bool32 sub_81D5F48(void); +extern u8 GetCurrentTrainerHillMapId(void); +extern bool8 warp0_in_pokecenter(void); +extern void dp13_810BB8C(void); +extern void FieldEffectActiveListClear(void); +extern void SetUpFieldTasks(void); +extern void sub_81BE6B8(void); +extern void sub_80AAFA4(void); +extern void sub_809FA9C(void); +extern void sub_80AEE84(void); +extern void mapldr_default(void); +extern void npc_paltag_set_load(u8); +extern void sub_8088B3C(u16, u16); +extern bool32 sub_800F0B8(void); +extern bool32 sub_8009F3C(void); +extern void sub_8010198(void); +extern u32 sub_800B4DC(void); +extern bool32 sub_80B39D4(u8); +extern const u8* sub_809C2C8(struct MapPosition *a1, u8, u8); +extern u8 *sub_809D0F4(void*); +extern u8 sub_808BD6C(u8); +extern u8 sub_808BD7C(u8); +extern void sub_80979D4(struct Sprite*, u8); // this file's functions static void Overworld_ResetStateAfterWhiteOut(void); -void ChooseAmbientCrySpecies(void); +static void c2_80567AC(void); +static void CB2_LoadMap2(void); +static void VBlankCB_Field(void); +static void SpriteCB_LinkPlayer(struct Sprite *sprite); +static void ChooseAmbientCrySpecies(void); +static void do_load_map_stuff_loop(u8 *state); +static bool32 map_loading_iteration_3(u8 *state); +static bool32 sub_8086638(u8 *state); +static bool32 load_map_stuff(u8 *state, u32); +static bool32 map_loading_iteration_2_link(u8 *state); +static void mli4_mapscripts_and_other(void); +static void map_loading_lcd_reset(void); +static u8 sub_8087858(u8); +static u16 sub_80871C0(u32 a1); +static void sub_80867C8(void); +static void sub_80867D8(void); +static void sub_8086AE4(void); +static void sub_80869DC(void); +static void sub_8086B14(void); +static void sub_8086AAC(void); +static void sub_8086988(bool32 arg0); +static void sub_8086A80(void); +static void sub_8086A68(void); +static void sub_8086860(void); +static void sub_8086AC8(void); +static void sub_8086B9C(void); +static void sub_8086C40(void); +static void sub_8086C90(void); +static void sub_8086FA0(u16); +static void sub_8086F38(u16*, s32); +static u8 npc_something3(u8 a1, u8 a2); +static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y); +static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion); +static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y); +static u8 sub_80878A0(u8 linkPlayerId); +static u8 sub_80878C0(u8 linkPlayerId); +static s32 sub_80878E4(u8 linkPlayerId); +static u8 GetLinkPlayerIdAt(s16 x, s16 y); +static void sub_808796C(u8 linkPlayerId, u8 a2); +static void ZeroMapObject(struct MapObject *mapObj); +static void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4); +static void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y); +static void sub_80877DC(u8 linkPlayerId, u8 a2); +static void sub_808780C(u8 linkPlayerId); +static u8 sub_8087858(u8 linkPlayerId); +static void sub_8087584(void); +static u32 sub_8087690(void); +static void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj); +static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1); +static u16 sub_8087480(const u8 *script); +static void sub_8087510(void); +static void sub_808751C(void); +static void sub_8087530(const u8 *script); +static void sub_808754C(void); +static void sub_8087568(const u8 *script); +static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3); +static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1); +static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1); +static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1); +static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1); +static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1); +static u16 sub_808711C(u32); +static u16 sub_8087140(u32); +static void sub_808709C(u16 *a1); +static u16 sub_80870B0(u32 a1); +static u16 sub_80870F8(u32 a1); +static u16 sub_8087068(u16 a1); +static void c1_link_related(void); +static void c1_link_related_func_set(u16 (*func)(u32)); +static void SetFieldVBlankCallback(void); +static void FieldClearVBlankHBlankCallbacks(void); +static void sub_8085810(void); +static u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3); +static u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4); +static u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); // IWRAM bss vars -IWRAM_DATA void *gUnknown_03000E0C; -IWRAM_DATA u8 gUnknown_03000E10[4]; -IWRAM_DATA u8 (*gUnknown_03000E14)(u32); -IWRAM_DATA u8 gUnknown_03000E18; -IWRAM_DATA u8 gUnknown_03000E19; -IWRAM_DATA void *rom4_c_unused_03000e1c; +IWRAM_DATA static void *sUnknown_03000E0C; +IWRAM_DATA static u8 sUnknown_03000E10[4]; +IWRAM_DATA static u16 (*sUnknown_03000E14)(u32); +IWRAM_DATA static u8 sUnknown_03000E18; +IWRAM_DATA static u8 sUnknown_03000E19; +IWRAM_DATA static u32 sUnusedVar; // EWRAM vars -EWRAM_DATA u8 gUnknown_020322D8 = 0; +EWRAM_DATA static u8 sUnknown_020322D8 = 0; EWRAM_DATA struct WarpData gUnknown_020322DC = {0}; -EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position -EWRAM_DATA struct WarpData gUnknown_020322EC = {0}; -EWRAM_DATA struct WarpData gUnknown_020322F4 = {0}; -EWRAM_DATA u16 gLastMapSectionId = 0; -EWRAM_DATA struct UnkPlayerStruct gUnknown_02032300 = {0}; -EWRAM_DATA u16 sAmbientCrySpecies = 0; -EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE; +EWRAM_DATA static struct WarpData sWarpDestination = {0}; // new warp position +EWRAM_DATA static struct WarpData sUnknown_020322EC = {0}; +EWRAM_DATA static struct WarpData sUnknown_020322F4 = {0}; +EWRAM_DATA static u16 sLastMapSectionId = 0; +EWRAM_DATA static struct UnkPlayerStruct sUnknown_02032300 = {0}; +EWRAM_DATA static u16 sAmbientCrySpecies = 0; +EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE; EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0}; // const rom data -const struct WarpData sDummyWarpData = +static const struct WarpData sDummyWarpData = { .mapGroup = -1, .mapNum = -1, @@ -123,7 +285,7 @@ const struct WarpData sDummyWarpData = .y = -1, }; -const u8 sUnusedData[] = +static const u8 sUnusedData[] = { 0xB0, 0x04, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, @@ -148,7 +310,7 @@ const struct UCoords32 gUnknown_08339D64[] = { 1, -1}, }; -const struct BgTemplate gUnknown_08339DAC[] = +static const struct BgTemplate gUnknown_08339DAC[] = { { .bg = 0, @@ -188,7 +350,7 @@ const struct BgTemplate gUnknown_08339DAC[] = } }; -const struct ScanlineEffectParams gUnknown_08339DBC = +static const struct ScanlineEffectParams gUnknown_08339DBC = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -196,22 +358,22 @@ const struct ScanlineEffectParams gUnknown_08339DBC = 0, }; -u8 sub_80879D8(struct LinkPlayerMapObject *, struct MapObject *, u8); -u8 sub_80879F8(struct LinkPlayerMapObject *, struct MapObject *, u8); -u8 sub_80879FC(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_80879D8(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_80879F8(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_80879FC(struct LinkPlayerMapObject *, struct MapObject *, u8); -u8 (*const gUnknown_08339DC8[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = +static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = { sub_80879D8, sub_80879F8, sub_80879FC, }; -u8 sub_8087A1C(struct LinkPlayerMapObject *, struct MapObject *, u8); -u8 sub_8087A20(struct LinkPlayerMapObject *, struct MapObject *, u8); -u8 sub_8087A88(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8087A1C(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8087A20(struct LinkPlayerMapObject *, struct MapObject *, u8); +static u8 sub_8087A88(struct LinkPlayerMapObject *, struct MapObject *, u8); -u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = +static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *, u8) = { sub_8087A1C, sub_8087A20, @@ -226,10 +388,10 @@ u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject * sub_8087A88, }; -void sub_8087AA0(struct LinkPlayerMapObject *, struct MapObject *); -void sub_8087AA8(struct LinkPlayerMapObject *, struct MapObject *); +static void sub_8087AA0(struct LinkPlayerMapObject *, struct MapObject *); +static void sub_8087AA8(struct LinkPlayerMapObject *, struct MapObject *); -void (*const gUnknown_08339E00[])(struct LinkPlayerMapObject *, struct MapObject *) = +static void (*const gUnknown_08339E00[])(struct LinkPlayerMapObject *, struct MapObject *) = { sub_8087AA0, sub_8087AA8, @@ -292,7 +454,7 @@ static void Overworld_ResetStateAfterWhiteOut(void) } } -void sub_8084788(void) +static void sub_8084788(void) { FlagClear(FLAG_SYS_SAFARI_MODE); ChooseAmbientCrySpecies(); @@ -399,7 +561,7 @@ void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType) } } -void mapdata_load_assets_to_gpu_and_full_redraw(void) +static void mapdata_load_assets_to_gpu_and_full_redraw(void) { move_tilemap_camera_to_upper_left_corner(); copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData); @@ -408,7 +570,7 @@ void mapdata_load_assets_to_gpu_and_full_redraw(void) cur_mapheader_run_tileset_funcs_after_some_cpuset(); } -struct MapData *get_mapdata_header(void) +const struct MapData *get_mapdata_header(void) { u16 mapDataId = gSaveBlock1Ptr->mapDataId; if (mapDataId) @@ -419,15 +581,15 @@ struct MapData *get_mapdata_header(void) void ApplyCurrentWarp(void) { gUnknown_020322DC = gSaveBlock1Ptr->location; - gSaveBlock1Ptr->location = gWarpDestination; - gUnknown_020322EC = sDummyWarpData; - gUnknown_020322F4 = sDummyWarpData; + gSaveBlock1Ptr->location = sWarpDestination; + sUnknown_020322EC = sDummyWarpData; + sUnknown_020322F4 = sDummyWarpData; } void set_warp2_warp3_to_neg_1(void) { - gUnknown_020322EC = sDummyWarpData; - gUnknown_020322F4 = sDummyWarpData; + sUnknown_020322EC = sDummyWarpData; + sUnknown_020322F4 = sDummyWarpData; } void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) @@ -454,19 +616,19 @@ bool32 warp_data_is_not_neg_1(struct WarpData *warp) return TRUE; } -struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum) +const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum) { return gMapGroups[mapGroup][mapNum]; } -struct MapHeader *const warp1_get_mapheader(void) +const struct MapHeader *warp1_get_mapheader(void) { - return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); + return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); } void set_current_map_header_from_sav1_save_old_name(void) { - gLastMapSectionId = gMapHeader.regionMapSectionId; + sLastMapSectionId = gMapHeader.regionMapSectionId; gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); gSaveBlock1Ptr->mapDataId = gMapHeader.mapDataId; gMapHeader.mapData = get_mapdata_header(); @@ -506,7 +668,7 @@ void warp_in(void) void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - SetWarpData(&gWarpDestination, mapGroup, mapNum, warpId, x, y); + SetWarpData(&sWarpDestination, mapGroup, mapNum, warpId, x, y); } void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId) @@ -514,19 +676,19 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId) Overworld_SetWarpDestination(mapGroup, mapNum, warpId, -1, -1); } -void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId) +void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId) { SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y); } -void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +void saved_warp2_set_2(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, x, y); } void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused) { - gWarpDestination = gSaveBlock1Ptr->warp2; + sWarpDestination = gSaveBlock1Ptr->warp2; } void sub_8084CCC(u8 a1) @@ -539,7 +701,7 @@ void sub_8084CCC(u8 a1) void Overworld_SetWarpDestToLastHealLoc(void) { - gWarpDestination = gSaveBlock1Ptr->lastHealLocation; + sWarpDestination = gSaveBlock1Ptr->lastHealLocation; } void Overworld_SetHealLocationWarp(u8 healLocationId) @@ -553,7 +715,7 @@ void Overworld_SetHealLocationWarp(u8 healLocationId) void sub_8084D5C(s16 a1, s16 a2) { u8 currMapType = Overworld_GetMapTypeOfSaveblockLocation(); - u8 destMapType = GetMapTypeByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum); + u8 destMapType = GetMapTypeByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); if (is_light_level_1_2_3_5_or_6(currMapType) && is_light_level_1_2_3_5_or_6(destMapType) != TRUE) sub_8084DD4(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, a1 - 7, a2 - 6); } @@ -565,39 +727,39 @@ void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) void sub_8084E14(void) { - gWarpDestination = gSaveBlock1Ptr->warp4; + sWarpDestination = gSaveBlock1Ptr->warp4; } void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - SetWarpData(&gUnknown_020322EC, mapGroup, mapNum, warpId, x, y); + SetWarpData(&sUnknown_020322EC, mapGroup, mapNum, warpId, x, y); } void warp1_set_to_warp2(void) { - gWarpDestination = gUnknown_020322EC; + sWarpDestination = sUnknown_020322EC; } void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) { - SetWarpData(&gUnknown_020322F4, mapGroup, mapNum, warpId, x, y); + SetWarpData(&sUnknown_020322F4, mapGroup, mapNum, warpId, x, y); } void sub_8084EBC(s16 x, s16 y) { - if (warp_data_is_not_neg_1(&gUnknown_020322F4) == TRUE) + if (warp_data_is_not_neg_1(&sUnknown_020322F4) == TRUE) { - gWarpDestination = gUnknown_020322DC; + sWarpDestination = gUnknown_020322DC; } else { - Overworld_SetWarpDestination(gUnknown_020322F4.mapGroup, gUnknown_020322F4.mapNum, -1, x, y); + Overworld_SetWarpDestination(sUnknown_020322F4.mapGroup, sUnknown_020322F4.mapNum, -1, x, y); } } void warp1_set_to_sav1w(void) { - gWarpDestination = gSaveBlock1Ptr->warp1; + sWarpDestination = gSaveBlock1Ptr->warp1; } void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) @@ -617,11 +779,11 @@ void sub_8084FAC(void) gSaveBlock1Ptr->warp1 = gSaveBlock1Ptr->warp2; } -struct MapConnection *GetMapConnection(u8 dir) +const struct MapConnection *GetMapConnection(u8 dir) { s32 i; s32 count = gMapHeader.connections->count; - struct MapConnection *connection = gMapHeader.connections->connections; + const struct MapConnection *connection = gMapHeader.connections->connections; if (connection == NULL) return NULL; @@ -635,7 +797,7 @@ struct MapConnection *GetMapConnection(u8 dir) bool8 sub_8084FF8(u8 dir, u16 x, u16 y) { - struct MapConnection *connection = GetMapConnection(dir); + const struct MapConnection *connection = GetMapConnection(dir); if (connection != NULL) { @@ -644,7 +806,7 @@ bool8 sub_8084FF8(u8 dir, u16 x, u16 y) else { mapheader_run_script_with_tag_x6(); - if (warp_data_is_not_neg_1(&gUnknown_020322EC)) + if (warp_data_is_not_neg_1(&sUnknown_020322EC)) return FALSE; warp1_set_to_warp2(); } @@ -697,17 +859,17 @@ void mliX_load_map(u8 mapGroup, u8 mapNum) ResetFieldTasksArgs(); mapheader_run_script_with_tag_x5(); - if (gMapHeader.regionMapSectionId != 0x3A || gMapHeader.regionMapSectionId != gLastMapSectionId) + if (gMapHeader.regionMapSectionId != 0x3A || gMapHeader.regionMapSectionId != sLastMapSectionId) ShowMapNamePopup(); } -void mli0_load_map(u32 a1) +static void mli0_load_map(u32 a1) { bool8 v2; bool8 indoors; set_current_map_header_from_sav1_save_old_name(); - if (!(gUnknown_020322D8 & 1)) + if (!(sUnknown_020322D8 & 1)) { if (gMapHeader.mapDataId == 0x169) sub_81AA1D8(); @@ -753,39 +915,39 @@ void mli0_load_map(u32 a1) void player_avatar_init_params_reset(void) { - gUnknown_02032300.player_field_1 = 1; - gUnknown_02032300.player_field_0 = 1; + sUnknown_02032300.player_field_1 = 1; + sUnknown_02032300.player_field_0 = 1; } void walkrun_find_lowest_active_bit_in_bitfield(void) { - gUnknown_02032300.player_field_1 = player_get_direction_lower_nybble(); + sUnknown_02032300.player_field_1 = player_get_direction_lower_nybble(); if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE)) - gUnknown_02032300.player_field_0 = 2; + sUnknown_02032300.player_field_0 = 2; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE)) - gUnknown_02032300.player_field_0 = 4; + sUnknown_02032300.player_field_0 = 4; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) - gUnknown_02032300.player_field_0 = 8; + sUnknown_02032300.player_field_0 = 8; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4)) - gUnknown_02032300.player_field_0 = 16; + sUnknown_02032300.player_field_0 = 16; else - gUnknown_02032300.player_field_0 = 1; + sUnknown_02032300.player_field_0 = 1; } -struct UnkPlayerStruct *sub_80852D4(void) +static struct UnkPlayerStruct *sub_80852D4(void) { struct UnkPlayerStruct playerStruct; u8 mapType = Overworld_GetMapTypeOfSaveblockLocation(); u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1(); - u8 v4 = sub_808532C(&gUnknown_02032300, v2, mapType); + u8 v4 = sub_808532C(&sUnknown_02032300, v2, mapType); playerStruct.player_field_0 = v4; - playerStruct.player_field_1 = sub_808538C(&gUnknown_02032300, v4, v2, mapType); - gUnknown_02032300 = playerStruct; - return &gUnknown_02032300; + playerStruct.player_field_1 = sub_808538C(&sUnknown_02032300, v4, v2, mapType); + sUnknown_02032300 = playerStruct; + return &sUnknown_02032300; } -u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) +static u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) { if (a3 != 8 && FlagGet(FLAG_SYS_CRUISE_MODE)) return 1; @@ -802,7 +964,7 @@ u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) return 4; } -u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) +static u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) { if (FlagGet(FLAG_SYS_CRUISE_MODE) && a4 == 6) return 4; @@ -826,7 +988,7 @@ u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) return 1; } -u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) +static u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) { return MapGridGetMetatileBehaviorAt(gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7); } @@ -869,15 +1031,15 @@ void sub_8085524(u16 mapDataId) void sub_8085540(u8 var) { - gUnknown_020322D8 = var; + sUnknown_020322D8 = var; } u8 sub_808554C(void) { - return gUnknown_020322D8; + return sUnknown_020322D8; } -bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) +static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) { if (!FlagGet(FLAG_SYS_WEATHER_CTRL)) return FALSE; @@ -910,7 +1072,7 @@ bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) return FALSE; } -bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp) +static bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp) { if (VarGet(VAR_0x40CA) != 1) return FALSE; @@ -921,7 +1083,7 @@ bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp) return FALSE; } -bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) +static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) { if (VarGet(VAR_WEATHER_INSTITUTE_STATE)) return FALSE; @@ -933,7 +1095,7 @@ bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) return FALSE; } -bool16 IsInflitratedSpaceCenter(struct WarpData *warp) +static bool16 IsInflitratedSpaceCenter(struct WarpData *warp) { if (VarGet(VAR_0x405D) == 0) return FALSE; @@ -987,7 +1149,7 @@ u16 GetCurrLocationDefaultMusic(void) u16 GetWarpDestinationMusic(void) { - u16 music = GetLocationMusic(&gWarpDestination); + u16 music = GetLocationMusic(&sWarpDestination); if (music != 0x7FFF) { return music; @@ -1035,7 +1197,7 @@ void Overworld_ClearSavedMusic(void) gSaveBlock1Ptr->savedMusic = 0; } -void sub_8085810(void) +static void sub_8085810(void) { if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE) { @@ -1074,7 +1236,7 @@ void Overworld_ChangeMusicTo(u16 newMusic) u8 GetMapMusicFadeoutSpeed(void) { - struct MapHeader *mapHeader = warp1_get_mapheader(); + const struct MapHeader *mapHeader = warp1_get_mapheader(); if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE) return 2; else @@ -1091,10 +1253,10 @@ void music_something(void) && VarGet(VAR_0x40CA) == 2 && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY) - && gWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY) - && gWarpDestination.mapNum == MAP_NUM(SOOTOPOLIS_CITY) - && gWarpDestination.x == 0x1D - && gWarpDestination.y == 0x35) + && sWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY) + && sWarpDestination.mapNum == MAP_NUM(SOOTOPOLIS_CITY) + && sWarpDestination.x == 0x1D + && sWarpDestination.y == 0x35) return; FadeOutMapMusic(GetMapMusicFadeoutSpeed()); } @@ -1109,3 +1271,1920 @@ void Overworld_FadeOutMapMusic(void) { FadeOutMapMusic(4); } + +static void PlayAmbientCry(void) +{ + s16 x, y; + s8 pan; + s8 volume; + + PlayerGetDestCoords(&x, &y); + if (sIsAmbientCryWaterMon == TRUE + && !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) + return; + pan = (Random() % 88) + 212; + volume = (Random() % 30) + 50; + PlayCry2(sAmbientCrySpecies, pan, volume, 1); +} + +void UpdateAmbientCry(s16 *state, u16 *delayCounter) +{ + u8 i, monsCount, divBy; + + switch (*state) + { + case 0: + if (sAmbientCrySpecies == SPECIES_NONE) + *state = 4; + else + *state = 1; + break; + case 1: + *delayCounter = (Random() % 2400) + 1200; + *state = 3; + break; + case 2: + divBy = 1; + monsCount = CalculatePlayerPartyCount(); + for (i = 0; i < monsCount; i++) + { + if (!GetMonData(&gPlayerParty[i], MON_DATA_SANITY_BIT3) + && GetMonAbility(&gPlayerParty[0]) == ABILITY_SWARM) + { + divBy = 2; + break; + } + } + *delayCounter = ((Random() % 1200) + 1200) / divBy; + *state = 3; + break; + case 3: + (*delayCounter)--; + if (*delayCounter == 0) + { + PlayAmbientCry(); + *state = 2; + } + break; + case 4: + break; + } +} + +static void ChooseAmbientCrySpecies(void) +{ + if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE130) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE130)) + && !IsMirageIslandPresent()) + { + // Only play water pokemon cries on this route + // when Mirage Island is not present + sIsAmbientCryWaterMon = TRUE; + sAmbientCrySpecies = GetLocalWaterMon(); + } + else + { + sAmbientCrySpecies = GetLocalWildMon(&sIsAmbientCryWaterMon); + } +} + +u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum) +{ + return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->mapType; +} + +u8 GetMapTypeByWarpData(struct WarpData *warp) +{ + return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum); +} + +u8 Overworld_GetMapTypeOfSaveblockLocation(void) +{ + return GetMapTypeByWarpData(&gSaveBlock1Ptr->location); +} + +u8 get_map_light_from_warp0(void) +{ + return GetMapTypeByWarpData(&gUnknown_020322DC); +} + +bool8 is_light_level_1_2_3_5_or_6(u8 mapType) +{ + if (mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_UNDERWATER + || mapType == MAP_TYPE_CITY + || mapType == MAP_TYPE_6) + return TRUE; + else + return FALSE; +} + +bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType) +{ + if (mapType == MAP_TYPE_ROUTE + || mapType == MAP_TYPE_TOWN + || mapType == MAP_TYPE_6 + || mapType == MAP_TYPE_CITY) + return TRUE; + else + return FALSE; +} + +bool8 Overworld_MapTypeIsIndoors(u8 mapType) +{ + if (mapType == MAP_TYPE_INDOOR + || mapType == MAP_TYPE_SECRET_BASE) + return TRUE; + else + return FALSE; +} + +u8 sav1_saved_warp2_map_get_name(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp2.mapGroup, gSaveBlock1Ptr->warp2.mapNum)->regionMapSectionId; +} + +u8 sav1_map_get_name(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId; +} + +u8 GetCurrentMapBattleScene(void) +{ + return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->battleType; +} + +static void overworld_bg_setup(void) +{ + InitBgsFromTemplates(0, gUnknown_08339DAC, ARRAY_COUNT(gUnknown_08339DAC)); + SetBgAttribute(1, BG_CTRL_ATTR_PALETTEMODE, 1); + SetBgAttribute(2, BG_CTRL_ATTR_PALETTEMODE, 1); + SetBgAttribute(3, BG_CTRL_ATTR_PALETTEMODE, 1); + gUnknown_03005DA0 = AllocZeroed(0x800); + gUnknown_03005D9C = AllocZeroed(0x800); + gUnknown_03005DA4 = AllocZeroed(0x800); + SetBgTilemapBuffer(1, gUnknown_03005DA0); + SetBgTilemapBuffer(2, gUnknown_03005D9C); + SetBgTilemapBuffer(3, gUnknown_03005DA4); + sub_81971D0(); +} + +void overworld_free_bg_tilemaps(void) +{ + sub_81BE72C(); + sub_81971F4(); + if (gUnknown_03005DA4 != NULL) + FREE_AND_SET_NULL(gUnknown_03005DA4); + if (gUnknown_03005D9C != NULL) + FREE_AND_SET_NULL(gUnknown_03005D9C); + if (gUnknown_03005DA0 != NULL) + FREE_AND_SET_NULL(gUnknown_03005DA0); +} + +static void ResetSafariZoneFlag_(void) +{ + ResetSafariZoneFlag(); +} + +bool32 is_c1_link_related_active(void) +{ + if (gMain.callback1 == c1_link_related) + return TRUE; + else + return FALSE; +} + +static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) +{ + struct FieldInput inputStruct; + + sub_808B578(); + FieldClearPlayerInput(&inputStruct); + FieldGetPlayerInput(&inputStruct, newKeys, heldKeys); + if (!ScriptContext2_IsEnabled()) + { + if (sub_809C014(&inputStruct) == 1) + { + ScriptContext2_Enable(); + HideMapNamePopUpWindow(); + } + else + { + player_step(inputStruct.dpadDirection, newKeys, heldKeys); + } + } +} + +void CB1_Overworld(void) +{ + if (gMain.callback2 == CB2_Overworld) + DoCB1_Overworld(gMain.newKeys, gMain.heldKeys); +} + +static void OverworldBasic(void) +{ + ScriptContext2_RunScript(); + RunTasks(); + AnimateSprites(); + CameraUpdate(); + UpdateCameraPanning(); + BuildOamBuffer(); + UpdatePaletteFade(); + sub_80A0A38(); + do_scheduled_bg_tilemap_copies_to_vram(); +} + +// This CB2 is used when starting +void CB2_OverworldBasic(void) +{ + OverworldBasic(); +} + +void CB2_Overworld(void) +{ + bool32 fading = (gPaletteFade.active != 0); + if (fading) + SetVBlankCallback(NULL); + OverworldBasic(); + if (fading) + SetFieldVBlankCallback(); +} + +void SetMainCallback1(MainCallback cb) +{ + gMain.callback1 = cb; +} + +void sub_8085E94(void *a0) +{ + sUnknown_03000E0C = a0; +} + +static bool8 map_post_load_hook_exec(void) +{ + if (gUnknown_03005DB0 != NULL) + { + if (!gUnknown_03005DB0()) + { + return FALSE; + } + else + { + gUnknown_03005DB0 = NULL; + gFieldCallback = NULL; + } + } + else + { + if (gFieldCallback != NULL) + gFieldCallback(); + else + mapldr_default(); + + gFieldCallback = NULL; + } + + return TRUE; +} + +void CB2_NewGame(void) +{ + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + ResetSafariZoneFlag_(); + NewGameInitData(); + player_avatar_init_params_reset(); + PlayTimeCounter_Start(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + gFieldCallback = ExecuteTruckSequence; + gUnknown_03005DB0 = NULL; + do_load_map_stuff_loop(&gMain.state); + SetFieldVBlankCallback(); + SetMainCallback1(CB1_Overworld); + SetMainCallback2(CB2_Overworld); +} + +void CB2_WhiteOut(void) +{ + u8 val; + + if (++gMain.state >= 120) + { + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + ResetSafariZoneFlag_(); + DoWhiteOut(); + player_avatar_init_params_reset(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + gFieldCallback = sub_80AF3C8; + val = 0; + do_load_map_stuff_loop(&val); + SetFieldVBlankCallback(); + SetMainCallback1(CB1_Overworld); + SetMainCallback2(CB2_Overworld); + } +} + +void CB2_LoadMap(void) +{ + FieldClearVBlankHBlankCallbacks(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + SetMainCallback1(NULL); + SetMainCallback2(c2_change_map); + gMain.savedCallback = CB2_LoadMap2; +} + +static void CB2_LoadMap2(void) +{ + do_load_map_stuff_loop(&gMain.state); + SetFieldVBlankCallback(); + SetMainCallback1(CB1_Overworld); + SetMainCallback2(CB2_Overworld); +} + +void sub_8086024(void) +{ + if (!gMain.state) + { + FieldClearVBlankHBlankCallbacks(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + SetMainCallback1(NULL); + } + if (load_map_stuff(&gMain.state, 1)) + { + SetFieldVBlankCallback(); + SetMainCallback1(CB1_Overworld); + SetMainCallback2(CB2_Overworld); + } +} + +void sub_8086074(void) +{ + FieldClearVBlankHBlankCallbacks(); + gFieldCallback = sub_80AF314; + SetMainCallback2(c2_80567AC); +} + +static void c2_80567AC(void) +{ + if (map_loading_iteration_3(&gMain.state)) + { + SetFieldVBlankCallback(); + SetMainCallback1(c1_link_related); + sub_8086C2C(); + SetMainCallback2(CB2_Overworld); + } +} + +void CB2_ReturnToField(void) +{ + if (is_c1_link_related_active() == TRUE) + { + SetMainCallback2(CB2_ReturnToFieldLink); + } + else + { + FieldClearVBlankHBlankCallbacks(); + SetMainCallback2(CB2_ReturnToFieldLocal); + } +} + +void CB2_ReturnToFieldLocal(void) +{ + if (sub_8086638(&gMain.state)) + { + SetFieldVBlankCallback(); + SetMainCallback2(CB2_Overworld); + } +} + +void CB2_ReturnToFieldLink(void) +{ + if (!sub_8087598() && map_loading_iteration_2_link(&gMain.state)) + SetMainCallback2(CB2_Overworld); +} + +void c2_8056854(void) +{ + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + SetMainCallback1(c1_link_related); + sub_8086C2C(); + + if (gWirelessCommType) + gFieldCallback = sub_80AF314; + else + gFieldCallback = sub_80AF214; + + ScriptContext1_Init(); + ScriptContext2_Disable(); + CB2_ReturnToField(); +} + +void CB2_ReturnToFieldWithOpenMenu(void) +{ + FieldClearVBlankHBlankCallbacks(); + gUnknown_03005DB0 = sub_80AF6A4; + CB2_ReturnToField(); +} + +void sub_80861B0(void) +{ + FieldClearVBlankHBlankCallbacks(); + gFieldCallback = sub_80AF188; + CB2_ReturnToField(); +} + +void CB2_ReturnToFieldContinueScript(void) +{ + FieldClearVBlankHBlankCallbacks(); + gFieldCallback = sub_80AF168; + CB2_ReturnToField(); +} + +void sub_80861E8(void) +{ + FieldClearVBlankHBlankCallbacks(); + gFieldCallback = sub_80AF3C8; + CB2_ReturnToField(); +} + +static void sub_8086204(void) +{ + if ((gMapHeader.flags & 0xF8) == 8 && sub_80E909C() == TRUE) + ShowMapNamePopup(); + sub_80AF3C8(); +} + +void CB2_ContinueSavedGame(void) +{ + u8 trainerHillMapId; + + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + ResetSafariZoneFlag_(); + if (gSaveFileStatus == 0xFF) + sub_81A3908(); + + LoadSaveblockMapHeader(); + set_warp2_warp3_to_neg_1(); + trainerHillMapId = GetCurrentTrainerHillMapId(); + if (gMapHeader.mapDataId == 0x169) + sub_81AA2F8(); + else if (trainerHillMapId != 0 && trainerHillMapId != 6) + sub_81D5F48(); + else + LoadSaveblockMapObjScripts(); + + UnfreezeMapObjects(); + DoTimeBasedEvents(); + sub_8084788(); + if (gMapHeader.mapDataId == 0x169) + battle_pyramid_map_load_related(1); + else if (trainerHillMapId != 0) + trainer_hill_map_load_related(); + else + sub_8087D74(); + + PlayTimeCounter_Start(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + sub_8195E10(); + if (GetSecretBase2Field_9() == 1) + { + ClearSecretBase2Field_9(); + warp1_set_to_sav1w(); + warp_in(); + sub_80EDB44(); + SetMainCallback2(CB2_LoadMap); + } + else + { + sub_80EDB44(); + gFieldCallback = sub_8086204; + SetMainCallback1(CB1_Overworld); + CB2_ReturnToField(); + } +} + +static void FieldClearVBlankHBlankCallbacks(void) +{ + if (warp0_in_pokecenter() == TRUE) + CloseLink(); + + if (gWirelessCommType != 0) + { + EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); + DisableInterrupts(INTR_FLAG_HBLANK); + } + else + { + u16 savedIme = REG_IME; + REG_IME = 0; + REG_IE &= ~INTR_FLAG_HBLANK; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + } + + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); +} + +static void SetFieldVBlankCallback(void) +{ + SetVBlankCallback(VBlankCB_Field); +} + +static void VBlankCB_Field(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + ScanlineEffect_InitHBlankDmaTransfer(); + FieldUpdateBgTilemapScroll(); + TransferPlttBuffer(); + TransferTilesetAnimsBuffer(); +} + +static void sub_80863B0(void) +{ + u8 val; + + if (sub_81A9E6C()) + { + door_upload_tiles(); + ScanlineEffect_SetParams(gUnknown_08339DBC); + } + else if ((val = Overworld_GetFlashLevel())) + { + sub_80B00E8(val); + ScanlineEffect_SetParams(gUnknown_08339DBC); + } +} + +static bool32 map_loading_iteration_3(u8 *state) +{ + switch (*state) + { + case 0: + overworld_bg_setup(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + sub_80867C8(); + sub_80867D8(); + (*state)++; + break; + case 1: + mli0_load_map(1); + (*state)++; + break; + case 2: + sub_8086988(TRUE); + (*state)++; + break; + case 3: + sub_8086AE4(); + sub_80869DC(); + sub_8086B14(); + sub_8086AAC(); + (*state)++; + break; + case 4: + sub_80863B0(); + map_loading_lcd_reset(); + sub_8197200(); + (*state)++; + break; + case 5: + move_tilemap_camera_to_upper_left_corner(); + (*state)++; + break; + case 6: + copy_map_tileset1_to_vram(gMapHeader.mapData); + (*state)++; + break; + case 7: + copy_map_tileset2_to_vram(gMapHeader.mapData); + (*state)++; + break; + case 8: + if (free_temp_tile_data_buffers_if_possible() != TRUE) + { + apply_map_tileset1_tileset2_palette(gMapHeader.mapData); + (*state)++; + } + break; + case 9: + DrawWholeMapView(); + (*state)++; + break; + case 10: + cur_mapheader_run_tileset_funcs_after_some_cpuset(); + (*state)++; + break; + case 11: + if (gWirelessCommType != 0) + { + sub_800E0E8(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + (*state)++; + break; + case 12: + if (map_post_load_hook_exec()) + (*state)++; + break; + case 13: + return TRUE; + } + + return FALSE; +} + +static bool32 load_map_stuff(u8 *state, u32 a2) +{ + switch (*state) + { + case 0: + FieldClearVBlankHBlankCallbacks(); + mli0_load_map(a2); + (*state)++; + break; + case 1: + sub_80867C8(); + sub_80867D8(); + (*state)++; + break; + case 2: + sub_8086988(a2); + (*state)++; + break; + case 3: + mli4_mapscripts_and_other(); + sub_8086A80(); + (*state)++; + break; + case 4: + sub_80863B0(); + map_loading_lcd_reset(); + sub_8197200(); + (*state)++; + break; + case 5: + move_tilemap_camera_to_upper_left_corner(); + (*state)++; + break; + case 6: + copy_map_tileset1_to_vram(gMapHeader.mapData); + (*state)++; + break; + case 7: + copy_map_tileset2_to_vram(gMapHeader.mapData); + (*state)++; + break; + case 8: + if (free_temp_tile_data_buffers_if_possible() != TRUE) + { + apply_map_tileset1_tileset2_palette(gMapHeader.mapData); + (*state)++; + } + break; + case 9: + DrawWholeMapView(); + (*state)++; + break; + case 10: + cur_mapheader_run_tileset_funcs_after_some_cpuset(); + (*state)++; + break; + case 11: + if ((gMapHeader.flags & 0xF8) == 8 && sub_80E909C() == 1) + ShowMapNamePopup(); + (*state)++; + break; + case 12: + if (map_post_load_hook_exec()) + (*state)++; + break; + case 13: + return TRUE; + } + + return FALSE; +} + +static bool32 sub_8086638(u8 *state) +{ + switch (*state) + { + case 0: + sub_80867C8(); + sub_80867D8(); + sub_8086988(0); + sub_8086A68(); + sub_8086A80(); + (*state)++; + break; + case 1: + sub_8086860(); + sub_81D64C0(); + (*state)++; + break; + case 2: + if (map_post_load_hook_exec()) + (*state)++; + break; + case 3: + return TRUE; + } + + return FALSE; +} + +static bool32 map_loading_iteration_2_link(u8 *state) +{ + switch (*state) + { + case 0: + FieldClearVBlankHBlankCallbacks(); + sub_80867C8(); + sub_80867D8(); + (*state)++; + break; + case 1: + sub_8086988(1); + (*state)++; + break; + case 2: + sub_8086B9C(); + sub_8086A68(); + sub_8086AC8(); + (*state)++; + break; + case 3: + sub_80863B0(); + map_loading_lcd_reset(); + sub_8197200(); + (*state)++; + break; + case 4: + move_tilemap_camera_to_upper_left_corner(); + (*state)++; + break; + case 5: + copy_map_tileset1_to_vram(gMapHeader.mapData); + (*state)++; + break; + case 6: + copy_map_tileset2_to_vram(gMapHeader.mapData); + (*state)++; + break; + case 7: + if (free_temp_tile_data_buffers_if_possible() != TRUE) + { + apply_map_tileset1_tileset2_palette(gMapHeader.mapData); + (*state)++; + } + break; + case 8: + DrawWholeMapView(); + (*state)++; + break; + case 9: + cur_mapheader_run_tileset_funcs_after_some_cpuset(); + (*state)++; + break; + case 11: + if (gWirelessCommType != 0) + { + sub_800E0E8(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + (*state)++; + break; + case 12: + if (map_post_load_hook_exec()) + (*state)++; + break; + case 10: + (*state)++; + break; + case 13: + SetFieldVBlankCallback(); + (*state)++; + return TRUE; + } + + return FALSE; +} + +static void do_load_map_stuff_loop(u8 *state) +{ + while (!load_map_stuff(state, 0)); +} + +static void sub_80867C8(void) +{ + sub_81BE6AC(); + MoveSaveBlocks_ResetHeap(); +} + +static void sub_80867D8(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ScanlineEffect_Stop(); + + DmaClear16(3, PLTT + 2, PLTT_SIZE - 2); + DmaFillLarge16(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); + ResetOamRange(0, 128); + LoadOam(); +} + +static void sub_8086860(void) +{ + sub_80863B0(); + map_loading_lcd_reset(); + sub_8197200(); + mapdata_load_assets_to_gpu_and_full_redraw(); +} + +static void map_loading_lcd_reset(void) +{ + clear_scheduled_bg_copies_to_vram(); + reset_temp_tile_data_buffers(); + SetGpuReg(REG_OFFSET_MOSAIC, 0); + SetGpuReg(REG_OFFSET_WININ, 0x1F1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x101); + SetGpuReg(REG_OFFSET_WIN0H, 0xFF); + SetGpuReg(REG_OFFSET_WIN0V, 0xFF); + SetGpuReg(REG_OFFSET_WIN1H, 0xFFFF); + SetGpuReg(REG_OFFSET_WIN1V, 0xFFFF); + SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3] | 0x1040); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x70D); + overworld_bg_setup(); + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); + schedule_bg_copy_tilemap_to_vram(3); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJ_1D_MAP | 0x20); + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + sub_8098128(); +} + +static void sub_8086988(u32 a1) +{ + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + ScanlineEffect_Clear(); + dp13_810BB8C(); + ResetCameraUpdateInfo(); + InstallCameraPanAheadCallback(); + if (!a1) + npc_paltag_set_load(0); + else + npc_paltag_set_load(1); + + FieldEffectActiveListClear(); + sub_80AAFA4(); + sub_80AEE84(); + if (!a1) + SetUpFieldTasks(); + mapheader_run_script_with_tag_x5(); + sub_81BE6B8(); +} + +static void sub_80869DC(void) +{ + gUnknown_03005DEC = 0; + gUnknown_03005DE8 = 0; + sub_808D438(); + SpawnFieldObjectsInView(0, 0); + mapheader_run_first_tag4_script_list_match(); +} + +static void mli4_mapscripts_and_other(void) +{ + s16 x, y; + struct UnkPlayerStruct *player; + + gUnknown_03005DEC = 0; + gUnknown_03005DE8 = 0; + sub_808D438(); + sav1_camera_get_focus_coords(&x, &y); + player = sub_80852D4(); + InitPlayerAvatar(x, y, player->player_field_1, gSaveBlock2Ptr->playerGender); + SetPlayerAvatarTransitionFlags(player->player_field_0); + player_avatar_init_params_reset(); + SpawnFieldObjectsInView(0, 0); + mapheader_run_first_tag4_script_list_match(); +} + +static void sub_8086A68(void) +{ + sub_808E16C(0, 0); + RotatingGate_InitPuzzleAndGraphics(); + mapheader_run_script_with_tag_x7(); +} + +static void sub_8086A80(void) +{ + gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 = 1; + InitCameraUpdateCallback(gPlayerAvatar.spriteId); +} + +static void sub_8086AAC(void) +{ + InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4)); +} + +static void sub_8086AC8(void) +{ + InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4)); +} + +static void sub_8086AE4(void) +{ + u16 x, y; + sav1_camera_get_focus_coords(&x, &y); + sub_8088B3C(x + gUnknown_03005DB4, y); +} + +static void sub_8086B14(void) +{ + u16 i; + u16 x, y; + + sav1_camera_get_focus_coords(&x, &y); + x -= gUnknown_03005DB4; + + for (i = 0; i < gFieldLinkPlayerCount; i++) + { + SpawnLinkPlayerMapObject(i, i + x, y, gLinkPlayers[i].gender); + CreateLinkPlayerSprite(i, gLinkPlayers[i].version); + } + + sub_8086C40(); +} + +static void sub_8086B9C(void) +{ + u16 i; + for (i = 0; i < gFieldLinkPlayerCount; i++) + CreateLinkPlayerSprite(i, gLinkPlayers[i].version); +} + +static void c1_link_related(void) +{ + if (gWirelessCommType == 0 || !sub_800F0B8() || !sub_8009F3C()) + { + u8 var = gUnknown_03005DB4; + sub_8086F38(gLinkPartnersHeldKeys, var); + sub_8086FA0(sUnknown_03000E14(var)); + sub_8086C40(); + } +} + +void sub_8086C2C(void) +{ + sub_8086C90(); + c1_link_related_func_set(sub_80870B0); +} + +static void sub_8086C40(void) +{ + sub_808709C(gLinkPartnersHeldKeys); +} + +static void c1_link_related_func_set(u16 (*func)(u32)) +{ + sUnknown_03000E19 = 0; + sUnknown_03000E14 = func; +} + +static void sub_8086C64(void) +{ + if (gWirelessCommType != 0) + { + if (++sUnknown_03000E19 > 60) + sub_8010198(); + } +} + +static void sub_8086C90(void) +{ + s32 i; + for (i = 0; i < 4; i++) + sUnknown_03000E10[i] = 0x80; +} + +static bool32 sub_8086CA8(u16 a1) +{ + s32 i; + s32 count = gFieldLinkPlayerCount; + + for (i = 0; i < count; i++) + if (sUnknown_03000E10[i] != a1) + return FALSE; + return TRUE; +} + +static bool32 sub_8086CE0(u16 a1) +{ + s32 i; + s32 count = gFieldLinkPlayerCount; + + for (i = 0; i < count; i++) + if (sUnknown_03000E10[i] == a1) + return TRUE; + return FALSE; +} + +static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4) +{ + const u8 *script; + + if (sUnknown_03000E10[a1] == 0x80) + { + script = sub_8087370(a3); + if (script) + { + *a4 = sub_8087480(script); + sUnknown_03000E10[a1] = 0x81; + if (a3->b) + { + c1_link_related_func_set(sub_80870F8); + sub_8087530(script); + } + return; + } + if (sub_8086CE0(0x83) == 1) + { + sUnknown_03000E10[a1] = 0x81; + if (a3->b) + { + c1_link_related_func_set(sub_80870F8); + sub_8087584(); + } + return; + } + switch (a2) + { + case 24: + if (sub_8087358(a3)) + { + sUnknown_03000E10[a1] = 0x81; + if (a3->b) + { + c1_link_related_func_set(sub_80870F8); + sub_808751C(); + } + } + break; + case 18: + if (sub_8087388(a3) == TRUE) + { + sUnknown_03000E10[a1] = 0x81; + if (a3->b) + { + c1_link_related_func_set(sub_80870F8); + sub_808754C(); + } + } + break; + case 25: + script = sub_80873B4(a3); + if (script) + { + sUnknown_03000E10[a1] = 0x81; + if (a3->b) + { + c1_link_related_func_set(sub_80870F8); + sub_8087568(script); + } + } + break; + case 27: + if (sub_8087340(a3)) + { + sUnknown_03000E10[a1] = 0x81; + if (a3->b) + { + c1_link_related_func_set(sub_808711C); + sub_8087510(); + } + } + break; + case 28: + if (sub_8087340(a3)) + { + sUnknown_03000E10[a1] = 0x81; + if (a3->b) + { + c1_link_related_func_set(sub_8087140); + sub_8087510(); + } + } + break; + } + } + + switch (a2) + { + case 23: + sUnknown_03000E10[a1] = 0x83; + break; + case 22: + sUnknown_03000E10[a1] = 0x82; + break; + case 26: + sUnknown_03000E10[a1] = 0x80; + if (a3->b) + c1_link_related_func_set(sub_80870B0); + break; + case 29: + if (sUnknown_03000E10[a1] == 0x82) + sUnknown_03000E10[a1] = 0x81; + break; + } +} + +static void sub_8086F38(u16 *a1, s32 a2) +{ + struct UnkStruct_8054FF8 st; + s32 i; + + for (i = 0; i < 4; i++) + { + u8 v5 = a1[i]; + u16 v8 = 0; + sub_80872D8(i, a2, &st); + sub_8086D18(i, v5, &st, &v8); + if (sUnknown_03000E10[i] == 0x80) + v8 = sub_8087068(v5); + sub_808796C(i, v8); + } +} + +static void sub_8086FA0(u16 a1) +{ + if (a1 >= 17 && a1 < 30) + gUnknown_03005DA8 = a1; + else + gUnknown_03005DA8 = 17; + + if (gWirelessCommType != 0 + && sub_8087690() > 1 + && is_c1_link_related_active() == TRUE + && sub_8009F3C() == TRUE) + { + switch (a1) + { + case 17: + case 18: + case 19: + case 20: + case 21: + case 24: + case 25: + gUnknown_03005DA8 = 0; + break; + } + } +} + +static u16 sub_808700C(u32 a1) +{ + if (gMain.heldKeys & DPAD_UP) + return 19; + else if (gMain.heldKeys & DPAD_DOWN) + return 18; + else if (gMain.heldKeys & DPAD_LEFT) + return 20; + else if (gMain.heldKeys & DPAD_RIGHT) + return 21; + else if (gMain.newKeys & START_BUTTON) + return 24; + else if (gMain.newKeys & A_BUTTON) + return 25; + else + return 17; +} + +static u16 sub_8087068(u16 a1) +{ + switch (a1) + { + case 21: + return 4; + case 20: + return 3; + case 19: + return 1; + case 18: + return 2; + default: + return 0; + } +} + +static void sub_808709C(u16 *a1) +{ + s32 i; + for (i = 0; i < 4; i++) + a1[i] = 17; +} + +static u16 sub_80870B0(u32 a1) +{ + if (ScriptContext2_IsEnabled() == 1) + return 17; + if (sub_800B4DC() > 4) + return 27; + if (sub_8087690() <= 4) + return sub_808700C(a1); + return 28; +} + +static u16 sub_80870EC(u32 a1) +{ + sub_8086C64(); + return 17; +} + +static u16 sub_80870F8(u32 a1) +{ + u16 retVal; + if (ScriptContext2_IsEnabled() == TRUE) + { + retVal = 17; + } + else + { + retVal = 26; + c1_link_related_func_set(sub_80870EC); + } + return retVal; +} + +static u16 sub_808711C(u32 a1) +{ + u16 retVal; + if (sub_800B4DC() > 2) + { + retVal = 17; + } + else + { + retVal = 26; + ScriptContext2_Disable(); + c1_link_related_func_set(sub_80870EC); + } + return retVal; +} + +static u16 sub_8087140(u32 a1) +{ + u16 retVal; + if (sub_8087690() > 2) + { + retVal = 17; + } + else + { + retVal = 26; + ScriptContext2_Disable(); + c1_link_related_func_set(sub_80870EC); + } + return retVal; +} + +static u16 sub_8087164(u32 a1) +{ + sub_8086C64(); + return 17; +} + +static u16 sub_8087170(u32 linkPlayerId) +{ + if (sUnknown_03000E10[linkPlayerId] == 0x82) + { + if (gMain.newKeys & B_BUTTON) + { + c1_link_related_func_set(sub_8087164); + return 29; + } + else + { + return 17; + } + } + else + { + sub_8086C64(); + return 17; + } +} + +static u16 sub_80871AC(u32 a1) +{ + c1_link_related_func_set(sub_8087170); + return 22; +} + +static u16 sub_80871C0(u32 a1) +{ + return 17; +} + +static u16 sub_80871C4(u32 a1) +{ + if (sUnknown_03000E10[a1] != 0x83) + sub_8086C64(); + if (sub_8086CA8(0x83) == TRUE) + { + ScriptContext1_SetupScript(EventScript_277513); + c1_link_related_func_set(sub_80871C0); + } + return 17; +} + +static u16 sub_80871FC(u32 a1) +{ + c1_link_related_func_set(sub_80871C4); + return 23; +} + +static u16 sub_8087210(u32 a1) +{ + return 17; +} + +u32 sub_8087214(void) +{ + if (sub_8086CE0(0x83) == TRUE) + return 2; + if (sUnknown_03000E14 == sub_8087170 && sUnknown_03000E10[gUnknown_03005DB4] != 0x82) + return 0; + if (sUnknown_03000E14 == sub_8087164 && sUnknown_03000E10[gUnknown_03005DB4] == 0x81) + return 2; + if (sub_8086CA8(0x82) != 0) + return 1; + return 0; +} + +bool32 sub_808727C(void) +{ + return sub_8086CE0(0x83); +} + +u16 sub_8087288(void) +{ + c1_link_related_func_set(sub_80871AC); + return 0; +} + +u16 sub_808729C(void) +{ + c1_link_related_func_set(sub_80870F8); + return 0; +} + +u16 sub_80872B0(void) +{ + c1_link_related_func_set(sub_80871FC); + return 0; +} + +u16 sub_80872C4(void) +{ + c1_link_related_func_set(sub_8087210); + return 0; +} + +static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3) +{ + s16 x, y; + + a3->a = linkPlayerId; + a3->b = (linkPlayerId == a2) ? 1 : 0; + a3->c = gLinkPlayerMapObjects[linkPlayerId].mode; + a3->d = sub_80878A0(linkPlayerId); + sub_8087878(linkPlayerId, &x, &y); + a3->sub.x = x; + a3->sub.y = y; + a3->sub.height = sub_80878C0(linkPlayerId); + a3->field_C = MapGridGetMetatileBehaviorAt(x, y); +} + +static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1) +{ + u8 v1 = a1->c; + if (v1 == 2 || v1 == 0) + return TRUE; + else + return FALSE; +} + +static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1) +{ + u8 v1 = a1->c; + if (v1 == 2 || v1 == 0) + return TRUE; + else + return FALSE; +} + +static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1) +{ + if (a1->c != 2) + return 0; + return sub_809D0F4(&a1->sub); +} + +static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1) +{ + if (a1->c != 2 && a1->c != 0) + return FALSE; + if (!MetatileBehavior_IsSouthArrowWarp(a1->field_C)) + return FALSE; + if (a1->d != 1) + return FALSE; + return TRUE; +} + +static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1) +{ + struct MapPosition unkStruct; + u8 linkPlayerId; + + if (a1->c && a1->c != 2) + return 0; + + unkStruct = a1->sub; + unkStruct.x += gUnknown_08339D64[a1->d].x; + unkStruct.y += gUnknown_08339D64[a1->d].y; + unkStruct.height = 0; + linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y); + + if (linkPlayerId != 4) + { + if (!a1->b) + return EventScript_TradeRoom_TooBusyToNotice; + if (sUnknown_03000E10[linkPlayerId] != 0x80) + return EventScript_TradeRoom_TooBusyToNotice; + if (!sub_80B39D4(linkPlayerId)) + return EventScript_TradeRoom_ReadTrainerCard1; + else + return EventScript_TradeRoom_ReadTrainerCard2; + } + + return sub_809C2C8(&unkStruct, a1->field_C, a1->d); +} + +static u16 sub_8087480(const u8 *script) +{ + if (script == gUnknown_08277388) + return 10; + if (script == gUnknown_082773A3) + return 9; + if (script == gUnknown_082773BE) + return 10; + if (script == gUnknown_082773D9) + return 9; + if (script == gUnknown_0827741D) + return 10; + if (script == gUnknown_08277432) + return 9; + if (script == gUnknown_08277447) + return 10; + if (script == gUnknown_0827745C) + return 9; + if (script == gUnknown_08277374) + return 10; + if (script == gUnknown_0827737E) + return 9; + if (script == gUnknown_082773F5) + return 10; + if (script == gUnknown_082773FF) + return 9; + return 0; +} + +static void sub_8087510(void) +{ + ScriptContext2_Enable(); +} + +static void sub_808751C(void) +{ + PlaySE(SE_WIN_OPEN); + sub_809FA9C(); + ScriptContext2_Enable(); +} + +static void sub_8087530(const u8 *script) +{ + PlaySE(SE_SELECT); + ScriptContext1_SetupScript(script); + ScriptContext2_Enable(); +} + +static void sub_808754C(void) +{ + PlaySE(SE_WIN_OPEN); + ScriptContext1_SetupScript(gUnknown_082774EF); + ScriptContext2_Enable(); +} + +static void sub_8087568(const u8 *script) +{ + PlaySE(SE_SELECT); + ScriptContext1_SetupScript(script); + ScriptContext2_Enable(); +} + +static void sub_8087584(void) +{ + ScriptContext1_SetupScript(gUnknown_08277509); + ScriptContext2_Enable(); +} + +bool32 sub_8087598(void) +{ + if (!is_c1_link_related_active()) + return 0; + if (sub_800B4DC() >= 3) + sUnknown_03000E18 = 1; + else + sUnknown_03000E18 = 0; + return sUnknown_03000E18; +} + +bool32 sub_80875C8(void) +{ + u8 temp; + + if (sub_800B4DC() < 2) + return FALSE; + + if (is_c1_link_related_active() != TRUE) + return FALSE; + + if (sub_8009F3C() != TRUE) + return FALSE; + + if (sUnknown_03000E14 == sub_808711C) + return TRUE; + + if (sUnknown_03000E14 != sub_80870F8) + return FALSE; + + temp = sUnknown_03000E18; + sUnknown_03000E18 = 0; + + if (temp == TRUE) + return TRUE; + + if (gPaletteFade.active && gPaletteFade.softwareFadeFinishing) + return TRUE; + + return FALSE; +} + +bool32 sub_8087634(void) +{ + if (sub_8087690() < 2) + return FALSE; + + if (is_c1_link_related_active() != TRUE) + return FALSE; + + if (sub_8009F3C() != TRUE) + return FALSE; + + if (sUnknown_03000E14 == sub_8087140) + return TRUE; + + return FALSE; +} + +bool32 sub_808766C(void) +{ + if (gWirelessCommType != 0) + return FALSE; + if (!sub_8009F3C()) + return FALSE; + return TRUE; +} + +static u32 sub_8087690(void) +{ + if (gWirelessCommType != 0) + return gUnknown_03005000.unk_9e8.unk_232; + else + return gLink.sendQueue.count; +} + +static void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj) +{ + memset(linkPlayerMapObj, 0, sizeof(struct LinkPlayerMapObject)); +} + +void ZeroAllLinkPlayerMapObjects(void) +{ + memset(gLinkPlayerMapObjects, 0, sizeof(gLinkPlayerMapObjects)); +} + +static void ZeroMapObject(struct MapObject *mapObj) +{ + memset(mapObj, 0, sizeof(struct MapObject)); +} + +static void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4) +{ + u8 mapObjId = sub_808D4F4(); + struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId]; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + + ZeroLinkPlayerMapObject(linkPlayerMapObj); + ZeroMapObject(mapObj); + + linkPlayerMapObj->active = 1; + linkPlayerMapObj->linkPlayerId = linkPlayerId; + linkPlayerMapObj->mapObjId = mapObjId; + linkPlayerMapObj->mode = 0; + + mapObj->active = 1; + mapObj->mapobj_bit_1 = a4; + mapObj->range.as_byte = 2; + mapObj->spriteId = 64; + + InitLinkPlayerMapObjectPos(mapObj, x, y); +} + +static void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y) +{ + mapObj->coords2.x = x; + mapObj->coords2.y = y; + mapObj->coords3.x = x; + mapObj->coords3.y = y; + sub_8093038(x, y, &mapObj->coords1.x, &mapObj->coords1.y); + mapObj->coords1.x += 8; + FieldObjectUpdateZCoord(mapObj); +} + +static void sub_80877DC(u8 linkPlayerId, u8 a2) +{ + if (gLinkPlayerMapObjects[linkPlayerId].active) + { + u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + mapObj->range.as_byte = a2; + } +} + +static void sub_808780C(u8 linkPlayerId) +{ + struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId]; + u8 mapObjId = linkPlayerMapObj->mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + if (mapObj->spriteId != 64 ) + DestroySprite(&gSprites[mapObj->spriteId]); + linkPlayerMapObj->active = 0; + mapObj->active = 0; +} + +static u8 sub_8087858(u8 linkPlayerId) +{ + u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + return mapObj->spriteId; +} + +static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y) +{ + u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + *x = mapObj->coords2.x; + *y = mapObj->coords2.y; +} + +static u8 sub_80878A0(u8 linkPlayerId) +{ + u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + return mapObj->range.as_byte; +} + +static u8 sub_80878C0(u8 linkPlayerId) +{ + u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + return mapObj->mapobj_unk_0B_0; +} + +static s32 sub_80878E4(u8 linkPlayerId) +{ + u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + return 16 - (s8)mapObj->mapobj_unk_21; +} + +static u8 GetLinkPlayerIdAt(s16 x, s16 y) +{ + u8 i; + for (i = 0; i < 4; i++) + { + if (gLinkPlayerMapObjects[i].active + && (gLinkPlayerMapObjects[i].mode == 0 || gLinkPlayerMapObjects[i].mode == 2)) + { + struct MapObject *mapObj = &gMapObjects[gLinkPlayerMapObjects[i].mapObjId]; + if (mapObj->coords2.x == x && mapObj->coords2.y == y) + return i; + } + } + return 4; +} + +static void sub_808796C(u8 linkPlayerId, u8 a2) +{ + struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId]; + u8 mapObjId = linkPlayerMapObj->mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + + if (linkPlayerMapObj->active) + { + if (a2 > 10) + mapObj->mapobj_bit_2 = 1; + else + gUnknown_08339E00[gUnknown_08339DC8[linkPlayerMapObj->mode](linkPlayerMapObj, mapObj, a2)](linkPlayerMapObj, mapObj); + } +} + +static u8 sub_80879D8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +{ + return gUnknown_08339DD4[a3](linkPlayerMapObj, mapObj, a3); +} + +static u8 sub_80879F8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +{ + return 1; +} + +static u8 sub_80879FC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +{ + return gUnknown_08339DD4[a3](linkPlayerMapObj, mapObj, a3); +} + +static u8 sub_8087A1C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +{ + return 0; +} + +static u8 sub_8087A20(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +{ + s16 x, y; + + mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte); + FieldObjectMoveDestCoords(mapObj, mapObj->range.as_byte, &x, &y); + + if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->range.as_byte, x, y)) + { + return 0; + } + else + { + mapObj->mapobj_unk_21 = 16; + npc_coords_shift(mapObj, x, y); + FieldObjectUpdateZCoord(mapObj); + return 1; + } +} + +static u8 sub_8087A88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) +{ + mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte); + return 0; +} + +static void sub_8087AA0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) +{ + linkPlayerMapObj->mode = 0; +} + +static void sub_8087AA8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj) +{ + mapObj->mapobj_unk_21--; + linkPlayerMapObj->mode = 1; + MoveCoords(mapObj->range.as_byte, &mapObj->coords1.x, &mapObj->coords1.y); + if (!mapObj->mapobj_unk_21) + { + npc_coords_shift_still(mapObj); + linkPlayerMapObj->mode = 2; + } +} + +static u8 npc_something3(u8 a1, u8 a2) +{ + switch (a1 - 1) + { + case 0: + case 6: + return 2; + case 1: + case 7: + return 1; + case 2: + case 8: + return 3; + case 3: + case 9: + return 4; + } + return a2; +} + +static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y) +{ + u8 i; + for (i = 0; i < 16; i++) + { + if (i != selfMapObjId) + { + if ((gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y) + || (gMapObjects[i].coords3.x == x && gMapObjects[i].coords3.y == y)) + { + return 1; + } + } + } + return MapGridIsImpassableAt(x, y); +} + +static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion) +{ + struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId]; + u8 mapObjId = linkPlayerMapObj->mapObjId; + struct MapObject *mapObj = &gMapObjects[mapObjId]; + struct Sprite *sprite; + + if (linkPlayerMapObj->active) + { + switch (gameVersion) + { + case VERSION_FIRE_RED: + case VERSION_LEAF_GREEN: + mapObj->spriteId = AddPseudoFieldObject(sub_808BD6C(mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0); + break; + case VERSION_RUBY: + case VERSION_SAPPHIRE: + mapObj->spriteId = AddPseudoFieldObject(sub_808BD7C(mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0); + break; + case VERSION_EMERALD: + mapObj->spriteId = AddPseudoFieldObject(GetRivalAvatarGraphicsIdByStateIdAndGender(0, mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0); + break; + } + + sprite = &gSprites[mapObj->spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->data[0] = linkPlayerId; + mapObj->mapobj_bit_2 = 0; + } +} + +static void SpriteCB_LinkPlayer(struct Sprite *sprite) +{ + struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[sprite->data[0]]; + struct MapObject *mapObj = &gMapObjects[linkPlayerMapObj->mapObjId]; + sprite->pos1.x = mapObj->coords1.x; + sprite->pos1.y = mapObj->coords1.y; + SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1); + sprite->oam.priority = ZCoordToPriority(mapObj->elevation); + + if (!linkPlayerMapObj->mode) + StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->range.as_byte)); + else + StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->range.as_byte)); + + sub_80979D4(sprite, 0); + if (mapObj->mapobj_bit_2) + { + sprite->invisible = ((sprite->data[7] & 4) >> 2); + sprite->data[7]++; + } +} diff --git a/src/pokeblock.c b/src/pokeblock.c index b9d1d94c6..b9a1f6bf3 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -74,7 +74,7 @@ extern void (*gFieldCallback)(void); extern const u16 gUnknown_0860F074[]; -extern void c2_exit_to_overworld_2_switch(void); +extern void CB2_ReturnToField(void); extern bool8 sub_81221EC(void); extern void sub_809882C(u8, u16, u8); extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8); @@ -374,7 +374,7 @@ void OpenPokeblockCaseInBattle(void) void OpenPokeblockCaseOnFeeder(void) { - OpenPokeblockCase(PBLOCK_CASE_FEEDER, c2_exit_to_overworld_2_switch); + OpenPokeblockCase(PBLOCK_CASE_FEEDER, CB2_ReturnToField); } static void CB2_PokeblockMenu(void) diff --git a/src/region_map.c b/src/region_map.c index 7f121d1de..f16787fc9 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1581,7 +1581,7 @@ void MCB2_FlyMap(void) gUnknown_0203A148 = malloc(sizeof(*gUnknown_0203A148)); if (gUnknown_0203A148 == NULL) { - SetMainCallback2(sub_8086194); + SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); } else { diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c index 9950f6691..50692d356 100644 --- a/src/reset_save_heap.c +++ b/src/reset_save_heap.c @@ -26,5 +26,5 @@ void sub_81700F8(void) Sav2_ClearSetDefault(); SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); InitHeap(gHeap, HEAP_SIZE); - SetMainCallback2(sub_8086230); + SetMainCallback2(CB2_ContinueSavedGame); } diff --git a/src/safari_zone.c b/src/safari_zone.c index dd3cf3733..ab5c38f3a 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -30,9 +30,9 @@ extern void sub_80EE44C(u8, u8); extern void IncrementGameStat(u8 index); extern void ScriptContext1_SetupScript(u8*); extern void ScriptContext2_RunNewScript(u8*); -extern void c2_exit_to_overworld_2_switch(void); -extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void); -extern void c2_load_new_map(void); +extern void CB2_ReturnToField(void); +extern void CB2_ReturnToFieldContinueScript(void); +extern void CB2_LoadMap(void); extern void sub_80AF6F0(void); extern void ScriptContext1_Stop(void); extern void warp_in(void); @@ -112,20 +112,20 @@ void CB2_EndSafariBattle(void) sSafariZoneCaughtMons++; if (gNumSafariBalls != 0) { - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); } else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS) { ScriptContext2_RunNewScript(EventScript_2A4B4C); warp_in(); gFieldCallback = sub_80AF6F0; - SetMainCallback2(c2_load_new_map); + SetMainCallback2(CB2_LoadMap); } else if (gBattleOutcome == B_OUTCOME_CAUGHT) { ScriptContext1_SetupScript(EventScript_2A4B9B); ScriptContext1_Stop(); - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + SetMainCallback2(CB2_ReturnToFieldContinueScript); } } diff --git a/src/scrcmd.c b/src/scrcmd.c index deb170c68..ef3fcbcac 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -2054,7 +2054,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) { u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx)); - PlaySlotMachine(slotMachineIndex, c2_exit_to_overworld_1_continue_scripts_restart_music); + PlaySlotMachine(slotMachineIndex, CB2_ReturnToFieldContinueScript); ScriptContext1_Stop(); return TRUE; } diff --git a/src/secret_base.c b/src/secret_base.c index e3c06a75d..63787c43c 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -386,7 +386,7 @@ void sub_80E8FD0(u8 taskId) sub_80E8F9C(); warp_in(); gFieldCallback = sub_80AF168; - SetMainCallback2(c2_load_new_map); + SetMainCallback2(CB2_LoadMap); DestroyTask(taskId); break; } @@ -444,7 +444,7 @@ void sub_80E916C(u8 taskId) Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gUnknown_0858CFE8[idx + 2], gUnknown_0858CFE8[idx + 3]); warp_in(); gFieldCallback = sub_80E9108; - SetMainCallback2(c2_load_new_map); + SetMainCallback2(CB2_LoadMap); DestroyTask(taskId); } } @@ -642,7 +642,7 @@ void sub_80E96A4(u8 taskId) copy_saved_warp2_bank_and_enter_x_to_warp1(0x7e); warp_in(); gFieldCallback = mapldr_default; - SetMainCallback2(c2_load_new_map); + SetMainCallback2(CB2_LoadMap); ScriptContext2_Disable(); DestroyTask(taskId); break; diff --git a/src/tv.c b/src/tv.c index fbe39fde0..d3fb20f79 100644 --- a/src/tv.c +++ b/src/tv.c @@ -3633,7 +3633,7 @@ void ChangePokemonNickname(void) void ChangePokemonNickname_CB(void) { SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2); - c2_exit_to_overworld_1_continue_scripts_restart_music(); + CB2_ReturnToFieldContinueScript(); } void ChangeBoxPokemonNickname(void) @@ -3649,7 +3649,7 @@ void ChangeBoxPokemonNickname(void) void ChangeBoxPokemonNickname_CB(void) { SetBoxMonNickFromAnyBox(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2); - c2_exit_to_overworld_1_continue_scripts_restart_music(); + CB2_ReturnToFieldContinueScript(); } void TV_CopyNicknameToStringVar1AndEnsureTerminated(void) diff --git a/src/walda_phrase.c b/src/walda_phrase.c index 59fd3fedb..04789bfb5 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -14,7 +14,7 @@ extern const u8 gText_Peekaboo[]; extern u8 *GetWaldaPhrasePtr(void); extern bool32 IsWaldaPhraseEmpty(void); extern void sub_80AF168(void); -extern void c2_exit_to_overworld_2_switch(void); +extern void CB2_ReturnToField(void); extern void SetWaldaPhrase(const u8 *src); extern void SetWaldaWallpaperPatternId(u8 patternId); extern void SetWaldaWallpaperIconId(u8 iconId); @@ -80,7 +80,7 @@ static void CB2_HandleGivenWaldaPhrase(void) StringCopy(gStringVar1, GetWaldaPhrasePtr()); gFieldCallback = sub_80AF168; - SetMainCallback2(c2_exit_to_overworld_2_switch); + SetMainCallback2(CB2_ReturnToField); } static u32 GetWaldaPhraseInputCase(u8 *inputPtr) diff --git a/sym_common.txt b/sym_common.txt index 0249fc4e9..d179df671 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -51,7 +51,7 @@ gUnknown_03005DB0: @ 3005DB0 gUnknown_03005DB4: @ 3005DB4 .space 0x4 -gUnknown_03005DB8: @ 3005DB8 +gFieldLinkPlayerCount: @ 3005DB8 .space 0x8 gUnknown_03005DC0: @ 3005DC0 From 3762f27727b16521465165c17de59efce8716860 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 14 Feb 2018 01:19:25 +0100 Subject: [PATCH 4/6] make it compiler --- src/link.c | 2 ++ src/link_rfu.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/link.c b/src/link.c index 8f7aa71b6..292ffecf2 100644 --- a/src/link.c +++ b/src/link.c @@ -28,6 +28,8 @@ #include "link.h" #include "link_rfu.h" +extern u16 gUnknown_03005DA8; + // Static type declarations struct BlockTransfer diff --git a/src/link_rfu.c b/src/link_rfu.c index 186d54fd3..a1917ed24 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -16,6 +16,8 @@ #include "rom_8011DC0.h" #include "link_rfu.h" +extern u16 gUnknown_03005DA8; + // Static type declarations // Static RAM declarations From 4b4495f3fe2a65bdf0f2a21c650103c4dbeed514 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 15 Feb 2018 12:36:52 +0100 Subject: [PATCH 5/6] overworld review changes --- include/gba/io_reg.h | 35 ++++++----- src/overworld.c | 144 +++++++++++++++++++++---------------------- 2 files changed, 87 insertions(+), 92 deletions(-) diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 1847b688f..c1abcc94c 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -501,23 +501,24 @@ // I/O register fields // DISPCNT -#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text -#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off -#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine -#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color -#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette -#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color -#define DISPCNT_OBJ_1D_MAP 0x0040 -#define DISPCNT_FORCED_BLANK 0x0080 -#define DISPCNT_BG0_ON 0x0100 -#define DISPCNT_BG1_ON 0x0200 -#define DISPCNT_BG2_ON 0x0400 -#define DISPCNT_BG3_ON 0x0800 -#define DISPCNT_BG_ALL_ON 0x0F00 -#define DISPCNT_OBJ_ON 0x1000 -#define DISPCNT_WIN0_ON 0x2000 -#define DISPCNT_WIN1_ON 0x4000 -#define DISPCNT_OBJWIN_ON 0x8000 +#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text +#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off +#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine +#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color +#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette +#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color +#define DISPCNT_HBLANK_INTERVAL 0x0020 // Allow access to OAM during H-Blank +#define DISPCNT_OBJ_1D_MAP 0x0040 +#define DISPCNT_FORCED_BLANK 0x0080 +#define DISPCNT_BG0_ON 0x0100 +#define DISPCNT_BG1_ON 0x0200 +#define DISPCNT_BG2_ON 0x0400 +#define DISPCNT_BG3_ON 0x0800 +#define DISPCNT_BG_ALL_ON 0x0F00 +#define DISPCNT_OBJ_ON 0x1000 +#define DISPCNT_WIN0_ON 0x2000 +#define DISPCNT_WIN1_ON 0x4000 +#define DISPCNT_OBJWIN_ON 0x8000 // DISPSTAT #define DISPSTAT_VBLANK 0x0001 // in V-Blank diff --git a/src/overworld.c b/src/overworld.c index 5e6654cad..fd1173ffc 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -748,13 +748,9 @@ void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) void sub_8084EBC(s16 x, s16 y) { if (warp_data_is_not_neg_1(&sUnknown_020322F4) == TRUE) - { sWarpDestination = gUnknown_020322DC; - } else - { Overworld_SetWarpDestination(sUnknown_020322F4.mapGroup, sUnknown_020322F4.mapNum, -1, x, y); - } } void warp1_set_to_sav1w(void) @@ -951,41 +947,43 @@ static u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) { if (a3 != 8 && FlagGet(FLAG_SYS_CRUISE_MODE)) return 1; - if (a3 == 5) + else if (a3 == 5) return 16; - if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) + else if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) return 8; - if (Overworld_IsBikingAllowed() != TRUE) + else if (Overworld_IsBikingAllowed() != TRUE) return 1; - if (playerStruct->player_field_0 == 2) + else if (playerStruct->player_field_0 == 2) return 2; - if (playerStruct->player_field_0 != 4) + else if (playerStruct->player_field_0 != 4) return 1; - return 4; + else + return 4; } static u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) { if (FlagGet(FLAG_SYS_CRUISE_MODE) && a4 == 6) return 4; - if (MetatileBehavior_IsDeepSouthWarp(a3) == TRUE) + else if (MetatileBehavior_IsDeepSouthWarp(a3) == TRUE) return 2; - if (MetatileBehavior_IsNonAnimDoor(a3) == TRUE || MetatileBehavior_IsDoor(a3) == TRUE) + else if (MetatileBehavior_IsNonAnimDoor(a3) == TRUE || MetatileBehavior_IsDoor(a3) == TRUE) return 1; - if (MetatileBehavior_IsSouthArrowWarp(a3) == TRUE) + else if (MetatileBehavior_IsSouthArrowWarp(a3) == TRUE) return 2; - if (MetatileBehavior_IsNorthArrowWarp(a3) == TRUE) + else if (MetatileBehavior_IsNorthArrowWarp(a3) == TRUE) return 1; - if (MetatileBehavior_IsWestArrowWarp(a3) == TRUE) + else if (MetatileBehavior_IsWestArrowWarp(a3) == TRUE) return 4; - if (MetatileBehavior_IsEastArrowWarp(a3) == TRUE) + else if (MetatileBehavior_IsEastArrowWarp(a3) == TRUE) return 3; - if ((playerStruct->player_field_0 == 16 && a2 == 8) + else if ((playerStruct->player_field_0 == 16 && a2 == 8) || (playerStruct->player_field_0 == 8 && a2 == 16)) return playerStruct->player_field_1; - if (MetatileBehavior_IsLadder(a3) == TRUE) + else if (MetatileBehavior_IsLadder(a3) == TRUE) return playerStruct->player_field_1; - return 1; + else + return 1; } static u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) @@ -1076,34 +1074,36 @@ static bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp) { if (VarGet(VAR_0x40CA) != 1) return FALSE; - if (warp->mapGroup != MAP_GROUP(SOOTOPOLIS_CITY)) + else if (warp->mapGroup != MAP_GROUP(SOOTOPOLIS_CITY)) return FALSE; - if (warp->mapNum == MAP_NUM(SOOTOPOLIS_CITY)) + else if (warp->mapNum == MAP_NUM(SOOTOPOLIS_CITY)) return TRUE; - return FALSE; + else + return FALSE; } static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) { if (VarGet(VAR_WEATHER_INSTITUTE_STATE)) return FALSE; - if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F)) + else if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F)) return FALSE; - if (warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_1F) + else if (warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_1F) || warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_2F)) return TRUE; - return FALSE; + else + return FALSE; } static bool16 IsInflitratedSpaceCenter(struct WarpData *warp) { if (VarGet(VAR_0x405D) == 0) return FALSE; - if (VarGet(VAR_0x405D) > 2) + else if (VarGet(VAR_0x405D) > 2) return FALSE; - if (warp->mapGroup != MAP_GROUP(MOSSDEEP_CITY_SPACE_CENTER_1F)) + else if (warp->mapGroup != MAP_GROUP(MOSSDEEP_CITY_SPACE_CENTER_1F)) return FALSE; - if (warp->mapNum == MAP_NUM(MOSSDEEP_CITY_SPACE_CENTER_1F) + else if (warp->mapNum == MAP_NUM(MOSSDEEP_CITY_SPACE_CENTER_1F) || warp->mapNum == MAP_NUM(MOSSDEEP_CITY_SPACE_CENTER_2F)) return TRUE; return FALSE; @@ -1676,7 +1676,7 @@ void c2_8056854(void) SetMainCallback1(c1_link_related); sub_8086C2C(); - if (gWirelessCommType) + if (gWirelessCommType != 0) gFieldCallback = sub_80AF314; else gFieldCallback = sub_80AF214; @@ -2123,7 +2123,8 @@ static void map_loading_lcd_reset(void) SetGpuReg(REG_OFFSET_WIN0V, 0xFF); SetGpuReg(REG_OFFSET_WIN1H, 0xFFFF); SetGpuReg(REG_OFFSET_WIN1V, 0xFFFF); - SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3] | 0x1040); + SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3] + | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, 0x70D); overworld_bg_setup(); schedule_bg_copy_tilemap_to_vram(1); @@ -2137,7 +2138,8 @@ static void map_loading_lcd_reset(void) ChangeBgY(2, 0, 0); ChangeBgX(3, 0, 0); ChangeBgY(3, 0, 0); - SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJ_1D_MAP | 0x20); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON + | DISPCNT_OBJ_1D_MAP | DISPCNT_HBLANK_INTERVAL); ShowBg(0); ShowBg(1); ShowBg(2); @@ -2278,11 +2280,8 @@ static void c1_link_related_func_set(u16 (*func)(u32)) static void sub_8086C64(void) { - if (gWirelessCommType != 0) - { - if (++sUnknown_03000E19 > 60) - sub_8010198(); - } + if (gWirelessCommType != 0 && ++sUnknown_03000E19 > 60) + sub_8010198(); } static void sub_8086C90(void) @@ -2720,11 +2719,12 @@ static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1) { if (a1->c != 2 && a1->c != 0) return FALSE; - if (!MetatileBehavior_IsSouthArrowWarp(a1->field_C)) + else if (!MetatileBehavior_IsSouthArrowWarp(a1->field_C)) return FALSE; - if (a1->d != 1) + else if (a1->d != 1) return FALSE; - return TRUE; + else + return TRUE; } static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1) @@ -2745,9 +2745,9 @@ static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1) { if (!a1->b) return EventScript_TradeRoom_TooBusyToNotice; - if (sUnknown_03000E10[linkPlayerId] != 0x80) + else if (sUnknown_03000E10[linkPlayerId] != 0x80) return EventScript_TradeRoom_TooBusyToNotice; - if (!sub_80B39D4(linkPlayerId)) + else if (!sub_80B39D4(linkPlayerId)) return EventScript_TradeRoom_ReadTrainerCard1; else return EventScript_TradeRoom_ReadTrainerCard2; @@ -2760,29 +2760,30 @@ static u16 sub_8087480(const u8 *script) { if (script == gUnknown_08277388) return 10; - if (script == gUnknown_082773A3) + else if (script == gUnknown_082773A3) return 9; - if (script == gUnknown_082773BE) + else if (script == gUnknown_082773BE) return 10; - if (script == gUnknown_082773D9) + else if (script == gUnknown_082773D9) return 9; - if (script == gUnknown_0827741D) + else if (script == gUnknown_0827741D) return 10; - if (script == gUnknown_08277432) + else if (script == gUnknown_08277432) return 9; - if (script == gUnknown_08277447) + else if (script == gUnknown_08277447) return 10; - if (script == gUnknown_0827745C) + else if (script == gUnknown_0827745C) return 9; - if (script == gUnknown_08277374) + else if (script == gUnknown_08277374) return 10; - if (script == gUnknown_0827737E) + else if (script == gUnknown_0827737E) return 9; - if (script == gUnknown_082773F5) + else if (script == gUnknown_082773F5) return 10; - if (script == gUnknown_082773FF) + else if (script == gUnknown_082773FF) return 9; - return 0; + else + return 0; } static void sub_8087510(void) @@ -2841,17 +2842,13 @@ bool32 sub_80875C8(void) if (sub_800B4DC() < 2) return FALSE; - - if (is_c1_link_related_active() != TRUE) + else if (is_c1_link_related_active() != TRUE) return FALSE; - - if (sub_8009F3C() != TRUE) + else if (sub_8009F3C() != TRUE) return FALSE; - - if (sUnknown_03000E14 == sub_808711C) + else if (sUnknown_03000E14 == sub_808711C) return TRUE; - - if (sUnknown_03000E14 != sub_80870F8) + else if (sUnknown_03000E14 != sub_80870F8) return FALSE; temp = sUnknown_03000E18; @@ -2859,37 +2856,34 @@ bool32 sub_80875C8(void) if (temp == TRUE) return TRUE; - - if (gPaletteFade.active && gPaletteFade.softwareFadeFinishing) + else if (gPaletteFade.active && gPaletteFade.softwareFadeFinishing) return TRUE; - - return FALSE; + else + return FALSE; } bool32 sub_8087634(void) { if (sub_8087690() < 2) return FALSE; - - if (is_c1_link_related_active() != TRUE) + else if (is_c1_link_related_active() != TRUE) return FALSE; - - if (sub_8009F3C() != TRUE) + else if (sub_8009F3C() != TRUE) return FALSE; - - if (sUnknown_03000E14 == sub_8087140) + else if (sUnknown_03000E14 == sub_8087140) return TRUE; - - return FALSE; + else + return FALSE; } bool32 sub_808766C(void) { if (gWirelessCommType != 0) return FALSE; - if (!sub_8009F3C()) + else if (!sub_8009F3C()) return FALSE; - return TRUE; + else + return TRUE; } static u32 sub_8087690(void) From 824699f505d373b1cc1247347b9c69d6ef1ce8ca Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 15 Feb 2018 23:09:52 +0100 Subject: [PATCH 6/6] overworld review changes2 --- include/global.fieldmap.h | 2 +- src/overworld.c | 13 +++++++------ src/script.c | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 6e262dc9c..94127c554 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -164,7 +164,7 @@ struct MapHeader { /* 0x00 */ const struct MapData *mapData; /* 0x04 */ const struct MapEvents *events; - /* 0x08 */ u8 *mapScripts; + /* 0x08 */ const u8 *mapScripts; /* 0x0C */ const struct MapConnections *connections; /* 0x10 */ u16 music; /* 0x12 */ u16 mapDataId; diff --git a/src/overworld.c b/src/overworld.c index fd1173ffc..6ee338cb8 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -605,15 +605,16 @@ bool32 warp_data_is_not_neg_1(struct WarpData *warp) { if (warp->mapGroup != -1) return FALSE; - if (warp->mapNum != -1) + else if (warp->mapNum != -1) return FALSE; - if (warp->warpId != -1) + else if (warp->warpId != -1) return FALSE; - if (warp->x != -1) + else if (warp->x != -1) return FALSE; - if (warp->y != -1) + else if (warp->y != -1) return FALSE; - return TRUE; + else + return TRUE; } const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum) @@ -2125,7 +2126,7 @@ static void map_loading_lcd_reset(void) SetGpuReg(REG_OFFSET_WIN1V, 0xFFFF); SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3] | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND); - SetGpuReg(REG_OFFSET_BLDALPHA, 0x70D); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(13, 7)); overworld_bg_setup(); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); diff --git a/src/script.c b/src/script.c index 5a1c5daa9..8c868128b 100644 --- a/src/script.c +++ b/src/script.c @@ -243,7 +243,7 @@ void ScriptContext2_RunNewScript(const u8 *ptr) u8 *mapheader_get_tagged_pointer(u8 tag) { - u8 *mapScripts = gMapHeader.mapScripts; + const u8 *mapScripts = gMapHeader.mapScripts; if (!mapScripts) return NULL;