diff options
author | YamaArashi <shadow962@live.com> | 2016-10-02 00:43:14 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-10-02 00:43:14 -0700 |
commit | 179c2e5041b922fb5370e0188c90acf9f82bdf66 (patch) | |
tree | 1446578c29eb9262260af8c4b8143630dacab9f7 | |
parent | ee7db46023b1bde6a06f61242c7dd7c4770b6125 (diff) |
initial decompilation of some field system code
-rw-r--r-- | asm/rom4.s | 3300 | ||||
-rw-r--r-- | include/fieldmap.h | 5 | ||||
-rw-r--r-- | include/main.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/main_menu.c | 2 | ||||
-rw-r--r-- | src/rom4.c | 1319 |
6 files changed, 1326 insertions, 3303 deletions
diff --git a/asm/rom4.s b/asm/rom4.s index 940d3e641..6843efb15 100644 --- a/asm/rom4.s +++ b/asm/rom4.s @@ -5,3306 +5,6 @@ .text - thumb_func_start sub_8052F5C -sub_8052F5C: @ 8052F5C - push {lr} - ldr r0, _08052F88 - bl ScriptContext2_RunNewScript - ldr r1, _08052F8C - movs r0, 0x92 - lsls r0, 3 - adds r1, r0 - ldr r0, [r1] - lsrs r0, 1 - str r0, [r1] - bl sp000_heal_pokemon - bl sub_8053050 - bl sub_8053570 - bl warp_in - pop {r0} - bx r0 - .align 2, 0 -_08052F88: .4byte gUnknown_0819FC74 -_08052F8C: .4byte gSaveBlock1 - thumb_func_end sub_8052F5C - - thumb_func_start flag_var_implications_of_teleport_ -flag_var_implications_of_teleport_: @ 8052F90 - push {lr} - bl player_avatar_init_params_reset - ldr r0, _08052FB8 - bl FlagReset - ldr r0, _08052FBC - bl FlagReset - ldr r0, _08052FC0 - bl FlagReset - ldr r0, _08052FC4 - bl FlagReset - ldr r0, _08052FC8 - bl FlagReset - pop {r0} - bx r0 - .align 2, 0 -_08052FB8: .4byte 0x0000082b -_08052FBC: .4byte 0x0000082d -_08052FC0: .4byte 0x0000082c -_08052FC4: .4byte 0x00000829 -_08052FC8: .4byte 0x00000828 - thumb_func_end flag_var_implications_of_teleport_ - - thumb_func_start new_game -new_game: @ 8052FCC - push {lr} - bl player_avatar_init_params_reset - ldr r0, _08052FFC - bl FlagReset - ldr r0, _08053000 - bl FlagReset - ldr r0, _08053004 - bl FlagReset - ldr r0, _08053008 - bl FlagReset - ldr r0, _0805300C - bl FlagReset - ldr r0, _08053010 - bl ScriptContext2_RunNewScript - pop {r0} - bx r0 - .align 2, 0 -_08052FFC: .4byte 0x0000082b -_08053000: .4byte 0x0000082d -_08053004: .4byte 0x0000082c -_08053008: .4byte 0x00000829 -_0805300C: .4byte 0x00000828 -_08053010: .4byte gUnknown_0819FC9F - thumb_func_end new_game - - thumb_func_start sub_8053014 -sub_8053014: @ 8053014 - push {lr} - bl player_avatar_init_params_reset - ldr r0, _0805303C - bl FlagReset - ldr r0, _08053040 - bl FlagReset - ldr r0, _08053044 - bl FlagReset - ldr r0, _08053048 - bl FlagReset - ldr r0, _0805304C - bl FlagReset - pop {r0} - bx r0 - .align 2, 0 -_0805303C: .4byte 0x0000082b -_08053040: .4byte 0x0000082d -_08053044: .4byte 0x0000082c -_08053048: .4byte 0x00000829 -_0805304C: .4byte 0x00000828 - thumb_func_end sub_8053014 - - thumb_func_start sub_8053050 -sub_8053050: @ 8053050 - push {lr} - bl player_avatar_init_params_reset - ldr r0, _08053078 - bl FlagReset - ldr r0, _0805307C - bl FlagReset - ldr r0, _08053080 - bl FlagReset - ldr r0, _08053084 - bl FlagReset - ldr r0, _08053088 - bl FlagReset - pop {r0} - bx r0 - .align 2, 0 -_08053078: .4byte 0x0000082b -_0805307C: .4byte 0x0000082d -_08053080: .4byte 0x0000082c -_08053084: .4byte 0x00000829 -_08053088: .4byte 0x00000828 - thumb_func_end sub_8053050 - - thumb_func_start sub_805308C -sub_805308C: @ 805308C - push {lr} - ldr r0, _080530A8 - bl FlagReset - bl sub_8054164 - bl wild_pokemon_reroll - bl mapnumbers_history_shift_sav1_0_2_4_out - bl sub_8134348 - pop {r0} - bx r0 - .align 2, 0 -_080530A8: .4byte 0x0000082c - thumb_func_end sub_805308C - - thumb_func_start sub_80530AC -sub_80530AC: @ 80530AC - push {lr} - ldr r0, _080530C8 - movs r2, 0 - movs r1, 0x31 - ldr r3, _080530CC - adds r0, r3 -_080530B8: - str r2, [r0] - subs r0, 0x4 - subs r1, 0x1 - cmp r1, 0 - bge _080530B8 - pop {r0} - bx r0 - .align 2, 0 -_080530C8: .4byte gSaveBlock1 -_080530CC: .4byte 0x00001604 - thumb_func_end sub_80530AC - - thumb_func_start sav12_xor_increment -sav12_xor_increment: @ 80530D0 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x31 - bhi _08053100 - ldr r0, _080530F4 - lsls r1, 2 - movs r2, 0xAA - lsls r2, 5 - adds r0, r2 - adds r1, r0 - ldr r2, [r1] - ldr r0, _080530F8 - cmp r2, r0 - bhi _080530FC - adds r0, r2, 0x1 - b _080530FE - .align 2, 0 -_080530F4: .4byte gSaveBlock1 -_080530F8: .4byte 0x00fffffe -_080530FC: - ldr r0, _08053104 -_080530FE: - str r0, [r1] -_08053100: - pop {r0} - bx r0 - .align 2, 0 -_08053104: .4byte 0x00ffffff - thumb_func_end sav12_xor_increment - - thumb_func_start sub_8053108 -sub_8053108: @ 8053108 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x31 - bhi _08053128 - ldr r0, _08053124 - lsls r1, 2 - movs r2, 0xAA - lsls r2, 5 - adds r0, r2 - adds r1, r0 - ldr r0, [r1] - b _0805312A - .align 2, 0 -_08053124: .4byte gSaveBlock1 -_08053128: - movs r0, 0 -_0805312A: - pop {r1} - bx r1 - thumb_func_end sub_8053108 - - thumb_func_start sav12_xor_set -sav12_xor_set: @ 8053130 - push {lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x31 - bhi _0805314A - ldr r0, _08053150 - lsls r1, 2 - movs r3, 0xAA - lsls r3, 5 - adds r0, r3 - adds r1, r0 - str r2, [r1] -_0805314A: - pop {r0} - bx r0 - .align 2, 0 -_08053150: .4byte gSaveBlock1 - thumb_func_end sav12_xor_set - - thumb_func_start sub_8053154 -sub_8053154: @ 8053154 - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r4, _0805318C - ldr r2, _08053190 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - ldr r0, _08053194 - ldr r1, [r0, 0x4] - ldr r0, [r1, 0x4] - ldrb r1, [r1] - lsls r2, r1, 1 - adds r2, r1 - lsls r2, 1 - movs r1, 0x80 - lsls r1, 19 - orrs r2, r1 - adds r1, r4, 0 - bl CpuSet - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805318C: .4byte gSaveBlock1 + 0xC20 -_08053190: .4byte 0x05000180 -_08053194: .4byte gMapHeader - thumb_func_end sub_8053154 - - thumb_func_start sub_8053198 -sub_8053198: @ 8053198 - push {lr} - ldr r0, _080531B8 - ldr r0, [r0, 0x4] - ldr r1, [r0, 0x4] - ldr r3, _080531BC - movs r2, 0x3F -_080531A4: - ldr r0, [r1, 0x10] - str r0, [r3, 0x10] - adds r1, 0x18 - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _080531A4 - pop {r0} - bx r0 - .align 2, 0 -_080531B8: .4byte gMapHeader -_080531BC: .4byte gSaveBlock1 + 0xC20 - thumb_func_end sub_8053198 - - thumb_func_start update_saveblock1_field_object_coords -update_saveblock1_field_object_coords: @ 80531C0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - movs r1, 0 - ldr r3, _080531E0 -_080531D2: - ldrb r0, [r3] - cmp r0, r5 - bne _080531E4 - strh r4, [r3, 0x4] - strh r2, [r3, 0x6] - b _080531EC - .align 2, 0 -_080531E0: .4byte gSaveBlock1 + 0xC20 -_080531E4: - adds r3, 0x18 - adds r1, 0x1 - cmp r1, 0x3F - ble _080531D2 -_080531EC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end update_saveblock1_field_object_coords - - thumb_func_start update_saveblock1_field_object_movement_behavior -update_saveblock1_field_object_movement_behavior: @ 80531F4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - movs r3, 0 - ldr r2, _0805320C -_08053202: - ldrb r0, [r2] - cmp r0, r4 - bne _08053210 - strb r1, [r2, 0x9] - b _08053218 - .align 2, 0 -_0805320C: .4byte gSaveBlock1 + 0xC20 -_08053210: - adds r2, 0x18 - adds r3, 0x1 - cmp r3, 0x3F - ble _08053202 -_08053218: - pop {r4} - pop {r0} - bx r0 - thumb_func_end update_saveblock1_field_object_movement_behavior - - thumb_func_start mapdata_load_assets_to_gpu_and_full_redraw -mapdata_load_assets_to_gpu_and_full_redraw: @ 8053220 - push {r4,lr} - bl move_tilemap_camera_to_upper_left_corner - ldr r4, _08053244 - 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 - .align 2, 0 -_08053244: .4byte gMapHeader - thumb_func_end mapdata_load_assets_to_gpu_and_full_redraw - - thumb_func_start get_mapdata_header -get_mapdata_header: @ 8053248 - push {lr} - ldr r0, _08053258 - ldrh r1, [r0, 0x32] - cmp r1, 0 - bne _0805325C - movs r0, 0 - b _08053266 - .align 2, 0 -_08053258: .4byte gSaveBlock1 -_0805325C: - ldr r0, _0805326C - subs r1, 0x1 - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] -_08053266: - pop {r1} - bx r1 - .align 2, 0 -_0805326C: .4byte gMapAttributes - thumb_func_end get_mapdata_header - - thumb_func_start warp_shift -warp_shift: @ 8053270 - ldr r2, _0805329C - ldr r3, _080532A0 - ldr r0, [r3, 0x4] - ldr r1, [r3, 0x8] - str r0, [r2] - str r1, [r2, 0x4] - ldr r0, _080532A4 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r3, 0x4] - str r1, [r3, 0x8] - ldr r2, _080532A8 - ldr r0, _080532AC - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - ldr r2, _080532B0 - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_0805329C: .4byte gUnknown_020297F0 -_080532A0: .4byte gSaveBlock1 -_080532A4: .4byte gUnknown_020297F8 -_080532A8: .4byte gUnknown_02029800 -_080532AC: .4byte gDummyWarpData -_080532B0: .4byte gUnknown_02029808 - thumb_func_end warp_shift - - thumb_func_start warp_set -warp_set: @ 80532B4 - 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 -warp_data_is_not_neg_1: @ 80532D4 - push {lr} - adds r1, r0, 0 - movs r2, 0 - ldrsb r2, [r1, r2] - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - bne _08053308 - movs r0, 0x1 - ldrsb r0, [r1, r0] - cmp r0, r2 - bne _08053308 - movs r2, 0x2 - ldrsb r2, [r1, r2] - cmp r2, r0 - bne _08053308 - movs r0, 0x4 - ldrsh r3, [r1, r0] - cmp r3, r2 - bne _08053308 - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r0, r3 - bne _08053308 - movs r0, 0x1 - b _0805330A -_08053308: - movs r0, 0 -_0805330A: - pop {r1} - bx r1 - thumb_func_end warp_data_is_not_neg_1 - - thumb_func_start get_mapheader_by_bank_and_number -get_mapheader_by_bank_and_number: @ 8053310 - lsls r0, 16 - lsls r1, 16 - ldr r2, _08053324 - lsrs r0, 14 - adds r0, r2 - ldr r0, [r0] - lsrs r1, 14 - adds r1, r0 - ldr r0, [r1] - bx lr - .align 2, 0 -_08053324: .4byte gMapGroups - thumb_func_end get_mapheader_by_bank_and_number - - thumb_func_start warp1_get_mapheader -warp1_get_mapheader: @ 8053328 - push {lr} - ldr r1, _08053348 - 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 - .align 2, 0 -_08053348: .4byte gUnknown_020297F8 - thumb_func_end warp1_get_mapheader - - thumb_func_start set_current_map_header_from_sav1_save_old_name -set_current_map_header_from_sav1_save_old_name: @ 805334C - push {r4-r6,lr} - ldr r5, _08053384 - ldr r4, _08053388 - movs r0, 0x4 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x5 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - adds r1, r5, 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] - ldrh r0, [r5, 0x12] - strh r0, [r4, 0x32] - bl get_mapdata_header - str r0, [r5] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08053384: .4byte gMapHeader -_08053388: .4byte gSaveBlock1 - thumb_func_end set_current_map_header_from_sav1_save_old_name - - thumb_func_start sub_805338C -sub_805338C: @ 805338C - push {r4,r5,lr} - ldr r4, _080533C4 - ldr r1, _080533C8 - 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 - .align 2, 0 -_080533C4: .4byte gMapHeader -_080533C8: .4byte gSaveBlock1 - thumb_func_end sub_805338C - - thumb_func_start sub_80533CC -sub_80533CC: @ 80533CC - push {r4,lr} - ldr r0, _080533FC - movs r1, 0x6 - ldrsb r1, [r0, r1] - adds r3, r0, 0 - cmp r1, 0 - blt _08053404 - movs r1, 0x6 - ldrsb r1, [r3, r1] - ldr r0, _08053400 - ldr r2, [r0, 0x4] - ldrb r0, [r2, 0x1] - cmp r1, r0 - bge _08053404 - ldr r0, [r2, 0x8] - lsls r1, 3 - adds r0, r1, r0 - ldrh r0, [r0] - strh r0, [r3] - ldr r0, [r2, 0x8] - adds r1, r0 - ldrh r0, [r1, 0x2] - b _08053434 - .align 2, 0 -_080533FC: .4byte gSaveBlock1 -_08053400: .4byte gMapHeader -_08053404: - ldrh r2, [r3, 0x8] - movs r1, 0x8 - ldrsh r0, [r3, r1] - cmp r0, 0 - blt _0805341E - ldrh r1, [r3, 0xA] - movs r4, 0xA - ldrsh r0, [r3, r4] - cmp r0, 0 - blt _0805341E - strh r2, [r3] - strh r1, [r3, 0x2] - b _08053436 -_0805341E: - ldr r0, _0805343C - ldr r2, [r0] - ldr r0, [r2] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r3] - ldr r0, [r2, 0x4] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 -_08053434: - strh r0, [r3, 0x2] -_08053436: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805343C: .4byte gMapHeader - thumb_func_end sub_80533CC - - thumb_func_start warp_in -warp_in: @ 8053440 - push {lr} - bl warp_shift - bl set_current_map_header_from_sav1_save_old_name - bl sub_80533CC - pop {r0} - bx r0 - thumb_func_end warp_in - - thumb_func_start warp1_set -warp1_set: @ 8053454 - 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, _0805348C - 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 - .align 2, 0 -_0805348C: .4byte gUnknown_020297F8 - thumb_func_end warp1_set - - thumb_func_start warp1_set_2 -warp1_set_2: @ 8053490 - 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 warp1_set - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end warp1_set_2 - - thumb_func_start saved_warp2_set -saved_warp2_set: @ 80534B0 - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _080534E8 - lsls r1, 24 - asrs r1, 24 - lsls r2, 24 - asrs r2, 24 - lsls r3, 24 - asrs r3, 24 - movs r4, 0x14 - negs r4, r4 - adds r4, r0 - mov r12, r4 - ldrb r4, [r4] - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - mov r5, r12 - movs r4, 0x2 - ldrsb r4, [r5, r4] - str r4, [sp, 0x4] - bl warp_set - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080534E8: .4byte gSaveBlock1 + 0x14 - thumb_func_end saved_warp2_set - - thumb_func_start saved_warp2_set_2 -saved_warp2_set_2: @ 80534EC - push {r4,r5,lr} - sub sp, 0x8 - ldr r4, [sp, 0x14] - ldr r5, [sp, 0x18] - ldr r0, _0805351C - 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 - .align 2, 0 -_0805351C: .4byte gSaveBlock1 + 0x14 - 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: @ 8053520 - ldr r2, _08053530 - ldr r0, _08053534 - ldr r1, [r0, 0x18] - ldr r0, [r0, 0x14] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_08053530: .4byte gUnknown_020297F8 -_08053534: .4byte gSaveBlock1 - thumb_func_end copy_saved_warp2_bank_and_enter_x_to_warp1 - - thumb_func_start sub_8053538 -sub_8053538: @ 8053538 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - bl sub_80FA8CC - adds r4, r0, 0 - cmp r4, 0 - beq _08053566 - 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 warp1_set -_08053566: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8053538 - - thumb_func_start sub_8053570 -sub_8053570: @ 8053570 - ldr r2, _08053580 - ldr r0, _08053584 - ldr r1, [r0, 0x20] - ldr r0, [r0, 0x1C] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_08053580: .4byte gUnknown_020297F8 -_08053584: .4byte gSaveBlock1 - thumb_func_end sub_8053570 - - thumb_func_start sub_8053588 -sub_8053588: @ 8053588 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - bl sub_80FA8CC - adds r5, r0, 0 - cmp r5, 0 - beq _080535B8 - ldr r0, _080535C0 - 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 -_080535B8: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080535C0: .4byte gSaveBlock1 + 0x1C - thumb_func_end sub_8053588 - - thumb_func_start sub_80535C4 -sub_80535C4: @ 80535C4 - 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, _08053634 - 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 _0805362A - adds r0, r5, 0 - bl is_light_level_1_2_3_5_or_6 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0805362A - ldr r1, _08053638 - 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_805363C -_0805362A: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08053634: .4byte gUnknown_020297F8 -_08053638: .4byte gSaveBlock1 - thumb_func_end sub_80535C4 - - thumb_func_start sub_805363C -sub_805363C: @ 805363C - 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, _08053674 - 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 - .align 2, 0 -_08053674: .4byte gSaveBlock1 + 0x24 - thumb_func_end sub_805363C - - thumb_func_start sub_8053678 -sub_8053678: @ 8053678 - ldr r2, _08053688 - ldr r0, _0805368C - ldr r1, [r0, 0x28] - ldr r0, [r0, 0x24] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_08053688: .4byte gUnknown_020297F8 -_0805368C: .4byte gSaveBlock1 - thumb_func_end sub_8053678 - - thumb_func_start sub_8053690 -sub_8053690: @ 8053690 - 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, _080536C8 - 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 - .align 2, 0 -_080536C8: .4byte gUnknown_02029800 - thumb_func_end sub_8053690 - - thumb_func_start warp1_set_to_warp2 -warp1_set_to_warp2: @ 80536CC - ldr r2, _080536DC - ldr r0, _080536E0 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_080536DC: .4byte gUnknown_020297F8 -_080536E0: .4byte gUnknown_02029800 - thumb_func_end warp1_set_to_warp2 - - thumb_func_start sub_80536E4 -sub_80536E4: @ 80536E4 - 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, _0805371C - 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 - .align 2, 0 -_0805371C: .4byte gUnknown_02029808 - thumb_func_end sub_80536E4 - - thumb_func_start sub_8053720 -sub_8053720: @ 8053720 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r4, _08053748 - adds r0, r4, 0 - bl warp_data_is_not_neg_1 - cmp r0, 0x1 - bne _08053754 - ldr r2, _0805374C - ldr r0, _08053750 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r2] - str r1, [r2, 0x4] - b _0805376E - .align 2, 0 -_08053748: .4byte gUnknown_02029808 -_0805374C: .4byte gUnknown_020297F8 -_08053750: .4byte gUnknown_020297F0 -_08053754: - 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 warp1_set -_0805376E: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8053720 - - thumb_func_start sub_8053778 -sub_8053778: @ 8053778 - ldr r2, _08053788 - ldr r0, _0805378C - ldr r1, [r0, 0x10] - ldr r0, [r0, 0xC] - str r0, [r2] - str r1, [r2, 0x4] - bx lr - .align 2, 0 -_08053788: .4byte gUnknown_020297F8 -_0805378C: .4byte gSaveBlock1 - thumb_func_end sub_8053778 - - thumb_func_start unref_sub_8053790 -unref_sub_8053790: @ 8053790 - 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, _080537C8 - 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 - .align 2, 0 -_080537C8: .4byte gSaveBlock1 + 0xC - thumb_func_end unref_sub_8053790 - - thumb_func_start sub_80537CC -sub_80537CC: @ 80537CC - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - bl sub_80FA8CC - adds r5, r0, 0 - cmp r5, 0 - beq _080537FC - ldr r0, _08053804 - 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 -_080537FC: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08053804: .4byte gSaveBlock1 + 0xC - thumb_func_end sub_80537CC - - thumb_func_start gpu_sync_bg_hide -gpu_sync_bg_hide: @ 8053808 - ldr r2, _08053814 - ldr r0, [r2, 0x14] - ldr r1, [r2, 0x18] - str r0, [r2, 0xC] - str r1, [r2, 0x10] - bx lr - .align 2, 0 -_08053814: .4byte gSaveBlock1 - thumb_func_end gpu_sync_bg_hide - - thumb_func_start sub_8053818 -sub_8053818: @ 8053818 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0805382C - ldr r0, [r0, 0xC] - ldr r3, [r0] - ldr r1, [r0, 0x4] - cmp r1, 0 - bne _08053834 - b _08053848 - .align 2, 0 -_0805382C: .4byte gMapHeader -_08053830: - adds r0, r1, 0 - b _0805384A -_08053834: - movs r2, 0 - cmp r2, r3 - bge _08053848 -_0805383A: - ldrb r0, [r1] - cmp r0, r4 - beq _08053830 - adds r2, 0x1 - adds r1, 0xC - cmp r2, r3 - blt _0805383A -_08053848: - movs r0, 0 -_0805384A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8053818 - - thumb_func_start sub_8053850 -sub_8053850: @ 8053850 - 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_8053818 - adds r1, r0, 0 - cmp r1, 0 - beq _08053888 - 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 warp1_set - b _080538A4 -_08053888: - bl mapheader_run_script_with_tag_x6 - ldr r0, _0805389C - bl warp_data_is_not_neg_1 - cmp r0, 0 - beq _080538A0 - movs r0, 0 - b _080538A6 - .align 2, 0 -_0805389C: .4byte gUnknown_02029800 -_080538A0: - bl warp1_set_to_warp2 -_080538A4: - movs r0, 0x1 -_080538A6: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8053850 - - thumb_func_start sub_80538B0 -sub_80538B0: @ 80538B0 - 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_8053850 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80538B0 - - thumb_func_start sub_80538D0 -sub_80538D0: @ 80538D0 - 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_8053850 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80538D0 - - thumb_func_start sub_80538F0 -sub_80538F0: @ 80538F0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsls r1, 24 - lsrs r5, r0, 24 - asrs r0, 24 - lsrs r4, r1, 24 - asrs r1, 24 - movs r3, 0x1 - negs r3, r3 - str r3, [sp] - adds r2, r3, 0 - bl warp1_set - bl sub_8053F0C - bl warp_shift - bl set_current_map_header_from_sav1_save_old_name - bl sub_8053154 - bl sub_806906C - bl wild_pokemon_reroll - bl prev_quest_postbuffer_cursor_backup_reset - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8082BD0 - bl InTrainerHill - bl sub_80806E4 - bl sub_8054164 - bl sub_8053C98 - bl sav1_reset_battle_music_maybe - bl mapheader_run_script_with_tag_x3 - bl not_trainer_hill_battle_pyramid - ldr r4, _08053990 - ldr r0, [r4] - bl sub_8056D38 - ldr r0, [r4] - bl apply_map_tileset2_palette - movs r4, 0x6 -_0805395C: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_807D874 - adds r4, 0x1 - cmp r4, 0xB - ble _0805395C - bl sub_8072ED0 - bl mapnumbers_history_shift_sav1_0_2_4_out - bl sub_8134394 - bl sub_808073C - bl wild_encounter_reset_coro_args - bl mapheader_run_script_with_tag_x5 - bl AddMapNamePopUpWindowTask - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08053990: .4byte gMapHeader - thumb_func_end sub_80538F0 - - thumb_func_start sub_8053994 -sub_8053994: @ 8053994 - push {r4-r6,lr} - adds r6, r0, 0 - bl set_current_map_header_from_sav1_save_old_name - bl sub_8053154 - ldr r4, _08053A2C - 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 r4, r0, 24 - bl sub_806906C - bl wild_pokemon_reroll - bl prev_quest_postbuffer_cursor_backup_reset - ldr r1, _08053A30 - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl sub_8082BD0 - cmp r6, 0x1 - beq _080539E2 - bl InTrainerHill -_080539E2: - bl sub_80806E4 - bl sub_8054164 - cmp r5, 0 - beq _080539F4 - ldr r0, _08053A34 - bl FlagReset -_080539F4: - bl sub_8053C98 - bl sav1_reset_battle_music_maybe - bl mapheader_run_script_with_tag_x3 - bl mapnumbers_history_shift_sav1_0_2_4_out - bl sub_8134348 - bl not_trainer_hill_battle_pyramid - cmp r6, 0x1 - beq _08053A24 - cmp r4, 0 - beq _08053A24 - ldr r1, _08053A38 - ldr r0, [r1] - ldr r1, [r1, 0x4] - bl UpdateTVScreensOnMap - movs r0, 0x1 - bl sub_80BBCCC -_08053A24: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08053A2C: .4byte gMapHeader -_08053A30: .4byte gSaveBlock1 -_08053A34: .4byte 0x00000828 -_08053A38: .4byte gUnknown_03004870 - thumb_func_end sub_8053994 - - thumb_func_start player_avatar_init_params_reset -player_avatar_init_params_reset: @ 8053A3C - ldr r1, _08053A48 - movs r0, 0x1 - strb r0, [r1, 0x1] - strb r0, [r1] - bx lr - .align 2, 0 -_08053A48: .4byte gUnknown_02029810 - 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: @ 8053A4C - push {r4,lr} - bl player_get_direction_lower_nybble - ldr r4, _08053A68 - strb r0, [r4, 0x1] - movs r0, 0x2 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08053A6C - movs r0, 0x2 - b _08053A9E - .align 2, 0 -_08053A68: .4byte gUnknown_02029810 -_08053A6C: - movs r0, 0x4 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08053A7C - movs r0, 0x4 - b _08053A9E -_08053A7C: - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08053A8C - movs r0, 0x8 - b _08053A9E -_08053A8C: - movs r0, 0x10 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08053A9C - movs r0, 0x10 - b _08053A9E -_08053A9C: - movs r0, 0x1 -_08053A9E: - strb r0, [r4] - pop {r4} - pop {r0} - bx r0 - thumb_func_end walkrun_find_lowest_active_bit_in_bitfield - - thumb_func_start sub_8053AA8 -sub_8053AA8: @ 8053AA8 - push {r4-r7,lr} - bl sav1_map_get_light_level - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - bl cur_mapdata_block_role_at_screen_center_acc_to_sav1 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r6, _08053AF4 - adds r0, r6, 0 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8053B00 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08053AF8 - ands r7, r0 - orrs r7, r1 - adds r0, r6, 0 - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_8053B60 - lsls r0, 24 - lsrs r0, 16 - ldr r1, _08053AFC - ands r7, r1 - orrs r7, r0 - str r7, [r6] - adds r0, r6, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08053AF4: .4byte gUnknown_02029810 -_08053AF8: .4byte 0xffffff00 -_08053AFC: .4byte 0xffff00ff - thumb_func_end sub_8053AA8 - - thumb_func_start sub_8053B00 -sub_8053B00: @ 8053B00 - 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 _08053B1C - ldr r0, _08053B24 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08053B56 -_08053B1C: - cmp r4, 0x5 - bne _08053B28 - movs r0, 0x10 - b _08053B58 - .align 2, 0 -_08053B24: .4byte 0x0000082d -_08053B28: - lsls r0, r5, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfableWaterOrUnderwater - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08053B3C - movs r0, 0x8 - b _08053B58 -_08053B3C: - bl sub_8053C44 - cmp r0, 0x1 - bne _08053B56 - ldrb r0, [r6] - cmp r0, 0x2 - bne _08053B4E - movs r0, 0x2 - b _08053B58 -_08053B4E: - cmp r0, 0x4 - bne _08053B56 - movs r0, 0x4 - b _08053B58 -_08053B56: - movs r0, 0x1 -_08053B58: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8053B00 - - thumb_func_start sub_8053B60 -sub_8053B60: @ 8053B60 - 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, _08053BC0 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08053B80 - cmp r5, 0x6 - beq _08053BE0 -_08053B80: - lsls r4, 24 - lsrs r5, r4, 24 - adds r0, r5, 0 - bl sub_8056F24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08053BBC - adds r0, r5, 0 - bl sub_8056F08 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08053C16 - adds r0, r5, 0 - bl sub_8056EAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08053C16 - adds r0, r5, 0 - bl MetatileBehavior_IsSouthArrowWarp - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08053BC4 -_08053BBC: - movs r0, 0x2 - b _08053C1C - .align 2, 0 -_08053BC0: .4byte 0x0000082d -_08053BC4: - adds r0, r5, 0 - bl MetatileBehavior_IsNorthArrowWarp - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08053C16 - adds r0, r5, 0 - bl MetatileBehavior_IsWestArrowWarp - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08053BE4 -_08053BE0: - movs r0, 0x4 - b _08053C1C -_08053BE4: - adds r0, r5, 0 - bl MetatileBehavior_IsEastArrowWarp - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08053BF6 - movs r0, 0x3 - b _08053C1C -_08053BF6: - ldrb r0, [r6] - cmp r0, 0x10 - bne _08053C00 - cmp r7, 0x8 - beq _08053C1A -_08053C00: - cmp r0, 0x8 - bne _08053C08 - cmp r7, 0x10 - beq _08053C1A -_08053C08: - lsrs r0, r4, 24 - bl MetatileBehavior_IsLadder - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08053C1A -_08053C16: - movs r0, 0x1 - b _08053C1C -_08053C1A: - ldrb r0, [r6, 0x1] -_08053C1C: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8053B60 - - thumb_func_start cur_mapdata_block_role_at_screen_center_acc_to_sav1 -cur_mapdata_block_role_at_screen_center_acc_to_sav1: @ 8053C24 - push {lr} - ldr r1, _08053C40 - 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 - .align 2, 0 -_08053C40: .4byte gSaveBlock1 - thumb_func_end cur_mapdata_block_role_at_screen_center_acc_to_sav1 - - thumb_func_start sub_8053C44 -sub_8053C44: @ 8053C44 - push {lr} - ldr r0, _08053C80 - movs r1, 0x4 - ldrsb r1, [r0, r1] - adds r2, r0, 0 - cmp r1, 0x1D - bne _08053C5E - ldrb r0, [r2, 0x5] - subs r0, 0xB - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08053C7C -_08053C5E: - ldr r0, _08053C84 - ldrb r0, [r0, 0x17] - cmp r0, 0x8 - beq _08053C90 - cmp r0, 0x9 - beq _08053C90 - cmp r0, 0x5 - beq _08053C90 - ldrh r1, [r2, 0x4] - ldr r0, _08053C88 - cmp r1, r0 - beq _08053C90 - ldr r0, _08053C8C - cmp r1, r0 - beq _08053C90 -_08053C7C: - movs r0, 0x1 - b _08053C92 - .align 2, 0 -_08053C80: .4byte gSaveBlock1 -_08053C84: .4byte gMapHeader -_08053C88: .4byte 0x00002418 -_08053C8C: .4byte 0x00002a18 -_08053C90: - movs r0, 0 -_08053C92: - pop {r1} - bx r1 - thumb_func_end sub_8053C44 - - thumb_func_start sub_8053C98 -sub_8053C98: @ 8053C98 - push {lr} - ldr r0, _08053CA8 - ldrb r1, [r0, 0x15] - cmp r1, 0 - bne _08053CB0 - ldr r0, _08053CAC - b _08053CD2 - .align 2, 0 -_08053CA8: .4byte gMapHeader -_08053CAC: .4byte gSaveBlock1 -_08053CB0: - ldr r0, _08053CC4 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08053CCC - ldr r0, _08053CC8 - adds r0, 0x30 - movs r1, 0x1 - b _08053CD4 - .align 2, 0 -_08053CC4: .4byte 0x00000828 -_08053CC8: .4byte gSaveBlock1 -_08053CCC: - ldr r0, _08053CDC - ldr r1, _08053CE0 - ldr r1, [r1] -_08053CD2: - adds r0, 0x30 -_08053CD4: - strb r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08053CDC: .4byte gSaveBlock1 -_08053CE0: .4byte gUnknown_0839ACE8 - thumb_func_end sub_8053C98 - - thumb_func_start sub_8053CE4 -sub_8053CE4: @ 8053CE4 - push {lr} - adds r1, r0, 0 - cmp r1, 0 - blt _08053CF4 - ldr r0, _08053D00 - ldr r0, [r0] - cmp r1, r0 - ble _08053CF6 -_08053CF4: - movs r1, 0 -_08053CF6: - ldr r0, _08053D04 - adds r0, 0x30 - strb r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08053D00: .4byte gUnknown_0839ACE8 -_08053D04: .4byte gSaveBlock1 - thumb_func_end sub_8053CE4 - - thumb_func_start sav1_get_flash_used_on_map -sav1_get_flash_used_on_map: @ 8053D08 - ldr r0, _08053D10 - adds r0, 0x30 - ldrb r0, [r0] - bx lr - .align 2, 0 -_08053D10: .4byte gSaveBlock1 - thumb_func_end sav1_get_flash_used_on_map - - thumb_func_start sub_8053D14 -sub_8053D14: @ 8053D14 - push {lr} - ldr r1, _08053D28 - strh r0, [r1, 0x32] - bl get_mapdata_header - ldr r1, _08053D2C - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08053D28: .4byte gSaveBlock1 -_08053D2C: .4byte gMapHeader - thumb_func_end sub_8053D14 - - thumb_func_start sub_8053D30 -sub_8053D30: @ 8053D30 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08053D60 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08053D64 - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0 - bne _08053D64 - movs r0, 0x1 - ldrsb r0, [r4, r0] - cmp r0, 0x5 - blt _08053D64 - cmp r0, 0x8 - ble _08053D5C - cmp r0, 0x2B - bgt _08053D64 - cmp r0, 0x27 - blt _08053D64 -_08053D5C: - movs r0, 0x1 - b _08053D66 - .align 2, 0 -_08053D60: .4byte 0x0000082a -_08053D64: - movs r0, 0 -_08053D66: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8053D30 - - thumb_func_start sub_8053D6C -sub_8053D6C: @ 8053D6C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08053D90 - bl VarGet - lsls r0, 16 - cmp r0, 0 - bne _08053D8A - movs r0, 0 - ldrsb r0, [r4, r0] - cmp r0, 0x20 - bne _08053D8A - ldrb r0, [r4, 0x1] - cmp r0, 0x1 - bls _08053D94 -_08053D8A: - movs r0, 0 - b _08053D96 - .align 2, 0 -_08053D90: .4byte 0x000040b3 -_08053D94: - movs r0, 0x1 -_08053D96: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8053D6C - - thumb_func_start sub_8053D9C -sub_8053D9C: @ 8053D9C - push {r4,lr} - adds r4, r0, 0 - bl sub_8053D30 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _08053DB2 - .ifdef SAPPHIRE - ldr r0, _sub_8053D9C_LegendaryMusic - .else - movs r0, 0xDE - lsls r0, 1 - .endif - b _08053DDC - .ifdef SAPPHIRE - .align 2, 0 -_sub_8053D9C_LegendaryMusic: .4byte 443 @ OOAME (Kyogre's Heavy Rain theme) - .endif -_08053DB2: - adds r0, r4, 0 - bl sub_8053D6C - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _08053DD8 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ldrsb r1, [r4, r1] - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - ldrh r0, [r0, 0x10] - b _08053DDC -_08053DD8: - movs r0, 0xCB - lsls r0, 1 -_08053DDC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8053D9C - - thumb_func_start sav1_map_get_music -sav1_map_get_music: @ 8053DE4 - push {r4,lr} - ldr r0, _08053E04 - ldrh r1, [r0, 0x4] - movs r0, 0xD0 - lsls r0, 5 - cmp r1, r0 - bne _08053E0C - bl sav1_get_weather_probably - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8 - bne _08053E0C - ldr r0, _08053E08 - b _08053E40 - .align 2, 0 -_08053E04: .4byte gSaveBlock1 -_08053E08: .4byte 0x00000199 -_08053E0C: - ldr r4, _08053E24 - adds r0, r4, 0 - bl sub_8053D9C - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _08053E28 - cmp r1, r0 - beq _08053E2C - adds r0, r1, 0 - b _08053E40 - .align 2, 0 -_08053E24: .4byte gSaveBlock1 + 0x4 -_08053E28: .4byte 0x00007fff -_08053E2C: - subs r0, r4, 0x4 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x17 - ble _08053E3C - movs r0, 0xC9 - lsls r0, 1 - b _08053E40 -_08053E3C: - movs r0, 0xB4 - lsls r0, 1 -_08053E40: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sav1_map_get_music - - thumb_func_start warp1_target_get_music -warp1_target_get_music: @ 8053E48 - push {lr} - ldr r0, _08053E60 - bl sub_8053D9C - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _08053E64 - cmp r1, r0 - beq _08053E68 - adds r0, r1, 0 - b _08053E80 - .align 2, 0 -_08053E60: .4byte gUnknown_020297F8 -_08053E64: .4byte 0x00007fff -_08053E68: - ldr r0, _08053E78 - ldrh r1, [r0, 0x4] - movs r0, 0x80 - lsls r0, 2 - cmp r1, r0 - beq _08053E7C - subs r0, 0x6E - b _08053E80 - .align 2, 0 -_08053E78: .4byte gSaveBlock1 -_08053E7C: - movs r0, 0xB4 - lsls r0, 1 -_08053E80: - pop {r1} - bx r1 - thumb_func_end warp1_target_get_music - - thumb_func_start call_map_music_set_to_zero -call_map_music_set_to_zero: @ 8053E84 - push {lr} - bl ResetMapMusic - pop {r0} - bx r0 - thumb_func_end call_map_music_set_to_zero - - thumb_func_start sub_8053E90 -sub_8053E90: @ 8053E90 - push {r4,lr} - bl sav1_map_get_music - lsls r0, 16 - lsrs r4, r0, 16 - .ifdef SAPPHIRE - ldr r0, _sub_8053E90_LegendaryMusic - .else - movs r0, 0xDE - lsls r0, 1 - .endif - cmp r4, r0 - beq _08053ED6 - ldr r1, _08053EB0 - ldrh r0, [r1, 0x2C] - cmp r0, 0 - beq _08053EB4 - adds r4, r0, 0 - b _08053ED6 - .align 2, 0 - .ifdef SAPPHIRE -_sub_8053E90_LegendaryMusic: .4byte 443 @ OOAME (Kyogre's Heavy Rain theme) - .endif -_08053EB0: .4byte gSaveBlock1 -_08053EB4: - bl sav1_map_get_light_level - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _08053EC8 - ldr r4, _08053EC4 - b _08053ED6 - .align 2, 0 -_08053EC4: .4byte 0x0000019b -_08053EC8: - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08053ED6 - ldr r4, _08053EF0 -_08053ED6: - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - cmp r4, r0 - beq _08053EE8 - adds r0, r4, 0 - bl PlayNewMapMusic -_08053EE8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08053EF0: .4byte 0x0000016d - thumb_func_end sub_8053E90 - - thumb_func_start sav1_set_battle_music_maybe -sav1_set_battle_music_maybe: @ 8053EF4 - ldr r1, _08053EFC - strh r0, [r1, 0x2C] - bx lr - .align 2, 0 -_08053EFC: .4byte gSaveBlock1 - thumb_func_end sav1_set_battle_music_maybe - - thumb_func_start sav1_reset_battle_music_maybe -sav1_reset_battle_music_maybe: @ 8053F00 - ldr r1, _08053F08 - movs r0, 0 - strh r0, [r1, 0x2C] - bx lr - .align 2, 0 -_08053F08: .4byte gSaveBlock1 - thumb_func_end sav1_reset_battle_music_maybe - - thumb_func_start sub_8053F0C -sub_8053F0C: @ 8053F0C - push {r4-r6,lr} - ldr r0, _08053F6C - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08053F7C - bl warp1_target_get_music - lsls r0, 16 - lsrs r5, r0, 16 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r4, r0, 16 - .ifdef SAPPHIRE - ldr r0, _sub_8053F0C_LegendaryMusic - .else - movs r0, 0xDE - lsls r0, 1 - .endif - cmp r5, r0 - beq _08053F4E - .ifdef SAPPHIRE - subs r0, 0x20 - .else - subs r0, 0x21 - .endif - cmp r4, r0 - beq _08053F7C - ldr r6, _08053F70 - cmp r4, r6 - beq _08053F7C - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08053F4E - adds r5, r6, 0 -_08053F4E: - cmp r5, r4 - beq _08053F7C - movs r0, 0x6 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _08053F74 - adds r0, r5, 0 - movs r1, 0x4 - movs r2, 0x4 - bl FadeOutAndFadeInNewMapMusic - b _08053F7C - .align 2, 0 -_08053F6C: .4byte 0x00004001 - .ifdef SAPPHIRE -_sub_8053F0C_LegendaryMusic: .4byte 443 @ OOAME (Kyogre's Heavy Rain theme) - .endif -_08053F70: .4byte 0x0000016d -_08053F74: - adds r0, r5, 0 - movs r1, 0x8 - bl FadeOutAndPlayNewMapMusic -_08053F7C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8053F0C - - thumb_func_start sub_8053F84 -sub_8053F84: @ 8053F84 - 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 _08053FAA - bl sav1_map_get_music - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x8 - bl FadeOutAndPlayNewMapMusic -_08053FAA: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8053F84 - - thumb_func_start sub_8053FB0 -sub_8053FB0: @ 8053FB0 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r4 - beq _08053FD2 - .ifdef SAPPHIRE - ldr r0, _sub_8053FB0_LegendaryMusic - .else - movs r0, 0xDE - lsls r0, 1 - .endif - cmp r1, r0 - beq _08053FD2 - adds r0, r4, 0 - movs r1, 0x8 - bl FadeOutAndPlayNewMapMusic -_08053FD2: - pop {r4} - pop {r0} - bx r0 - .ifdef SAPPHIRE - .align 2, 0 -_sub_8053FB0_LegendaryMusic: .4byte 443 @ OOAME (Kyogre's Heavy Rain theme) - .endif - thumb_func_end sub_8053FB0 - - thumb_func_start is_warp1_light_level_8_or_9 -is_warp1_light_level_8_or_9: @ 8053FD8 - 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 _08053FF0 - movs r0, 0x4 - b _08053FF2 -_08053FF0: - movs r0, 0x2 -_08053FF2: - pop {r1} - bx r1 - thumb_func_end is_warp1_light_level_8_or_9 - - thumb_func_start sub_8053FF8 -sub_8053FF8: @ 8053FF8 - push {r4,lr} - bl warp1_target_get_music - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _08054030 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08054028 - bl GetCurrentMapMusic - lsls r0, 16 - lsrs r0, 16 - cmp r4, r0 - beq _08054028 - bl is_warp1_light_level_8_or_9 - lsls r0, 24 - lsrs r0, 24 - bl FadeOutMapMusic -_08054028: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08054030: .4byte 0x00004001 - thumb_func_end sub_8053FF8 - - thumb_func_start sub_8054034 -sub_8054034: @ 8054034 - push {lr} - bl IsNotWaitingForBGMStop - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8054034 - - thumb_func_start sub_8054044 -sub_8054044: @ 8054044 - push {lr} - movs r0, 0x4 - bl FadeOutMapMusic - pop {r0} - bx r0 - thumb_func_end sub_8054044 - - thumb_func_start sub_8054050 -sub_8054050: @ 8054050 - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - ldr r0, _080540C8 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08054084 - 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 _080540C0 -_08054084: - 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, _080540CC - ldrh r0, [r0] - lsls r4, 24 - asrs r4, 24 - lsls r2, 24 - asrs r2, 24 - adds r1, r4, 0 - movs r3, 0x1 - bl PlayCry2 -_080540C0: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080540C8: .4byte gUnknown_02029816 -_080540CC: .4byte gUnknown_02029814 - thumb_func_end sub_8054050 - - thumb_func_start sub_80540D0 -sub_80540D0: @ 80540D0 - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - movs r1, 0 - ldrsh r0, [r6, r1] - cmp r0, 0x4 - bhi _0805415E - lsls r0, 2 - ldr r1, _080540E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080540E8: .4byte _080540EC - .align 2, 0 -_080540EC: - .4byte _08054100 - .4byte _08054114 - .4byte _08054130 - .4byte _0805414A - .4byte _0805415E -_08054100: - ldr r0, _0805410C - ldrh r0, [r0] - cmp r0, 0 - bne _08054110 - movs r0, 0x4 - b _0805415C - .align 2, 0 -_0805410C: .4byte gUnknown_02029814 -_08054110: - movs r0, 0x1 - b _0805415C -_08054114: - 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, [r5] - movs r0, 0x3 - b _0805415C -_08054130: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r4, 0x96 - lsls r4, 3 - adds r1, r4, 0 - bl __umodsi3 - adds r0, r4 - strh r0, [r5] - movs r0, 0x3 - b _0805415C -_0805414A: - ldrh r0, [r5] - subs r0, 0x1 - strh r0, [r5] - lsls r0, 16 - cmp r0, 0 - bne _0805415E - bl sub_8054050 - movs r0, 0x2 -_0805415C: - strh r0, [r6] -_0805415E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80540D0 - - thumb_func_start sub_8054164 -sub_8054164: @ 8054164 - push {lr} - ldr r0, _08054188 - ldrh r1, [r0, 0x4] - movs r0, 0xB4 - lsls r0, 6 - cmp r1, r0 - bne _08054190 - bl sub_810D32C - lsls r0, 24 - cmp r0, 0 - bne _08054190 - ldr r1, _0805418C - movs r0, 0x1 - strb r0, [r1] - bl sub_8085514 - b _08054196 - .align 2, 0 -_08054188: .4byte gSaveBlock1 -_0805418C: .4byte gUnknown_02029816 -_08054190: - ldr r0, _080541A0 - bl wild_pokemon_rand_for_map -_08054196: - ldr r1, _080541A4 - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080541A0: .4byte gUnknown_02029816 -_080541A4: .4byte gUnknown_02029814 - thumb_func_end sub_8054164 - - thumb_func_start get_map_light_level_by_bank_and_number -get_map_light_level_by_bank_and_number: @ 80541A8 - push {lr} - lsls r0, 24 - asrs r0, 8 - lsrs r0, 16 - lsls r1, 24 - asrs r1, 8 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - ldrb r0, [r0, 0x17] - pop {r1} - bx r1 - thumb_func_end get_map_light_level_by_bank_and_number - - thumb_func_start get_map_light_level_from_warp -get_map_light_level_from_warp: @ 80541C0 - push {lr} - movs r2, 0 - ldrsb r2, [r0, r2] - movs r1, 0x1 - ldrsb r1, [r0, r1] - adds r0, r2, 0 - bl get_map_light_level_by_bank_and_number - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end get_map_light_level_from_warp - - thumb_func_start sav1_map_get_light_level -sav1_map_get_light_level: @ 80541D8 - push {lr} - ldr r0, _080541E8 - bl get_map_light_level_from_warp - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080541E8: .4byte gSaveBlock1 + 0x4 - thumb_func_end sav1_map_get_light_level - - thumb_func_start get_map_light_from_warp0 -get_map_light_from_warp0: @ 80541EC - push {lr} - ldr r0, _080541FC - bl get_map_light_level_from_warp - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080541FC: .4byte gUnknown_020297F0 - 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: @ 8054200 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0805421A - cmp r0, 0x1 - beq _0805421A - cmp r0, 0x5 - beq _0805421A - cmp r0, 0x2 - beq _0805421A - cmp r0, 0x6 - bne _0805421E -_0805421A: - movs r0, 0x1 - b _08054220 -_0805421E: - movs r0, 0 -_08054220: - pop {r1} - bx r1 - thumb_func_end is_light_level_1_2_3_5_or_6 - - thumb_func_start is_light_level_1_2_3_or_6 -is_light_level_1_2_3_or_6: @ 8054224 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0805423A - cmp r0, 0x1 - beq _0805423A - cmp r0, 0x6 - beq _0805423A - cmp r0, 0x2 - bne _0805423E -_0805423A: - movs r0, 0x1 - b _08054240 -_0805423E: - movs r0, 0 -_08054240: - pop {r1} - bx r1 - thumb_func_end is_light_level_1_2_3_or_6 - - thumb_func_start is_light_level_8_or_9 -is_light_level_8_or_9: @ 8054244 - push {lr} - lsls r0, 24 - movs r1, 0xF8 - lsls r1, 24 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x1 - bls _08054258 - movs r0, 0 - b _0805425A -_08054258: - movs r0, 0x1 -_0805425A: - pop {r1} - bx r1 - thumb_func_end is_light_level_8_or_9 - - thumb_func_start unref_sub_8054260 -unref_sub_8054260: @ 8054260 - push {lr} - ldr r1, _08054280 - movs r0, 0x14 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x15] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - ldrb r0, [r0, 0x14] - pop {r1} - bx r1 - .align 2, 0 -_08054280: .4byte gSaveBlock1 - thumb_func_end unref_sub_8054260 - - thumb_func_start sav1_map_get_name -sav1_map_get_name: @ 8054284 - push {lr} - ldr r1, _080542A4 - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - ldrb r0, [r0, 0x14] - pop {r1} - bx r1 - .align 2, 0 -_080542A4: .4byte gSaveBlock1 - thumb_func_end sav1_map_get_name - - thumb_func_start sav1_map_get_battletype -sav1_map_get_battletype: @ 80542A8 - push {lr} - ldr r1, _080542C8 - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl get_mapheader_by_bank_and_number - ldrb r0, [r0, 0x1B] - pop {r1} - bx r1 - .align 2, 0 -_080542C8: .4byte gSaveBlock1 - thumb_func_end sav1_map_get_battletype - - thumb_func_start ResetSafariZoneFlag_ -ResetSafariZoneFlag_: @ 80542CC - push {lr} - bl ResetSafariZoneFlag - pop {r0} - bx r0 - thumb_func_end ResetSafariZoneFlag_ - - thumb_func_start is_c1_link_related_active -is_c1_link_related_active: @ 80542D8 - push {lr} - ldr r0, _080542E8 - ldr r1, [r0] - ldr r0, _080542EC - cmp r1, r0 - beq _080542F0 - movs r0, 0 - b _080542F2 - .align 2, 0 -_080542E8: .4byte gMain -_080542EC: .4byte sub_8055354 -_080542F0: - movs r0, 0x1 -_080542F2: - pop {r1} - bx r1 - thumb_func_end is_c1_link_related_active - - thumb_func_start c1_overworld_normal -c1_overworld_normal: @ 80542F8 - 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_8059204 - mov r6, sp - mov r0, sp - bl sub_8067EEC - 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 _08054346 - mov r0, sp - bl sub_8068024 - cmp r0, 0x1 - bne _0805433C - bl ScriptContext2_Enable - bl HideMapNamePopUpWindow - b _08054346 -_0805433C: - ldrb r0, [r6, 0x2] - adds r1, r5, 0 - adds r2, r4, 0 - bl player_step -_08054346: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end c1_overworld_normal - - thumb_func_start c1_overworld -c1_overworld: @ 8054350 - push {lr} - ldr r2, _08054368 - ldr r1, [r2, 0x4] - ldr r0, _0805436C - cmp r1, r0 - bne _08054364 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x2C] - bl c1_overworld_normal -_08054364: - pop {r0} - bx r0 - .align 2, 0 -_08054368: .4byte gMain -_0805436C: .4byte c2_overworld - thumb_func_end c1_overworld - - thumb_func_start c2_overworld_basic -c2_overworld_basic: @ 8054370 - push {lr} - bl ScriptContext2_RunScript - bl RunTasks - bl AnimateSprites - bl CameraUpdate - bl UpdateCameraPanning - bl BuildOamBuffer - bl UpdatePaletteFade - bl sub_8072EDC - pop {r0} - bx r0 - thumb_func_end c2_overworld_basic - - thumb_func_start sub_8054398 -sub_8054398: @ 8054398 - push {lr} - bl c2_overworld_basic - pop {r0} - bx r0 - thumb_func_end sub_8054398 - - thumb_func_start c2_overworld -c2_overworld: @ 80543A4 - push {r4,lr} - ldr r0, _080543CC - ldrb r0, [r0, 0x7] - lsrs r0, 7 - adds r4, r0, 0 - cmp r4, 0 - beq _080543B8 - movs r0, 0 - bl SetVBlankCallback -_080543B8: - bl c2_overworld_basic - cmp r4, 0 - beq _080543C4 - bl SetFieldVBlankCallback -_080543C4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080543CC: .4byte gPaletteFade - thumb_func_end c2_overworld - - thumb_func_start set_callback1 -set_callback1: @ 80543D0 - ldr r1, _080543D8 - str r0, [r1] - bx lr - .align 2, 0 -_080543D8: .4byte gMain - thumb_func_end set_callback1 - - thumb_func_start sub_80543DC -sub_80543DC: @ 80543DC - ldr r1, _080543E4 - str r0, [r1] - bx lr - .align 2, 0 -_080543E4: .4byte gUnknown_03000584 - thumb_func_end sub_80543DC - - thumb_func_start sub_80543E8 -sub_80543E8: @ 80543E8 - push {lr} - ldr r0, _080543F8 - ldr r0, [r0] - cmp r0, 0 - beq _080543FC - bl _call_via_r0 - b _08054400 - .align 2, 0 -_080543F8: .4byte gUnknown_0300485C -_080543FC: - bl mapldr_default -_08054400: - ldr r1, _0805440C - movs r0, 0 - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0805440C: .4byte gUnknown_0300485C - thumb_func_end sub_80543E8 - - thumb_func_start CB2_NewGame -CB2_NewGame: @ 8054410 - push {lr} - bl FieldClearVBlankHBlankCallbacks - bl StopMapMusic - bl ResetSafariZoneFlag_ - bl NewGameInitData - bl player_avatar_init_params_reset - bl PlayTimeCounter_Start - bl ScriptContext1_Init - bl ScriptContext2_Disable - ldr r1, _08054454 - ldr r0, _08054458 - str r0, [r1] - ldr r0, _0805445C - bl do_load_map_stuff_loop - bl SetFieldVBlankCallback - ldr r0, _08054460 - bl set_callback1 - ldr r0, _08054464 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08054454: .4byte gUnknown_0300485C -_08054458: .4byte sub_80C76A0 -_0805445C: .4byte gMain + 0x43C -_08054460: .4byte c1_overworld -_08054464: .4byte c2_overworld - thumb_func_end CB2_NewGame - - thumb_func_start c2_whiteout -c2_whiteout: @ 8054468 - push {lr} - sub sp, 0x4 - ldr r1, _080544C4 - ldr r0, _080544C8 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - bls _080544BE - bl FieldClearVBlankHBlankCallbacks - bl StopMapMusic - bl ResetSafariZoneFlag_ - bl sub_8052F5C - bl player_avatar_init_params_reset - bl ScriptContext1_Init - bl ScriptContext2_Disable - ldr r1, _080544CC - ldr r0, _080544D0 - 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, _080544D4 - bl set_callback1 - ldr r0, _080544D8 - bl SetMainCallback2 -_080544BE: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080544C4: .4byte gMain -_080544C8: .4byte 0x0000043c -_080544CC: .4byte gUnknown_0300485C -_080544D0: .4byte sub_8080B60 -_080544D4: .4byte c1_overworld -_080544D8: .4byte c2_overworld - thumb_func_end c2_whiteout - - thumb_func_start CB2_LoadMap -CB2_LoadMap: @ 80544DC - push {lr} - bl FieldClearVBlankHBlankCallbacks - bl ScriptContext1_Init - bl ScriptContext2_Disable - movs r0, 0 - bl set_callback1 - ldr r0, _08054500 - bl SetMainCallback2 - ldr r1, _08054504 - ldr r0, _08054508 - str r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_08054500: .4byte sub_810CC80 -_08054504: .4byte gMain -_08054508: .4byte CB2_LoadMap2 - thumb_func_end CB2_LoadMap - - thumb_func_start CB2_LoadMap2 -CB2_LoadMap2: @ 805450C - push {lr} - ldr r0, _08054528 - bl do_load_map_stuff_loop - bl SetFieldVBlankCallback - ldr r0, _0805452C - bl set_callback1 - ldr r0, _08054530 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08054528: .4byte gMain + 0x43C -_0805452C: .4byte c1_overworld -_08054530: .4byte c2_overworld - thumb_func_end CB2_LoadMap2 - - thumb_func_start sub_8054534 -sub_8054534: @ 8054534 - push {r4,lr} - ldr r0, _08054578 - ldr r1, _0805457C - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - bne _08054554 - bl FieldClearVBlankHBlankCallbacks - bl ScriptContext1_Init - bl ScriptContext2_Disable - movs r0, 0 - bl set_callback1 -_08054554: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_805493C - cmp r0, 0 - beq _08054570 - bl SetFieldVBlankCallback - ldr r0, _08054580 - bl set_callback1 - ldr r0, _08054584 - bl SetMainCallback2 -_08054570: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08054578: .4byte gMain -_0805457C: .4byte 0x0000043c -_08054580: .4byte c1_overworld -_08054584: .4byte c2_overworld - thumb_func_end sub_8054534 - - thumb_func_start sub_8054588 -sub_8054588: @ 8054588 - push {lr} - bl FieldClearVBlankHBlankCallbacks - ldr r0, _080545A0 - ldr r1, _080545A4 - str r1, [r0] - ldr r0, _080545A8 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_080545A0: .4byte gUnknown_0300485C -_080545A4: .4byte sub_8080AC4 -_080545A8: .4byte c2_80567AC - thumb_func_end sub_8054588 - - thumb_func_start c2_80567AC -c2_80567AC: @ 80545AC - push {lr} - ldr r0, _080545D4 - bl sub_805483C - cmp r0, 0 - beq _080545CE - bl SetFieldVBlankCallback - ldr r0, _080545D8 - bl set_callback1 - ldr r0, _080545DC - bl sub_80543DC - ldr r0, _080545E0 - bl SetMainCallback2 -_080545CE: - pop {r0} - bx r0 - .align 2, 0 -_080545D4: .4byte gMain + 0x43C -_080545D8: .4byte sub_8055354 -_080545DC: .4byte sub_8055390 -_080545E0: .4byte c2_overworld - thumb_func_end c2_80567AC - - thumb_func_start c2_exit_to_overworld_2_switch -c2_exit_to_overworld_2_switch: @ 80545E4 - push {lr} - bl is_c1_link_related_active - cmp r0, 0x1 - bne _080545FC - ldr r0, _080545F8 - bl SetMainCallback2 - b _08054606 - .align 2, 0 -_080545F8: .4byte c2_exit_to_overworld_2_link -_080545FC: - bl FieldClearVBlankHBlankCallbacks - ldr r0, _0805460C - bl SetMainCallback2 -_08054606: - pop {r0} - bx r0 - .align 2, 0 -_0805460C: .4byte c2_exit_to_overworld_2_local - thumb_func_end c2_exit_to_overworld_2_switch - - thumb_func_start c2_exit_to_overworld_2_local -c2_exit_to_overworld_2_local: @ 8054610 - push {lr} - ldr r0, _0805462C - bl sub_8054A4C - cmp r0, 0 - beq _08054626 - bl SetFieldVBlankCallback - ldr r0, _08054630 - bl SetMainCallback2 -_08054626: - pop {r0} - bx r0 - .align 2, 0 -_0805462C: .4byte gMain + 0x43C -_08054630: .4byte c2_overworld - thumb_func_end c2_exit_to_overworld_2_local - - thumb_func_start c2_exit_to_overworld_2_link -c2_exit_to_overworld_2_link: @ 8054634 - push {lr} - bl sub_8055870 - cmp r0, 0 - bne _0805464E - ldr r0, _08054654 - bl sub_8054A9C - cmp r0, 0 - beq _0805464E - ldr r0, _08054658 - bl SetMainCallback2 -_0805464E: - pop {r0} - bx r0 - .align 2, 0 -_08054654: .4byte gMain + 0x43C -_08054658: .4byte c2_overworld - thumb_func_end c2_exit_to_overworld_2_link - - thumb_func_start sub_805465C -sub_805465C: @ 805465C - push {lr} - bl FieldClearVBlankHBlankCallbacks - bl StopMapMusic - bl sub_8054F70 - ldr r0, _0805468C - bl set_callback1 - ldr r0, _08054690 - bl sub_80543DC - ldr r1, _08054694 - ldr r0, _08054698 - str r0, [r1] - bl ScriptContext1_Init - bl ScriptContext2_Disable - bl c2_exit_to_overworld_2_switch - pop {r0} - bx r0 - .align 2, 0 -_0805468C: .4byte sub_8055354 -_08054690: .4byte sub_8055390 -_08054694: .4byte gUnknown_0300485C -_08054698: .4byte sub_8080A3C - thumb_func_end sub_805465C - - thumb_func_start sub_805469C -sub_805469C: @ 805469C - push {lr} - bl FieldClearVBlankHBlankCallbacks - ldr r1, _080546B0 - ldr r0, _080546B4 - str r0, [r1] - bl c2_exit_to_overworld_2_switch - pop {r0} - bx r0 - .align 2, 0 -_080546B0: .4byte gUnknown_0300485C -_080546B4: .4byte atk17_seteffectuser - thumb_func_end sub_805469C - - thumb_func_start sub_80546B8 -sub_80546B8: @ 80546B8 - push {lr} - bl FieldClearVBlankHBlankCallbacks - ldr r1, _080546CC - ldr r0, _080546D0 - str r0, [r1] - bl c2_exit_to_overworld_2_switch - pop {r0} - bx r0 - .align 2, 0 -_080546CC: .4byte gUnknown_0300485C -_080546D0: .4byte sub_80809B0 - thumb_func_end sub_80546B8 - - thumb_func_start c2_exit_to_overworld_1_continue_scripts_restart_music -c2_exit_to_overworld_1_continue_scripts_restart_music: @ 80546D4 - push {lr} - bl FieldClearVBlankHBlankCallbacks - ldr r1, _080546E8 - ldr r0, _080546EC - str r0, [r1] - bl c2_exit_to_overworld_2_switch - pop {r0} - bx r0 - .align 2, 0 -_080546E8: .4byte gUnknown_0300485C -_080546EC: .4byte sub_8080990 - thumb_func_end c2_exit_to_overworld_1_continue_scripts_restart_music - - thumb_func_start sub_80546F0 -sub_80546F0: @ 80546F0 - push {lr} - bl FieldClearVBlankHBlankCallbacks - ldr r1, _08054704 - ldr r0, _08054708 - str r0, [r1] - bl c2_exit_to_overworld_2_switch - pop {r0} - bx r0 - .align 2, 0 -_08054704: .4byte gUnknown_0300485C -_08054708: .4byte sub_8080B60 - thumb_func_end sub_80546F0 - - thumb_func_start sub_805470C -sub_805470C: @ 805470C - push {lr} - ldr r0, _08054730 - ldrb r0, [r0, 0x1A] - cmp r0, 0x1 - bne _08054726 - bl sub_80BBB24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08054726 - bl AddMapNamePopUpWindowTask -_08054726: - bl sub_8080B60 - pop {r0} - bx r0 - .align 2, 0 -_08054730: .4byte gMapHeader - thumb_func_end sub_805470C - - thumb_func_start CB2_ContinueSavedGame -CB2_ContinueSavedGame: @ 8054734 - push {lr} - bl FieldClearVBlankHBlankCallbacks - bl StopMapMusic - bl ResetSafariZoneFlag_ - bl sub_805338C - bl sub_8053198 - bl sub_806451C - bl InTrainerHill - bl sub_805308C - bl sub_8055FC0 - bl PlayTimeCounter_Start - bl ScriptContext1_Init - bl ScriptContext2_Disable - bl sub_80479F8 - cmp r0, 0x1 - bne _08054788 - bl sub_8047A04 - bl sub_8053778 - bl warp_in - ldr r0, _08054784 - bl SetMainCallback2 - b _08054798 - .align 2, 0 -_08054784: .4byte CB2_LoadMap -_08054788: - ldr r0, _0805479C - ldr r1, _080547A0 - str r1, [r0] - ldr r0, _080547A4 - bl set_callback1 - bl c2_exit_to_overworld_2_switch -_08054798: - pop {r0} - bx r0 - .align 2, 0 -_0805479C: .4byte gUnknown_0300485C -_080547A0: .4byte sub_805470C -_080547A4: .4byte c1_overworld - thumb_func_end CB2_ContinueSavedGame - - thumb_func_start FieldClearVBlankHBlankCallbacks -FieldClearVBlankHBlankCallbacks: @ 80547A8 - push {r4,lr} - ldr r4, _080547D8 - ldrh r3, [r4] - movs r0, 0 - strh r0, [r4] - ldr r2, _080547DC - ldrh r1, [r2] - ldr r0, _080547E0 - ands r0, r1 - strh r0, [r2] - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - strh r3, [r4] - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080547D8: .4byte 0x04000208 -_080547DC: .4byte 0x04000200 -_080547E0: .4byte 0x0000fffd - thumb_func_end FieldClearVBlankHBlankCallbacks - - thumb_func_start SetFieldVBlankCallback -SetFieldVBlankCallback: @ 80547E4 - push {lr} - ldr r0, _080547F0 - bl SetVBlankCallback - pop {r0} - bx r0 - .align 2, 0 -_080547F0: .4byte VBlankCB_Field - thumb_func_end SetFieldVBlankCallback - - thumb_func_start VBlankCB_Field -VBlankCB_Field: @ 80547F4 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl sub_8089668 - bl sub_8057A58 - bl TransferPlttBuffer - bl sub_8072E74 - pop {r0} - bx r0 - thumb_func_end VBlankCB_Field - thumb_func_start sub_8054814 sub_8054814: @ 8054814 push {lr} diff --git a/include/fieldmap.h b/include/fieldmap.h index 8154bd387..9a134e65c 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -94,7 +94,10 @@ struct MapHeader u8 cave; u8 weather; u8 light; - u8 filler_18[0x4]; + u8 filler_18; + u8 escapeRope; + u8 flags; + u8 battleType; }; struct MapObject diff --git a/include/main.h b/include/main.h index dda18889a..8ed9c7c7d 100644 --- a/include/main.h +++ b/include/main.h @@ -12,7 +12,7 @@ struct Main MainCallback callback1; MainCallback callback2; - u32 field_8; + MainCallback field_8; IntrCallback vblankCallback; IntrCallback hblankCallback; diff --git a/ld_script.txt b/ld_script.txt index 20353ea96..a1098af51 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -56,6 +56,7 @@ SECTIONS { asm/rom_8040EB4.o(.text); src/play_time.o(.text); src/new_game.o(.text); + src/rom4.o(.text); asm/rom4.o(.text); src/map_obj_80643A4.o(.text); src/field_message_box.o(.text); diff --git a/src/main_menu.c b/src/main_menu.c index 773ac06d8..d3481e3cd 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -478,7 +478,7 @@ void MainMenuPressedA(u8 taskId) DestroyTask(taskId); break; case OPTION: - gMain.field_8 = (u32)sub_80096FC; + gMain.field_8 = sub_80096FC; SetMainCallback2(CB2_InitOptionMenu); DestroyTask(taskId); break; diff --git a/src/rom4.c b/src/rom4.c new file mode 100644 index 000000000..541acd5a6 --- /dev/null +++ b/src/rom4.c @@ -0,0 +1,1319 @@ +#include "global.h" +#include "fieldmap.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "rng.h" +#include "main.h" +#include "palette.h" + +#ifdef SAPPHIRE +#define LEGENDARY_MUSIC BGM_OOAME // Heavy Rain +#else +#define LEGENDARY_MUSIC BGM_HIDERI // Drought +#endif + +struct UnkWarpStruct +{ + s8 mapGroup; + s8 mapNum; + s16 x, y; +}; + +struct UnkTVStruct +{ + u32 tv_field_0; + u32 tv_field_4; +}; + +struct UnkPlayerStruct +{ + u8 player_field_0; + u8 player_field_1; +}; + +struct UnkInputStruct +{ + u8 input_field_0; + u8 input_field_1; + u8 input_field_2; + u8 input_field_3; +}; + +extern struct WarpData gUnknown_020297F0; +extern struct WarpData gUnknown_020297F8; +extern struct WarpData gUnknown_02029800; +extern struct WarpData gUnknown_02029808; +extern struct UnkPlayerStruct gUnknown_02029810; +extern u16 gUnknown_02029814; +extern u8 gUnknown_02029816; + +extern void (*gUnknown_03000584)(void); + +extern void (*gUnknown_0300485C)(void); + +extern struct UnkTVStruct gUnknown_03004870; + +extern u8 gUnknown_0819FC74[]; +extern u8 gUnknown_0819FC9F[]; + +extern struct MapData * const gMapAttributes[]; +extern struct MapHeader * const * const gMapGroups[]; +extern const struct WarpData gDummyWarpData; +extern s32 gUnknown_0839ACE8; + +extern struct UnkWarpStruct *sub_80FA8CC(u8); +extern u16 VarGet(u16); +extern u8 FlagGet(u16); +extern u8 sav1_get_weather_probably(void); +extern void PlayerGetDestCoords(u16 *, u16 *); +extern u8 sub_810D32C(void); +extern u16 wild_pokemon_rand_for_map(u8 *); +extern void sub_80C76A0(void); +extern void sub_8080B60(void); +extern void sub_810CC80(void); +extern void sub_8080AC4(void); +extern void sub_8080A3C(void); +extern void atk17_seteffectuser(void); +extern void sub_80809B0(void); +extern void sub_8080990(void); +extern u8 sub_80BBB24(void); + +void sub_8053050(void); +void warp_in(void); +void sub_8053570(void); +u8 sav1_map_get_light_level(void); +u8 get_map_light_level_by_bank_and_number(s8, s8); +bool8 is_light_level_1_2_3_5_or_6(u8); +void sub_805363C(s8, s8, s8, s8, s8); +void sub_807D874(u8); +void sub_8082BD0(u16, u16); +void player_avatar_init_params_reset(void); +u8 TestPlayerAvatarFlags(u8); +u8 player_get_direction_lower_nybble(void); +u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16, u8); +u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8); +u8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8); +bool8 sub_8056F24(u8); +bool8 sub_8056F08(u8); +bool8 sub_8056EAC(u8); +bool8 MetatileBehavior_IsSouthArrowWarp(u8); +bool8 MetatileBehavior_IsNorthArrowWarp(u8); +bool8 MetatileBehavior_IsWestArrowWarp(u8); +bool8 MetatileBehavior_IsEastArrowWarp(u8); +bool8 MetatileBehavior_IsLadder(u8); +u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void); +bool32 sub_8053C44(void); +void sub_8053C98(void); +void sav1_reset_battle_music_maybe(void); +void sub_8053F0C(void); +u8 is_light_level_8_or_9(u8); +void sub_8054164(void); +u16 sub_8085514(); +u16 wild_pokemon_rand_for_map(u8 *); +void sub_8055354(void); +void c2_overworld(void); +void CB2_LoadMap2(void); +void c2_80567AC(void); +void sub_8055390(void); +void c2_exit_to_overworld_2_link(void); +void c2_exit_to_overworld_2_local(void); +void FieldClearVBlankHBlankCallbacks(void); +void SetFieldVBlankCallback(void); +void VBlankCB_Field(void); + +void sub_8052F5C(void) +{ + ScriptContext2_RunNewScript(gUnknown_0819FC74); + gSaveBlock1.money /= 2; + sp000_heal_pokemon(); + sub_8053050(); + sub_8053570(); + warp_in(); +} + +void flag_var_implications_of_teleport_(void) +{ + player_avatar_init_params_reset(); + FlagReset(2091); + FlagReset(2093); + FlagReset(2092); + FlagReset(2089); + FlagReset(2088); +} + +void new_game(void) +{ + player_avatar_init_params_reset(); + FlagReset(2091); + FlagReset(2093); + FlagReset(2092); + FlagReset(2089); + FlagReset(2088); + ScriptContext2_RunNewScript(gUnknown_0819FC9F); +} + +void sub_8053014(void) +{ + player_avatar_init_params_reset(); + FlagReset(2091); + FlagReset(2093); + FlagReset(2092); + FlagReset(2089); + FlagReset(2088); +} + +void sub_8053050(void) +{ + player_avatar_init_params_reset(); + FlagReset(2091); + FlagReset(2093); + FlagReset(2092); + FlagReset(2089); + FlagReset(2088); +} + +void sub_805308C(void) +{ + FlagReset(2092); + sub_8054164(); + wild_pokemon_reroll(); + mapnumbers_history_shift_sav1_0_2_4_out(); + sub_8134348(); +} + +void sub_80530AC(void) +{ + s32 i; + for (i = 0; i < NUM_GAME_STATS; i++) + gSaveBlock1.gameStats[i] = 0; +} + +void sav12_xor_increment(u8 index) +{ + if (index < NUM_GAME_STATS) + { + if (gSaveBlock1.gameStats[index] < 0xFFFFFF) + gSaveBlock1.gameStats[index]++; + else + gSaveBlock1.gameStats[index] = 0xFFFFFF; + } +} + +u32 sub_8053108(u8 index) +{ + if (index >= NUM_GAME_STATS) + return 0; + + return gSaveBlock1.gameStats[index]; +} + +void sav12_xor_set(u8 index, u32 value) +{ + if (index < NUM_GAME_STATS) + gSaveBlock1.gameStats[index] = value; +} + +void sub_8053154(void) +{ + CpuFill32(0, gSaveBlock1.mapObjectTemplates, sizeof(gSaveBlock1.mapObjectTemplates)); + CpuCopy32(gMapHeader.events->mapObjects, + gSaveBlock1.mapObjectTemplates, + gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate)); +} + +void sub_8053198(void) +{ + struct MapObjectTemplate *mapObjectTemplates = gSaveBlock1.mapObjectTemplates; + s32 i; + for (i = 0; i < 64; i++) + mapObjectTemplates[i].script = gMapHeader.events->mapObjects[i].script; +} + +void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y) +{ + s32 i; + for (i = 0; i < 64; i++) + { + struct MapObjectTemplate *mapObjectTemplate = &gSaveBlock1.mapObjectTemplates[i]; + if (mapObjectTemplate->localId == localId) + { + mapObjectTemplate->x = x; + mapObjectTemplate->y = y; + break; + } + } +} + +void update_saveblock1_field_object_movement_behavior(u8 localId, u8 movementType) +{ + s32 i = 0; + struct MapObjectTemplate *mapObjectTemplate = gSaveBlock1.mapObjectTemplates; + do + { + if (mapObjectTemplate->localId == localId) + { + mapObjectTemplate->movementType = movementType; + break; + } + mapObjectTemplate++; + i++; + } while (i < 64); +} + +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 = gSaveBlock1.mapDataId; + if (mapDataId) + return gMapAttributes[mapDataId - 1]; + return NULL; +} + +void warp_shift(void) +{ + gUnknown_020297F0 = gSaveBlock1.location; + gSaveBlock1.location = gUnknown_020297F8; + gUnknown_02029800 = gDummyWarpData; + gUnknown_02029808 = gDummyWarpData; +} + +void warp_set(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 get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum) +{ + return gMapGroups[mapGroup][mapNum]; +} + +struct MapHeader * const warp1_get_mapheader(void) +{ + return get_mapheader_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum); +} + +void set_current_map_header_from_sav1_save_old_name(void) +{ + struct MapHeader *dest = &gMapHeader; + struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); + *dest = *src; + gSaveBlock1.mapDataId = dest->mapDataId; + dest->mapData = get_mapdata_header(); +} + +void sub_805338C(void) +{ + struct MapHeader *dest = &gMapHeader; + struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); + *dest = *src; + dest->mapData = get_mapdata_header(); +} + +void sub_80533CC(void) +{ + if (gSaveBlock1.location.warpId >= 0 && gSaveBlock1.location.warpId < gMapHeader.events->warpCount) + { + gSaveBlock1.pos.x = gMapHeader.events->warps[gSaveBlock1.location.warpId].x; + gSaveBlock1.pos.y = gMapHeader.events->warps[gSaveBlock1.location.warpId].y; + } + else if (gSaveBlock1.location.x >= 0 && gSaveBlock1.location.y >= 0) + { + gSaveBlock1.pos.x = gSaveBlock1.location.x; + gSaveBlock1.pos.y = gSaveBlock1.location.y; + } + else + { + gSaveBlock1.pos.x = gMapHeader.mapData->width / 2; + gSaveBlock1.pos.y = gMapHeader.mapData->height / 2; + } +} + +void warp_in(void) +{ + warp_shift(); + set_current_map_header_from_sav1_save_old_name(); + sub_80533CC(); +} + +void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + warp_set(&gUnknown_020297F8, mapGroup, mapNum, warpId, x, y); +} + +void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId) +{ + warp1_set(mapGroup, mapNum, warpId, -1, -1); +} + +void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId) +{ + warp_set(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, gSaveBlock1.pos.x, gSaveBlock1.pos.y); +} + +void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + warp_set(&gSaveBlock1.warp2, mapGroup, mapNum, warpId, x, y); +} + +void copy_saved_warp2_bank_and_enter_x_to_warp1(void) +{ + gUnknown_020297F8 = gSaveBlock1.warp2; +} + +void sub_8053538(u8 a1) +{ + struct UnkWarpStruct *warp = sub_80FA8CC(a1); + if (warp) + warp1_set(warp->mapGroup, warp->mapNum, -1, warp->x, warp->y); +} + +void sub_8053570(void) +{ + gUnknown_020297F8 = gSaveBlock1.warp3; +} + +void sub_8053588(u8 a1) +{ + struct UnkWarpStruct *warp = sub_80FA8CC(a1); + if (warp) + warp_set(&gSaveBlock1.warp3, warp->mapGroup, warp->mapNum, -1, warp->x, warp->y); +} + +void sub_80535C4(u16 a1, u16 a2) +{ + u8 v4 = sav1_map_get_light_level(); + u8 v5 = get_map_light_level_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum); + if (is_light_level_1_2_3_5_or_6(v4) && is_light_level_1_2_3_5_or_6(v5) != TRUE) + sub_805363C(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, a1 - 7, a2 - 6); +} + +void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + warp_set(&gSaveBlock1.warp4, mapGroup, mapNum, warpId, x, y); +} + +void sub_8053678(void) +{ + gUnknown_020297F8 = gSaveBlock1.warp4; +} + +void sub_8053690(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + warp_set(&gUnknown_02029800, mapGroup, mapNum, warpId, x, y); +} + +void warp1_set_to_warp2(void) +{ + gUnknown_020297F8 = gUnknown_02029800; +} + +void sub_80536E4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + warp_set(&gUnknown_02029808, mapGroup, mapNum, warpId, x, y); +} + +void sub_8053720(s16 x, s16 y) +{ + if (warp_data_is_not_neg_1(&gUnknown_02029808) == TRUE) + { + gUnknown_020297F8 = gUnknown_020297F0; + } + else + { + warp1_set(gUnknown_02029808.mapGroup, gUnknown_02029808.mapNum, -1, x, y); + } +} + +void sub_8053778(void) +{ + gUnknown_020297F8 = gSaveBlock1.warp1; +} + +void unref_sub_8053790(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y) +{ + warp_set(&gSaveBlock1.warp1, mapGroup, mapNum, warpId, x, y); +} + +void sub_80537CC(u8 a1) +{ + struct UnkWarpStruct *warp = sub_80FA8CC(a1); + if (warp) + warp_set(&gSaveBlock1.warp1, warp->mapGroup, warp->mapNum, -1, warp->x, warp->y); +} + +void gpu_sync_bg_hide(void) +{ + gSaveBlock1.warp1 = gSaveBlock1.warp2; +} + +struct MapConnection *sub_8053818(u8 dir) +{ + s32 i; + s32 count = gMapHeader.connections->count; + struct MapConnection *connection = gMapHeader.connections->connections; + + if (connection == NULL) + return NULL; + + i = 0; + + while (i < count) + { + if (connection->direction == dir) + return connection; + i++; + connection++; + } + + return NULL; +} + +bool8 sub_8053850(u8 dir, u16 x, u16 y) +{ + struct MapConnection *connection = sub_8053818(dir); + if (connection) + { + warp1_set(connection->mapGroup, connection->mapNum, -1, x, y); + } + else + { + mapheader_run_script_with_tag_x6(); + if (warp_data_is_not_neg_1(&gUnknown_02029800)) + return FALSE; + warp1_set_to_warp2(); + } + return TRUE; +} + +bool8 sub_80538B0(u16 x, u16 y) +{ + return sub_8053850(CONNECTION_EMERGE, x, y); +} + +bool8 sub_80538D0(u16 x, u16 y) +{ + return sub_8053850(CONNECTION_DIVE, x, y); +} + +void sub_80538F0(u8 mapGroup, u8 mapNum) +{ + s32 i; + warp1_set(mapGroup, mapNum, -1, -1, -1); + sub_8053F0C(); + warp_shift(); + set_current_map_header_from_sav1_save_old_name(); + sub_8053154(); + sub_806906C(); + wild_pokemon_reroll(); + prev_quest_postbuffer_cursor_backup_reset(); + sub_8082BD0(mapGroup, mapNum); + InTrainerHill(); + sub_80806E4(); + sub_8054164(); + sub_8053C98(); + sav1_reset_battle_music_maybe(); + mapheader_run_script_with_tag_x3(); + not_trainer_hill_battle_pyramid(); + sub_8056D38(gMapHeader.mapData); + apply_map_tileset2_palette(gMapHeader.mapData); + for (i = 6; i < 12; i++) + sub_807D874(i); + sub_8072ED0(); + mapnumbers_history_shift_sav1_0_2_4_out(); + sub_8134394(); + sub_808073C(); + wild_encounter_reset_coro_args(); + mapheader_run_script_with_tag_x5(); + AddMapNamePopUpWindowTask(); +} + +void sub_8053994(u32 a1) +{ + bool8 v2; + bool8 v3; + + set_current_map_header_from_sav1_save_old_name(); + sub_8053154(); + v2 = is_light_level_1_2_3_5_or_6(gMapHeader.light); + v3 = is_light_level_8_or_9(gMapHeader.light); + sub_806906C(); + wild_pokemon_reroll(); + prev_quest_postbuffer_cursor_backup_reset(); + sub_8082BD0(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); + if (a1 != 1) + InTrainerHill(); + sub_80806E4(); + sub_8054164(); + if (v2) + FlagReset(2088); + sub_8053C98(); + sav1_reset_battle_music_maybe(); + mapheader_run_script_with_tag_x3(); + mapnumbers_history_shift_sav1_0_2_4_out(); + sub_8134348(); + not_trainer_hill_battle_pyramid(); + if (a1 != 1 && v3) + { + UpdateTVScreensOnMap(gUnknown_03004870.tv_field_0, gUnknown_03004870.tv_field_4); + sub_80BBCCC(1); + } +} + +void player_avatar_init_params_reset(void) +{ + gUnknown_02029810.player_field_1 = 1; + gUnknown_02029810.player_field_0 = 1; +} + +void walkrun_find_lowest_active_bit_in_bitfield(void) +{ + gUnknown_02029810.player_field_1 = player_get_direction_lower_nybble(); + + if (TestPlayerAvatarFlags(2)) + gUnknown_02029810.player_field_0 = 2; + else if (TestPlayerAvatarFlags(4)) + gUnknown_02029810.player_field_0 = 4; + else if (TestPlayerAvatarFlags(8)) + gUnknown_02029810.player_field_0 = 8; + else if (TestPlayerAvatarFlags(0x10)) + gUnknown_02029810.player_field_0 = 16; + else + gUnknown_02029810.player_field_0 = 1; +} + +struct UnkPlayerStruct *sub_8053AA8(void) +{ + struct UnkPlayerStruct playerStruct; + u8 light = sav1_map_get_light_level(); + u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1(); + u8 v4 = sub_8053B00(&gUnknown_02029810, v2, light); + playerStruct.player_field_0 = v4; + playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, light); + gUnknown_02029810 = playerStruct; + return &gUnknown_02029810; +} + +u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) +{ + if (a3 != 8 && FlagGet(2093)) + return 1; + if (a3 == 5) + return 16; + if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1) + return 8; + if (sub_8053C44() != 1) + return 1; + if (playerStruct->player_field_0 == 2) + return 2; + if (playerStruct->player_field_0 != 4) + return 1; + return 4; +} + +u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) +{ + if (FlagGet(2093) && a4 == 6) + return 4; + if (sub_8056F24(a3) == TRUE) + return 2; + if (sub_8056F08(a3) == TRUE || sub_8056EAC(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(gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7); +} + +bool32 sub_8053C44(void) +{ + if (gSaveBlock1.location.mapGroup == 29 && (gSaveBlock1.location.mapNum == 11 || gSaveBlock1.location.mapNum == 12)) + return TRUE; + if (gMapHeader.light == 8) + return FALSE; + if (gMapHeader.light == 9) + return FALSE; + if (gMapHeader.light == 5) + return FALSE; + if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 36) + return FALSE; + if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 42) + return FALSE; + return TRUE; +} + +void sub_8053C98(void) +{ + if (!gMapHeader.cave) + gSaveBlock1.flashUsed = 0; + else if (FlagGet(2088)) + gSaveBlock1.flashUsed = 1; + else + gSaveBlock1.flashUsed = gUnknown_0839ACE8; +} + +void sub_8053CE4(s32 a1) +{ + if (a1 < 0 || a1 > gUnknown_0839ACE8) + a1 = 0; + gSaveBlock1.flashUsed = a1; +} + +u8 sav1_get_flash_used_on_map() +{ + return gSaveBlock1.flashUsed; +} + +void sub_8053D14(u16 mapDataId) +{ + gSaveBlock1.mapDataId = mapDataId; + gMapHeader.mapData = get_mapdata_header(); +} + +bool16 sub_8053D30(struct WarpData *warp) +{ + if (!FlagGet(2090)) + return FALSE; + if (warp->mapGroup != 0) + return FALSE; + switch (warp->mapNum) + { + case 5: + case 6: + case 7: + case 8: + return TRUE; + case 39: + case 40: + case 41: + case 42: + case 43: + return TRUE; + } + return FALSE; +} + +bool16 sub_8053D6C(struct WarpData *warp) +{ + if (VarGet(16563)) + return FALSE; + if (warp->mapGroup != 32) + return FALSE; + if (warp->mapNum == 0 || warp->mapNum == 1) + return TRUE; + return FALSE; +} + +u16 sub_8053D9C(struct WarpData *warp) +{ + if (sub_8053D30(warp) == TRUE) + return LEGENDARY_MUSIC; + else if (sub_8053D6C(warp) == TRUE) + return BGM_TOZAN; + else + return get_mapheader_by_bank_and_number(warp->mapGroup, warp->mapNum)->music; +} + +u16 sav1_map_get_music(void) +{ + u16 music; + + if (gSaveBlock1.location.mapGroup == 0 + && gSaveBlock1.location.mapNum == 26 + && sav1_get_weather_probably() == 8) + return BGM_ASHROAD; + + music = sub_8053D9C(&gSaveBlock1.location); + if (music != 0x7FFF) + { + return music; + } + else + { + if (gSaveBlock1.pos.x < 24) + return BGM_DOORO_X1; + else + return BGM_GRANROAD; + } +} + +u16 warp1_target_get_music(void) +{ + u16 music = sub_8053D9C(&gUnknown_020297F8); + if (music != 0x7FFF) + { + return music; + } + else + { + if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 2) + return BGM_DOORO_X1; + else + return BGM_GRANROAD; + } +} + +void call_map_music_set_to_zero(void) +{ + ResetMapMusic(); +} + +void sub_8053E90(void) +{ + u16 music = sav1_map_get_music(); + + if (music != LEGENDARY_MUSIC) + { + if (gSaveBlock1.battleMusic) + music = gSaveBlock1.battleMusic; + else if (sav1_map_get_light_level() == 5) + music = BGM_DEEPDEEP; + else if (TestPlayerAvatarFlags(8)) + music = BGM_NAMINORI; + } + + if (music != GetCurrentMapMusic()) + PlayNewMapMusic(music); +} + +void sav1_set_battle_music_maybe(u16 songNum) +{ + gSaveBlock1.battleMusic = songNum; +} + +void sav1_reset_battle_music_maybe(void) +{ + gSaveBlock1.battleMusic = 0; +} + +void sub_8053F0C(void) +{ + if (FlagGet(16385) != TRUE) + { + u16 newMusic = warp1_target_get_music(); + u16 currentMusic = GetCurrentMapMusic(); + if (newMusic != LEGENDARY_MUSIC) + { + if (currentMusic == BGM_DEEPDEEP || currentMusic == BGM_NAMINORI) + return; + if (TestPlayerAvatarFlags(8)) + newMusic = BGM_NAMINORI; + } + if (newMusic != currentMusic) + { + if (TestPlayerAvatarFlags(6)) + FadeOutAndFadeInNewMapMusic(newMusic, 4, 4); + else + FadeOutAndPlayNewMapMusic(newMusic, 8); + } + } +} + +void sub_8053F84(void) +{ + u16 currentMusic = GetCurrentMapMusic(); + if (currentMusic != sav1_map_get_music()) + FadeOutAndPlayNewMapMusic(sav1_map_get_music(), 8); +} + +void sub_8053FB0(u16 music) +{ + u16 currentMusic = GetCurrentMapMusic(); + if (currentMusic != music && currentMusic != LEGENDARY_MUSIC) + FadeOutAndPlayNewMapMusic(music, 8); +} + +u8 is_warp1_light_level_8_or_9(void) +{ + struct MapHeader *mapHeader = warp1_get_mapheader(); + if (is_light_level_8_or_9(mapHeader->light) == TRUE) + return 2; + else + return 4; +} + +void sub_8053FF8(void) +{ + u16 music = warp1_target_get_music(); + if (FlagGet(16385) != TRUE && music != GetCurrentMapMusic()) + { + u8 speed = is_warp1_light_level_8_or_9(); + FadeOutMapMusic(speed); + } +} + +bool8 sub_8054034(void) +{ + return IsNotWaitingForBGMStop(); +} + +void sub_8054044(void) +{ + FadeOutMapMusic(4); +} + +void sub_8054050(void) +{ + s16 x, y; + PlayerGetDestCoords((u16 *)&x, (u16 *)&y); + if (gUnknown_02029816 != 1 + || MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) + { + s8 pan = (Random() % 88) + 212; + s8 volume = (Random() % 30) + 50; + PlayCry2(gUnknown_02029814, pan, volume, 1); + } +} + +void sub_80540D0(s16 *a1, u16 *a2) +{ + switch (*a1) + { + case 0: + if (!gUnknown_02029814) + *a1 = 4; + else + *a1 = 1; + break; + case 1: + *a2 = (Random() % 2400) + 1200; + *a1 = 3; + break; + case 2: + *a2 = (Random() % 1200) + 1200; + *a1 = 3; + break; + case 3: + (*a2)--; + if (*a2 == 0) + { + sub_8054050(); + *a1 = 2; + } + break; + case 4: + break; + } +} + +void sub_8054164(void) +{ + if ((gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 45) && !sub_810D32C()) + { + gUnknown_02029816 = 1; + gUnknown_02029814 = sub_8085514(); + } + else + { + gUnknown_02029814 = wild_pokemon_rand_for_map(&gUnknown_02029816); + } +} + +u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum) +{ + return get_mapheader_by_bank_and_number(mapGroup, mapNum)->light; +} + +u8 get_map_light_level_from_warp(struct WarpData *warp) +{ + return get_map_light_level_by_bank_and_number(warp->mapGroup, warp->mapNum); +} + +u8 sav1_map_get_light_level(void) +{ + return get_map_light_level_from_warp(&gSaveBlock1.location); +} + +u8 get_map_light_from_warp0(void) +{ + return get_map_light_level_from_warp(&gUnknown_020297F0); +} + +bool8 is_light_level_1_2_3_5_or_6(u8 a1) +{ + if (a1 == 3 || a1 == 1 || a1 == 5 || a1 == 2 || a1 == 6) + return TRUE; + else + return FALSE; +} + +bool8 is_light_level_1_2_3_or_6(u8 a1) +{ + if (a1 == 3 || a1 == 1 || a1 == 6 || a1 == 2) + return TRUE; + else + return FALSE; +} + +bool8 is_light_level_8_or_9(u8 a1) +{ + if (a1 == 8 || a1 == 9) + return TRUE; + else + return FALSE; +} + +u8 unref_sub_8054260(void) +{ + return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->name; +} + +u8 sav1_map_get_name(void) +{ + return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->name; +} + +u8 sav1_map_get_battletype(void) +{ + return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType; +} + +void ResetSafariZoneFlag_(void) +{ + ResetSafariZoneFlag(); +} + +bool32 is_c1_link_related_active(void) +{ + if (gMain.callback1 == sub_8055354) + return TRUE; + else + return FALSE; +} + +void c1_overworld_normal(u16 newKeys, u16 heldKeys) +{ + struct UnkInputStruct inputStruct; + sub_8059204(); + sub_8067EEC(&inputStruct); + process_overworld_input(&inputStruct, newKeys, heldKeys); + if (!ScriptContext2_IsEnabled()) + { + if (sub_8068024(&inputStruct) == 1) + { + ScriptContext2_Enable(); + HideMapNamePopUpWindow(); + } + else + { + player_step(inputStruct.input_field_2, newKeys, heldKeys); + } + } +} + +void c1_overworld(void) +{ + if (gMain.callback2 == c2_overworld) + c1_overworld_normal(gMain.newKeys, gMain.heldKeys); +} + +void c2_overworld_basic(void) +{ + ScriptContext2_RunScript(); + RunTasks(); + AnimateSprites(); + CameraUpdate(); + UpdateCameraPanning(); + BuildOamBuffer(); + UpdatePaletteFade(); + sub_8072EDC(); +} + +void sub_8054398(void) +{ + c2_overworld_basic(); +} + +void c2_overworld(void) +{ + int fading = (gPaletteFade.active != 0); + if (fading) + SetVBlankCallback(NULL); + c2_overworld_basic(); + if (fading) + SetFieldVBlankCallback(); +} + +void set_callback1(MainCallback cb) +{ + gMain.callback1 = cb; +} + +void sub_80543DC(void (*a1)(void)) +{ + gUnknown_03000584 = a1; +} + +void sub_80543E8(void) +{ + if (gUnknown_0300485C) + gUnknown_0300485C(); + else + mapldr_default(); + gUnknown_0300485C = NULL; +} + +void CB2_NewGame(void) +{ + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + ResetSafariZoneFlag_(); + NewGameInitData(); + player_avatar_init_params_reset(); + PlayTimeCounter_Start(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + gUnknown_0300485C = sub_80C76A0; + do_load_map_stuff_loop(&gMain.state); + SetFieldVBlankCallback(); + set_callback1(c1_overworld); + SetMainCallback2(c2_overworld); +} + +void c2_whiteout(void) +{ + u8 val; + gMain.state++; + if (gMain.state >= 120) + { + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + ResetSafariZoneFlag_(); + sub_8052F5C(); + player_avatar_init_params_reset(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + gUnknown_0300485C = sub_8080B60; + val = 0; + do_load_map_stuff_loop(&val); + SetFieldVBlankCallback(); + set_callback1(c1_overworld); + SetMainCallback2(c2_overworld); + } +} + +void CB2_LoadMap(void) +{ + FieldClearVBlankHBlankCallbacks(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + set_callback1(NULL); + SetMainCallback2(sub_810CC80); + gMain.field_8 = CB2_LoadMap2; +} + +void CB2_LoadMap2(void) +{ + do_load_map_stuff_loop(&gMain.state); + SetFieldVBlankCallback(); + set_callback1(c1_overworld); + SetMainCallback2(c2_overworld); +} + +void sub_8054534(void) +{ + if (!gMain.state) + { + FieldClearVBlankHBlankCallbacks(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + set_callback1(NULL); + } + if (sub_805493C(&gMain.state, 1)) + { + SetFieldVBlankCallback(); + set_callback1(c1_overworld); + SetMainCallback2(c2_overworld); + } +} + +void sub_8054588(void) +{ + FieldClearVBlankHBlankCallbacks(); + gUnknown_0300485C = sub_8080AC4; + SetMainCallback2(c2_80567AC); +} + +void c2_80567AC(void) +{ + if (sub_805483C(&gMain.state)) + { + SetFieldVBlankCallback(); + set_callback1(sub_8055354); + sub_80543DC(sub_8055390); + SetMainCallback2(c2_overworld); + } +} + +void c2_exit_to_overworld_2_switch(void) +{ + if (is_c1_link_related_active() == TRUE) + { + SetMainCallback2(c2_exit_to_overworld_2_link); + } + else + { + FieldClearVBlankHBlankCallbacks(); + SetMainCallback2(c2_exit_to_overworld_2_local); + } +} + +void c2_exit_to_overworld_2_local(void) +{ + if (sub_8054A4C(&gMain.state)) + { + SetFieldVBlankCallback(); + SetMainCallback2(c2_overworld); + } +} + +void c2_exit_to_overworld_2_link(void) +{ + if (!sub_8055870() && sub_8054A9C(&gMain.state)) + SetMainCallback2(c2_overworld); +} + +void sub_805465C(void) +{ + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + sub_8054F70(); + set_callback1(sub_8055354); + sub_80543DC(sub_8055390); + gUnknown_0300485C = sub_8080A3C; + ScriptContext1_Init(); + ScriptContext2_Disable(); + c2_exit_to_overworld_2_switch(); +} + +void sub_805469C(void) +{ + FieldClearVBlankHBlankCallbacks(); + gUnknown_0300485C = atk17_seteffectuser; + c2_exit_to_overworld_2_switch(); +} + +void sub_80546B8(void) +{ + FieldClearVBlankHBlankCallbacks(); + gUnknown_0300485C = sub_80809B0; + c2_exit_to_overworld_2_switch(); +} + +void c2_exit_to_overworld_1_continue_scripts_restart_music(void) +{ + FieldClearVBlankHBlankCallbacks(); + gUnknown_0300485C = sub_8080990; + c2_exit_to_overworld_2_switch(); +} + +void sub_80546F0(void) +{ + FieldClearVBlankHBlankCallbacks(); + gUnknown_0300485C = sub_8080B60; + c2_exit_to_overworld_2_switch(); +} + +void sub_805470C(void) +{ + if (gMapHeader.flags == 1 && sub_80BBB24() == 1) + AddMapNamePopUpWindowTask(); + sub_8080B60(); +} + +void CB2_ContinueSavedGame(void) +{ + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + ResetSafariZoneFlag_(); + sub_805338C(); + sub_8053198(); + sub_806451C(); + InTrainerHill(); + sub_805308C(); + sub_8055FC0(); + PlayTimeCounter_Start(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + if (sub_80479F8() == 1) + { + sub_8047A04(); + sub_8053778(); + warp_in(); + SetMainCallback2(CB2_LoadMap); + } + else + { + gUnknown_0300485C = sub_805470C; + set_callback1(c1_overworld); + c2_exit_to_overworld_2_switch(); + } +} + +void FieldClearVBlankHBlankCallbacks(void) +{ + u16 savedIme = REG_IME; + REG_IME = 0; + REG_IE &= ~INTR_FLAG_HBLANK; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); +} + +void SetFieldVBlankCallback(void) +{ + SetVBlankCallback(VBlankCB_Field); +} + +void VBlankCB_Field(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + sub_8089668(); + sub_8057A58(); + TransferPlttBuffer(); + sub_8072E74(); +} |