summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-10-02 00:43:14 -0700
committerYamaArashi <shadow962@live.com>2016-10-02 00:43:14 -0700
commit179c2e5041b922fb5370e0188c90acf9f82bdf66 (patch)
tree1446578c29eb9262260af8c4b8143630dacab9f7
parentee7db46023b1bde6a06f61242c7dd7c4770b6125 (diff)
initial decompilation of some field system code
-rw-r--r--asm/rom4.s3300
-rw-r--r--include/fieldmap.h5
-rw-r--r--include/main.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/main_menu.c2
-rw-r--r--src/rom4.c1319
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();
+}