summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_frontier_1.s6
-rw-r--r--asm/battle_records.s2
-rw-r--r--asm/battle_tower.s2
-rw-r--r--asm/cable_car.s2
-rw-r--r--asm/cable_club.s10
-rw-r--r--asm/contest.s2
-rw-r--r--asm/contest_link_80F57C4.s2
-rw-r--r--asm/field_control_avatar.s14
-rw-r--r--asm/field_effect.s14
-rw-r--r--asm/field_screen.s6
-rw-r--r--asm/field_specials.s8
-rw-r--r--asm/field_tasks.s8
-rw-r--r--asm/item_menu.s8
-rw-r--r--asm/learn_move.s2
-rw-r--r--asm/main_menu.s2
-rw-r--r--asm/overworld.s4352
-rw-r--r--asm/party_menu.s22
-rw-r--r--asm/player_pc.s6
-rw-r--r--asm/pokedex.s2
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/pokemon_summary_screen.s4
-rw-r--r--asm/pokenav.s10
-rw-r--r--asm/rom_8011DC0.s30
-rw-r--r--asm/rotating_gate.s6
-rw-r--r--asm/roulette.s2
-rw-r--r--asm/script_pokemon_util_80F87D8.s6
-rw-r--r--asm/shop.s4
-rw-r--r--asm/start_menu.s10
-rw-r--r--asm/trade.s4
-rw-r--r--data/event_scripts.s1
-rw-r--r--data/item_use.s2
-rw-r--r--data/scripts/cable_club.inc8
-rw-r--r--data/scripts/maps/FortreeCity_Gym.inc2
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle6.inc2
-rw-r--r--data/scripts/maps/Route119.inc4
-rw-r--r--data/scripts/maps/Route119_WeatherInstitute_1F.inc4
-rw-r--r--data/scripts/maps/Route119_WeatherInstitute_2F.inc6
-rw-r--r--data/specials.inc2
-rw-r--r--include/field_camera.h9
-rw-r--r--include/field_control_avatar.h41
-rw-r--r--include/field_ground_effect.h2
-rw-r--r--include/field_map_obj.h3
-rw-r--r--include/field_player_avatar.h3
-rw-r--r--include/fieldmap.h1
-rw-r--r--include/global.fieldmap.h6
-rw-r--r--include/global.h12
-rw-r--r--include/overworld.h142
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_setup.c20
-rw-r--r--src/battle_transition.c2
-rw-r--r--src/berry_blender.c6
-rw-r--r--src/clock.c2
-rw-r--r--src/daycare.c4
-rw-r--r--src/decoration.c4
-rw-r--r--src/egg_hatch.c6
-rw-r--r--src/field_map_obj.c2
-rw-r--r--src/hof_pc.c2
-rwxr-xr-xsrc/item_use.c4
-rw-r--r--src/lilycove_lady.c2
-rw-r--r--src/load_save.c4
-rw-r--r--src/naming_screen.c8
-rw-r--r--src/overworld.c2277
-rw-r--r--src/pokeblock.c4
-rw-r--r--src/region_map.c2
-rw-r--r--src/reset_save_heap.c2
-rw-r--r--src/safari_zone.c12
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/secret_base.c6
-rw-r--r--src/tv.c4
-rw-r--r--src/walda_phrase.c4
-rw-r--r--sym_common.txt2
71 files changed, 2496 insertions, 4684 deletions
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s
index 43966b607..e3094b955 100644
--- a/asm/battle_frontier_1.s
+++ b/asm/battle_frontier_1.s
@@ -6481,7 +6481,7 @@ _0819218E:
mov r0, r9
cmp r0, 0
bne _081921C4
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
b _081921FC
.pool
@@ -9539,7 +9539,7 @@ _08193B84:
ldr r0, [r4]
bl Free
str r6, [r4]
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
ldr r1, =gTasks
lsls r0, r5, 2
@@ -11320,7 +11320,7 @@ _08194B24:
ands r0, r1
cmp r0, 0
bne _08194B3C
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
diff --git a/asm/battle_records.s b/asm/battle_records.s
index b203f339b..1880e7b45 100644
--- a/asm/battle_records.s
+++ b/asm/battle_records.s
@@ -855,7 +855,7 @@ sub_813C664: @ 813C664
ands r0, r1
cmp r0, 0
bne _0813C694
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
ldr r0, =gUnknown_0203AB78
ldr r0, [r0]
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 13641fef0..eb89d4d79 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -3172,7 +3172,7 @@ _08163A3C:
_08163A74:
bl sub_816537C
_08163A78:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
add sp, 0x4
pop {r4-r6}
diff --git a/asm/cable_car.s b/asm/cable_car.s
index 6fd44dd9f..bfb96cb9b 100644
--- a/asm/cable_car.s
+++ b/asm/cable_car.s
@@ -777,7 +777,7 @@ _08150340:
bl warp_in
ldr r0, =gFieldCallback
str r4, [r0]
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
add sp, 0x8
pop {r3}
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 885689e85..0bdda588e 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -736,7 +736,7 @@ _080B2984:
.pool
_080B2994:
bl GetLinkPlayerCount_2
- ldr r4, =gUnknown_03005DB8
+ ldr r4, =gFieldLinkPlayerCount
strb r0, [r4]
bl GetMultiplayerId
ldr r1, =gUnknown_03005DB4
@@ -826,7 +826,7 @@ _080B2A4E:
.pool
_080B2A6C:
bl GetLinkPlayerCount_2
- ldr r4, =gUnknown_03005DB8
+ ldr r4, =gFieldLinkPlayerCount
strb r0, [r4]
bl GetMultiplayerId
ldr r1, =gUnknown_03005DB4
@@ -2132,12 +2132,12 @@ _080B35E0:
ldrb r0, [r0]
cmp r0, 0
bne _080B35FE
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
b _080B35FE
.pool
_080B35F8:
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
_080B35FE:
bl RunTasks
@@ -2586,7 +2586,7 @@ sp02A_crash_sound: @ 80B39BC
push {lr}
ldr r0, =gSpecialVar_0x8006
ldrb r0, [r0]
- ldr r1, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r1, =CB2_ReturnToFieldContinueScript
bl sub_80C4E74
pop {r0}
bx r0
diff --git a/asm/contest.s b/asm/contest.s
index 8ea0d2d94..327a80d75 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -5588,7 +5588,7 @@ sub_80DA830: @ 80DA830
bl FreeAllWindowBuffers
bl sub_80D7A5C
bl FreeMonSpritesGfx
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
_080DA860:
pop {r0}
diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s
index c07be821f..450a235d5 100644
--- a/asm/contest_link_80F57C4.s
+++ b/asm/contest_link_80F57C4.s
@@ -1825,7 +1825,7 @@ _080F6884:
adds r0, r5, 0
bl DestroyTask
bl FreeAllWindowBuffers
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
bl sub_80F7E64
_080F68A8:
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 240437049..c1c96272f 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_809BEDC
-sub_809BEDC: @ 809BEDC
+ thumb_func_start FieldClearPlayerInput
+FieldClearPlayerInput: @ 809BEDC
push {r4,r5,lr}
movs r1, 0x2
negs r1, r1
@@ -29,11 +29,11 @@ sub_809BEDC: @ 809BEDC
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_809BEDC
+ thumb_func_end FieldClearPlayerInput
- thumb_func_start process_overworld_input
-@ void process_overworld_input(overworld_input_data *input_data, char buttons_new, char buttons_held)
-process_overworld_input: @ 809BF08
+ thumb_func_start FieldGetPlayerInput
+@ void FieldGetPlayerInput(overworld_input_data *input_data, char buttons_new, char buttons_held)
+FieldGetPlayerInput: @ 809BF08
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -176,7 +176,7 @@ _0809C006:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end process_overworld_input
+ thumb_func_end FieldGetPlayerInput
thumb_func_start sub_809C014
@ int sub_809C014(overworld_input_data *input_data)
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 6d35cca61..91cd0c972 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -1943,7 +1943,7 @@ _080B69D4:
thumb_func_start sub_80B69DC
sub_80B69DC: @ 80B69DC
push {lr}
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
ldr r1, =gFieldCallback
ldr r0, =mapldr_080842E8
@@ -2010,7 +2010,7 @@ _080B6A64:
bne _080B6A8A
bl Overworld_ResetStateAfterFly
bl warp_in
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
ldr r1, =gFieldCallback
ldr r0, =mapldr_08084390
@@ -2764,7 +2764,7 @@ sub_80B7060: @ 80B7060
ldr r1, =gFieldCallback
ldr r0, =sub_80B70B4
str r0, [r1]
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
ldr r0, =sub_80B6E88
bl FindTaskIdByFunc
@@ -3730,7 +3730,7 @@ sub_80B7814: @ 80B7814
ldr r1, =gFieldCallback
ldr r0, =mapldr_080851BC
str r0, [r1]
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
ldr r0, =sub_80B75F0
bl FindTaskIdByFunc
@@ -4205,7 +4205,7 @@ sub_80B7BF4: @ 80B7BF4
ldr r1, =gFieldCallback
ldr r0, =sub_80B6B68
str r0, [r1]
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
ldr r0, =sub_80B7A8C
bl FindTaskIdByFunc
@@ -4402,7 +4402,7 @@ _080B7D86:
ldr r1, =gFieldCallback
ldr r0, =mapldr_080859D4
str r0, [r1]
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
ldr r0, =sub_80B7CE4
bl FindTaskIdByFunc
@@ -4883,7 +4883,7 @@ _080B81B8:
bne _080B81E6
bl Overworld_SetWarpDestToLastHealLoc
bl warp_in
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
ldr r1, =gFieldCallback
ldr r0, =mapldr_08085D88
diff --git a/asm/field_screen.s b/asm/field_screen.s
index 0caa07a1b..2a539d111 100644
--- a/asm/field_screen.s
+++ b/asm/field_screen.s
@@ -9015,7 +9015,7 @@ _080AF9D0:
cmp r0, 0
bne _080AF9E8
bl warp_in
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
@@ -9087,7 +9087,7 @@ _080AFA64:
b _080AFA7C
_080AFA6C:
bl warp_in
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
adds r0, r6, 0
bl DestroyTask
@@ -10060,7 +10060,7 @@ _080B0222:
b _080B023A
_080B022A:
bl warp_in
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
diff --git a/asm/field_specials.s b/asm/field_specials.s
index c1624cd0a..29c6dc800 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -20,7 +20,7 @@ Special_ShowDiploma: @ 8137CB4
Special_ViewWallClock: @ 8137CC8
push {lr}
ldr r0, =gMain
- ldr r1, =c2_exit_to_overworld_2_switch
+ ldr r1, =CB2_ReturnToField
str r1, [r0, 0x8]
ldr r0, =Cb2_ViewWallClock
bl SetMainCallback2
@@ -1906,7 +1906,7 @@ _08138C7E:
thumb_func_start CB2_FieldShowRegionMap
CB2_FieldShowRegionMap: @ 8138C84
push {lr}
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl sub_817018C
pop {r0}
bx r0
@@ -7153,14 +7153,14 @@ sub_813B7D8: @ 813B7D8
ldrh r0, [r0]
cmp r0, 0
bne _0813B7F8
- ldr r2, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r2, =CB2_ReturnToFieldContinueScript
movs r0, 0
movs r1, 0x1
bl DoRayquazaScene
b _0813B802
.pool
_0813B7F8:
- ldr r2, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r2, =CB2_ReturnToFieldContinueScript
movs r0, 0x1
movs r1, 0
bl DoRayquazaScene
diff --git a/asm/field_tasks.s b/asm/field_tasks.s
index 79980ec46..09f5bbc9b 100644
--- a/asm/field_tasks.s
+++ b/asm/field_tasks.s
@@ -88,7 +88,7 @@ sub_809D908: @ 809D908
bl sub_809D8B8
adds r0, r4, 0x2
adds r1, r4, 0x4
- bl wild_encounter_related
+ bl UpdateAmbientCry
_0809D930:
pop {r4}
pop {r0}
@@ -96,8 +96,8 @@ _0809D930:
.pool
thumb_func_end sub_809D908
- thumb_func_start overworld_ensure_per_step_coros_running
-overworld_ensure_per_step_coros_running: @ 809D93C
+ thumb_func_start SetUpFieldTasks
+SetUpFieldTasks: @ 809D93C
push {r4,r5,lr}
ldr r5, =task_per_step_callback_manager
adds r0, r5, 0
@@ -142,7 +142,7 @@ _0809D992:
pop {r0}
bx r0
.pool
- thumb_func_end overworld_ensure_per_step_coros_running
+ thumb_func_end SetUpFieldTasks
thumb_func_start ActivatePerStepCallback
ActivatePerStepCallback: @ 809D9A8
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 010e83c49..654729a94 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -31,7 +31,7 @@ ResetBagScrollPositions: @ 81AAB70
@ void CB2_BagMenuFromStartMenu()
CB2_BagMenuFromStartMenu: @ 81AAB9C
push {lr}
- ldr r2, =sub_8086194
+ ldr r2, =CB2_ReturnToFieldWithOpenMenu
movs r0, 0
movs r1, 0x5
bl GoToBagMenu
@@ -5747,7 +5747,7 @@ bag_menu_leave_maybe_3: @ 81ADE6C
ldr r0, =gFieldCallback
ldr r1, =sub_819FA50
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
@@ -5782,7 +5782,7 @@ bag_menu_leave_maybe_2: @ 81ADEBC
ldr r0, =gFieldCallback
ldr r1, =sub_818DEF4
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
@@ -5813,7 +5813,7 @@ bag_menu_leave_maybe: @ 81ADF00
ldr r0, =gFieldCallback
ldr r1, =sub_818E564
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
diff --git a/asm/learn_move.s b/asm/learn_move.s
index f42514e68..56f6f84c7 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -713,7 +713,7 @@ _08160CD8:
b _08160E8A
_08160CE6:
bl sub_8160EA0
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
b _08160E8A
.pool
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 48d1411c5..8ea65fbec 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -1480,7 +1480,7 @@ _08030444:
strh r1, [r0]
ldr r0, =gPlttBufferFaded
strh r1, [r0]
- ldr r0, =sub_8086230
+ ldr r0, =CB2_ContinueSavedGame
b _0803048A
.pool
_08030460:
diff --git a/asm/overworld.s b/asm/overworld.s
deleted file mode 100644
index d74a2674b..000000000
--- a/asm/overworld.s
+++ /dev/null
@@ -1,4352 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
-
-
- thumb_func_start sub_80859BC
-sub_80859BC: @ 80859BC
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- ldr r0, =sIsAmbientCryWaterMon
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080859F0
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- beq _08085A2C
-_080859F0:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x58
- bl __umodsi3
- adds r4, r0, 0
- adds r4, 0xD4
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1E
- bl __umodsi3
- adds r2, r0, 0
- adds r2, 0x32
- ldr r0, =sAmbientCrySpecies
- ldrh r0, [r0]
- lsls r4, 24
- asrs r4, 24
- lsls r2, 24
- asrs r2, 24
- adds r1, r4, 0
- movs r3, 0x1
- bl PlayCry2
-_08085A2C:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80859BC
-
- thumb_func_start wild_encounter_related
-wild_encounter_related: @ 8085A3C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- adds r7, r1, 0
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x4
- bhi _08085B20
- lsls r0, 2
- ldr r1, =_08085A60
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08085A60:
- .4byte _08085A74
- .4byte _08085A88
- .4byte _08085AA4
- .4byte _08085B0C
- .4byte _08085B20
-_08085A74:
- ldr r0, =sAmbientCrySpecies
- ldrh r0, [r0]
- cmp r0, 0
- bne _08085A84
- movs r0, 0x4
- b _08085B1E
- .pool
-_08085A84:
- movs r0, 0x1
- b _08085B1E
-_08085A88:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x96
- lsls r1, 4
- bl __umodsi3
- movs r1, 0x96
- lsls r1, 3
- adds r0, r1
- strh r0, [r7]
- movs r0, 0x3
- b _08085B1E
-_08085AA4:
- movs r0, 0x1
- mov r9, r0
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0
- b _08085ABC
-_08085AB6:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_08085ABC:
- cmp r5, r8
- bcs _08085AE4
- movs r0, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0x6
- bl GetMonData
- cmp r0, 0
- bne _08085AB6
- adds r0, r4, 0
- bl GetMonAbility
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x44
- bne _08085AB6
- movs r1, 0x2
- mov r9, r1
-_08085AE4:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r4, 0x96
- lsls r4, 3
- adds r1, r4, 0
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, r4
- mov r1, r9
- bl __divsi3
- strh r0, [r7]
- movs r0, 0x3
- b _08085B1E
- .pool
-_08085B0C:
- ldrh r0, [r7]
- subs r0, 0x1
- strh r0, [r7]
- lsls r0, 16
- cmp r0, 0
- bne _08085B20
- bl sub_80859BC
- movs r0, 0x2
-_08085B1E:
- strh r0, [r6]
-_08085B20:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end wild_encounter_related
-
- thumb_func_start ChooseAmbientCrySpecies
-ChooseAmbientCrySpecies: @ 8085B2C
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0xB4
- lsls r0, 6
- cmp r1, r0
- bne _08085B5C
- bl IsMirageIslandPresent
- lsls r0, 24
- cmp r0, 0
- bne _08085B5C
- ldr r1, =sIsAmbientCryWaterMon
- movs r0, 0x1
- strb r0, [r1]
- bl GetLocalWaterMon
- b _08085B62
- .pool
-_08085B5C:
- ldr r0, =sIsAmbientCryWaterMon
- bl GetLocalWildMon
-_08085B62:
- ldr r1, =sAmbientCrySpecies
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end ChooseAmbientCrySpecies
-
- thumb_func_start GetMapTypeByGroupAndId
-@ int GetMapTypeByGroupAndId(int bank, int number)
-GetMapTypeByGroupAndId: @ 8085B74
- push {lr}
- lsls r0, 24
- asrs r0, 8
- lsrs r0, 16
- lsls r1, 24
- asrs r1, 8
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x17]
- pop {r1}
- bx r1
- thumb_func_end GetMapTypeByGroupAndId
-
- thumb_func_start get_map_light_level_from_warp
-@ int get_map_light_level_from_warp(warpdata *warp)
-get_map_light_level_from_warp: @ 8085B8C
- push {lr}
- movs r2, 0
- ldrsb r2, [r0, r2]
- movs r1, 0x1
- ldrsb r1, [r0, r1]
- adds r0, r2, 0
- bl GetMapTypeByGroupAndId
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end get_map_light_level_from_warp
-
- thumb_func_start Overworld_GetMapTypeOfSaveblockLocation
-Overworld_GetMapTypeOfSaveblockLocation: @ 8085BA4
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r0, 0x4
- bl get_map_light_level_from_warp
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end Overworld_GetMapTypeOfSaveblockLocation
-
- thumb_func_start get_map_light_from_warp0
-get_map_light_from_warp0: @ 8085BBC
- push {lr}
- ldr r0, =gUnknown_020322DC
- bl get_map_light_level_from_warp
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end get_map_light_from_warp0
-
- thumb_func_start is_light_level_1_2_3_5_or_6
-is_light_level_1_2_3_5_or_6: @ 8085BD0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08085BEA
- cmp r0, 0x1
- beq _08085BEA
- cmp r0, 0x5
- beq _08085BEA
- cmp r0, 0x2
- beq _08085BEA
- cmp r0, 0x6
- bne _08085BEE
-_08085BEA:
- movs r0, 0x1
- b _08085BF0
-_08085BEE:
- movs r0, 0
-_08085BF0:
- pop {r1}
- bx r1
- thumb_func_end is_light_level_1_2_3_5_or_6
-
- thumb_func_start Overworld_MapTypeAllowsTeleportAndFly
-Overworld_MapTypeAllowsTeleportAndFly: @ 8085BF4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08085C0A
- cmp r0, 0x1
- beq _08085C0A
- cmp r0, 0x6
- beq _08085C0A
- cmp r0, 0x2
- bne _08085C0E
-_08085C0A:
- movs r0, 0x1
- b _08085C10
-_08085C0E:
- movs r0, 0
-_08085C10:
- pop {r1}
- bx r1
- thumb_func_end Overworld_MapTypeAllowsTeleportAndFly
-
- thumb_func_start Overworld_MapTypeIsIndoors
-Overworld_MapTypeIsIndoors: @ 8085C14
- push {lr}
- lsls r0, 24
- movs r1, 0xF8
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08085C28
- movs r0, 0
- b _08085C2A
-_08085C28:
- movs r0, 0x1
-_08085C2A:
- pop {r1}
- bx r1
- thumb_func_end Overworld_MapTypeIsIndoors
-
- thumb_func_start sav1_saved_warp2_map_get_name
-sav1_saved_warp2_map_get_name: @ 8085C30
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x14
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x15]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sav1_saved_warp2_map_get_name
-
- thumb_func_start sav1_map_get_name
-sav1_map_get_name: @ 8085C58
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sav1_map_get_name
-
- thumb_func_start GetCurrentMapBattleScene
-GetCurrentMapBattleScene: @ 8085C80
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x1B]
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetCurrentMapBattleScene
-
- thumb_func_start overworld_bg_setup
-@ void overworld_bg_setup()
-overworld_bg_setup: @ 8085CA8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r1, =gUnknown_08339DAC
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r0, 0x1
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x3
- movs r1, 0x5
- movs r2, 0x1
- bl SetBgAttribute
- ldr r0, =gUnknown_03005DA0
- mov r8, r0
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl AllocZeroed
- mov r1, r8
- str r0, [r1]
- ldr r6, =gUnknown_03005D9C
- adds r0, r4, 0
- bl AllocZeroed
- str r0, [r6]
- ldr r5, =gUnknown_03005DA4
- adds r0, r4, 0
- bl AllocZeroed
- str r0, [r5]
- mov r0, r8
- ldr r1, [r0]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r6]
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r5]
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl sub_81971D0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end overworld_bg_setup
-
- thumb_func_start overworld_free_bg_tilemaps
-overworld_free_bg_tilemaps: @ 8085D34
- push {r4,lr}
- bl sub_81BE72C
- bl sub_81971F4
- ldr r4, =gUnknown_03005DA4
- ldr r0, [r4]
- cmp r0, 0
- beq _08085D4E
- bl Free
- movs r0, 0
- str r0, [r4]
-_08085D4E:
- ldr r4, =gUnknown_03005D9C
- ldr r0, [r4]
- cmp r0, 0
- beq _08085D5E
- bl Free
- movs r0, 0
- str r0, [r4]
-_08085D5E:
- ldr r4, =gUnknown_03005DA0
- ldr r0, [r4]
- cmp r0, 0
- beq _08085D6E
- bl Free
- movs r0, 0
- str r0, [r4]
-_08085D6E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end overworld_free_bg_tilemaps
-
- thumb_func_start ResetSafariZoneFlag_
-ResetSafariZoneFlag_: @ 8085D80
- push {lr}
- bl ResetSafariZoneFlag
- pop {r0}
- bx r0
- thumb_func_end ResetSafariZoneFlag_
-
- thumb_func_start is_c1_link_related_active
-@ _BOOL4 is_c1_link_related_active()
-is_c1_link_related_active: @ 8085D8C
- push {lr}
- ldr r0, =gMain
- ldr r1, [r0]
- ldr r0, =c1_link_related
- cmp r1, r0
- beq _08085DA4
- movs r0, 0
- b _08085DA6
- .pool
-_08085DA4:
- movs r0, 0x1
-_08085DA6:
- pop {r1}
- bx r1
- thumb_func_end is_c1_link_related_active
-
- thumb_func_start c1_overworld_normal
-@ void c1_overworld_normal(int buttons_new, int buttons_held)
-c1_overworld_normal: @ 8085DAC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r4, r1, 0
- bl sub_808B578
- mov r6, sp
- mov r0, sp
- bl sub_809BEDC
- mov r0, sp
- adds r1, r5, 0
- adds r2, r4, 0
- bl process_overworld_input
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- cmp r0, 0
- bne _08085DFA
- mov r0, sp
- bl sub_809C014
- cmp r0, 0x1
- bne _08085DF0
- bl ScriptContext2_Enable
- bl HideMapNamePopUpWindow
- b _08085DFA
-_08085DF0:
- ldrb r0, [r6, 0x2]
- adds r1, r5, 0
- adds r2, r4, 0
- bl player_step
-_08085DFA:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end c1_overworld_normal
-
- thumb_func_start c1_overworld
-c1_overworld: @ 8085E04
- push {lr}
- ldr r2, =gMain
- ldr r1, [r2, 0x4]
- ldr r0, =c2_overworld
- cmp r1, r0
- bne _08085E18
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x2C]
- bl c1_overworld_normal
-_08085E18:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c1_overworld
-
- thumb_func_start OverworldBasic
-@ void OverworldBasic()
-OverworldBasic: @ 8085E24
- push {lr}
- bl ScriptContext2_RunScript
- bl RunTasks
- bl AnimateSprites
- bl CameraUpdate
- bl UpdateCameraPanning
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl sub_80A0A38
- bl do_scheduled_bg_tilemap_copies_to_vram
- pop {r0}
- bx r0
- thumb_func_end OverworldBasic
-
- thumb_func_start CB2_OverworldBasic
-CB2_OverworldBasic: @ 8085E50
- push {lr}
- bl OverworldBasic
- pop {r0}
- bx r0
- thumb_func_end CB2_OverworldBasic
-
- thumb_func_start c2_overworld
-c2_overworld: @ 8085E5C
- push {r4,lr}
- ldr r0, =gPaletteFade
- ldrb r0, [r0, 0x7]
- lsrs r0, 7
- adds r4, r0, 0
- cmp r4, 0
- beq _08085E70
- movs r0, 0
- bl SetVBlankCallback
-_08085E70:
- bl OverworldBasic
- cmp r4, 0
- beq _08085E7C
- bl SetFieldVBlankCallback
-_08085E7C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_overworld
-
- thumb_func_start set_callback1
-set_callback1: @ 8085E88
- ldr r1, =gMain
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end set_callback1
-
- thumb_func_start sub_8085E94
-sub_8085E94: @ 8085E94
- ldr r1, =gUnknown_03000E0C
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8085E94
-
- thumb_func_start map_post_load_hook_exec
-map_post_load_hook_exec: @ 8085EA0
- push {r4,lr}
- ldr r4, =gUnknown_03005DB0
- ldr r0, [r4]
- cmp r0, 0
- beq _08085ECC
- bl _call_via_r0
- lsls r0, 24
- cmp r0, 0
- bne _08085EBC
- movs r0, 0
- b _08085EEC
- .pool
-_08085EBC:
- movs r1, 0
- str r1, [r4]
- ldr r0, =gFieldCallback
- str r1, [r0]
- b _08085EEA
- .pool
-_08085ECC:
- ldr r0, =gFieldCallback
- ldr r0, [r0]
- cmp r0, 0
- beq _08085EE0
- bl _call_via_r0
- b _08085EE4
- .pool
-_08085EE0:
- bl mapldr_default
-_08085EE4:
- ldr r1, =gFieldCallback
- movs r0, 0
- str r0, [r1]
-_08085EEA:
- movs r0, 0x1
-_08085EEC:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end map_post_load_hook_exec
-
- thumb_func_start CB2_NewGame
-CB2_NewGame: @ 8085EF8
- push {lr}
- bl sub_808631C
- bl StopMapMusic
- bl ResetSafariZoneFlag_
- bl NewGameInitData
- bl player_avatar_init_params_reset
- bl PlayTimeCounter_Start
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- ldr r1, =gFieldCallback
- ldr r0, =ExecuteTruckSequence
- str r0, [r1]
- ldr r1, =gUnknown_03005DB0
- movs r0, 0
- str r0, [r1]
- ldr r0, =gMain+0x438
- bl do_load_map_stuff_loop
- bl SetFieldVBlankCallback
- ldr r0, =c1_overworld
- bl set_callback1
- ldr r0, =c2_overworld
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end CB2_NewGame
-
- thumb_func_start CB2_WhiteOut
-CB2_WhiteOut: @ 8085F58
- push {lr}
- sub sp, 0x4
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x77
- bls _08085FB0
- bl sub_808631C
- bl StopMapMusic
- bl ResetSafariZoneFlag_
- bl DoWhiteOut
- bl player_avatar_init_params_reset
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF3C8
- str r0, [r1]
- mov r1, sp
- movs r0, 0
- strb r0, [r1]
- mov r0, sp
- bl do_load_map_stuff_loop
- bl SetFieldVBlankCallback
- ldr r0, =c1_overworld
- bl set_callback1
- ldr r0, =c2_overworld
- bl SetMainCallback2
-_08085FB0:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end CB2_WhiteOut
-
- thumb_func_start c2_load_new_map
-c2_load_new_map: @ 8085FCC
- push {lr}
- bl sub_808631C
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- movs r0, 0
- bl set_callback1
- ldr r0, =c2_change_map
- bl SetMainCallback2
- ldr r1, =gMain
- ldr r0, =c2_load_new_map_2
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_load_new_map
-
- thumb_func_start c2_load_new_map_2
-c2_load_new_map_2: @ 8085FFC
- push {lr}
- ldr r0, =gMain+0x438
- bl do_load_map_stuff_loop
- bl SetFieldVBlankCallback
- ldr r0, =c1_overworld
- bl set_callback1
- ldr r0, =c2_overworld
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_load_new_map_2
-
- thumb_func_start sub_8086024
-sub_8086024: @ 8086024
- push {r4,lr}
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _08086046
- bl sub_808631C
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- movs r0, 0
- bl set_callback1
-_08086046:
- adds r0, r4, 0
- movs r1, 0x1
- bl load_map_stuff
- cmp r0, 0
- beq _08086062
- bl SetFieldVBlankCallback
- ldr r0, =c1_overworld
- bl set_callback1
- ldr r0, =c2_overworld
- bl SetMainCallback2
-_08086062:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086024
-
- thumb_func_start sub_8086074
-sub_8086074: @ 8086074
- push {lr}
- bl sub_808631C
- ldr r0, =gFieldCallback
- ldr r1, =sub_80AF314
- str r1, [r0]
- ldr r0, =c2_80567AC
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086074
-
- thumb_func_start c2_80567AC
-c2_80567AC: @ 8086098
- push {lr}
- ldr r0, =gMain+0x438
- bl map_loading_iteration_3
- cmp r0, 0
- beq _080860B8
- bl SetFieldVBlankCallback
- ldr r0, =c1_link_related
- bl set_callback1
- bl sub_8086C2C
- ldr r0, =c2_overworld
- bl SetMainCallback2
-_080860B8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_80567AC
-
- thumb_func_start c2_exit_to_overworld_2_switch
-c2_exit_to_overworld_2_switch: @ 80860C8
- push {lr}
- bl is_c1_link_related_active
- cmp r0, 0x1
- bne _080860E0
- ldr r0, =c2_exit_to_overworld_2_link
- bl SetMainCallback2
- b _080860EA
- .pool
-_080860E0:
- bl sub_808631C
- ldr r0, =c2_exit_to_overworld_2_local
- bl SetMainCallback2
-_080860EA:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_exit_to_overworld_2_switch
-
- thumb_func_start c2_exit_to_overworld_2_local
-c2_exit_to_overworld_2_local: @ 80860F4
- push {lr}
- ldr r0, =gMain+0x438
- bl sub_8086638
- cmp r0, 0
- beq _0808610A
- bl SetFieldVBlankCallback
- ldr r0, =c2_overworld
- bl SetMainCallback2
-_0808610A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_exit_to_overworld_2_local
-
- thumb_func_start c2_exit_to_overworld_2_link
-c2_exit_to_overworld_2_link: @ 8086118
- push {lr}
- bl sub_8087598
- cmp r0, 0
- bne _08086132
- ldr r0, =gMain+0x438
- bl map_loading_iteration_2_link
- cmp r0, 0
- beq _08086132
- ldr r0, =c2_overworld
- bl SetMainCallback2
-_08086132:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_exit_to_overworld_2_link
-
- thumb_func_start c2_8056854
-c2_8056854: @ 8086140
- push {lr}
- bl sub_808631C
- bl StopMapMusic
- ldr r0, =c1_link_related
- bl set_callback1
- bl sub_8086C2C
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08086174
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF314
- b _08086178
- .pool
-_08086174:
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF214
-_08086178:
- str r0, [r1]
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- bl c2_exit_to_overworld_2_switch
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_8056854
-
- thumb_func_start sub_8086194
-sub_8086194: @ 8086194
- push {lr}
- bl sub_808631C
- ldr r1, =gUnknown_03005DB0
- ldr r0, =sub_80AF6A4
- str r0, [r1]
- bl c2_exit_to_overworld_2_switch
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086194
-
- thumb_func_start sub_80861B0
-sub_80861B0: @ 80861B0
- push {lr}
- bl sub_808631C
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF188
- str r0, [r1]
- bl c2_exit_to_overworld_2_switch
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80861B0
-
- thumb_func_start c2_exit_to_overworld_1_continue_scripts_restart_music
-c2_exit_to_overworld_1_continue_scripts_restart_music: @ 80861CC
- push {lr}
- bl sub_808631C
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF168
- str r0, [r1]
- bl c2_exit_to_overworld_2_switch
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_exit_to_overworld_1_continue_scripts_restart_music
-
- thumb_func_start sub_80861E8
-sub_80861E8: @ 80861E8
- push {lr}
- bl sub_808631C
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF3C8
- str r0, [r1]
- bl c2_exit_to_overworld_2_switch
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80861E8
-
- thumb_func_start sub_8086204
-sub_8086204: @ 8086204
- push {lr}
- ldr r0, =gMapHeader
- ldrb r1, [r0, 0x1A]
- movs r0, 0xF8
- ands r0, r1
- cmp r0, 0x8
- bne _08086222
- bl sub_80E909C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08086222
- bl ShowMapNamePopup
-_08086222:
- bl sub_80AF3C8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086204
-
- thumb_func_start sub_8086230
-sub_8086230: @ 8086230
- push {r4,lr}
- bl sub_808631C
- bl StopMapMusic
- bl ResetSafariZoneFlag_
- ldr r0, =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0xFF
- bne _0808624A
- bl sub_81A3908
-_0808624A:
- bl LoadSaveblockMapHeader
- bl set_warp2_warp3_to_neg_1
- bl GetCurrentTrainerHillMapId
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMapHeader
- ldrh r1, [r0, 0x12]
- ldr r0, =0x00000169
- cmp r1, r0
- bne _08086278
- bl sub_81AA2F8
- b _0808628A
- .pool
-_08086278:
- cmp r4, 0
- beq _08086286
- cmp r4, 0x6
- beq _08086286
- bl sub_81D5F48
- b _0808628A
-_08086286:
- bl LoadSaveblockMapObjScripts
-_0808628A:
- bl UnfreezeMapObjects
- bl DoTimeBasedEvents
- bl sub_8084788
- ldr r0, =gMapHeader
- ldrh r1, [r0, 0x12]
- ldr r0, =0x00000169
- cmp r1, r0
- bne _080862B0
- movs r0, 0x1
- bl battle_pyramid_map_load_related
- b _080862BE
- .pool
-_080862B0:
- cmp r4, 0
- beq _080862BA
- bl trainer_hill_map_load_related
- b _080862BE
-_080862BA:
- bl sub_8087D74
-_080862BE:
- bl PlayTimeCounter_Start
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- bl sub_8195E10
- bl sav2_x1_query_bit1
- cmp r0, 0x1
- bne _080862F4
- bl sav2_x9_clear_bit1
- bl warp1_set_to_sav1w
- bl warp_in
- bl sub_80EDB44
- ldr r0, =c2_load_new_map
- bl SetMainCallback2
- b _08086308
- .pool
-_080862F4:
- bl sub_80EDB44
- ldr r0, =gFieldCallback
- ldr r1, =sub_8086204
- str r1, [r0]
- ldr r0, =c1_overworld
- bl set_callback1
- bl c2_exit_to_overworld_2_switch
-_08086308:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086230
-
- thumb_func_start sub_808631C
-@ void sub_808631C()
-sub_808631C: @ 808631C
- push {r4,lr}
- bl warp0_in_pokecenter
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808632E
- bl CloseLink
-_0808632E:
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08086348
- movs r0, 0xC5
- bl EnableInterrupts
- movs r0, 0x2
- bl DisableInterrupts
- b _08086362
- .pool
-_08086348:
- ldr r4, =0x04000208
- ldrh r3, [r4]
- strh r0, [r4]
- ldr r2, =0x04000200
- ldrh r1, [r2]
- ldr r0, =0x0000fffd
- ands r0, r1
- strh r0, [r2]
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- strh r3, [r4]
-_08086362:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_808631C
-
- thumb_func_start SetFieldVBlankCallback
-@ void SetFieldVBlankCallback()
-SetFieldVBlankCallback: @ 8086380
- push {lr}
- ldr r0, =VBlankCB_Field
- bl SetVBlankCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetFieldVBlankCallback
-
- thumb_func_start VBlankCB_Field
-VBlankCB_Field: @ 8086390
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl ScanlineEffect_InitHBlankDmaTransfer
- bl FieldUpdateBgTilemapScroll
- bl TransferPlttBuffer
- bl TransferTilesetAnimsBuffer
- pop {r0}
- bx r0
- thumb_func_end VBlankCB_Field
-
- thumb_func_start sub_80863B0
-sub_80863B0: @ 80863B0
- push {lr}
- bl sub_81A9E6C
- lsls r0, 24
- cmp r0, 0
- beq _080863D4
- bl door_upload_tiles
- ldr r2, =gUnknown_08339DBC
- ldr r0, [r2]
- ldr r1, [r2, 0x4]
- ldr r2, [r2, 0x8]
- bl ScanlineEffect_SetParams
- b _080863F0
- .pool
-_080863D4:
- bl Overworld_GetFlashLevel
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080863F0
- bl sub_80B00E8
- ldr r2, =gUnknown_08339DBC
- ldr r0, [r2]
- ldr r1, [r2, 0x4]
- ldr r2, [r2, 0x8]
- bl ScanlineEffect_SetParams
-_080863F0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80863B0
-
- thumb_func_start map_loading_iteration_3
-map_loading_iteration_3: @ 80863F8
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xD
- bls _08086404
- b _08086512
-_08086404:
- lsls r0, 2
- ldr r1, =_08086414
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08086414:
- .4byte _0808644C
- .4byte _08086462
- .4byte _0808646A
- .4byte _08086472
- .4byte _08086484
- .4byte _08086492
- .4byte _08086498
- .4byte _080864A8
- .4byte _080864B8
- .4byte _080864D4
- .4byte _080864DA
- .4byte _080864E0
- .4byte _080864FC
- .4byte _0808650E
-_0808644C:
- bl overworld_bg_setup
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- bl MoveSaveBlocks_ResetHeap_
- bl sub_80867D8
- b _08086506
-_08086462:
- movs r0, 0x1
- bl mli0_load_map
- b _08086506
-_0808646A:
- movs r0, 0x1
- bl sub_8086988
- b _08086506
-_08086472:
- bl sub_8086AE4
- bl sub_80869DC
- bl sub_8086B14
- bl sub_8086AAC
- b _08086506
-_08086484:
- bl sub_80863B0
- bl map_loading_lcd_reset
- bl sub_8197200
- b _08086506
-_08086492:
- bl move_tilemap_camera_to_upper_left_corner
- b _08086506
-_08086498:
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset1_to_vram
- b _08086506
- .pool
-_080864A8:
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset2_to_vram
- b _08086506
- .pool
-_080864B8:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08086512
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08086506
- .pool
-_080864D4:
- bl DrawWholeMapView
- b _08086506
-_080864DA:
- bl cur_mapheader_run_tileset_funcs_after_some_cpuset
- b _08086506
-_080864E0:
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08086506
- bl sub_800E0E8
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- b _08086506
- .pool
-_080864FC:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _08086512
-_08086506:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08086512
-_0808650E:
- movs r0, 0x1
- b _08086514
-_08086512:
- movs r0, 0
-_08086514:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end map_loading_iteration_3
-
- thumb_func_start load_map_stuff
-@ int load_map_stuff(u8 *a1, int a2)
-load_map_stuff: @ 808651C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- cmp r0, 0xD
- bls _0808652A
- b _0808662E
-_0808652A:
- lsls r0, 2
- ldr r1, =_08086538
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08086538:
- .4byte _08086570
- .4byte _0808657C
- .4byte _08086586
- .4byte _0808658E
- .4byte _08086598
- .4byte _080865A6
- .4byte _080865AC
- .4byte _080865BC
- .4byte _080865CC
- .4byte _080865E8
- .4byte _080865EE
- .4byte _080865F4
- .4byte _08086618
- .4byte _0808662A
-_08086570:
- bl sub_808631C
- adds r0, r5, 0
- bl mli0_load_map
- b _08086622
-_0808657C:
- bl MoveSaveBlocks_ResetHeap_
- bl sub_80867D8
- b _08086622
-_08086586:
- adds r0, r5, 0
- bl sub_8086988
- b _08086622
-_0808658E:
- bl mli4_mapscripts_and_other
- bl sub_8086A80
- b _08086622
-_08086598:
- bl sub_80863B0
- bl map_loading_lcd_reset
- bl sub_8197200
- b _08086622
-_080865A6:
- bl move_tilemap_camera_to_upper_left_corner
- b _08086622
-_080865AC:
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset1_to_vram
- b _08086622
- .pool
-_080865BC:
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset2_to_vram
- b _08086622
- .pool
-_080865CC:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808662E
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08086622
- .pool
-_080865E8:
- bl DrawWholeMapView
- b _08086622
-_080865EE:
- bl cur_mapheader_run_tileset_funcs_after_some_cpuset
- b _08086622
-_080865F4:
- ldr r0, =gMapHeader
- ldrb r1, [r0, 0x1A]
- movs r0, 0xF8
- ands r0, r1
- cmp r0, 0x8
- bne _08086622
- bl sub_80E909C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08086622
- bl ShowMapNamePopup
- b _08086622
- .pool
-_08086618:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _0808662E
-_08086622:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0808662E
-_0808662A:
- movs r0, 0x1
- b _08086630
-_0808662E:
- movs r0, 0
-_08086630:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end load_map_stuff
-
- thumb_func_start sub_8086638
-sub_8086638: @ 8086638
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _0808666E
- cmp r0, 0x1
- bgt _0808664C
- cmp r0, 0
- beq _08086656
- b _0808668E
-_0808664C:
- cmp r0, 0x2
- beq _08086678
- cmp r0, 0x3
- beq _0808668A
- b _0808668E
-_08086656:
- bl MoveSaveBlocks_ResetHeap_
- bl sub_80867D8
- movs r0, 0
- bl sub_8086988
- bl sub_8086A68
- bl sub_8086A80
- b _08086682
-_0808666E:
- bl sub_8086860
- bl sub_81D64C0
- b _08086682
-_08086678:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _0808668E
-_08086682:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0808668E
-_0808668A:
- movs r0, 0x1
- b _08086690
-_0808668E:
- movs r0, 0
-_08086690:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8086638
-
- thumb_func_start map_loading_iteration_2_link
-map_loading_iteration_2_link: @ 8086698
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xD
- bls _080866A4
- b _080867A8
-_080866A4:
- lsls r0, 2
- ldr r1, =_080866B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080866B4:
- .4byte _080866EC
- .4byte _080866FA
- .4byte _08086702
- .4byte _08086710
- .4byte _0808671E
- .4byte _08086724
- .4byte _08086734
- .4byte _08086744
- .4byte _08086760
- .4byte _08086766
- .4byte _08086792
- .4byte _0808676C
- .4byte _08086788
- .4byte _0808679A
-_080866EC:
- bl sub_808631C
- bl MoveSaveBlocks_ResetHeap_
- bl sub_80867D8
- b _08086792
-_080866FA:
- movs r0, 0x1
- bl sub_8086988
- b _08086792
-_08086702:
- bl sub_8086B9C
- bl sub_8086A68
- bl sub_8086AC8
- b _08086792
-_08086710:
- bl sub_80863B0
- bl map_loading_lcd_reset
- bl sub_8197200
- b _08086792
-_0808671E:
- bl move_tilemap_camera_to_upper_left_corner
- b _08086792
-_08086724:
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset1_to_vram
- b _08086792
- .pool
-_08086734:
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl copy_map_tileset2_to_vram
- b _08086792
- .pool
-_08086744:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080867A8
- ldr r0, =gMapHeader
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08086792
- .pool
-_08086760:
- bl DrawWholeMapView
- b _08086792
-_08086766:
- bl cur_mapheader_run_tileset_funcs_after_some_cpuset
- b _08086792
-_0808676C:
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08086792
- bl sub_800E0E8
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- b _08086792
- .pool
-_08086788:
- bl map_post_load_hook_exec
- lsls r0, 24
- cmp r0, 0
- beq _080867A8
-_08086792:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _080867A8
-_0808679A:
- bl SetFieldVBlankCallback
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- b _080867AA
-_080867A8:
- movs r0, 0
-_080867AA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end map_loading_iteration_2_link
-
- thumb_func_start do_load_map_stuff_loop
-do_load_map_stuff_loop: @ 80867B0
- push {r4,lr}
- adds r4, r0, 0
-_080867B4:
- adds r0, r4, 0
- movs r1, 0
- bl load_map_stuff
- cmp r0, 0
- beq _080867B4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end do_load_map_stuff_loop
-
- thumb_func_start MoveSaveBlocks_ResetHeap_
-MoveSaveBlocks_ResetHeap_: @ 80867C8
- push {lr}
- bl sub_81BE6AC
- bl MoveSaveBlocks_ResetHeap
- pop {r0}
- bx r0
- thumb_func_end MoveSaveBlocks_ResetHeap_
-
- thumb_func_start sub_80867D8
-sub_80867D8: @ 80867D8
- push {r4-r7,lr}
- sub sp, 0x4
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- bl ScanlineEffect_Stop
- ldr r2, =0x05000002
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, =0x040000d4
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_08086816:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _08086816
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- bl LoadOam
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80867D8
-
- thumb_func_start sub_8086860
-sub_8086860: @ 8086860
- push {lr}
- bl sub_80863B0
- bl map_loading_lcd_reset
- bl sub_8197200
- bl mapdata_load_assets_to_gpu_and_full_redraw
- pop {r0}
- bx r0
- thumb_func_end sub_8086860
-
- thumb_func_start map_loading_lcd_reset
-map_loading_lcd_reset: @ 8086878
- push {r4,lr}
- bl clear_scheduled_bg_copies_to_vram
- bl reset_temp_tile_data_buffers
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r1, =0x00001f1f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00000101
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0xFF
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0xFF
- bl SetGpuReg
- ldr r4, =0x0000ffff
- movs r0, 0x42
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x46
- adds r1, r4, 0
- bl SetGpuReg
- ldr r0, =gUnknown_82EC7C4
- ldrh r1, [r0, 0x2]
- ldrh r2, [r0, 0x4]
- orrs r1, r2
- ldrh r0, [r0, 0x6]
- orrs r1, r0
- movs r2, 0x82
- lsls r2, 5
- adds r0, r2, 0
- orrs r1, r0
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x0000070d
- movs r0, 0x52
- bl SetGpuReg
- bl overworld_bg_setup
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r1, =0x00007060
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- bl sub_8098128
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end map_loading_lcd_reset
-
- thumb_func_start sub_8086988
-sub_8086988: @ 8086988
- push {r4,lr}
- adds r4, r0, 0
- bl ResetTasks
- bl ResetSpriteData
- bl ResetPaletteFade
- bl ScanlineEffect_Clear
- bl dp13_810BB8C
- bl ResetCameraUpdateInfo
- bl InstallCameraPanAheadCallback
- cmp r4, 0
- bne _080869B4
- movs r0, 0
- bl npc_paltag_set_load
- b _080869BA
-_080869B4:
- movs r0, 0x1
- bl npc_paltag_set_load
-_080869BA:
- bl FieldEffectActiveListClear
- bl sub_80AAFA4
- bl sub_80AEE84
- cmp r4, 0
- bne _080869CE
- bl overworld_ensure_per_step_coros_running
-_080869CE:
- bl mapheader_run_script_with_tag_x5
- bl sub_81BE6B8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8086988
-
- thumb_func_start sub_80869DC
-sub_80869DC: @ 80869DC
- push {lr}
- ldr r0, =gUnknown_03005DEC
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_03005DE8
- strh r1, [r0]
- bl sub_808D438
- movs r0, 0
- movs r1, 0
- bl SpawnFieldObjectsInView
- bl mapheader_run_first_tag4_script_list_match
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80869DC
-
- thumb_func_start mli4_mapscripts_and_other
-mli4_mapscripts_and_other: @ 8086A04
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, =gUnknown_03005DEC
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_03005DE8
- strh r1, [r0]
- bl sub_808D438
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl sav1_camera_get_focus_coords
- bl sub_80852D4
- adds r5, r0, 0
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- ldrb r2, [r5, 0x1]
- ldr r3, =gSaveBlock2Ptr
- ldr r3, [r3]
- ldrb r3, [r3, 0x8]
- bl InitPlayerAvatar
- ldrb r0, [r5]
- bl SetPlayerAvatarTransitionFlags
- bl player_avatar_init_params_reset
- movs r0, 0
- movs r1, 0
- bl SpawnFieldObjectsInView
- bl mapheader_run_first_tag4_script_list_match
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end mli4_mapscripts_and_other
-
- thumb_func_start sub_8086A68
-sub_8086A68: @ 8086A68
- push {lr}
- movs r0, 0
- movs r1, 0
- bl sub_808E16C
- bl sub_80FBED0
- bl mapheader_run_script_with_tag_x7
- pop {r0}
- bx r0
- thumb_func_end sub_8086A68
-
- thumb_func_start sub_8086A80
-sub_8086A80: @ 8086A80
- push {lr}
- ldr r2, =gMapObjects
- ldr r3, =gPlayerAvatar
- ldrb r1, [r3, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldrb r0, [r3, 0x4]
- bl InitCameraUpdateCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086A80
-
- thumb_func_start sub_8086AAC
-sub_8086AAC: @ 8086AAC
- push {lr}
- ldr r0, =gUnknown_03005DB4
- ldrb r0, [r0]
- bl sub_8087858
- lsls r0, 24
- lsrs r0, 24
- bl InitCameraUpdateCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086AAC
-
- thumb_func_start sub_8086AC8
-sub_8086AC8: @ 8086AC8
- push {lr}
- ldr r0, =gUnknown_03005DB4
- ldrb r0, [r0]
- bl sub_8087858
- lsls r0, 24
- lsrs r0, 24
- bl InitCameraUpdateCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086AC8
-
- thumb_func_start sub_8086AE4
-sub_8086AE4: @ 8086AE4
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl sav1_camera_get_focus_coords
- mov r2, sp
- ldr r0, =gUnknown_03005DB4
- ldrb r1, [r0]
- ldrh r0, [r2]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4]
- bl sub_8088B3C
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086AE4
-
- thumb_func_start sub_8086B14
-sub_8086B14: @ 8086B14
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl sav1_camera_get_focus_coords
- mov r3, sp
- mov r2, sp
- ldr r0, =gUnknown_03005DB4
- ldrb r1, [r0]
- ldrh r0, [r2]
- subs r0, r1
- strh r0, [r3]
- movs r6, 0
- ldr r0, =gUnknown_03005DB8
- mov r8, r4
- ldrb r0, [r0]
- cmp r6, r0
- bcs _08086B7E
- ldr r7, =gLinkPlayers
-_08086B44:
- lsls r5, r6, 24
- lsrs r5, 24
- mov r0, sp
- ldrh r1, [r0]
- adds r1, r6, r1
- lsls r1, 16
- asrs r1, 16
- mov r0, r8
- movs r3, 0
- ldrsh r2, [r0, r3]
- lsls r4, r6, 3
- subs r4, r6
- lsls r4, 2
- adds r4, r7
- ldrb r3, [r4, 0x13]
- adds r0, r5, 0
- bl sub_80876F0
- ldrb r1, [r4]
- adds r0, r5, 0
- bl sub_8087BCC
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, =gUnknown_03005DB8
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08086B44
-_08086B7E:
- bl sub_8086C40
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086B14
-
- thumb_func_start sub_8086B9C
-sub_8086B9C: @ 8086B9C
- push {r4,r5,lr}
- movs r4, 0
- ldr r0, =gUnknown_03005DB8
- ldrb r0, [r0]
- cmp r4, r0
- bcs _08086BCA
- ldr r5, =gLinkPlayers
-_08086BAA:
- lsls r0, r4, 24
- lsrs r0, 24
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- adds r1, r5
- ldrb r1, [r1]
- bl sub_8087BCC
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =gUnknown_03005DB8
- ldrb r0, [r0]
- cmp r4, r0
- bcc _08086BAA
-_08086BCA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086B9C
-
- thumb_func_start c1_link_related
-c1_link_related: @ 8086BD8
- push {r4,lr}
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08086BF2
- bl sub_800F0B8
- cmp r0, 0
- beq _08086BF2
- bl sub_8009F3C
- cmp r0, 0
- bne _08086C14
-_08086BF2:
- ldr r0, =gUnknown_03005DB4
- ldrb r4, [r0]
- ldr r0, =gLinkPartnersHeldKeys
- adds r1, r4, 0
- bl sub_8086F38
- ldr r0, =gUnknown_03000E14
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 16
- lsrs r0, 16
- bl sub_8086FA0
- bl sub_8086C40
-_08086C14:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c1_link_related
-
- thumb_func_start sub_8086C2C
-sub_8086C2C: @ 8086C2C
- push {lr}
- bl sub_8086C90
- ldr r0, =sub_80870B0
- bl c1_link_related_func_set
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086C2C
-
- thumb_func_start sub_8086C40
-sub_8086C40: @ 8086C40
- push {lr}
- ldr r0, =gLinkPartnersHeldKeys
- bl sub_808709C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086C40
-
- thumb_func_start c1_link_related_func_set
-c1_link_related_func_set: @ 8086C50
- ldr r2, =gUnknown_03000E19
- movs r1, 0
- strb r1, [r2]
- ldr r1, =gUnknown_03000E14
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end c1_link_related_func_set
-
- thumb_func_start sub_8086C64
-sub_8086C64: @ 8086C64
- push {lr}
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08086C82
- ldr r1, =gUnknown_03000E19
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3C
- bls _08086C82
- bl sub_8010198
-_08086C82:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086C64
-
- thumb_func_start sub_8086C90
-sub_8086C90: @ 8086C90
- push {lr}
- ldr r1, =gUnknown_03000E10
- movs r2, 0x80
- adds r0, r1, 0x3
-_08086C98:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08086C98
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086C90
-
- thumb_func_start sub_8086CA8
-sub_8086CA8: @ 8086CA8
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, =gUnknown_03005DB8
- ldrb r2, [r0]
- movs r1, 0
- cmp r1, r2
- bge _08086CD6
- ldr r4, =gUnknown_03000E10
-_08086CBA:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r3
- beq _08086CD0
- movs r0, 0
- b _08086CD8
- .pool
-_08086CD0:
- adds r1, 0x1
- cmp r1, r2
- blt _08086CBA
-_08086CD6:
- movs r0, 0x1
-_08086CD8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8086CA8
-
- thumb_func_start sub_8086CE0
-sub_8086CE0: @ 8086CE0
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, =gUnknown_03005DB8
- ldrb r2, [r0]
- movs r1, 0
- cmp r1, r2
- bge _08086D0E
- ldr r4, =gUnknown_03000E10
-_08086CF2:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r3
- bne _08086D08
- movs r0, 0x1
- b _08086D10
- .pool
-_08086D08:
- adds r1, 0x1
- cmp r1, r2
- blt _08086CF2
-_08086D0E:
- movs r0, 0
-_08086D10:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8086CE0
-
- thumb_func_start sub_8086D18
-sub_8086D18: @ 8086D18
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- adds r6, r2, 0
- mov r9, r3
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldr r0, =gUnknown_03000E10
- adds r5, r7, r0
- ldrb r0, [r5]
- cmp r0, 0x80
- beq _08086D38
- b _08086EB2
-_08086D38:
- adds r0, r6, 0
- bl sub_8087370
- adds r4, r0, 0
- cmp r4, 0
- beq _08086D70
- bl sub_8087480
- mov r1, r9
- strh r0, [r1]
- movs r0, 0x81
- strb r0, [r5]
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- bne _08086D58
- b _08086F26
-_08086D58:
- ldr r0, =sub_80870F8
- bl c1_link_related_func_set
- adds r0, r4, 0
- bl sub_8087530
- b _08086F26
- .pool
-_08086D70:
- movs r0, 0x83
- bl sub_8086CE0
- cmp r0, 0x1
- bne _08086D98
- movs r0, 0x81
- strb r0, [r5]
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- bne _08086D86
- b _08086F26
-_08086D86:
- ldr r0, =sub_80870F8
- bl c1_link_related_func_set
- bl sub_8087584
- b _08086F26
- .pool
-_08086D98:
- mov r0, r8
- subs r0, 0x12
- cmp r0, 0xA
- bls _08086DA2
- b _08086EB2
-_08086DA2:
- lsls r0, 2
- ldr r1, =_08086DB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08086DB0:
- .4byte _08086E08
- .4byte _08086EB2
- .4byte _08086EB2
- .4byte _08086EB2
- .4byte _08086EB2
- .4byte _08086EB2
- .4byte _08086DDC
- .4byte _08086E34
- .4byte _08086EB2
- .4byte _08086E64
- .4byte _08086E90
-_08086DDC:
- adds r0, r6, 0
- bl sub_8087358
- cmp r0, 0
- beq _08086EB2
- ldr r0, =gUnknown_03000E10
- adds r0, r7, r0
- movs r1, 0x81
- strb r1, [r0]
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- beq _08086EB2
- ldr r0, =sub_80870F8
- bl c1_link_related_func_set
- bl sub_808751C
- b _08086EB2
- .pool
-_08086E08:
- adds r0, r6, 0
- bl sub_8087388
- cmp r0, 0x1
- bne _08086EB2
- ldr r0, =gUnknown_03000E10
- adds r0, r7, r0
- movs r1, 0x81
- strb r1, [r0]
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- beq _08086EB2
- ldr r0, =sub_80870F8
- bl c1_link_related_func_set
- bl sub_808754C
- b _08086EB2
- .pool
-_08086E34:
- adds r0, r6, 0
- bl sub_80873B4
- adds r4, r0, 0
- cmp r4, 0
- beq _08086EB2
- ldr r0, =gUnknown_03000E10
- adds r0, r7, r0
- movs r1, 0x81
- strb r1, [r0]
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- beq _08086EB2
- ldr r0, =sub_80870F8
- bl c1_link_related_func_set
- adds r0, r4, 0
- bl sub_8087568
- b _08086EB2
- .pool
-_08086E64:
- adds r0, r6, 0
- bl sub_8087340
- cmp r0, 0
- beq _08086EB2
- ldr r0, =gUnknown_03000E10
- adds r0, r7, r0
- movs r1, 0x81
- strb r1, [r0]
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- beq _08086EB2
- ldr r0, =sub_808711C
- bl c1_link_related_func_set
- bl sub_8087510
- b _08086EB2
- .pool
-_08086E90:
- adds r0, r6, 0
- bl sub_8087340
- cmp r0, 0
- beq _08086EB2
- ldr r0, =gUnknown_03000E10
- adds r0, r7, r0
- movs r1, 0x81
- strb r1, [r0]
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- beq _08086EB2
- ldr r0, =sub_8087140
- bl c1_link_related_func_set
- bl sub_8087510
-_08086EB2:
- mov r0, r8
- cmp r0, 0x17
- beq _08086ED8
- cmp r0, 0x17
- bgt _08086ECC
- cmp r0, 0x16
- beq _08086EE8
- b _08086F26
- .pool
-_08086ECC:
- mov r1, r8
- cmp r1, 0x1A
- beq _08086EF8
- cmp r1, 0x1D
- beq _08086F18
- b _08086F26
-_08086ED8:
- ldr r0, =gUnknown_03000E10
- adds r0, r7, r0
- movs r1, 0x83
- strb r1, [r0]
- b _08086F26
- .pool
-_08086EE8:
- ldr r0, =gUnknown_03000E10
- adds r0, r7, r0
- movs r1, 0x82
- strb r1, [r0]
- b _08086F26
- .pool
-_08086EF8:
- ldr r0, =gUnknown_03000E10
- adds r0, r7, r0
- movs r1, 0x80
- strb r1, [r0]
- ldrb r0, [r6, 0x1]
- cmp r0, 0
- beq _08086F26
- ldr r0, =sub_80870B0
- bl c1_link_related_func_set
- b _08086F26
- .pool
-_08086F18:
- ldr r0, =gUnknown_03000E10
- adds r1, r7, r0
- ldrb r0, [r1]
- cmp r0, 0x82
- bne _08086F26
- movs r0, 0x81
- strb r0, [r1]
-_08086F26:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086D18
-
- thumb_func_start sub_8086F38
-sub_8086F38: @ 8086F38
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r8, r1
- movs r6, 0
- add r5, sp, 0x10
- mov r9, r5
- adds r7, r0, 0
-_08086F4C:
- ldrb r4, [r7]
- movs r0, 0
- strh r0, [r5]
- adds r0, r6, 0
- mov r1, r8
- mov r2, sp
- bl sub_80872D8
- adds r0, r6, 0
- adds r1, r4, 0
- mov r2, sp
- adds r3, r5, 0
- bl sub_8086D18
- ldr r0, =gUnknown_03000E10
- adds r0, r6, r0
- ldrb r0, [r0]
- cmp r0, 0x80
- bne _08086F7C
- adds r0, r4, 0
- bl sub_8087068
- mov r1, r9
- strh r0, [r1]
-_08086F7C:
- lsls r0, r6, 24
- lsrs r0, 24
- ldrb r1, [r5]
- bl sub_808796C
- adds r7, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _08086F4C
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086F38
-
- thumb_func_start sub_8086FA0
-sub_8086FA0: @ 8086FA0
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r1, =0xffef0000
- adds r0, r1
- lsrs r0, 16
- cmp r0, 0xC
- bhi _08086FC0
- ldr r0, =gUnknown_03005DA8
- strh r4, [r0]
- b _08086FC6
- .pool
-_08086FC0:
- ldr r1, =gUnknown_03005DA8
- movs r0, 0x11
- strh r0, [r1]
-_08086FC6:
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08086FFC
- bl sub_8087690
- cmp r0, 0x1
- bls _08086FFC
- bl is_c1_link_related_active
- cmp r0, 0x1
- bne _08086FFC
- bl sub_8009F3C
- cmp r0, 0x1
- bne _08086FFC
- cmp r4, 0x11
- blt _08086FFC
- cmp r4, 0x15
- ble _08086FF6
- cmp r4, 0x19
- bgt _08086FFC
- cmp r4, 0x18
- blt _08086FFC
-_08086FF6:
- ldr r1, =gUnknown_03005DA8
- movs r0, 0
- strh r0, [r1]
-_08086FFC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8086FA0
-
- thumb_func_start sub_808700C
-sub_808700C: @ 808700C
- push {lr}
- ldr r2, =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08087024
- movs r0, 0x13
- b _08087064
- .pool
-_08087024:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08087030
- movs r0, 0x12
- b _08087064
-_08087030:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0808703C
- movs r0, 0x14
- b _08087064
-_0808703C:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08087048
- movs r0, 0x15
- b _08087064
-_08087048:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08087056
- movs r0, 0x18
- b _08087064
-_08087056:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08087062
- movs r0, 0x11
- b _08087064
-_08087062:
- movs r0, 0x19
-_08087064:
- pop {r1}
- bx r1
- thumb_func_end sub_808700C
-
- thumb_func_start sub_8087068
-sub_8087068: @ 8087068
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x13
- beq _0808708E
- cmp r0, 0x13
- bgt _0808707E
- cmp r0, 0x12
- beq _08087092
- b _08087096
-_0808707E:
- cmp r1, 0x14
- beq _0808708A
- cmp r1, 0x15
- bne _08087096
- movs r0, 0x4
- b _08087098
-_0808708A:
- movs r0, 0x3
- b _08087098
-_0808708E:
- movs r0, 0x1
- b _08087098
-_08087092:
- movs r0, 0x2
- b _08087098
-_08087096:
- movs r0, 0
-_08087098:
- pop {r1}
- bx r1
- thumb_func_end sub_8087068
-
- thumb_func_start sub_808709C
-sub_808709C: @ 808709C
- push {lr}
- movs r2, 0x11
- adds r1, r0, 0x6
-_080870A2:
- strh r2, [r1]
- subs r1, 0x2
- cmp r1, r0
- bge _080870A2
- pop {r0}
- bx r0
- thumb_func_end sub_808709C
-
- thumb_func_start sub_80870B0
-sub_80870B0: @ 80870B0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080870C4
- movs r0, 0x11
- b _080870E6
-_080870C4:
- bl sub_800B4DC
- cmp r0, 0x4
- bls _080870D0
- movs r0, 0x1B
- b _080870E6
-_080870D0:
- bl sub_8087690
- cmp r0, 0x4
- bls _080870DC
- movs r0, 0x1C
- b _080870E6
-_080870DC:
- adds r0, r4, 0
- bl sub_808700C
- lsls r0, 16
- lsrs r0, 16
-_080870E6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80870B0
-
- thumb_func_start sub_80870EC
-sub_80870EC: @ 80870EC
- push {lr}
- bl sub_8086C64
- movs r0, 0x11
- pop {r1}
- bx r1
- thumb_func_end sub_80870EC
-
- thumb_func_start sub_80870F8
-sub_80870F8: @ 80870F8
- push {r4,lr}
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x11
- cmp r0, 0x1
- beq _08087110
- movs r4, 0x1A
- ldr r0, =sub_80870EC
- bl c1_link_related_func_set
-_08087110:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80870F8
-
- thumb_func_start sub_808711C
-sub_808711C: @ 808711C
- push {r4,lr}
- bl sub_800B4DC
- movs r4, 0x11
- cmp r0, 0x2
- bhi _08087134
- movs r4, 0x1A
- bl ScriptContext2_Disable
- ldr r0, =sub_80870EC
- bl c1_link_related_func_set
-_08087134:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_808711C
-
- thumb_func_start sub_8087140
-sub_8087140: @ 8087140
- push {r4,lr}
- bl sub_8087690
- movs r4, 0x11
- cmp r0, 0x2
- bhi _08087158
- movs r4, 0x1A
- bl ScriptContext2_Disable
- ldr r0, =sub_80870EC
- bl c1_link_related_func_set
-_08087158:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8087140
-
- thumb_func_start sub_8087164
-sub_8087164: @ 8087164
- push {lr}
- bl sub_8086C64
- movs r0, 0x11
- pop {r1}
- bx r1
- thumb_func_end sub_8087164
-
- thumb_func_start sub_8087170
-sub_8087170: @ 8087170
- push {lr}
- ldr r1, =gUnknown_03000E10
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x82
- bne _080871A0
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080871A4
- ldr r0, =sub_8087164
- bl c1_link_related_func_set
- movs r0, 0x1D
- b _080871A6
- .pool
-_080871A0:
- bl sub_8086C64
-_080871A4:
- movs r0, 0x11
-_080871A6:
- pop {r1}
- bx r1
- thumb_func_end sub_8087170
-
- thumb_func_start sub_80871AC
-sub_80871AC: @ 80871AC
- push {lr}
- ldr r0, =sub_8087170
- bl c1_link_related_func_set
- movs r0, 0x16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80871AC
-
- thumb_func_start sub_80871C0
-sub_80871C0: @ 80871C0
- movs r0, 0x11
- bx lr
- thumb_func_end sub_80871C0
-
- thumb_func_start sub_80871C4
-sub_80871C4: @ 80871C4
- push {lr}
- ldr r1, =gUnknown_03000E10
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x83
- beq _080871D4
- bl sub_8086C64
-_080871D4:
- movs r0, 0x83
- bl sub_8086CA8
- cmp r0, 0x1
- bne _080871EA
- ldr r0, =gUnknown_08277513
- bl ScriptContext1_SetupScript
- ldr r0, =sub_80871C0
- bl c1_link_related_func_set
-_080871EA:
- movs r0, 0x11
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80871C4
-
- thumb_func_start sub_80871FC
-sub_80871FC: @ 80871FC
- push {lr}
- ldr r0, =sub_80871C4
- bl c1_link_related_func_set
- movs r0, 0x17
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80871FC
-
- thumb_func_start sub_8087210
-sub_8087210: @ 8087210
- movs r0, 0x11
- bx lr
- thumb_func_end sub_8087210
-
- thumb_func_start sub_8087214
-sub_8087214: @ 8087214
- push {lr}
- movs r0, 0x83
- bl sub_8086CE0
- cmp r0, 0x1
- beq _08087250
- ldr r0, =gUnknown_03000E14
- ldr r2, [r0]
- ldr r1, =sub_8087170
- adds r3, r0, 0
- cmp r2, r1
- bne _0808723A
- ldr r1, =gUnknown_03000E10
- ldr r0, =gUnknown_03005DB4
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x82
- bne _08087272
-_0808723A:
- ldr r1, [r3]
- ldr r0, =sub_8087164
- cmp r1, r0
- bne _08087268
- ldr r1, =gUnknown_03000E10
- ldr r0, =gUnknown_03005DB4
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x81
- bne _08087268
-_08087250:
- movs r0, 0x2
- b _08087278
- .pool
-_08087268:
- movs r0, 0x82
- bl sub_8086CA8
- cmp r0, 0
- bne _08087276
-_08087272:
- movs r0, 0
- b _08087278
-_08087276:
- movs r0, 0x1
-_08087278:
- pop {r1}
- bx r1
- thumb_func_end sub_8087214
-
- thumb_func_start sub_808727C
-sub_808727C: @ 808727C
- push {lr}
- movs r0, 0x83
- bl sub_8086CE0
- pop {r1}
- bx r1
- thumb_func_end sub_808727C
-
- thumb_func_start sub_8087288
-sub_8087288: @ 8087288
- push {lr}
- ldr r0, =sub_80871AC
- bl c1_link_related_func_set
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8087288
-
- thumb_func_start sub_808729C
-sub_808729C: @ 808729C
- push {lr}
- ldr r0, =sub_80870F8
- bl c1_link_related_func_set
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_808729C
-
- thumb_func_start sub_80872B0
-sub_80872B0: @ 80872B0
- push {lr}
- ldr r0, =sub_80871FC
- bl c1_link_related_func_set
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80872B0
-
- thumb_func_start sub_80872C4
-sub_80872C4: @ 80872C4
- push {lr}
- ldr r0, =sub_8087210
- bl c1_link_related_func_set
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80872C4
-
- thumb_func_start sub_80872D8
-sub_80872D8: @ 80872D8
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r6, r2, 0
- strb r4, [r6]
- movs r0, 0
- cmp r4, r1
- bne _080872EA
- movs r0, 0x1
-_080872EA:
- strb r0, [r6, 0x1]
- ldr r1, =gLinkPlayerMapObjects
- lsls r0, r4, 2
- adds r0, r1
- ldrb r0, [r0, 0x3]
- strb r0, [r6, 0x2]
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80878A0
- strb r0, [r6, 0x3]
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- mov r1, sp
- adds r2, r5, 0
- bl sub_8087878
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r6, 0x4]
- ldrh r0, [r5]
- strh r0, [r6, 0x6]
- adds r0, r4, 0
- bl sub_80878C0
- strb r0, [r6, 0x8]
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- strh r0, [r6, 0xC]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80872D8
-
- thumb_func_start sub_8087340
-sub_8087340: @ 8087340
- push {lr}
- ldrb r0, [r0, 0x2]
- cmp r0, 0x2
- beq _0808734C
- cmp r0, 0
- bne _08087350
-_0808734C:
- movs r0, 0x1
- b _08087352
-_08087350:
- movs r0, 0
-_08087352:
- pop {r1}
- bx r1
- thumb_func_end sub_8087340
-
- thumb_func_start sub_8087358
-sub_8087358: @ 8087358
- push {lr}
- ldrb r0, [r0, 0x2]
- cmp r0, 0x2
- beq _08087364
- cmp r0, 0
- bne _08087368
-_08087364:
- movs r0, 0x1
- b _0808736A
-_08087368:
- movs r0, 0
-_0808736A:
- pop {r1}
- bx r1
- thumb_func_end sub_8087358
-
- thumb_func_start sub_8087370
-sub_8087370: @ 8087370
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1, 0x2]
- cmp r0, 0x2
- bne _08087382
- adds r0, r1, 0x4
- bl sub_809D0F4
- b _08087384
-_08087382:
- movs r0, 0
-_08087384:
- pop {r1}
- bx r1
- thumb_func_end sub_8087370
-
- thumb_func_start sub_8087388
-sub_8087388: @ 8087388
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x2]
- cmp r0, 0x2
- beq _08087396
- cmp r0, 0
- bne _080873AC
-_08087396:
- ldrb r0, [r4, 0xC]
- bl MetatileBehavior_IsSouthArrowWarp
- lsls r0, 24
- cmp r0, 0
- beq _080873AC
- ldrb r0, [r4, 0x3]
- cmp r0, 0x1
- bne _080873AC
- movs r0, 0x1
- b _080873AE
-_080873AC:
- movs r0, 0
-_080873AE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8087388
-
- thumb_func_start sub_80873B4
-sub_80873B4: @ 80873B4
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldrb r0, [r4, 0x2]
- cmp r0, 0
- beq _080873C8
- cmp r0, 0x2
- beq _080873C8
- movs r0, 0
- b _08087476
-_080873C8:
- ldr r0, [r4, 0x4]
- ldr r1, [r4, 0x8]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r3, =gUnknown_08339D64
- ldrb r0, [r4, 0x3]
- lsls r0, 3
- adds r0, r3
- ldr r0, [r0]
- mov r1, sp
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0xffff0000
- ldr r2, [sp]
- ands r2, r1
- orrs r2, r0
- str r2, [sp]
- asrs r1, r2, 16
- ldrb r0, [r4, 0x3]
- lsls r0, 3
- adds r3, 0x4
- adds r0, r3
- ldr r0, [r0]
- adds r0, r1
- lsls r0, 16
- ldr r1, =0x0000ffff
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- ldr r2, =0xffffff00
- ldr r0, [sp, 0x4]
- ands r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- asrs r1, 16
- bl sub_808790C
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- cmp r1, 0x4
- beq _0808746C
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08087434
- ldr r0, =gUnknown_03000E10
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0x80
- beq _08087450
-_08087434:
- ldr r0, =gUnknown_0827749C
- b _08087476
- .pool
-_08087450:
- adds r0, r2, 0
- bl sub_80B39D4
- cmp r0, 0
- bne _08087464
- ldr r0, =gUnknown_0827747E
- b _08087476
- .pool
-_08087464:
- ldr r0, =gUnknown_0827748D
- b _08087476
- .pool
-_0808746C:
- ldrb r1, [r4, 0xC]
- ldrb r2, [r4, 0x3]
- mov r0, sp
- bl sub_809C2C8
-_08087476:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80873B4
-
- thumb_func_start sub_8087480
-sub_8087480: @ 8087480
- push {lr}
- adds r1, r0, 0
- ldr r0, =gUnknown_08277388
- cmp r1, r0
- beq _080874C6
- ldr r0, =gUnknown_082773A3
- cmp r1, r0
- beq _08087508
- ldr r0, =gUnknown_082773BE
- cmp r1, r0
- beq _080874C6
- ldr r0, =gUnknown_082773D9
- cmp r1, r0
- beq _08087508
- ldr r0, =gUnknown_0827741D
- cmp r1, r0
- beq _080874C6
- ldr r0, =gUnknown_08277432
- cmp r1, r0
- beq _08087508
- ldr r0, =gUnknown_08277447
- cmp r1, r0
- beq _080874C6
- ldr r0, =gUnknown_0827745C
- cmp r1, r0
- beq _08087508
- ldr r0, =gUnknown_08277374
- cmp r1, r0
- beq _080874C6
- ldr r0, =gUnknown_0827737E
- cmp r1, r0
- beq _08087508
- ldr r0, =gUnknown_082773F5
- cmp r1, r0
- bne _080874F8
-_080874C6:
- movs r0, 0xA
- b _0808750A
- .pool
-_080874F8:
- ldr r0, =gUnknown_082773FF
- cmp r1, r0
- beq _08087508
- movs r0, 0
- b _0808750A
- .pool
-_08087508:
- movs r0, 0x9
-_0808750A:
- pop {r1}
- bx r1
- thumb_func_end sub_8087480
-
- thumb_func_start sub_8087510
-sub_8087510: @ 8087510
- push {lr}
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end sub_8087510
-
- thumb_func_start sub_808751C
-sub_808751C: @ 808751C
- push {lr}
- movs r0, 0x6
- bl PlaySE
- bl sub_809FA9C
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end sub_808751C
-
- thumb_func_start sub_8087530
-sub_8087530: @ 8087530
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8087530
-
- thumb_func_start sub_808754C
-sub_808754C: @ 808754C
- push {lr}
- movs r0, 0x6
- bl PlaySE
- ldr r0, =gUnknown_082774EF
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_808754C
-
- thumb_func_start sub_8087568
-sub_8087568: @ 8087568
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8087568
-
- thumb_func_start sub_8087584
-sub_8087584: @ 8087584
- push {lr}
- ldr r0, =gUnknown_08277509
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8087584
-
- thumb_func_start sub_8087598
-sub_8087598: @ 8087598
- push {lr}
- bl is_c1_link_related_active
- cmp r0, 0
- bne _080875A6
- movs r0, 0
- b _080875C0
-_080875A6:
- bl sub_800B4DC
- cmp r0, 0x2
- bls _080875B8
- ldr r1, =gUnknown_03000E18
- movs r0, 0x1
- b _080875BC
- .pool
-_080875B8:
- ldr r1, =gUnknown_03000E18
- movs r0, 0
-_080875BC:
- strb r0, [r1]
- ldrb r0, [r1]
-_080875C0:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8087598
-
- thumb_func_start sub_80875C8
-sub_80875C8: @ 80875C8
- push {lr}
- bl sub_800B4DC
- cmp r0, 0x1
- bls _0808762C
- bl is_c1_link_related_active
- cmp r0, 0x1
- bne _0808762C
- bl sub_8009F3C
- cmp r0, 0x1
- bne _0808762C
- ldr r0, =gUnknown_03000E14
- ldr r1, [r0]
- ldr r0, =sub_808711C
- cmp r1, r0
- beq _08087614
- ldr r0, =sub_80870F8
- cmp r1, r0
- bne _0808762C
- ldr r0, =gUnknown_03000E18
- ldrb r2, [r0]
- movs r1, 0
- strb r1, [r0]
- cmp r2, 0x1
- beq _08087614
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0808762C
- ldrb r1, [r2, 0xA]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808762C
-_08087614:
- movs r0, 0x1
- b _0808762E
- .pool
-_0808762C:
- movs r0, 0
-_0808762E:
- pop {r1}
- bx r1
- thumb_func_end sub_80875C8
-
- thumb_func_start sub_8087634
-sub_8087634: @ 8087634
- push {lr}
- bl sub_8087690
- cmp r0, 0x1
- bls _08087658
- bl is_c1_link_related_active
- cmp r0, 0x1
- bne _08087658
- bl sub_8009F3C
- cmp r0, 0x1
- bne _08087658
- ldr r0, =gUnknown_03000E14
- ldr r1, [r0]
- ldr r0, =sub_8087140
- cmp r1, r0
- beq _08087664
-_08087658:
- movs r0, 0
- b _08087666
- .pool
-_08087664:
- movs r0, 0x1
-_08087666:
- pop {r1}
- bx r1
- thumb_func_end sub_8087634
-
- thumb_func_start sub_808766C
-sub_808766C: @ 808766C
- push {lr}
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- bne _08087688
- bl sub_8009F3C
- cmp r0, 0
- beq _08087688
- movs r0, 0x1
- b _0808768A
- .pool
-_08087688:
- movs r0, 0
-_0808768A:
- pop {r1}
- bx r1
- thumb_func_end sub_808766C
-
- thumb_func_start sub_8087690
-sub_8087690: @ 8087690
- push {lr}
- ldr r0, =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- bne _080876B0
- ldr r0, =gLink
- ldr r1, =0x00000339
- adds r0, r1
- ldrb r0, [r0]
- b _080876B8
- .pool
-_080876B0:
- ldr r0, =gUnknown_03005000
- ldr r1, =0x00000c1a
- adds r0, r1
- ldrb r0, [r0]
-_080876B8:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8087690
-
- thumb_func_start sub_80876C4
-sub_80876C4: @ 80876C4
- movs r1, 0
- str r1, [r0]
- bx lr
- thumb_func_end sub_80876C4
-
- thumb_func_start strange_npc_table_clear
-strange_npc_table_clear: @ 80876CC
- push {lr}
- ldr r0, =gLinkPlayerMapObjects
- movs r1, 0
- movs r2, 0x10
- bl memset
- pop {r0}
- bx r0
- .pool
- thumb_func_end strange_npc_table_clear
-
- thumb_func_start sub_80876E0
-sub_80876E0: @ 80876E0
- push {lr}
- movs r1, 0
- movs r2, 0x24
- bl memset
- pop {r0}
- bx r0
- thumb_func_end sub_80876E0
-
- thumb_func_start sub_80876F0
-sub_80876F0: @ 80876F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r1
- mov r10, r2
- mov r8, r3
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r9
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- mov r1, r10
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- mov r2, r8
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- bl sub_808D4F4
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r4, r7, 2
- ldr r0, =gLinkPlayerMapObjects
- adds r4, r0
- lsls r5, r6, 3
- adds r5, r6
- lsls r5, 2
- ldr r0, =gMapObjects
- adds r5, r0
- adds r0, r4, 0
- bl sub_80876C4
- adds r0, r5, 0
- bl sub_80876E0
- movs r2, 0
- movs r1, 0x1
- movs r0, 0x1
- strb r0, [r4]
- strb r7, [r4, 0x1]
- strb r6, [r4, 0x2]
- strb r2, [r4, 0x3]
- ldrb r0, [r5]
- orrs r0, r1
- mov r2, r8
- ands r2, r1
- lsls r2, 1
- movs r1, 0x3
- negs r1, r1
- ands r0, r1
- orrs r0, r2
- strb r0, [r5]
- movs r0, 0x2
- strb r0, [r5, 0x19]
- movs r0, 0x40
- strb r0, [r5, 0x4]
- mov r0, r9
- lsls r0, 16
- asrs r0, 16
- mov r9, r0
- mov r1, r10
- lsls r1, 16
- asrs r1, 16
- mov r10, r1
- adds r0, r5, 0
- mov r1, r9
- mov r2, r10
- bl sub_808779C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80876F0
-
- thumb_func_start sub_808779C
-sub_808779C: @ 808779C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- strh r0, [r4, 0x10]
- strh r1, [r4, 0x12]
- strh r0, [r4, 0x14]
- strh r1, [r4, 0x16]
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- adds r2, r4, 0
- adds r2, 0xC
- adds r3, r4, 0
- adds r3, 0xE
- bl sub_8093038
- ldrh r0, [r4, 0xC]
- adds r0, 0x8
- strh r0, [r4, 0xC]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoord
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_808779C
-
- thumb_func_start sub_80877DC
-sub_80877DC: @ 80877DC
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- ldr r1, =gLinkPlayerMapObjects
- lsrs r0, 22
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- beq _080877FE
- ldrb r0, [r1, 0x2]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, =gMapObjects
- adds r1, r0
- strb r2, [r1, 0x19]
-_080877FE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80877DC
-
- thumb_func_start sub_808780C
-sub_808780C: @ 808780C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 22
- ldr r1, =gLinkPlayerMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r4, r0, r1
- ldrb r0, [r4, 0x4]
- cmp r0, 0x40
- beq _08087838
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySprite
-_08087838:
- movs r0, 0
- strb r0, [r5]
- ldrb r1, [r4]
- subs r0, 0x2
- ands r0, r1
- strb r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_808780C
-
- thumb_func_start sub_8087858
-sub_8087858: @ 8087858
- lsls r0, 24
- ldr r1, =gLinkPlayerMapObjects
- lsrs r0, 22
- adds r0, r1
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0x4]
- bx lr
- .pool
- thumb_func_end sub_8087858
-
- thumb_func_start sub_8087878
-sub_8087878: @ 8087878
- lsls r0, 24
- ldr r3, =gLinkPlayerMapObjects
- lsrs r0, 22
- adds r0, r3
- ldrb r3, [r0, 0x2]
- lsls r0, r3, 3
- adds r0, r3
- lsls r0, 2
- ldr r3, =gMapObjects
- adds r0, r3
- ldrh r3, [r0, 0x10]
- strh r3, [r1]
- ldrh r0, [r0, 0x12]
- strh r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_8087878
-
- thumb_func_start sub_80878A0
-sub_80878A0: @ 80878A0
- lsls r0, 24
- ldr r1, =gLinkPlayerMapObjects
- lsrs r0, 22
- adds r0, r1
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0x19]
- bx lr
- .pool
- thumb_func_end sub_80878A0
-
- thumb_func_start sub_80878C0
-sub_80878C0: @ 80878C0
- lsls r0, 24
- ldr r1, =gLinkPlayerMapObjects
- lsrs r0, 22
- adds r0, r1
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0xB]
- lsls r0, 28
- lsrs r0, 28
- bx lr
- .pool
- thumb_func_end sub_80878C0
-
- thumb_func_start sub_80878E4
-sub_80878E4: @ 80878E4
- lsls r0, 24
- ldr r1, =gLinkPlayerMapObjects
- lsrs r0, 22
- adds r0, r1
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- adds r0, 0x21
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x10
- subs r0, r1
- bx lr
- .pool
- thumb_func_end sub_80878E4
-
- thumb_func_start sub_808790C
-sub_808790C: @ 808790C
- push {r4-r6,lr}
- movs r2, 0
- ldr r5, =gLinkPlayerMapObjects
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r3, r1, 16
-_0808791A:
- lsls r0, r2, 2
- adds r1, r0, r5
- ldrb r0, [r1]
- cmp r0, 0
- beq _08087958
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- beq _0808792E
- cmp r0, 0x2
- bne _08087958
-_0808792E:
- ldrb r1, [r1, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r1, r0, r1
- movs r6, 0x10
- ldrsh r0, [r1, r6]
- cmp r0, r4
- bne _08087958
- movs r6, 0x12
- ldrsh r0, [r1, r6]
- cmp r0, r3
- bne _08087958
- adds r0, r2, 0
- b _08087964
- .pool
-_08087958:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _0808791A
- movs r0, 0x4
-_08087964:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_808790C
-
- thumb_func_start sub_808796C
-sub_808796C: @ 808796C
- push {r4-r6,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- adds r2, r3, 0
- lsrs r0, 22
- ldr r1, =gLinkPlayerMapObjects
- adds r5, r0, r1
- ldrb r1, [r5, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r6, r0, r1
- ldrb r0, [r5]
- cmp r0, 0
- beq _080879C8
- cmp r3, 0xA
- bls _080879A4
- ldrb r0, [r6]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r6]
- b _080879C8
- .pool
-_080879A4:
- ldr r4, =gUnknown_08339E00
- ldr r1, =gUnknown_08339DC8
- ldrb r0, [r5, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl _call_via_r3
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl _call_via_r2
-_080879C8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_808796C
-
- thumb_func_start sub_80879D8
-sub_80879D8: @ 80879D8
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- ldr r4, =gUnknown_08339DD4
- lsls r3, r2, 2
- adds r3, r4
- ldr r3, [r3]
- bl _call_via_r3
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80879D8
-
- thumb_func_start sub_80879F8
-sub_80879F8: @ 80879F8
- movs r0, 0x1
- bx lr
- thumb_func_end sub_80879F8
-
- thumb_func_start sub_80879FC
-sub_80879FC: @ 80879FC
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- ldr r4, =gUnknown_08339DD4
- lsls r3, r2, 2
- adds r3, r4
- ldr r3, [r3]
- bl _call_via_r3
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80879FC
-
- thumb_func_start sub_8087A1C
-sub_8087A1C: @ 8087A1C
- movs r0, 0
- bx lr
- thumb_func_end sub_8087A1C
-
- thumb_func_start sub_8087A20
-sub_8087A20: @ 8087A20
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- ldrb r1, [r5, 0x19]
- bl npc_something3
- strb r0, [r5, 0x19]
- ldrb r1, [r5, 0x19]
- mov r6, sp
- adds r6, 0x2
- adds r0, r5, 0
- mov r2, sp
- adds r3, r6, 0
- bl FieldObjectMoveDestCoords
- ldrb r0, [r4, 0x2]
- ldrb r1, [r5, 0x19]
- mov r2, sp
- movs r3, 0
- ldrsh r2, [r2, r3]
- movs r4, 0
- ldrsh r3, [r6, r4]
- bl npc_080587EC
- lsls r0, 24
- cmp r0, 0
- bne _08087A7E
- adds r1, r5, 0
- adds r1, 0x21
- movs r0, 0x10
- strb r0, [r1]
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r3, 0
- ldrsh r2, [r6, r3]
- adds r0, r5, 0
- bl npc_coords_shift
- adds r0, r5, 0
- bl FieldObjectUpdateZCoord
- movs r0, 0x1
- b _08087A80
-_08087A7E:
- movs r0, 0
-_08087A80:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8087A20
-
- thumb_func_start sub_8087A88
-sub_8087A88: @ 8087A88
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- ldrb r1, [r4, 0x19]
- bl npc_something3
- strb r0, [r4, 0x19]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8087A88
-
- thumb_func_start sub_8087AA0
-sub_8087AA0: @ 8087AA0
- movs r1, 0
- strb r1, [r0, 0x3]
- bx lr
- thumb_func_end sub_8087AA0
-
- thumb_func_start sub_8087AA8
-sub_8087AA8: @ 8087AA8
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r4, 0
- adds r5, 0x21
- ldrb r0, [r5]
- subs r0, 0x1
- strb r0, [r5]
- movs r0, 0x1
- strb r0, [r6, 0x3]
- ldrb r0, [r4, 0x19]
- adds r1, 0xC
- adds r2, r4, 0
- adds r2, 0xE
- bl MoveCoords
- ldrb r0, [r5]
- cmp r0, 0
- bne _08087AD8
- adds r0, r4, 0
- bl npc_coords_shift_still
- movs r0, 0x2
- strb r0, [r6, 0x3]
-_08087AD8:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8087AA8
-
- thumb_func_start npc_something3
-npc_something3: @ 8087AE0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- subs r0, 0x1
- cmp r0, 0x9
- bhi _08087B38
- lsls r0, 2
- ldr r1, =_08087B00
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08087B00:
- .4byte _08087B28
- .4byte _08087B2C
- .4byte _08087B30
- .4byte _08087B34
- .4byte _08087B38
- .4byte _08087B38
- .4byte _08087B28
- .4byte _08087B2C
- .4byte _08087B30
- .4byte _08087B34
-_08087B28:
- movs r0, 0x2
- b _08087B3A
-_08087B2C:
- movs r0, 0x1
- b _08087B3A
-_08087B30:
- movs r0, 0x3
- b _08087B3A
-_08087B34:
- movs r0, 0x4
- b _08087B3A
-_08087B38:
- adds r0, r2, 0
-_08087B3A:
- pop {r1}
- bx r1
- thumb_func_end npc_something3
-
- thumb_func_start npc_080587EC
-npc_080587EC: @ 8087B40
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r2, 16
- lsrs r2, 16
- mov r12, r2
- lsls r3, 16
- movs r4, 0
- ldr r0, =gMapObjects
- mov r9, r0
- lsrs r2, r3, 16
- mov r10, r2
- asrs r6, r3, 16
-_08087B64:
- mov r7, r12
- lsls r3, r7, 16
- mov r0, r10
- lsls r5, r0, 16
- cmp r4, r8
- beq _08087BA8
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- mov r2, r9
- adds r1, r0, r2
- movs r7, 0x10
- ldrsh r0, [r1, r7]
- asrs r2, r3, 16
- cmp r0, r2
- bne _08087B8C
- movs r7, 0x12
- ldrsh r0, [r1, r7]
- cmp r0, r6
- beq _08087B9E
-_08087B8C:
- movs r7, 0x14
- ldrsh r0, [r1, r7]
- cmp r0, r2
- bne _08087BA8
- movs r0, 0x16
- ldrsh r1, [r1, r0]
- asrs r0, r5, 16
- cmp r1, r0
- bne _08087BA8
-_08087B9E:
- movs r0, 0x1
- b _08087BBE
- .pool
-_08087BA8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _08087B64
- asrs r0, r3, 16
- asrs r1, r5, 16
- bl MapGridIsImpassableAt
- lsls r0, 24
- lsrs r0, 24
-_08087BBE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end npc_080587EC
-
- thumb_func_start sub_8087BCC
-sub_8087BCC: @ 8087BCC
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r2, r5, 2
- ldr r0, =gLinkPlayerMapObjects
- adds r2, r0
- ldrb r1, [r2, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r4, r0, r1
- ldrb r0, [r2]
- cmp r0, 0
- beq _08087C7A
- subs r0, r3, 0x1
- cmp r0, 0x4
- bhi _08087C56
- lsls r0, 2
- ldr r1, =_08087C0C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08087C0C:
- .4byte _08087C2C
- .4byte _08087C2C
- .4byte _08087C38
- .4byte _08087C20
- .4byte _08087C20
-_08087C20:
- ldrb r0, [r4]
- lsls r0, 30
- lsrs r0, 31
- bl sub_808BD6C
- b _08087C44
-_08087C2C:
- ldrb r0, [r4]
- lsls r0, 30
- lsrs r0, 31
- bl sub_808BD7C
- b _08087C44
-_08087C38:
- ldrb r1, [r4]
- lsls r1, 30
- lsrs r1, 31
- movs r0, 0
- bl GetRivalAvatarGraphicsIdByStateIdAndGender
-_08087C44:
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =sub_8087C8C
- movs r2, 0
- str r2, [sp]
- movs r3, 0
- bl AddPseudoFieldObject
- strb r0, [r4, 0x4]
-_08087C56:
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- strh r5, [r0, 0x2E]
- ldrb r1, [r4]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r4]
-_08087C7A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8087BCC
-
- thumb_func_start sub_8087C8C
-sub_8087C8C: @ 8087C8C
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- lsls r4, 2
- ldr r0, =gLinkPlayerMapObjects
- adds r4, r0
- ldrb r1, [r4, 0x2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r6, r0, r1
- ldrh r0, [r6, 0xC]
- strh r0, [r5, 0x20]
- ldrh r0, [r6, 0xE]
- strh r0, [r5, 0x22]
- ldrb r0, [r6, 0xB]
- lsrs r0, 4
- adds r1, r5, 0
- movs r2, 0x1
- bl SetObjectSubpriorityByZCoord
- ldrb r0, [r6, 0xB]
- lsrs r0, 4
- bl ZCoordToPriority
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- bne _08087CF8
- ldrb r0, [r6, 0x19]
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- b _08087D0A
- .pool
-_08087CF8:
- ldrb r0, [r6, 0x19]
- bl get_go_image_anim_num
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnimIfDifferent
-_08087D0A:
- adds r0, r5, 0
- movs r1, 0
- bl sub_80979D4
- ldrb r0, [r6]
- lsls r0, 29
- cmp r0, 0
- bge _08087D3C
- ldrh r0, [r5, 0x3C]
- movs r1, 0x4
- ands r1, r0
- lsls r1, 16
- adds r3, r5, 0
- adds r3, 0x3E
- lsrs r1, 18
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r5, 0x3C]
- adds r0, 0x1
- strh r0, [r5, 0x3C]
-_08087D3C:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8087C8C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 0827a5a12..b71804617 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -10083,7 +10083,7 @@ _081B5614:
.pool
_081B5624:
ldr r1, =gUnknown_0203CEC8
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
_081B5628:
str r0, [r1]
adds r0, r6, 0
@@ -10189,7 +10189,7 @@ _081B56F8:
b _081B572A
_081B56FE:
ldr r1, =gUnknown_0203CEC8
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
str r0, [r1]
adds r0, r4, 0
bl sub_81B12C0
@@ -10408,7 +10408,7 @@ sub_81B58A8: @ 81B58A8
str r0, [sp]
ldr r0, =sub_81B1370
str r0, [sp, 0x4]
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -14836,7 +14836,7 @@ CB2_PartyMenuFromStartMenu: @ 81B7F34
str r0, [sp]
ldr r0, =sub_81B1370
str r0, [sp, 0x4]
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -16021,7 +16021,7 @@ sub_81B892C: @ 81B892C
str r0, [sp]
ldr r0, =sub_81B1370
str r0, [sp, 0x4]
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -16042,7 +16042,7 @@ sub_81B8958: @ 81B8958
str r0, [sp]
ldr r0, =sub_81B1370
str r0, [sp, 0x4]
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
str r0, [sp, 0x8]
movs r0, 0xB
movs r1, 0
@@ -17283,7 +17283,7 @@ sub_81B9354: @ 81B9354
str r1, [sp]
ldr r1, =sub_81B1370
str r1, [sp, 0x4]
- ldr r1, =c2_exit_to_overworld_2_switch
+ ldr r1, =CB2_ReturnToField
str r1, [sp, 0x8]
movs r1, 0
movs r2, 0xB
@@ -17311,7 +17311,7 @@ _081B93A6:
ldr r0, =gUnknown_03005DB0
ldr r1, =hm_add_c3_without_phase_2
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r4}
pop {r0}
@@ -17420,7 +17420,7 @@ _081B9486:
ldr r1, =gUnknown_03005DB0
ldr r0, =hm_add_c3_without_phase_2
str r0, [r1]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
@@ -17556,7 +17556,7 @@ _081B95BA:
ldr r0, =gUnknown_03005DB0
ldr r1, =hm_add_c3_without_phase_2
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r4,r5}
pop {r0}
@@ -17660,7 +17660,7 @@ sub_81B968C: @ 81B968C
subs r3, 0x1
lsls r3, 24
lsrs r3, 24
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
str r0, [sp]
movs r0, 0x3
bl sub_81BF8EC
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 1ae5b4d14..8a329a2fe 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -586,7 +586,7 @@ sub_816B31C: @ 816B31C
ldr r0, =gFieldCallback
ldr r1, =mapldr_080EBC0C
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
@@ -1279,7 +1279,7 @@ sub_816B900: @ 816B900
ldr r0, =gFieldCallback
ldr r1, =pal_fill_for_maplights_or_black
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
@@ -1538,7 +1538,7 @@ sub_816BB28: @ 816BB28
ldr r0, =gFieldCallback
ldr r1, =sub_816BB48
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
diff --git a/asm/pokedex.s b/asm/pokedex.s
index cb40f0eda..526188cca 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -1244,7 +1244,7 @@ _080BBE18:
bl sub_80BC890
adds r0, r6, 0
bl DestroyTask
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
bl SetMainCallback2
ldr r0, =gMPlayInfo_BGM
ldr r1, =0x0000ffff
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 2ff444f56..a74538fb1 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -657,7 +657,7 @@ sub_80C7678: @ 80C7678
ldr r1, =gFieldCallback
ldr r0, =mapldr_0808C6D8
str r0, [r1]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 6e7c3af57..14dc569fe 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -2024,7 +2024,7 @@ sub_81C4EEC: @ 81C4EEC
thumb_func_start sub_81C4EFC
sub_81C4EFC: @ 81C4EFC
push {lr}
- ldr r1, =sub_8086194
+ ldr r1, =CB2_ReturnToFieldWithOpenMenu
movs r0, 0
bl sub_81C4F98
pop {r0}
@@ -2073,7 +2073,7 @@ sub_81C4F44: @ 81C4F44
ldr r0, =gUnknown_03005DB0
ldr r1, =hm_add_c3_without_phase_2
str r1, [r0]
- ldr r1, =c2_exit_to_overworld_2_switch
+ ldr r1, =CB2_ReturnToField
movs r0, 0x3
bl sub_81C4F98
adds r0, r4, 0
diff --git a/asm/pokenav.s b/asm/pokenav.s
index d98605dde..99b99383c 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -14,7 +14,7 @@ CB2_PokeNav: @ 81C7250
str r0, [r4]
cmp r0, 0
bne _081C7270
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
bl SetMainCallback2
b _081C7292
.pool
@@ -66,7 +66,7 @@ sub_81C72BC: @ 81C72BC
str r0, [r4]
cmp r0, 0
bne _081C72F0
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
b _081C7320
.pool
@@ -351,12 +351,12 @@ _081C752C:
bl sub_81C7334
cmp r4, 0
beq _081C755C
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
b _081C7562
.pool
_081C755C:
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
bl SetMainCallback2
_081C7562:
pop {r4-r7}
@@ -3757,7 +3757,7 @@ sub_81C8EF8: @ 81C8EF8
lsls r2, 2
add r2, r8
str r2, [r5, 0x44]
- ldrh r3, [r2, 0x4]
+ ldrh r3, [r2( 0x4]
lsls r1, r3, 22
lsrs r1, 22
adds r1, 0x2
diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s
index 80bc66f3f..b069ec58e 100644
--- a/asm/rom_8011DC0.s
+++ b/asm/rom_8011DC0.s
@@ -3116,7 +3116,7 @@ _08014070:
movs r0, 0x6
strb r0, [r1, 0x1]
ldr r1, =gMain
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
str r0, [r1, 0x8]
ldr r0, =sub_807AE50
bl SetMainCallback2
@@ -3258,7 +3258,7 @@ _080141D4:
eors r0, r1
lsls r0, 24
lsrs r0, 24
- ldr r1, =c2_exit_to_overworld_2_switch
+ ldr r1, =CB2_ReturnToField
bl sub_80C4E74
_080141F2:
bl RunTasks
@@ -3399,7 +3399,7 @@ sub_8014304: @ 8014304
ldr r0, =0x00004087
bl VarSet
bl GetLinkPlayerCount
- ldr r1, =gUnknown_03005DB8
+ ldr r1, =gFieldLinkPlayerCount
strb r0, [r1]
bl GetMultiplayerId
ldr r1, =gUnknown_03005DB4
@@ -3757,7 +3757,7 @@ _08014714:
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
- ldr r1, =c2_load_new_map
+ ldr r1, =CB2_LoadMap
bl sub_802A9A8
b _08014764
.pool
@@ -3766,7 +3766,7 @@ _08014734:
movs r1, 0x9
movs r2, 0x1
bl sub_8014290
- ldr r0, =c2_load_new_map
+ ldr r0, =CB2_LoadMap
bl sub_8020C70
b _08014764
.pool
@@ -3778,7 +3778,7 @@ _0801474C:
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
- ldr r1, =c2_load_new_map
+ ldr r1, =CB2_LoadMap
bl sub_802493C
_08014764:
adds r0, r4, 0
@@ -6931,7 +6931,7 @@ _08016502:
ldr r1, =gFieldCallback
ldr r0, =sub_80AF128
str r0, [r1]
- ldr r1, =c2_exit_to_overworld_2_switch
+ ldr r1, =CB2_ReturnToField
movs r0, 0x8
bl sub_81B8904
b _08016878
@@ -7229,7 +7229,7 @@ _0801677E:
ldr r1, =gFieldCallback
ldr r0, =sub_80AF128
str r0, [r1]
- ldr r1, =c2_exit_to_overworld_2_switch
+ ldr r1, =CB2_ReturnToField
movs r0, 0x9
bl sub_81B8904
adds r0, r6, 0
@@ -14941,7 +14941,7 @@ _0801A58C:
ldr r0, =gUnknown_03000DAC
ldr r0, [r0]
bl Free
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
pop {r4}
pop {r0}
@@ -16076,7 +16076,7 @@ _0801AF58:
bl sub_801ABDC
cmp r0, 0
beq _0801AFAE
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
b _0801AFAE
.pool
@@ -16102,7 +16102,7 @@ _0801AF98:
bl sub_801ABDC
cmp r0, 0
beq _0801AFAE
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
_0801AFAE:
bl RunTasks
@@ -23568,7 +23568,7 @@ _0801EBA8:
bne _0801EBC2
bl sub_801F544
bl sub_801DE30
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
_0801EBC2:
add sp, 0x4
@@ -27694,7 +27694,7 @@ _08020C26:
str r0, [r5]
adds r0, r4, 0
bl SetMainCallback2
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
cmp r4, r0
bne _08020C5A
ldr r2, =gTextFlags
@@ -27705,8 +27705,8 @@ _08020C26:
movs r0, 0xC8
lsls r0, 1
bl PlayNewMapMusic
- ldr r0, =c1_overworld
- bl set_callback1
+ ldr r0, =CB1_Overworld
+ bl SetMainCallback1
_08020C5A:
movs r0, 0
_08020C5C:
diff --git a/asm/rotating_gate.s b/asm/rotating_gate.s
index da5e73034..9b57dc1b0 100644
--- a/asm/rotating_gate.s
+++ b/asm/rotating_gate.s
@@ -915,8 +915,8 @@ _080FBECA:
bx r0
thumb_func_end RotatingGatePuzzleCameraUpdate
- thumb_func_start sub_80FBED0
-sub_80FBED0: @ 80FBED0
+ thumb_func_start RotatingGate_InitPuzzleAndGraphics
+RotatingGate_InitPuzzleAndGraphics: @ 80FBED0
push {lr}
bl GetCurrentMapRotatingGatePuzzleType
cmp r0, 0
@@ -929,7 +929,7 @@ sub_80FBED0: @ 80FBED0
_080FBEEA:
pop {r0}
bx r0
- thumb_func_end sub_80FBED0
+ thumb_func_end RotatingGate_InitPuzzleAndGraphics
thumb_func_start CheckForRotatingGatePuzzleCollision
CheckForRotatingGatePuzzleCollision: @ 80FBEF0
diff --git a/asm/roulette.s b/asm/roulette.s
index ab873dd32..d3dd5fd9e 100644
--- a/asm/roulette.s
+++ b/asm/roulette.s
@@ -3276,7 +3276,7 @@ sub_8141E7C: @ 8141E7C
ldr r1, =gFieldCallback
ldr r0, =sub_80AF168
str r0, [r1]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index 1869811c2..b241e3778 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -390,7 +390,7 @@ _080F8AB6:
thumb_func_start sub_80F8ACC
sub_80F8ACC: @ 80F8ACC
push {lr}
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
pop {r0}
bx r0
@@ -1559,7 +1559,7 @@ _080F9478:
movs r0, 0x1
strh r0, [r1]
_080F947E:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
pop {r0}
bx r0
@@ -1599,7 +1599,7 @@ _080F94D0:
movs r0, 0x1
strh r0, [r1]
_080F94D6:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, =CB2_ReturnToFieldContinueScript
bl SetMainCallback2
pop {r0}
bx r0
diff --git a/asm/shop.s b/asm/shop.s
index 97dbd07c8..c42af8ef1 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -230,7 +230,7 @@ CB2_ExitSellMenu: @ 80DFC48
ldr r0, =gFieldCallback
ldr r1, =MapPostLoadHook_ExitBuyOrSellMenu
str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
pop {r0}
bx r0
@@ -2706,7 +2706,7 @@ Task_ExitBuyMenu: @ 80E11B0
bne _080E11D6
bl RemoveMoneyLabelObject
bl BuyMenuFreeMemory
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 23ac3710a..03cb18341 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -591,7 +591,7 @@ StartMenu_PlayerName: @ 809FC8C
cmp r0, 0
beq _0809FCC8
_0809FCB6:
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
bl sub_80C4DDC
b _0809FCEA
.pool
@@ -601,12 +601,12 @@ _0809FCC8:
lsls r0, 24
cmp r0, 0
beq _0809FCE4
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
bl sub_80C51C4
b _0809FCEA
.pool
_0809FCE4:
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
bl sub_80C4DDC
_0809FCEA:
movs r0, 0x1
@@ -656,7 +656,7 @@ _0809FD38:
ldr r0, =CB2_InitOptionMenu
bl SetMainCallback2
ldr r1, =gMain
- ldr r0, =sub_8086194
+ ldr r0, =CB2_ReturnToFieldWithOpenMenu
str r0, [r1, 0x8]
movs r0, 0x1
_0809FD52:
@@ -703,7 +703,7 @@ _0809FDA0:
bl overworld_free_bg_tilemaps
ldr r0, =gUnknown_03005DB4
ldrb r0, [r0]
- ldr r1, =sub_8086194
+ ldr r1, =CB2_ReturnToFieldWithOpenMenu
bl sub_80C4E74
movs r0, 0x1
_0809FDB4:
diff --git a/asm/trade.s b/asm/trade.s
index f565cd7ba..7d3ec4a8a 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -10669,7 +10669,7 @@ _0807CF5C:
bl Free
str r4, [r7]
_0807CFAA:
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
bl sub_807E784
_0807CFB4:
@@ -12774,7 +12774,7 @@ _0807E3A8:
bl Free
str r4, [r7]
_0807E3F6:
- ldr r0, =c2_exit_to_overworld_2_switch
+ ldr r0, =CB2_ReturnToField
bl SetMainCallback2
bl sub_807E784
_0807E400:
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 7b9d6519c..6668f0d1f 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -8,7 +8,6 @@
.include "asm/macros.inc"
.include "asm/macros/event.inc"
.include "constants/constants.inc"
-
.section script_data, "aw", %progbits
diff --git a/data/item_use.s b/data/item_use.s
index d9bcc44f6..6c9affbc8 100644
--- a/data/item_use.s
+++ b/data/item_use.s
@@ -8,7 +8,7 @@
.align 2
gUnknown_085920D8:: @ 85920D8
.4byte sub_81B617C
- .4byte c2_exit_to_overworld_2_switch
+ .4byte CB2_ReturnToField
.4byte NULL
.align 2
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index b8aef7c3d..e5b330bf3 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -916,21 +916,21 @@ RecordCorner_EventScript_277471:: @ 8277471
releaseall
end
-gUnknown_0827747E:: @ 827747E
+EventScript_TradeRoom_ReadTrainerCard1:: @ 827747E
msgbox Text_278452, 4
fadescreen 1
special sp02A_crash_sound
waitstate
end
-gUnknown_0827748D:: @ 827748D
+EventScript_TradeRoom_ReadTrainerCard2:: @ 827748D
msgbox Text_27847B, 4
fadescreen 1
special sp02A_crash_sound
waitstate
end
-gUnknown_0827749C:: @ 827749C
+EventScript_TradeRoom_TooBusyToNotice:: @ 827749C
msgbox Text_27842E, 4
closemessage
end
@@ -983,7 +983,7 @@ gUnknown_08277509:: @ 8277509
special sub_80B371C
end
-gUnknown_08277513:: @ 8277513
+EventScript_277513:: @ 8277513
special sub_80B36EC
special sub_80AF9F8
waitstate
diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc
index fc069a8ee..01ce60717 100644
--- a/data/scripts/maps/FortreeCity_Gym.inc
+++ b/data/scripts/maps/FortreeCity_Gym.inc
@@ -12,7 +12,7 @@ FortreeCity_Gym_MapScript2_2165BA: @ 82165BA
.2byte 0
FortreeCity_Gym_EventScript_2165C4:: @ 82165C4
- special sub_80FBED0
+ special RotatingGate_InitPuzzleAndGraphics
end
FortreeCity_Gym_EventScript_2165C8:: @ 82165C8
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle6.inc b/data/scripts/maps/Route110_TrickHousePuzzle6.inc
index a043b2ec4..6b13cf8cb 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle6.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle6.inc
@@ -12,7 +12,7 @@ Route110_TrickHousePuzzle6_MapScript2_26DDB6: @ 826DDB6
.2byte 0
Route110_TrickHousePuzzle6_EventScript_26DDC0:: @ 826DDC0
- special sub_80FBED0
+ special RotatingGate_InitPuzzleAndGraphics
end
Route110_TrickHousePuzzle6_EventScript_26DDC4:: @ 826DDC4
diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc
index 72707186b..2f99f7c4e 100644
--- a/data/scripts/maps/Route119.inc
+++ b/data/scripts/maps/Route119.inc
@@ -18,7 +18,7 @@ Route119_EventScript_1F4439:: @ 81F4439
Route119_MapScript1_1F444D: @ 81F444D
call Route119_EventScript_271ED7
call Route119_EventScript_271EFB
- compare VAR_0x40B3, 1
+ compare VAR_WEATHER_INSTITUTE_STATE, 1
call_if 1, Route119_EventScript_1F4466
special SetRoute119Weather
end
@@ -26,7 +26,7 @@ Route119_MapScript1_1F444D: @ 81F444D
Route119_EventScript_1F4466:: @ 81F4466
setflag FLAG_0x37D
clearflag FLAG_0x37C
- setvar VAR_0x40B3, 2
+ setvar VAR_WEATHER_INSTITUTE_STATE, 2
return
Route119_EventScript_1F4472:: @ 81F4472
diff --git a/data/scripts/maps/Route119_WeatherInstitute_1F.inc b/data/scripts/maps/Route119_WeatherInstitute_1F.inc
index 399692db3..b008f52c0 100644
--- a/data/scripts/maps/Route119_WeatherInstitute_1F.inc
+++ b/data/scripts/maps/Route119_WeatherInstitute_1F.inc
@@ -3,7 +3,7 @@ Route119_WeatherInstitute_1F_MapScripts:: @ 826FA86
.byte 0
Route119_WeatherInstitute_1F_MapScript1_26FA8C: @ 826FA8C
- compare VAR_0x40B3, 0
+ compare VAR_WEATHER_INSTITUTE_STATE, 0
call_if 1, Route119_WeatherInstitute_1F_EventScript_26FA98
end
@@ -16,7 +16,7 @@ Route119_WeatherInstitute_1F_EventScript_26FAA4:: @ 826FAA4
lock
faceplayer
special GetPlayerBigGuyGirlString
- compare VAR_0x40B3, 0
+ compare VAR_WEATHER_INSTITUTE_STATE, 0
goto_eq Route119_WeatherInstitute_1F_EventScript_26FABE
msgbox Route119_WeatherInstitute_1F_Text_26FCE5, 4
release
diff --git a/data/scripts/maps/Route119_WeatherInstitute_2F.inc b/data/scripts/maps/Route119_WeatherInstitute_2F.inc
index 38f79763d..c8f24f33d 100644
--- a/data/scripts/maps/Route119_WeatherInstitute_2F.inc
+++ b/data/scripts/maps/Route119_WeatherInstitute_2F.inc
@@ -3,9 +3,9 @@ Route119_WeatherInstitute_2F_MapScripts:: @ 826FF1E
.byte 0
Route119_WeatherInstitute_2F_MapScript1_26FF24: @ 826FF24
- compare VAR_0x40B3, 0
+ compare VAR_WEATHER_INSTITUTE_STATE, 0
call_if 1, Route119_WeatherInstitute_2F_EventScript_26FF44
- compare VAR_0x40B3, 1
+ compare VAR_WEATHER_INSTITUTE_STATE, 1
call_if 1, Route119_WeatherInstitute_2F_EventScript_26FF50
checkflag FLAG_SYS_GAME_CLEAR
call_if 1, Route119_WeatherInstitute_2F_EventScript_26FF5C
@@ -62,7 +62,7 @@ Route119_WeatherInstitute_2F_EventScript_26FFC8:: @ 826FFC8
waitmovement 0
msgbox Route119_WeatherInstitute_2F_Text_2705DD, 4
closemessage
- setvar VAR_0x40B3, 1
+ setvar VAR_WEATHER_INSTITUTE_STATE, 1
clearflag FLAG_0x37D
fadedefaultbgm
fadescreen 1
diff --git a/data/specials.inc b/data/specials.inc
index f9f7c97d7..62dd9717e 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -213,7 +213,7 @@ gSpecials:: @ 81DBA64
def_special sub_80F972C
def_special sp0C8_whiteout_maybe
def_special sub_80FBE90
- def_special sub_80FBED0
+ def_special RotatingGate_InitPuzzleAndGraphics
def_special SetSSTidalFlag
def_special ResetSSTidalFlag
def_special EnterSafariMode
diff --git a/include/field_camera.h b/include/field_camera.h
index 6daa9a8a2..6ff8ce006 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -26,5 +26,14 @@ void DrawWholeMapView(void);
void CurrentMapDrawMetatileAt(int x, int y);
void sub_8089C08(s16 *a0, s16 *a1);
void DrawDoorMetatileAt(int x, int y, u16 *arr);
+void move_tilemap_camera_to_upper_left_corner(void);
+void sub_8057A58(void);
+void ResetCameraUpdateInfo(void);
+u32 InitCameraUpdateCallback(u8 a);
+void CameraUpdate(void);
+void SetCameraPanningCallback(void (*a)(void));
+void SetCameraPanning(s16 a, s16 b);
+void InstallCameraPanAheadCallback(void);
+void UpdateCameraPanning(void);
#endif //GUARD_FIELD_CAMERA_H
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
new file mode 100644
index 000000000..b915d1419
--- /dev/null
+++ b/include/field_control_avatar.h
@@ -0,0 +1,41 @@
+#ifndef GUARD_FIELDCONTROLAVATAR_H
+#define GUARD_FIELDCONTROLAVATAR_H
+
+struct FieldInput
+{
+ u8 pressedAButton:1;
+ u8 input_field_0_1:1;
+ u8 pressedStartButton:1;
+ u8 pressedSelectButton:1;
+ u8 input_field_0_4:1;
+ u8 input_field_0_5:1;
+ u8 input_field_0_6:1;
+ u8 pressedBButton:1;
+ u8 input_field_1_0:1;
+ u8 input_field_1_1:1;
+ u8 input_field_1_2:1;
+ u8 input_field_1_3:1;
+ u8 input_field_1_4:1;
+ u8 input_field_1_5:1;
+ u8 input_field_1_6:1;
+ u8 input_field_1_7:1;
+ u8 dpadDirection;
+ u8 input_field_3;
+};
+
+void FieldClearPlayerInput(struct FieldInput *pStruct);
+void FieldGetPlayerInput(struct FieldInput *pStruct, u16 keys, u16 heldKeys);
+int sub_809C014(struct FieldInput *pStruct);
+u8 *sub_80682A8(struct MapPosition *, u8, u8);
+void overworld_poison_timer_set(void);
+void prev_quest_postbuffer_cursor_backup_reset(void);
+u8 *sub_8068E24(struct MapPosition *);
+u8 *GetFieldObjectScriptPointerPlayerFacing(void);
+bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *);
+bool8 sub_8068870(u16 a);
+bool8 sub_8068894(void);
+bool8 sub_8068A64(struct MapPosition *, u16);
+u8 sub_8068F18(void);
+bool8 dive_warp(struct MapPosition *position, u16 b);
+
+#endif // GUARD_FIELDCONTROLAVATAR_H
diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h
index 63b67ceaf..89b14aed1 100644
--- a/include/field_ground_effect.h
+++ b/include/field_ground_effect.h
@@ -10,6 +10,8 @@
// Exported RAM declarations
// Exported ROM declarations
+u8 ZCoordToPriority(u8);
+void FieldObjectUpdateZCoord(struct MapObject *pObject);
void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
void InitObjectPriorityByZCoord(struct Sprite *, u8);
bool8 IsZCoordMismatchAt(u8, s16, s16);
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 198dd9759..8b7e296dd 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -25,6 +25,7 @@ enum SpinnerRunnerFollowPatterns {
// Exported ROM declarations
void sub_808D438(void);
+u8 get_go_image_anim_num(u8);
u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
u8 GetFieldObjectIdByXY(s16, s16);
@@ -88,6 +89,8 @@ bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *ma
u8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject);
void sub_808F23C(const struct MapObject *mapObject, u8 movementType);
void sub_808F208(const struct MapObject *mapObject);
+void npc_coords_shift_still(struct MapObject *pObject);
+void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1);
// Exported data declarations
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index af602245b..de6db5d63 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -1,6 +1,7 @@
#ifndef GUARD_FIELD_PLAYER_AVATAR_H
#define GUARD_FIELD_PLAYER_AVATAR_H
+void player_step(u8 a, u16 b, u16 c);
void ClearPlayerAvatarInfo(void);
void SetPlayerAvatarExtraStateTransition(u8, u8);
u8 GetPlayerAvatarGenderByGraphicsId(u8);
@@ -31,7 +32,7 @@ u8 CheckForFieldObjectCollision(struct MapObject *a, s16 b, s16 c, u8 d, u8 e);
u8 PlayerGetZCoord(void);
void SetPlayerAvatarTransitionFlags(u16 a);
void sub_808BCE8(void);
-
+void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d);
void sub_808D074(u8);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 06cb7cc77..23654f536 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -15,5 +15,6 @@ bool8 MapGridIsImpassableAt(s16, s16);
s32 GetMapBorderIdAt(s16, s16);
bool32 CanCameraMoveInDirection(u8);
u16 GetBehaviorByMetatileId(u16 metatileId);
+void sav1_camera_get_focus_coords(u16 *x, u16 *y);
#endif //GUARD_FIELDMAP_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index b12febefd..6e262dc9c 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -162,10 +162,10 @@ struct MapConnections
struct MapHeader
{
- /* 0x00 */ struct MapData *mapData;
- /* 0x04 */ struct MapEvents *events;
+ /* 0x00 */ const struct MapData *mapData;
+ /* 0x04 */ const struct MapEvents *events;
/* 0x08 */ u8 *mapScripts;
- /* 0x0C */ struct MapConnections *connections;
+ /* 0x0C */ const struct MapConnections *connections;
/* 0x10 */ u16 music;
/* 0x12 */ u16 mapDataId;
/* 0x14 */ u8 regionMapSectionId;
diff --git a/include/global.h b/include/global.h
index b815e1e5f..8c56c0a58 100644
--- a/include/global.h
+++ b/include/global.h
@@ -144,6 +144,18 @@ struct UCoords16
u16 y;
};
+struct Coords32
+{
+ s32 x;
+ s32 y;
+};
+
+struct UCoords32
+{
+ u32 x;
+ u32 y;
+};
+
struct Time
{
/*0x00*/ s16 days;
diff --git a/include/overworld.h b/include/overworld.h
index cedad6266..7f0a1795f 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -1,7 +1,5 @@
-#ifndef GUARD_ROM4_H
-#define GUARD_ROM4_H
-
-#include "main.h"
+#ifndef GUARD_OVERWORLD_H
+#define GUARD_OVERWORLD_H
struct UnkPlayerStruct
{
@@ -17,19 +15,15 @@ struct LinkPlayerMapObject
u8 mode;
};
-struct UCoords32
-{
- u32 x, y;
-};
-
+extern struct WarpData gUnknown_020322DC;
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
-extern MainCallback gFieldCallback;
+
+extern const struct UCoords32 gUnknown_08339D64[];
void DoWhiteOut(void);
void Overworld_ResetStateAfterFly(void);
void Overworld_ResetStateAfterTeleport(void);
void Overworld_ResetStateAfterDigEscRope(void);
-void sub_8084788(void);
void ResetGameStats(void);
void IncrementGameStat(u8 index);
u32 GetGameStat(u8 index);
@@ -39,82 +33,106 @@ void LoadMapObjTemplatesFromHeader(void);
void LoadSaveblockMapObjScripts(void);
void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y);
void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType);
-void mapdata_load_assets_to_gpu_and_full_redraw(void);
-struct MapData *get_mapdata_header(void);
+const struct MapData *get_mapdata_header(void);
void ApplyCurrentWarp(void);
void set_warp2_warp3_to_neg_1(void);
void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
bool32 warp_data_is_not_neg_1(struct WarpData *warp);
-struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum);
-struct MapHeader *const warp1_get_mapheader(void);
+const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum);
+const struct MapHeader *warp1_get_mapheader(void);
void set_current_map_header_from_sav1_save_old_name(void);
void LoadSaveblockMapHeader(void);
void update_camera_pos_from_warpid(void);
void warp_in(void);
void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
-void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
-void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId);
+void saved_warp2_set_2(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
void sub_8084CCC(u8 a1);
void Overworld_SetWarpDestToLastHealLoc(void);
void Overworld_SetHealLocationWarp(u8 healLocationId);
void sub_8084D5C(s16 a1, s16 a2);
void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-
-// to erase later
+void sub_8084E14(void);
+void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void warp1_set_to_warp2(void);
+void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sub_8084EBC(s16 x, s16 y);
+void warp1_set_to_sav1w(void);
+void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sub_8084F6C(u8 a1);
+void sub_8084FAC(void);
+const struct MapConnection *GetMapConnection(u8 dir);
+bool8 sub_8084FF8(u8 dir, u16 x, u16 y);
+bool8 sub_8085058(u16 x, u16 y);
+bool8 sub_8085078(u16 x, u16 y);
+void mliX_load_map(u8 mapGroup, u8 mapNum);
+void player_avatar_init_params_reset(void);
+void walkrun_find_lowest_active_bit_in_bitfield(void);
bool32 Overworld_IsBikingAllowed(void);
-u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3);
-u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4);
-u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void);
-bool8 Overworld_MapTypeIsIndoors(u8 mapType);
void SetDefaultFlashLevel(void);
+void Overworld_SetFlashLevel(s32 flashLevel);
+u8 Overworld_GetFlashLevel(void);
+void sub_8085524(u16 mapDataId);
+void sub_8085540(u8 var);
+u8 sub_808554C(void);
+u16 GetLocationMusic(struct WarpData *warp);
+u16 GetCurrLocationDefaultMusic(void);
+u16 GetWarpDestinationMusic(void);
+void Overworld_ResetMapMusic(void);
+void Overworld_PlaySpecialMapMusic(void);
+void Overworld_SetSavedMusic(u16 songNum);
void Overworld_ClearSavedMusic(void);
-void sub_8085810(void);
+void Overworld_ChangeMusicToDefault(void);
+void Overworld_ChangeMusicTo(u16 newMusic);
+u8 GetMapMusicFadeoutSpeed(void);
+void music_something(void);
+bool8 sub_80859A0(void);
+void Overworld_FadeOutMapMusic(void);
+void UpdateAmbientCry(s16 *state, u16 *delayCounter);
u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);
+u8 GetMapTypeByWarpData(struct WarpData *warp);
u8 Overworld_GetMapTypeOfSaveblockLocation(void);
-void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
-void Overworld_SetMapObjTemplateMovementType(u8, u8);
-void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
-void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-void Overworld_SetHealLocationWarp(u8);
-void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-void sub_8084E2C(s8, s8, s8, s8, s8);
-void sub_8084E80(s8, s8, s8, s8, s8);
-void sub_8084EBC(s16, s16);
-void player_avatar_init_params_reset(void);
+u8 get_map_light_from_warp0(void);
+bool8 is_light_level_1_2_3_5_or_6(u8 mapType);
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
-void Overworld_ResetStateAfterTeleport(void);
-void Overworld_SetFlashLevel(s32 a1);
-//u8 Overworld_GetFlashLevel(void);
-void sub_8085524(u16);
-void Overworld_SetSavedMusic(u16);
-void Overworld_ChangeMusicToDefault(void);
-void Overworld_ChangeMusicTo(u16);
+bool8 Overworld_MapTypeIsIndoors(u8 mapType);
+u8 sav1_saved_warp2_map_get_name(void);
+u8 sav1_map_get_name(void);
+u8 GetCurrentMapBattleScene(void);
+void overworld_free_bg_tilemaps(void);
bool32 is_c1_link_related_active(void);
-extern u16 gUnknown_03005DA8;
-void strange_npc_table_clear(void);
-void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
-void sub_8086230(void);
-void c2_exit_to_overworld_2_switch(void);
+void CB1_Overworld(void);
+void CB2_OverworldBasic(void);
+void CB2_Overworld(void);
+void SetMainCallback1(void (*cb)(void));
+void sub_8085E94(void *a0);
+void CB2_NewGame(void);
+void CB2_WhiteOut(void);
+void CB2_LoadMap(void);
+void sub_8086024(void);
+void sub_8086074(void);
+void CB2_ReturnToField(void);
+void CB2_ReturnToFieldLocal(void);
+void CB2_ReturnToFieldLink(void);
+void c2_8056854(void);
+void CB2_ReturnToFieldWithOpenMenu(void);
+void sub_80861B0(void);
+void CB2_ReturnToFieldContinueScript(void);
+void sub_80861E8(void);
+void CB2_ContinueSavedGame(void);
+void sub_8086C2C(void);
+u32 sub_8087214(void);
+bool32 sub_808727C(void);
+u16 sub_8087288(void);
+u16 sub_808729C(void);
+u16 sub_80872B0(void);
+u16 sub_80872C4(void);
bool32 sub_8087598(void);
-void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
-void warp_in(void);
-u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
-void sub_8086194(void);
-void sub_8084CCC(u8 spawn);
-void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
-void c2_load_new_map(void);
-void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
-void mapldr_default(void);
-u8 get_map_light_from_warp0(void);
-bool8 is_light_level_1_2_3_5_or_6(u8 a1);
bool32 sub_80875C8(void);
bool32 sub_8087634(void);
bool32 sub_808766C(void);
-void IncrementGameStat(u8);
-u32 GetGameStat(u8);
-void CB2_OverworldBasic(void);
+void ZeroAllLinkPlayerMapObjects(void);
-#endif //GUARD_ROM4_H
+#endif // GUARD_OVERWORLD_H
diff --git a/ld_script.txt b/ld_script.txt
index bb015446f..c1bad970e 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -87,7 +87,6 @@ SECTIONS {
src/play_time.o(.text);
src/new_game.o(.text);
src/overworld.o(.text);
- asm/overworld.o(.text);
asm/fieldmap.o(.text);
src/metatile_behavior.o(.text);
asm/field_camera.o(.text);
diff --git a/src/battle_setup.c b/src/battle_setup.c
index fdf6e77b6..6b981d0c5 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -472,7 +472,7 @@ void StartWallyTutorialBattle(void)
{
CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5);
ScriptContext2_Enable();
- gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music;
+ gMain.savedCallback = CB2_ReturnToFieldContinueScript;
gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL;
CreateBattleStartTask(B_TRANSITION_SLICE, 0);
}
@@ -601,7 +601,7 @@ static void CB2_EndWildBattle(void)
}
else
{
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
gFieldCallback = sub_80AF6F0;
}
}
@@ -614,13 +614,13 @@ static void CB2_EndScriptedWildBattle(void)
if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
if (InBattlePyramid())
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
else
SetMainCallback2(CB2_WhiteOut);
}
else
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
}
}
@@ -937,7 +937,7 @@ static void CB2_StartFirstBattle(void)
static void CB2_EndFirstBattle(void)
{
Overworld_ClearSavedMusic();
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
}
static void sub_80B1218(void)
@@ -1313,18 +1313,18 @@ static void CB2_EndTrainerBattle(void)
{
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
}
else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
if (InBattlePyramid() || sub_81D5C18())
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
else
SetMainCallback2(CB2_WhiteOut);
}
else
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
if (!InBattlePyramid() && !sub_81D5C18())
{
RegisterTrainerInMatchCall();
@@ -1337,7 +1337,7 @@ static void CB2_EndRematchBattle(void)
{
if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
}
else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
@@ -1345,7 +1345,7 @@ static void CB2_EndRematchBattle(void)
}
else
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
RegisterTrainerInMatchCall();
SetBattledTrainersFlags();
HandleRematchVarsOnBattleEnd();
diff --git a/src/battle_transition.c b/src/battle_transition.c
index e0d208f23..8b9b50140 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -919,7 +919,7 @@ static void CB2_TestBattleTransition(void)
if (IsBattleTransitionDone())
{
sTestingTransitionState = 0;
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
}
break;
}
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 23594ba46..1ac52dd6c 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -161,7 +161,7 @@ extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8);
extern void sub_81AABF0(void (*callback)(void));
extern void sub_800B4C0(void);
extern void ClearLinkCallback(void);
-extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
+extern void CB2_ReturnToFieldContinueScript(void);
extern void sub_8153430(void);
extern bool8 sub_8153474(void);
extern void sub_80EECEC(void);
@@ -2692,7 +2692,7 @@ static void CB2_HandlePlayerLinkPlayAgainChoice(void)
if (gReceivedRemoteLinkPlayers == 0)
{
FREE_AND_SET_NULL(sBerryBlenderData);
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
}
break;
}
@@ -2742,7 +2742,7 @@ static void CB2_HandlePlayerPlayAgainChoice(void)
if (sBerryBlenderData->playAgainState == PLAY_AGAIN_OK)
SetMainCallback2(DoBerryBlending);
else
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
FreeAllWindowBuffers();
UnsetBgTilemapBuffer(2);
diff --git a/src/clock.c b/src/clock.c
index 7cea30166..71c433ed2 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -83,7 +83,7 @@ static void UpdatePerMinute(struct Time *localTime)
static void ReturnFromStartWallClock(void)
{
InitTimeBasedEvents();
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
}
void StartWallClock(void)
diff --git a/src/daycare.c b/src/daycare.c
index 89c0a48d8..36e8b208d 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -46,7 +46,7 @@ extern void sub_819746C(u8, bool8);
extern void NewMenuHelpers_DrawStdWindowFrame(u8, bool8);
extern void sub_81B9328(void);
extern void sub_81AF078(u32, bool8, struct ListMenu *);
-extern void c2_exit_to_overworld_2_switch(void);
+extern void CB2_ReturnToField(void);
// this file's functions
static void ClearDaycareMonMisc(struct DaycareMiscMon *misc);
@@ -1315,5 +1315,5 @@ void ShowDaycareLevelMenu(void)
void ChooseSendDaycareMon(void)
{
sub_81B9328();
- gMain.savedCallback = c2_exit_to_overworld_2_switch;
+ gMain.savedCallback = CB2_ReturnToField;
}
diff --git a/src/decoration.c b/src/decoration.c
index 8eb875560..aa2d3aef9 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1682,7 +1682,7 @@ void c1_overworld_prev_quest(u8 taskId)
sub_812A3C8();
FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG);
gFieldCallback = sub_8128CD4;
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
DestroyTask(taskId);
break;
}
@@ -2673,7 +2673,7 @@ void sub_812A25C(u8 taskId)
case 1:
sub_812A3C8();
gFieldCallback = sub_812A334;
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
DestroyTask(taskId);
break;
}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index b78b9433e..e64a98ab1 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -63,7 +63,7 @@ extern void FadeScreen(u8, u8);
extern void overworld_free_bg_tilemaps(void);
extern void sub_80AF168(void);
extern void ScanlineEffect_Stop(void);
-extern void c2_exit_to_overworld_2_switch(void);
+extern void CB2_ReturnToField(void);
extern void play_some_sound(void);
extern void DoNamingScreen(u8, const u8*, u16, u8, u32, MainCallback);
extern u16 sub_80D22D0(void);
@@ -564,7 +564,7 @@ static void EggHatchSetMonNickname(void)
SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
FreeMonSpritesGfx();
Free(sEggHatchData);
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
}
static void Task_EggHatchPlayBGM(u8 taskID)
@@ -688,7 +688,7 @@ static void CB2_EggHatch_1(void)
UnsetBgTilemapBuffer(0);
UnsetBgTilemapBuffer(1);
Free(sEggHatchData);
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
}
break;
}
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 84613365c..a5be62442 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -198,7 +198,7 @@ static void npcs_clear_ids_and_state(void)
void sub_808D438(void)
{
- strange_npc_table_clear();
+ ZeroAllLinkPlayerMapObjects();
npcs_clear_ids_and_state();
ClearPlayerAvatarInfo();
sub_808D450();
diff --git a/src/hof_pc.c b/src/hof_pc.c
index e772f04e8..e5b6f96f8 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -25,7 +25,7 @@ void AccessHallOfFamePC(void)
void ReturnFromHallOfFamePC(void)
{
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
gFieldCallback = ReshowPCMenuAfterHallOfFamePC;
}
diff --git a/src/item_use.c b/src/item_use.c
index bc70c5884..b9d84ad95 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -637,7 +637,7 @@ void sub_80FDC00(u8 taskId)
if (!gPaletteFade.active)
{
overworld_free_bg_tilemaps();
- OpenPokeblockCase(0, c2_exit_to_overworld_2_switch);
+ OpenPokeblockCase(0, CB2_ReturnToField);
DestroyTask(taskId);
}
}
@@ -678,7 +678,7 @@ void sub_80FDD10(u8 taskId)
{
gUnknown_0203A0F4 = sub_80FDD74;
gFieldCallback = MapPostLoadHook_UseItem;
- *gUnknown_0203CE54 = c2_exit_to_overworld_2_switch;
+ *gUnknown_0203CE54 = CB2_ReturnToField;
unknown_ItemMenu_Confirm(taskId);
}
else
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index dcdf9b45a..81a10f8a4 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -1079,7 +1079,7 @@ void sub_818E914(void)
void sub_818E92C(void)
{
- OpenPokeblockCase(3, c2_exit_to_overworld_2_switch);
+ OpenPokeblockCase(3, CB2_ReturnToField);
}
void sub_818E940(void)
diff --git a/src/load_save.c b/src/load_save.c
index a516c08c2..e3de66bb8 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -133,12 +133,12 @@ void MoveSaveBlocks_ResetHeap(void)
}
-u8 sav2_x1_query_bit1(void)
+u32 GetSecretBase2Field_9(void)
{
return gSaveBlock2Ptr->specialSaveWarp & 1;
}
-void sav2_x9_clear_bit1(void)
+void ClearSecretBase2Field_9(void)
{
gSaveBlock2Ptr->specialSaveWarp &= ~1;
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 47d8b8ad1..be306c765 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -1798,22 +1798,22 @@ static bool8 sub_80E503C(u8 character)
static void sub_80E5074(void)
{
- DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8086194);
+ DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu);
}
static void sub_80E509C(void)
{
- DoNamingScreen(1, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8086194);
+ DoNamingScreen(1, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu);
}
static void sub_80E50C4(void)
{
- DoNamingScreen(2, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8086194);
+ DoNamingScreen(2, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu);
}
static void sub_80E50EC(void)
{
- DoNamingScreen(3, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, sub_8086194);
+ DoNamingScreen(3, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnToFieldWithOpenMenu);
}
//--------------------------------------------------
diff --git a/src/overworld.c b/src/overworld.c
index f5457242d..5e6654cad 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -1,12 +1,13 @@
#include "global.h"
#include "overworld.h"
+#include "main.h"
#include "battle_setup.h"
#include "berry.h"
// #include "cable_club.h"
#include "clock.h"
#include "event_data.h"
#include "field_camera.h"
-// #include "field_control_avatar.h"
+#include "field_control_avatar.h"
#include "field_effect.h"
#include "field_fadetransition.h"
#include "field_ground_effect.h"
@@ -53,68 +54,229 @@
#include "bg.h"
#include "money.h"
#include "save_location.h"
+#include "constants/abilities.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "link_rfu.h"
// event scripts
extern const u8 EventScript_WhiteOut[];
extern const u8 EventScript_271862[];
+extern const u8 EventScript_277513[];
+extern const u8 EventScript_TradeRoom_TooBusyToNotice[];
+extern const u8 EventScript_TradeRoom_ReadTrainerCard1[];
+extern const u8 EventScript_TradeRoom_ReadTrainerCard2[];
+extern const u8 gUnknown_08277388[];
+extern const u8 gUnknown_082773A3[];
+extern const u8 gUnknown_082773BE[];
+extern const u8 gUnknown_082773D9[];
+extern const u8 gUnknown_0827741D[];
+extern const u8 gUnknown_08277432[];
+extern const u8 gUnknown_08277447[];
+extern const u8 gUnknown_0827745C[];
+extern const u8 gUnknown_08277374[];
+extern const u8 gUnknown_0827737E[];
+extern const u8 gUnknown_082773FF[];
+extern const u8 gUnknown_082773F5[];
+extern const u8 gUnknown_082774EF[];
+extern const u8 gUnknown_08277509[];
// vars
-extern struct MapData *const gMapAttributes[];
-extern struct MapHeader *const *const gMapGroups[];
+extern const struct MapData *const gMapAttributes[];
+extern const struct MapHeader *const *const gMapGroups[];
extern const s32 gMaxFlashLevel;
+extern const u16 gUnknown_82EC7C4[];
+
+extern u16 gSaveFileStatus;
+extern u16 gUnknown_03005DA8;
+extern u8 *gUnknown_03005DA0;
+extern u8 *gUnknown_03005D9C;
+extern u8 *gUnknown_03005DA4;
+extern bool8 (*gUnknown_03005DB0)(void);
+extern u8 gUnknown_03005DB4;
+extern u8 gFieldLinkPlayerCount;
+extern MainCallback gFieldCallback;
// functions
extern void HealPlayerParty(void);
extern void move_tilemap_camera_to_upper_left_corner(void);
extern void cur_mapheader_run_tileset_funcs_after_some_cpuset(void);
extern void DrawWholeMapView(void);
-extern void copy_map_tileset1_tileset2_to_vram(struct MapData *);
-extern void apply_map_tileset1_tileset2_palette(struct MapData *);
+extern void copy_map_tileset1_tileset2_to_vram(const struct MapData *);
+extern void apply_map_tileset1_tileset2_palette(const struct MapData *);
extern void ResetCyclingRoadChallengeData(void);
extern void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey);
extern void mapheader_run_script_with_tag_x5(void);
extern void ResetFieldTasksArgs(void);
extern void sub_80A0A2C(void);
extern void not_trainer_hill_battle_pyramid(void);
-extern void apply_map_tileset2_palette(struct MapData *);
-extern void copy_map_tileset2_to_vram_2(struct MapData *);
+extern void apply_map_tileset2_palette(const struct MapData *);
+extern void copy_map_tileset2_to_vram_2(const struct MapData *);
extern void prev_quest_postbuffer_cursor_backup_reset(void);
extern void ShowMapNamePopup(void);
extern bool32 InTrainerHill(void);
+extern bool32 sub_808651C(void);
+extern bool8 sub_80AF6A4(void);
+extern bool8 sub_81A9E6C(void);
+extern bool8 sub_80E909C(void);
extern void sub_81AA1D8(void);
+extern void c2_change_map(void);
extern void sub_81D5DF8(void);
extern void sub_80EB218(void);
+extern void sub_81BE72C(void);
+extern void sub_80AF3C8(void);
+extern void sub_81971F4(void);
+extern void sub_808B578(void);
+extern void sub_80AF314(void);
+extern void sub_80AF214(void);
+extern void sub_80AF188(void);
+extern void door_upload_tiles(void);
+extern void RotatingGate_InitPuzzleAndGraphics(void);
+extern void sub_80AF168(void);
+extern void sub_80AF3C8(void);
+extern void ExecuteTruckSequence(void);
+extern void sub_80A0A38(void);
extern void trainer_hill_map_load_related(void);
+extern void sub_8087D74(void);
extern void battle_pyramid_map_load_related(u8);
+extern void sub_80B00E8(u8);
extern void UpdateTVScreensOnMap(u32, u32);
extern void sub_80E9238(u8);
+extern void sub_81A3908(void);
+extern void sub_81AA2F8(void);
+extern void sub_8195E10(void);
+extern void sub_80EDB44(void);
+extern void sub_81D64C0(void);
+extern void sub_81BE6AC(void);
+extern void sub_8098128(void);
+extern void copy_map_tileset1_to_vram(const struct MapData *);
+extern void copy_map_tileset2_to_vram(const struct MapData *);
+extern void FieldUpdateBgTilemapScroll(void);
+extern void TransferTilesetAnimsBuffer(void);
+extern bool32 sub_81D5F48(void);
+extern u8 GetCurrentTrainerHillMapId(void);
+extern bool8 warp0_in_pokecenter(void);
+extern void dp13_810BB8C(void);
+extern void FieldEffectActiveListClear(void);
+extern void SetUpFieldTasks(void);
+extern void sub_81BE6B8(void);
+extern void sub_80AAFA4(void);
+extern void sub_809FA9C(void);
+extern void sub_80AEE84(void);
+extern void mapldr_default(void);
+extern void npc_paltag_set_load(u8);
+extern void sub_8088B3C(u16, u16);
+extern bool32 sub_800F0B8(void);
+extern bool32 sub_8009F3C(void);
+extern void sub_8010198(void);
+extern u32 sub_800B4DC(void);
+extern bool32 sub_80B39D4(u8);
+extern const u8* sub_809C2C8(struct MapPosition *a1, u8, u8);
+extern u8 *sub_809D0F4(void*);
+extern u8 sub_808BD6C(u8);
+extern u8 sub_808BD7C(u8);
+extern void sub_80979D4(struct Sprite*, u8);
// this file's functions
static void Overworld_ResetStateAfterWhiteOut(void);
-void ChooseAmbientCrySpecies(void);
+static void c2_80567AC(void);
+static void CB2_LoadMap2(void);
+static void VBlankCB_Field(void);
+static void SpriteCB_LinkPlayer(struct Sprite *sprite);
+static void ChooseAmbientCrySpecies(void);
+static void do_load_map_stuff_loop(u8 *state);
+static bool32 map_loading_iteration_3(u8 *state);
+static bool32 sub_8086638(u8 *state);
+static bool32 load_map_stuff(u8 *state, u32);
+static bool32 map_loading_iteration_2_link(u8 *state);
+static void mli4_mapscripts_and_other(void);
+static void map_loading_lcd_reset(void);
+static u8 sub_8087858(u8);
+static u16 sub_80871C0(u32 a1);
+static void sub_80867C8(void);
+static void sub_80867D8(void);
+static void sub_8086AE4(void);
+static void sub_80869DC(void);
+static void sub_8086B14(void);
+static void sub_8086AAC(void);
+static void sub_8086988(bool32 arg0);
+static void sub_8086A80(void);
+static void sub_8086A68(void);
+static void sub_8086860(void);
+static void sub_8086AC8(void);
+static void sub_8086B9C(void);
+static void sub_8086C40(void);
+static void sub_8086C90(void);
+static void sub_8086FA0(u16);
+static void sub_8086F38(u16*, s32);
+static u8 npc_something3(u8 a1, u8 a2);
+static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y);
+static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion);
+static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y);
+static u8 sub_80878A0(u8 linkPlayerId);
+static u8 sub_80878C0(u8 linkPlayerId);
+static s32 sub_80878E4(u8 linkPlayerId);
+static u8 GetLinkPlayerIdAt(s16 x, s16 y);
+static void sub_808796C(u8 linkPlayerId, u8 a2);
+static void ZeroMapObject(struct MapObject *mapObj);
+static void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4);
+static void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y);
+static void sub_80877DC(u8 linkPlayerId, u8 a2);
+static void sub_808780C(u8 linkPlayerId);
+static u8 sub_8087858(u8 linkPlayerId);
+static void sub_8087584(void);
+static u32 sub_8087690(void);
+static void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj);
+static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
+static u16 sub_8087480(const u8 *script);
+static void sub_8087510(void);
+static void sub_808751C(void);
+static void sub_8087530(const u8 *script);
+static void sub_808754C(void);
+static void sub_8087568(const u8 *script);
+static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3);
+static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1);
+static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1);
+static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1);
+static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1);
+static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1);
+static u16 sub_808711C(u32);
+static u16 sub_8087140(u32);
+static void sub_808709C(u16 *a1);
+static u16 sub_80870B0(u32 a1);
+static u16 sub_80870F8(u32 a1);
+static u16 sub_8087068(u16 a1);
+static void c1_link_related(void);
+static void c1_link_related_func_set(u16 (*func)(u32));
+static void SetFieldVBlankCallback(void);
+static void FieldClearVBlankHBlankCallbacks(void);
+static void sub_8085810(void);
+static u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3);
+static u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4);
+static u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void);
// IWRAM bss vars
-IWRAM_DATA void *gUnknown_03000E0C;
-IWRAM_DATA u8 gUnknown_03000E10[4];
-IWRAM_DATA u8 (*gUnknown_03000E14)(u32);
-IWRAM_DATA u8 gUnknown_03000E18;
-IWRAM_DATA u8 gUnknown_03000E19;
-IWRAM_DATA void *rom4_c_unused_03000e1c;
+IWRAM_DATA static void *sUnknown_03000E0C;
+IWRAM_DATA static u8 sUnknown_03000E10[4];
+IWRAM_DATA static u16 (*sUnknown_03000E14)(u32);
+IWRAM_DATA static u8 sUnknown_03000E18;
+IWRAM_DATA static u8 sUnknown_03000E19;
+IWRAM_DATA static u32 sUnusedVar;
// EWRAM vars
-EWRAM_DATA u8 gUnknown_020322D8 = 0;
+EWRAM_DATA static u8 sUnknown_020322D8 = 0;
EWRAM_DATA struct WarpData gUnknown_020322DC = {0};
-EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position
-EWRAM_DATA struct WarpData gUnknown_020322EC = {0};
-EWRAM_DATA struct WarpData gUnknown_020322F4 = {0};
-EWRAM_DATA u16 gLastMapSectionId = 0;
-EWRAM_DATA struct UnkPlayerStruct gUnknown_02032300 = {0};
-EWRAM_DATA u16 sAmbientCrySpecies = 0;
-EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE;
+EWRAM_DATA static struct WarpData sWarpDestination = {0}; // new warp position
+EWRAM_DATA static struct WarpData sUnknown_020322EC = {0};
+EWRAM_DATA static struct WarpData sUnknown_020322F4 = {0};
+EWRAM_DATA static u16 sLastMapSectionId = 0;
+EWRAM_DATA static struct UnkPlayerStruct sUnknown_02032300 = {0};
+EWRAM_DATA static u16 sAmbientCrySpecies = 0;
+EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
// const rom data
-const struct WarpData sDummyWarpData =
+static const struct WarpData sDummyWarpData =
{
.mapGroup = -1,
.mapNum = -1,
@@ -123,7 +285,7 @@ const struct WarpData sDummyWarpData =
.y = -1,
};
-const u8 sUnusedData[] =
+static const u8 sUnusedData[] =
{
0xB0, 0x04, 0x00, 0x00,
0x10, 0x0E, 0x00, 0x00,
@@ -148,7 +310,7 @@ const struct UCoords32 gUnknown_08339D64[] =
{ 1, -1},
};
-const struct BgTemplate gUnknown_08339DAC[] =
+static const struct BgTemplate gUnknown_08339DAC[] =
{
{
.bg = 0,
@@ -188,7 +350,7 @@ const struct BgTemplate gUnknown_08339DAC[] =
}
};
-const struct ScanlineEffectParams gUnknown_08339DBC =
+static const struct ScanlineEffectParams gUnknown_08339DBC =
{
(void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
@@ -196,22 +358,22 @@ const struct ScanlineEffectParams gUnknown_08339DBC =
0,
};
-u8 sub_80879D8(struct LinkPlayerMapObject *, struct MapObject *, u8);
-u8 sub_80879F8(struct LinkPlayerMapObject *, struct MapObject *, u8);
-u8 sub_80879FC(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_80879D8(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_80879F8(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_80879FC(struct LinkPlayerMapObject *, struct MapObject *, u8);
-u8 (*const gUnknown_08339DC8[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
{
sub_80879D8,
sub_80879F8,
sub_80879FC,
};
-u8 sub_8087A1C(struct LinkPlayerMapObject *, struct MapObject *, u8);
-u8 sub_8087A20(struct LinkPlayerMapObject *, struct MapObject *, u8);
-u8 sub_8087A88(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8087A1C(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8087A20(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8087A88(struct LinkPlayerMapObject *, struct MapObject *, u8);
-u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
{
sub_8087A1C,
sub_8087A20,
@@ -226,10 +388,10 @@ u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *
sub_8087A88,
};
-void sub_8087AA0(struct LinkPlayerMapObject *, struct MapObject *);
-void sub_8087AA8(struct LinkPlayerMapObject *, struct MapObject *);
+static void sub_8087AA0(struct LinkPlayerMapObject *, struct MapObject *);
+static void sub_8087AA8(struct LinkPlayerMapObject *, struct MapObject *);
-void (*const gUnknown_08339E00[])(struct LinkPlayerMapObject *, struct MapObject *) =
+static void (*const gUnknown_08339E00[])(struct LinkPlayerMapObject *, struct MapObject *) =
{
sub_8087AA0,
sub_8087AA8,
@@ -292,7 +454,7 @@ static void Overworld_ResetStateAfterWhiteOut(void)
}
}
-void sub_8084788(void)
+static void sub_8084788(void)
{
FlagClear(FLAG_SYS_SAFARI_MODE);
ChooseAmbientCrySpecies();
@@ -399,7 +561,7 @@ void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType)
}
}
-void mapdata_load_assets_to_gpu_and_full_redraw(void)
+static void mapdata_load_assets_to_gpu_and_full_redraw(void)
{
move_tilemap_camera_to_upper_left_corner();
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData);
@@ -408,7 +570,7 @@ void mapdata_load_assets_to_gpu_and_full_redraw(void)
cur_mapheader_run_tileset_funcs_after_some_cpuset();
}
-struct MapData *get_mapdata_header(void)
+const struct MapData *get_mapdata_header(void)
{
u16 mapDataId = gSaveBlock1Ptr->mapDataId;
if (mapDataId)
@@ -419,15 +581,15 @@ struct MapData *get_mapdata_header(void)
void ApplyCurrentWarp(void)
{
gUnknown_020322DC = gSaveBlock1Ptr->location;
- gSaveBlock1Ptr->location = gWarpDestination;
- gUnknown_020322EC = sDummyWarpData;
- gUnknown_020322F4 = sDummyWarpData;
+ gSaveBlock1Ptr->location = sWarpDestination;
+ sUnknown_020322EC = sDummyWarpData;
+ sUnknown_020322F4 = sDummyWarpData;
}
void set_warp2_warp3_to_neg_1(void)
{
- gUnknown_020322EC = sDummyWarpData;
- gUnknown_020322F4 = sDummyWarpData;
+ sUnknown_020322EC = sDummyWarpData;
+ sUnknown_020322F4 = sDummyWarpData;
}
void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
@@ -454,19 +616,19 @@ bool32 warp_data_is_not_neg_1(struct WarpData *warp)
return TRUE;
}
-struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum)
+const struct MapHeader *Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum)
{
return gMapGroups[mapGroup][mapNum];
}
-struct MapHeader *const warp1_get_mapheader(void)
+const struct MapHeader *warp1_get_mapheader(void)
{
- return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum);
+ return Overworld_GetMapHeaderByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum);
}
void set_current_map_header_from_sav1_save_old_name(void)
{
- gLastMapSectionId = gMapHeader.regionMapSectionId;
+ sLastMapSectionId = gMapHeader.regionMapSectionId;
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
gSaveBlock1Ptr->mapDataId = gMapHeader.mapDataId;
gMapHeader.mapData = get_mapdata_header();
@@ -506,7 +668,7 @@ void warp_in(void)
void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
- SetWarpData(&gWarpDestination, mapGroup, mapNum, warpId, x, y);
+ SetWarpData(&sWarpDestination, mapGroup, mapNum, warpId, x, y);
}
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId)
@@ -514,19 +676,19 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId)
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, -1, -1);
}
-void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId)
+void saved_warp2_set(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId)
{
SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
}
-void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
+void saved_warp2_set_2(s32 unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, x, y);
}
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused)
{
- gWarpDestination = gSaveBlock1Ptr->warp2;
+ sWarpDestination = gSaveBlock1Ptr->warp2;
}
void sub_8084CCC(u8 a1)
@@ -539,7 +701,7 @@ void sub_8084CCC(u8 a1)
void Overworld_SetWarpDestToLastHealLoc(void)
{
- gWarpDestination = gSaveBlock1Ptr->lastHealLocation;
+ sWarpDestination = gSaveBlock1Ptr->lastHealLocation;
}
void Overworld_SetHealLocationWarp(u8 healLocationId)
@@ -553,7 +715,7 @@ void Overworld_SetHealLocationWarp(u8 healLocationId)
void sub_8084D5C(s16 a1, s16 a2)
{
u8 currMapType = Overworld_GetMapTypeOfSaveblockLocation();
- u8 destMapType = GetMapTypeByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum);
+ u8 destMapType = GetMapTypeByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum);
if (is_light_level_1_2_3_5_or_6(currMapType) && is_light_level_1_2_3_5_or_6(destMapType) != TRUE)
sub_8084DD4(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, a1 - 7, a2 - 6);
}
@@ -565,39 +727,39 @@ void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
void sub_8084E14(void)
{
- gWarpDestination = gSaveBlock1Ptr->warp4;
+ sWarpDestination = gSaveBlock1Ptr->warp4;
}
void sub_8084E2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
- SetWarpData(&gUnknown_020322EC, mapGroup, mapNum, warpId, x, y);
+ SetWarpData(&sUnknown_020322EC, mapGroup, mapNum, warpId, x, y);
}
void warp1_set_to_warp2(void)
{
- gWarpDestination = gUnknown_020322EC;
+ sWarpDestination = sUnknown_020322EC;
}
void sub_8084E80(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
- SetWarpData(&gUnknown_020322F4, mapGroup, mapNum, warpId, x, y);
+ SetWarpData(&sUnknown_020322F4, mapGroup, mapNum, warpId, x, y);
}
void sub_8084EBC(s16 x, s16 y)
{
- if (warp_data_is_not_neg_1(&gUnknown_020322F4) == TRUE)
+ if (warp_data_is_not_neg_1(&sUnknown_020322F4) == TRUE)
{
- gWarpDestination = gUnknown_020322DC;
+ sWarpDestination = gUnknown_020322DC;
}
else
{
- Overworld_SetWarpDestination(gUnknown_020322F4.mapGroup, gUnknown_020322F4.mapNum, -1, x, y);
+ Overworld_SetWarpDestination(sUnknown_020322F4.mapGroup, sUnknown_020322F4.mapNum, -1, x, y);
}
}
void warp1_set_to_sav1w(void)
{
- gWarpDestination = gSaveBlock1Ptr->warp1;
+ sWarpDestination = gSaveBlock1Ptr->warp1;
}
void sub_8084F2C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
@@ -617,11 +779,11 @@ void sub_8084FAC(void)
gSaveBlock1Ptr->warp1 = gSaveBlock1Ptr->warp2;
}
-struct MapConnection *GetMapConnection(u8 dir)
+const struct MapConnection *GetMapConnection(u8 dir)
{
s32 i;
s32 count = gMapHeader.connections->count;
- struct MapConnection *connection = gMapHeader.connections->connections;
+ const struct MapConnection *connection = gMapHeader.connections->connections;
if (connection == NULL)
return NULL;
@@ -635,7 +797,7 @@ struct MapConnection *GetMapConnection(u8 dir)
bool8 sub_8084FF8(u8 dir, u16 x, u16 y)
{
- struct MapConnection *connection = GetMapConnection(dir);
+ const struct MapConnection *connection = GetMapConnection(dir);
if (connection != NULL)
{
@@ -644,7 +806,7 @@ bool8 sub_8084FF8(u8 dir, u16 x, u16 y)
else
{
mapheader_run_script_with_tag_x6();
- if (warp_data_is_not_neg_1(&gUnknown_020322EC))
+ if (warp_data_is_not_neg_1(&sUnknown_020322EC))
return FALSE;
warp1_set_to_warp2();
}
@@ -697,17 +859,17 @@ void mliX_load_map(u8 mapGroup, u8 mapNum)
ResetFieldTasksArgs();
mapheader_run_script_with_tag_x5();
- if (gMapHeader.regionMapSectionId != 0x3A || gMapHeader.regionMapSectionId != gLastMapSectionId)
+ if (gMapHeader.regionMapSectionId != 0x3A || gMapHeader.regionMapSectionId != sLastMapSectionId)
ShowMapNamePopup();
}
-void mli0_load_map(u32 a1)
+static void mli0_load_map(u32 a1)
{
bool8 v2;
bool8 indoors;
set_current_map_header_from_sav1_save_old_name();
- if (!(gUnknown_020322D8 & 1))
+ if (!(sUnknown_020322D8 & 1))
{
if (gMapHeader.mapDataId == 0x169)
sub_81AA1D8();
@@ -753,39 +915,39 @@ void mli0_load_map(u32 a1)
void player_avatar_init_params_reset(void)
{
- gUnknown_02032300.player_field_1 = 1;
- gUnknown_02032300.player_field_0 = 1;
+ sUnknown_02032300.player_field_1 = 1;
+ sUnknown_02032300.player_field_0 = 1;
}
void walkrun_find_lowest_active_bit_in_bitfield(void)
{
- gUnknown_02032300.player_field_1 = player_get_direction_lower_nybble();
+ sUnknown_02032300.player_field_1 = player_get_direction_lower_nybble();
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
- gUnknown_02032300.player_field_0 = 2;
+ sUnknown_02032300.player_field_0 = 2;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
- gUnknown_02032300.player_field_0 = 4;
+ sUnknown_02032300.player_field_0 = 4;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
- gUnknown_02032300.player_field_0 = 8;
+ sUnknown_02032300.player_field_0 = 8;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_4))
- gUnknown_02032300.player_field_0 = 16;
+ sUnknown_02032300.player_field_0 = 16;
else
- gUnknown_02032300.player_field_0 = 1;
+ sUnknown_02032300.player_field_0 = 1;
}
-struct UnkPlayerStruct *sub_80852D4(void)
+static struct UnkPlayerStruct *sub_80852D4(void)
{
struct UnkPlayerStruct playerStruct;
u8 mapType = Overworld_GetMapTypeOfSaveblockLocation();
u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1();
- u8 v4 = sub_808532C(&gUnknown_02032300, v2, mapType);
+ u8 v4 = sub_808532C(&sUnknown_02032300, v2, mapType);
playerStruct.player_field_0 = v4;
- playerStruct.player_field_1 = sub_808538C(&gUnknown_02032300, v4, v2, mapType);
- gUnknown_02032300 = playerStruct;
- return &gUnknown_02032300;
+ playerStruct.player_field_1 = sub_808538C(&sUnknown_02032300, v4, v2, mapType);
+ sUnknown_02032300 = playerStruct;
+ return &sUnknown_02032300;
}
-u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3)
+static u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3)
{
if (a3 != 8 && FlagGet(FLAG_SYS_CRUISE_MODE))
return 1;
@@ -802,7 +964,7 @@ u8 sub_808532C(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3)
return 4;
}
-u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4)
+static u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4)
{
if (FlagGet(FLAG_SYS_CRUISE_MODE) && a4 == 6)
return 4;
@@ -826,7 +988,7 @@ u8 sub_808538C(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4)
return 1;
}
-u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void)
+static u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void)
{
return MapGridGetMetatileBehaviorAt(gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7);
}
@@ -869,15 +1031,15 @@ void sub_8085524(u16 mapDataId)
void sub_8085540(u8 var)
{
- gUnknown_020322D8 = var;
+ sUnknown_020322D8 = var;
}
u8 sub_808554C(void)
{
- return gUnknown_020322D8;
+ return sUnknown_020322D8;
}
-bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
+static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
{
if (!FlagGet(FLAG_SYS_WEATHER_CTRL))
return FALSE;
@@ -910,7 +1072,7 @@ bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
return FALSE;
}
-bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp)
+static bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp)
{
if (VarGet(VAR_0x40CA) != 1)
return FALSE;
@@ -921,7 +1083,7 @@ bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp)
return FALSE;
}
-bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
+static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
{
if (VarGet(VAR_WEATHER_INSTITUTE_STATE))
return FALSE;
@@ -933,7 +1095,7 @@ bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
return FALSE;
}
-bool16 IsInflitratedSpaceCenter(struct WarpData *warp)
+static bool16 IsInflitratedSpaceCenter(struct WarpData *warp)
{
if (VarGet(VAR_0x405D) == 0)
return FALSE;
@@ -987,7 +1149,7 @@ u16 GetCurrLocationDefaultMusic(void)
u16 GetWarpDestinationMusic(void)
{
- u16 music = GetLocationMusic(&gWarpDestination);
+ u16 music = GetLocationMusic(&sWarpDestination);
if (music != 0x7FFF)
{
return music;
@@ -1035,7 +1197,7 @@ void Overworld_ClearSavedMusic(void)
gSaveBlock1Ptr->savedMusic = 0;
}
-void sub_8085810(void)
+static void sub_8085810(void)
{
if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE)
{
@@ -1074,7 +1236,7 @@ void Overworld_ChangeMusicTo(u16 newMusic)
u8 GetMapMusicFadeoutSpeed(void)
{
- struct MapHeader *mapHeader = warp1_get_mapheader();
+ const struct MapHeader *mapHeader = warp1_get_mapheader();
if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE)
return 2;
else
@@ -1091,10 +1253,10 @@ void music_something(void)
&& VarGet(VAR_0x40CA) == 2
&& gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
&& gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
- && gWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
- && gWarpDestination.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
- && gWarpDestination.x == 0x1D
- && gWarpDestination.y == 0x35)
+ && sWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY)
+ && sWarpDestination.mapNum == MAP_NUM(SOOTOPOLIS_CITY)
+ && sWarpDestination.x == 0x1D
+ && sWarpDestination.y == 0x35)
return;
FadeOutMapMusic(GetMapMusicFadeoutSpeed());
}
@@ -1109,3 +1271,1920 @@ void Overworld_FadeOutMapMusic(void)
{
FadeOutMapMusic(4);
}
+
+static void PlayAmbientCry(void)
+{
+ s16 x, y;
+ s8 pan;
+ s8 volume;
+
+ PlayerGetDestCoords(&x, &y);
+ if (sIsAmbientCryWaterMon == TRUE
+ && !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y)))
+ return;
+ pan = (Random() % 88) + 212;
+ volume = (Random() % 30) + 50;
+ PlayCry2(sAmbientCrySpecies, pan, volume, 1);
+}
+
+void UpdateAmbientCry(s16 *state, u16 *delayCounter)
+{
+ u8 i, monsCount, divBy;
+
+ switch (*state)
+ {
+ case 0:
+ if (sAmbientCrySpecies == SPECIES_NONE)
+ *state = 4;
+ else
+ *state = 1;
+ break;
+ case 1:
+ *delayCounter = (Random() % 2400) + 1200;
+ *state = 3;
+ break;
+ case 2:
+ divBy = 1;
+ monsCount = CalculatePlayerPartyCount();
+ for (i = 0; i < monsCount; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_SANITY_BIT3)
+ && GetMonAbility(&gPlayerParty[0]) == ABILITY_SWARM)
+ {
+ divBy = 2;
+ break;
+ }
+ }
+ *delayCounter = ((Random() % 1200) + 1200) / divBy;
+ *state = 3;
+ break;
+ case 3:
+ (*delayCounter)--;
+ if (*delayCounter == 0)
+ {
+ PlayAmbientCry();
+ *state = 2;
+ }
+ break;
+ case 4:
+ break;
+ }
+}
+
+static void ChooseAmbientCrySpecies(void)
+{
+ if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE130)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE130))
+ && !IsMirageIslandPresent())
+ {
+ // Only play water pokemon cries on this route
+ // when Mirage Island is not present
+ sIsAmbientCryWaterMon = TRUE;
+ sAmbientCrySpecies = GetLocalWaterMon();
+ }
+ else
+ {
+ sAmbientCrySpecies = GetLocalWildMon(&sIsAmbientCryWaterMon);
+ }
+}
+
+u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum)
+{
+ return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->mapType;
+}
+
+u8 GetMapTypeByWarpData(struct WarpData *warp)
+{
+ return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum);
+}
+
+u8 Overworld_GetMapTypeOfSaveblockLocation(void)
+{
+ return GetMapTypeByWarpData(&gSaveBlock1Ptr->location);
+}
+
+u8 get_map_light_from_warp0(void)
+{
+ return GetMapTypeByWarpData(&gUnknown_020322DC);
+}
+
+bool8 is_light_level_1_2_3_5_or_6(u8 mapType)
+{
+ if (mapType == MAP_TYPE_ROUTE
+ || mapType == MAP_TYPE_TOWN
+ || mapType == MAP_TYPE_UNDERWATER
+ || mapType == MAP_TYPE_CITY
+ || mapType == MAP_TYPE_6)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType)
+{
+ if (mapType == MAP_TYPE_ROUTE
+ || mapType == MAP_TYPE_TOWN
+ || mapType == MAP_TYPE_6
+ || mapType == MAP_TYPE_CITY)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 Overworld_MapTypeIsIndoors(u8 mapType)
+{
+ if (mapType == MAP_TYPE_INDOOR
+ || mapType == MAP_TYPE_SECRET_BASE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 sav1_saved_warp2_map_get_name(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp2.mapGroup, gSaveBlock1Ptr->warp2.mapNum)->regionMapSectionId;
+}
+
+u8 sav1_map_get_name(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId;
+}
+
+u8 GetCurrentMapBattleScene(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->battleType;
+}
+
+static void overworld_bg_setup(void)
+{
+ InitBgsFromTemplates(0, gUnknown_08339DAC, ARRAY_COUNT(gUnknown_08339DAC));
+ SetBgAttribute(1, BG_CTRL_ATTR_PALETTEMODE, 1);
+ SetBgAttribute(2, BG_CTRL_ATTR_PALETTEMODE, 1);
+ SetBgAttribute(3, BG_CTRL_ATTR_PALETTEMODE, 1);
+ gUnknown_03005DA0 = AllocZeroed(0x800);
+ gUnknown_03005D9C = AllocZeroed(0x800);
+ gUnknown_03005DA4 = AllocZeroed(0x800);
+ SetBgTilemapBuffer(1, gUnknown_03005DA0);
+ SetBgTilemapBuffer(2, gUnknown_03005D9C);
+ SetBgTilemapBuffer(3, gUnknown_03005DA4);
+ sub_81971D0();
+}
+
+void overworld_free_bg_tilemaps(void)
+{
+ sub_81BE72C();
+ sub_81971F4();
+ if (gUnknown_03005DA4 != NULL)
+ FREE_AND_SET_NULL(gUnknown_03005DA4);
+ if (gUnknown_03005D9C != NULL)
+ FREE_AND_SET_NULL(gUnknown_03005D9C);
+ if (gUnknown_03005DA0 != NULL)
+ FREE_AND_SET_NULL(gUnknown_03005DA0);
+}
+
+static void ResetSafariZoneFlag_(void)
+{
+ ResetSafariZoneFlag();
+}
+
+bool32 is_c1_link_related_active(void)
+{
+ if (gMain.callback1 == c1_link_related)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void DoCB1_Overworld(u16 newKeys, u16 heldKeys)
+{
+ struct FieldInput inputStruct;
+
+ sub_808B578();
+ FieldClearPlayerInput(&inputStruct);
+ FieldGetPlayerInput(&inputStruct, newKeys, heldKeys);
+ if (!ScriptContext2_IsEnabled())
+ {
+ if (sub_809C014(&inputStruct) == 1)
+ {
+ ScriptContext2_Enable();
+ HideMapNamePopUpWindow();
+ }
+ else
+ {
+ player_step(inputStruct.dpadDirection, newKeys, heldKeys);
+ }
+ }
+}
+
+void CB1_Overworld(void)
+{
+ if (gMain.callback2 == CB2_Overworld)
+ DoCB1_Overworld(gMain.newKeys, gMain.heldKeys);
+}
+
+static void OverworldBasic(void)
+{
+ ScriptContext2_RunScript();
+ RunTasks();
+ AnimateSprites();
+ CameraUpdate();
+ UpdateCameraPanning();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ sub_80A0A38();
+ do_scheduled_bg_tilemap_copies_to_vram();
+}
+
+// This CB2 is used when starting
+void CB2_OverworldBasic(void)
+{
+ OverworldBasic();
+}
+
+void CB2_Overworld(void)
+{
+ bool32 fading = (gPaletteFade.active != 0);
+ if (fading)
+ SetVBlankCallback(NULL);
+ OverworldBasic();
+ if (fading)
+ SetFieldVBlankCallback();
+}
+
+void SetMainCallback1(MainCallback cb)
+{
+ gMain.callback1 = cb;
+}
+
+void sub_8085E94(void *a0)
+{
+ sUnknown_03000E0C = a0;
+}
+
+static bool8 map_post_load_hook_exec(void)
+{
+ if (gUnknown_03005DB0 != NULL)
+ {
+ if (!gUnknown_03005DB0())
+ {
+ return FALSE;
+ }
+ else
+ {
+ gUnknown_03005DB0 = NULL;
+ gFieldCallback = NULL;
+ }
+ }
+ else
+ {
+ if (gFieldCallback != NULL)
+ gFieldCallback();
+ else
+ mapldr_default();
+
+ gFieldCallback = NULL;
+ }
+
+ return TRUE;
+}
+
+void CB2_NewGame(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ StopMapMusic();
+ ResetSafariZoneFlag_();
+ NewGameInitData();
+ player_avatar_init_params_reset();
+ PlayTimeCounter_Start();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ gFieldCallback = ExecuteTruckSequence;
+ gUnknown_03005DB0 = NULL;
+ do_load_map_stuff_loop(&gMain.state);
+ SetFieldVBlankCallback();
+ SetMainCallback1(CB1_Overworld);
+ SetMainCallback2(CB2_Overworld);
+}
+
+void CB2_WhiteOut(void)
+{
+ u8 val;
+
+ if (++gMain.state >= 120)
+ {
+ FieldClearVBlankHBlankCallbacks();
+ StopMapMusic();
+ ResetSafariZoneFlag_();
+ DoWhiteOut();
+ player_avatar_init_params_reset();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ gFieldCallback = sub_80AF3C8;
+ val = 0;
+ do_load_map_stuff_loop(&val);
+ SetFieldVBlankCallback();
+ SetMainCallback1(CB1_Overworld);
+ SetMainCallback2(CB2_Overworld);
+ }
+}
+
+void CB2_LoadMap(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ SetMainCallback1(NULL);
+ SetMainCallback2(c2_change_map);
+ gMain.savedCallback = CB2_LoadMap2;
+}
+
+static void CB2_LoadMap2(void)
+{
+ do_load_map_stuff_loop(&gMain.state);
+ SetFieldVBlankCallback();
+ SetMainCallback1(CB1_Overworld);
+ SetMainCallback2(CB2_Overworld);
+}
+
+void sub_8086024(void)
+{
+ if (!gMain.state)
+ {
+ FieldClearVBlankHBlankCallbacks();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ SetMainCallback1(NULL);
+ }
+ if (load_map_stuff(&gMain.state, 1))
+ {
+ SetFieldVBlankCallback();
+ SetMainCallback1(CB1_Overworld);
+ SetMainCallback2(CB2_Overworld);
+ }
+}
+
+void sub_8086074(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ gFieldCallback = sub_80AF314;
+ SetMainCallback2(c2_80567AC);
+}
+
+static void c2_80567AC(void)
+{
+ if (map_loading_iteration_3(&gMain.state))
+ {
+ SetFieldVBlankCallback();
+ SetMainCallback1(c1_link_related);
+ sub_8086C2C();
+ SetMainCallback2(CB2_Overworld);
+ }
+}
+
+void CB2_ReturnToField(void)
+{
+ if (is_c1_link_related_active() == TRUE)
+ {
+ SetMainCallback2(CB2_ReturnToFieldLink);
+ }
+ else
+ {
+ FieldClearVBlankHBlankCallbacks();
+ SetMainCallback2(CB2_ReturnToFieldLocal);
+ }
+}
+
+void CB2_ReturnToFieldLocal(void)
+{
+ if (sub_8086638(&gMain.state))
+ {
+ SetFieldVBlankCallback();
+ SetMainCallback2(CB2_Overworld);
+ }
+}
+
+void CB2_ReturnToFieldLink(void)
+{
+ if (!sub_8087598() && map_loading_iteration_2_link(&gMain.state))
+ SetMainCallback2(CB2_Overworld);
+}
+
+void c2_8056854(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ StopMapMusic();
+ SetMainCallback1(c1_link_related);
+ sub_8086C2C();
+
+ if (gWirelessCommType)
+ gFieldCallback = sub_80AF314;
+ else
+ gFieldCallback = sub_80AF214;
+
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ CB2_ReturnToField();
+}
+
+void CB2_ReturnToFieldWithOpenMenu(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ gUnknown_03005DB0 = sub_80AF6A4;
+ CB2_ReturnToField();
+}
+
+void sub_80861B0(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ gFieldCallback = sub_80AF188;
+ CB2_ReturnToField();
+}
+
+void CB2_ReturnToFieldContinueScript(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ gFieldCallback = sub_80AF168;
+ CB2_ReturnToField();
+}
+
+void sub_80861E8(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ gFieldCallback = sub_80AF3C8;
+ CB2_ReturnToField();
+}
+
+static void sub_8086204(void)
+{
+ if ((gMapHeader.flags & 0xF8) == 8 && sub_80E909C() == TRUE)
+ ShowMapNamePopup();
+ sub_80AF3C8();
+}
+
+void CB2_ContinueSavedGame(void)
+{
+ u8 trainerHillMapId;
+
+ FieldClearVBlankHBlankCallbacks();
+ StopMapMusic();
+ ResetSafariZoneFlag_();
+ if (gSaveFileStatus == 0xFF)
+ sub_81A3908();
+
+ LoadSaveblockMapHeader();
+ set_warp2_warp3_to_neg_1();
+ trainerHillMapId = GetCurrentTrainerHillMapId();
+ if (gMapHeader.mapDataId == 0x169)
+ sub_81AA2F8();
+ else if (trainerHillMapId != 0 && trainerHillMapId != 6)
+ sub_81D5F48();
+ else
+ LoadSaveblockMapObjScripts();
+
+ UnfreezeMapObjects();
+ DoTimeBasedEvents();
+ sub_8084788();
+ if (gMapHeader.mapDataId == 0x169)
+ battle_pyramid_map_load_related(1);
+ else if (trainerHillMapId != 0)
+ trainer_hill_map_load_related();
+ else
+ sub_8087D74();
+
+ PlayTimeCounter_Start();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ sub_8195E10();
+ if (GetSecretBase2Field_9() == 1)
+ {
+ ClearSecretBase2Field_9();
+ warp1_set_to_sav1w();
+ warp_in();
+ sub_80EDB44();
+ SetMainCallback2(CB2_LoadMap);
+ }
+ else
+ {
+ sub_80EDB44();
+ gFieldCallback = sub_8086204;
+ SetMainCallback1(CB1_Overworld);
+ CB2_ReturnToField();
+ }
+}
+
+static void FieldClearVBlankHBlankCallbacks(void)
+{
+ if (warp0_in_pokecenter() == TRUE)
+ CloseLink();
+
+ if (gWirelessCommType != 0)
+ {
+ EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
+ DisableInterrupts(INTR_FLAG_HBLANK);
+ }
+ else
+ {
+ u16 savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE &= ~INTR_FLAG_HBLANK;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = savedIme;
+ }
+
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+}
+
+static void SetFieldVBlankCallback(void)
+{
+ SetVBlankCallback(VBlankCB_Field);
+}
+
+static void VBlankCB_Field(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ ScanlineEffect_InitHBlankDmaTransfer();
+ FieldUpdateBgTilemapScroll();
+ TransferPlttBuffer();
+ TransferTilesetAnimsBuffer();
+}
+
+static void sub_80863B0(void)
+{
+ u8 val;
+
+ if (sub_81A9E6C())
+ {
+ door_upload_tiles();
+ ScanlineEffect_SetParams(gUnknown_08339DBC);
+ }
+ else if ((val = Overworld_GetFlashLevel()))
+ {
+ sub_80B00E8(val);
+ ScanlineEffect_SetParams(gUnknown_08339DBC);
+ }
+}
+
+static bool32 map_loading_iteration_3(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ overworld_bg_setup();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ sub_80867C8();
+ sub_80867D8();
+ (*state)++;
+ break;
+ case 1:
+ mli0_load_map(1);
+ (*state)++;
+ break;
+ case 2:
+ sub_8086988(TRUE);
+ (*state)++;
+ break;
+ case 3:
+ sub_8086AE4();
+ sub_80869DC();
+ sub_8086B14();
+ sub_8086AAC();
+ (*state)++;
+ break;
+ case 4:
+ sub_80863B0();
+ map_loading_lcd_reset();
+ sub_8197200();
+ (*state)++;
+ break;
+ case 5:
+ move_tilemap_camera_to_upper_left_corner();
+ (*state)++;
+ break;
+ case 6:
+ copy_map_tileset1_to_vram(gMapHeader.mapData);
+ (*state)++;
+ break;
+ case 7:
+ copy_map_tileset2_to_vram(gMapHeader.mapData);
+ (*state)++;
+ break;
+ case 8:
+ if (free_temp_tile_data_buffers_if_possible() != TRUE)
+ {
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
+ (*state)++;
+ }
+ break;
+ case 9:
+ DrawWholeMapView();
+ (*state)++;
+ break;
+ case 10:
+ cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ (*state)++;
+ break;
+ case 11:
+ if (gWirelessCommType != 0)
+ {
+ sub_800E0E8();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ (*state)++;
+ break;
+ case 12:
+ if (map_post_load_hook_exec())
+ (*state)++;
+ break;
+ case 13:
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 load_map_stuff(u8 *state, u32 a2)
+{
+ switch (*state)
+ {
+ case 0:
+ FieldClearVBlankHBlankCallbacks();
+ mli0_load_map(a2);
+ (*state)++;
+ break;
+ case 1:
+ sub_80867C8();
+ sub_80867D8();
+ (*state)++;
+ break;
+ case 2:
+ sub_8086988(a2);
+ (*state)++;
+ break;
+ case 3:
+ mli4_mapscripts_and_other();
+ sub_8086A80();
+ (*state)++;
+ break;
+ case 4:
+ sub_80863B0();
+ map_loading_lcd_reset();
+ sub_8197200();
+ (*state)++;
+ break;
+ case 5:
+ move_tilemap_camera_to_upper_left_corner();
+ (*state)++;
+ break;
+ case 6:
+ copy_map_tileset1_to_vram(gMapHeader.mapData);
+ (*state)++;
+ break;
+ case 7:
+ copy_map_tileset2_to_vram(gMapHeader.mapData);
+ (*state)++;
+ break;
+ case 8:
+ if (free_temp_tile_data_buffers_if_possible() != TRUE)
+ {
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
+ (*state)++;
+ }
+ break;
+ case 9:
+ DrawWholeMapView();
+ (*state)++;
+ break;
+ case 10:
+ cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ (*state)++;
+ break;
+ case 11:
+ if ((gMapHeader.flags & 0xF8) == 8 && sub_80E909C() == 1)
+ ShowMapNamePopup();
+ (*state)++;
+ break;
+ case 12:
+ if (map_post_load_hook_exec())
+ (*state)++;
+ break;
+ case 13:
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_8086638(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_80867C8();
+ sub_80867D8();
+ sub_8086988(0);
+ sub_8086A68();
+ sub_8086A80();
+ (*state)++;
+ break;
+ case 1:
+ sub_8086860();
+ sub_81D64C0();
+ (*state)++;
+ break;
+ case 2:
+ if (map_post_load_hook_exec())
+ (*state)++;
+ break;
+ case 3:
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 map_loading_iteration_2_link(u8 *state)
+{
+ switch (*state)
+ {
+ case 0:
+ FieldClearVBlankHBlankCallbacks();
+ sub_80867C8();
+ sub_80867D8();
+ (*state)++;
+ break;
+ case 1:
+ sub_8086988(1);
+ (*state)++;
+ break;
+ case 2:
+ sub_8086B9C();
+ sub_8086A68();
+ sub_8086AC8();
+ (*state)++;
+ break;
+ case 3:
+ sub_80863B0();
+ map_loading_lcd_reset();
+ sub_8197200();
+ (*state)++;
+ break;
+ case 4:
+ move_tilemap_camera_to_upper_left_corner();
+ (*state)++;
+ break;
+ case 5:
+ copy_map_tileset1_to_vram(gMapHeader.mapData);
+ (*state)++;
+ break;
+ case 6:
+ copy_map_tileset2_to_vram(gMapHeader.mapData);
+ (*state)++;
+ break;
+ case 7:
+ if (free_temp_tile_data_buffers_if_possible() != TRUE)
+ {
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
+ (*state)++;
+ }
+ break;
+ case 8:
+ DrawWholeMapView();
+ (*state)++;
+ break;
+ case 9:
+ cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ (*state)++;
+ break;
+ case 11:
+ if (gWirelessCommType != 0)
+ {
+ sub_800E0E8();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ (*state)++;
+ break;
+ case 12:
+ if (map_post_load_hook_exec())
+ (*state)++;
+ break;
+ case 10:
+ (*state)++;
+ break;
+ case 13:
+ SetFieldVBlankCallback();
+ (*state)++;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void do_load_map_stuff_loop(u8 *state)
+{
+ while (!load_map_stuff(state, 0));
+}
+
+static void sub_80867C8(void)
+{
+ sub_81BE6AC();
+ MoveSaveBlocks_ResetHeap();
+}
+
+static void sub_80867D8(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ScanlineEffect_Stop();
+
+ DmaClear16(3, PLTT + 2, PLTT_SIZE - 2);
+ DmaFillLarge16(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000);
+ ResetOamRange(0, 128);
+ LoadOam();
+}
+
+static void sub_8086860(void)
+{
+ sub_80863B0();
+ map_loading_lcd_reset();
+ sub_8197200();
+ mapdata_load_assets_to_gpu_and_full_redraw();
+}
+
+static void map_loading_lcd_reset(void)
+{
+ clear_scheduled_bg_copies_to_vram();
+ reset_temp_tile_data_buffers();
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x101);
+ SetGpuReg(REG_OFFSET_WIN0H, 0xFF);
+ SetGpuReg(REG_OFFSET_WIN0V, 0xFF);
+ SetGpuReg(REG_OFFSET_WIN1H, 0xFFFF);
+ SetGpuReg(REG_OFFSET_WIN1V, 0xFFFF);
+ SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3] | 0x1040);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x70D);
+ overworld_bg_setup();
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ schedule_bg_copy_tilemap_to_vram(3);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJ_1D_MAP | 0x20);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ sub_8098128();
+}
+
+static void sub_8086988(u32 a1)
+{
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ ScanlineEffect_Clear();
+ dp13_810BB8C();
+ ResetCameraUpdateInfo();
+ InstallCameraPanAheadCallback();
+ if (!a1)
+ npc_paltag_set_load(0);
+ else
+ npc_paltag_set_load(1);
+
+ FieldEffectActiveListClear();
+ sub_80AAFA4();
+ sub_80AEE84();
+ if (!a1)
+ SetUpFieldTasks();
+ mapheader_run_script_with_tag_x5();
+ sub_81BE6B8();
+}
+
+static void sub_80869DC(void)
+{
+ gUnknown_03005DEC = 0;
+ gUnknown_03005DE8 = 0;
+ sub_808D438();
+ SpawnFieldObjectsInView(0, 0);
+ mapheader_run_first_tag4_script_list_match();
+}
+
+static void mli4_mapscripts_and_other(void)
+{
+ s16 x, y;
+ struct UnkPlayerStruct *player;
+
+ gUnknown_03005DEC = 0;
+ gUnknown_03005DE8 = 0;
+ sub_808D438();
+ sav1_camera_get_focus_coords(&x, &y);
+ player = sub_80852D4();
+ InitPlayerAvatar(x, y, player->player_field_1, gSaveBlock2Ptr->playerGender);
+ SetPlayerAvatarTransitionFlags(player->player_field_0);
+ player_avatar_init_params_reset();
+ SpawnFieldObjectsInView(0, 0);
+ mapheader_run_first_tag4_script_list_match();
+}
+
+static void sub_8086A68(void)
+{
+ sub_808E16C(0, 0);
+ RotatingGate_InitPuzzleAndGraphics();
+ mapheader_run_script_with_tag_x7();
+}
+
+static void sub_8086A80(void)
+{
+ gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 = 1;
+ InitCameraUpdateCallback(gPlayerAvatar.spriteId);
+}
+
+static void sub_8086AAC(void)
+{
+ InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4));
+}
+
+static void sub_8086AC8(void)
+{
+ InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4));
+}
+
+static void sub_8086AE4(void)
+{
+ u16 x, y;
+ sav1_camera_get_focus_coords(&x, &y);
+ sub_8088B3C(x + gUnknown_03005DB4, y);
+}
+
+static void sub_8086B14(void)
+{
+ u16 i;
+ u16 x, y;
+
+ sav1_camera_get_focus_coords(&x, &y);
+ x -= gUnknown_03005DB4;
+
+ for (i = 0; i < gFieldLinkPlayerCount; i++)
+ {
+ SpawnLinkPlayerMapObject(i, i + x, y, gLinkPlayers[i].gender);
+ CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
+ }
+
+ sub_8086C40();
+}
+
+static void sub_8086B9C(void)
+{
+ u16 i;
+ for (i = 0; i < gFieldLinkPlayerCount; i++)
+ CreateLinkPlayerSprite(i, gLinkPlayers[i].version);
+}
+
+static void c1_link_related(void)
+{
+ if (gWirelessCommType == 0 || !sub_800F0B8() || !sub_8009F3C())
+ {
+ u8 var = gUnknown_03005DB4;
+ sub_8086F38(gLinkPartnersHeldKeys, var);
+ sub_8086FA0(sUnknown_03000E14(var));
+ sub_8086C40();
+ }
+}
+
+void sub_8086C2C(void)
+{
+ sub_8086C90();
+ c1_link_related_func_set(sub_80870B0);
+}
+
+static void sub_8086C40(void)
+{
+ sub_808709C(gLinkPartnersHeldKeys);
+}
+
+static void c1_link_related_func_set(u16 (*func)(u32))
+{
+ sUnknown_03000E19 = 0;
+ sUnknown_03000E14 = func;
+}
+
+static void sub_8086C64(void)
+{
+ if (gWirelessCommType != 0)
+ {
+ if (++sUnknown_03000E19 > 60)
+ sub_8010198();
+ }
+}
+
+static void sub_8086C90(void)
+{
+ s32 i;
+ for (i = 0; i < 4; i++)
+ sUnknown_03000E10[i] = 0x80;
+}
+
+static bool32 sub_8086CA8(u16 a1)
+{
+ s32 i;
+ s32 count = gFieldLinkPlayerCount;
+
+ for (i = 0; i < count; i++)
+ if (sUnknown_03000E10[i] != a1)
+ return FALSE;
+ return TRUE;
+}
+
+static bool32 sub_8086CE0(u16 a1)
+{
+ s32 i;
+ s32 count = gFieldLinkPlayerCount;
+
+ for (i = 0; i < count; i++)
+ if (sUnknown_03000E10[i] == a1)
+ return TRUE;
+ return FALSE;
+}
+
+static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4)
+{
+ const u8 *script;
+
+ if (sUnknown_03000E10[a1] == 0x80)
+ {
+ script = sub_8087370(a3);
+ if (script)
+ {
+ *a4 = sub_8087480(script);
+ sUnknown_03000E10[a1] = 0x81;
+ if (a3->b)
+ {
+ c1_link_related_func_set(sub_80870F8);
+ sub_8087530(script);
+ }
+ return;
+ }
+ if (sub_8086CE0(0x83) == 1)
+ {
+ sUnknown_03000E10[a1] = 0x81;
+ if (a3->b)
+ {
+ c1_link_related_func_set(sub_80870F8);
+ sub_8087584();
+ }
+ return;
+ }
+ switch (a2)
+ {
+ case 24:
+ if (sub_8087358(a3))
+ {
+ sUnknown_03000E10[a1] = 0x81;
+ if (a3->b)
+ {
+ c1_link_related_func_set(sub_80870F8);
+ sub_808751C();
+ }
+ }
+ break;
+ case 18:
+ if (sub_8087388(a3) == TRUE)
+ {
+ sUnknown_03000E10[a1] = 0x81;
+ if (a3->b)
+ {
+ c1_link_related_func_set(sub_80870F8);
+ sub_808754C();
+ }
+ }
+ break;
+ case 25:
+ script = sub_80873B4(a3);
+ if (script)
+ {
+ sUnknown_03000E10[a1] = 0x81;
+ if (a3->b)
+ {
+ c1_link_related_func_set(sub_80870F8);
+ sub_8087568(script);
+ }
+ }
+ break;
+ case 27:
+ if (sub_8087340(a3))
+ {
+ sUnknown_03000E10[a1] = 0x81;
+ if (a3->b)
+ {
+ c1_link_related_func_set(sub_808711C);
+ sub_8087510();
+ }
+ }
+ break;
+ case 28:
+ if (sub_8087340(a3))
+ {
+ sUnknown_03000E10[a1] = 0x81;
+ if (a3->b)
+ {
+ c1_link_related_func_set(sub_8087140);
+ sub_8087510();
+ }
+ }
+ break;
+ }
+ }
+
+ switch (a2)
+ {
+ case 23:
+ sUnknown_03000E10[a1] = 0x83;
+ break;
+ case 22:
+ sUnknown_03000E10[a1] = 0x82;
+ break;
+ case 26:
+ sUnknown_03000E10[a1] = 0x80;
+ if (a3->b)
+ c1_link_related_func_set(sub_80870B0);
+ break;
+ case 29:
+ if (sUnknown_03000E10[a1] == 0x82)
+ sUnknown_03000E10[a1] = 0x81;
+ break;
+ }
+}
+
+static void sub_8086F38(u16 *a1, s32 a2)
+{
+ struct UnkStruct_8054FF8 st;
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 v5 = a1[i];
+ u16 v8 = 0;
+ sub_80872D8(i, a2, &st);
+ sub_8086D18(i, v5, &st, &v8);
+ if (sUnknown_03000E10[i] == 0x80)
+ v8 = sub_8087068(v5);
+ sub_808796C(i, v8);
+ }
+}
+
+static void sub_8086FA0(u16 a1)
+{
+ if (a1 >= 17 && a1 < 30)
+ gUnknown_03005DA8 = a1;
+ else
+ gUnknown_03005DA8 = 17;
+
+ if (gWirelessCommType != 0
+ && sub_8087690() > 1
+ && is_c1_link_related_active() == TRUE
+ && sub_8009F3C() == TRUE)
+ {
+ switch (a1)
+ {
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 21:
+ case 24:
+ case 25:
+ gUnknown_03005DA8 = 0;
+ break;
+ }
+ }
+}
+
+static u16 sub_808700C(u32 a1)
+{
+ if (gMain.heldKeys & DPAD_UP)
+ return 19;
+ else if (gMain.heldKeys & DPAD_DOWN)
+ return 18;
+ else if (gMain.heldKeys & DPAD_LEFT)
+ return 20;
+ else if (gMain.heldKeys & DPAD_RIGHT)
+ return 21;
+ else if (gMain.newKeys & START_BUTTON)
+ return 24;
+ else if (gMain.newKeys & A_BUTTON)
+ return 25;
+ else
+ return 17;
+}
+
+static u16 sub_8087068(u16 a1)
+{
+ switch (a1)
+ {
+ case 21:
+ return 4;
+ case 20:
+ return 3;
+ case 19:
+ return 1;
+ case 18:
+ return 2;
+ default:
+ return 0;
+ }
+}
+
+static void sub_808709C(u16 *a1)
+{
+ s32 i;
+ for (i = 0; i < 4; i++)
+ a1[i] = 17;
+}
+
+static u16 sub_80870B0(u32 a1)
+{
+ if (ScriptContext2_IsEnabled() == 1)
+ return 17;
+ if (sub_800B4DC() > 4)
+ return 27;
+ if (sub_8087690() <= 4)
+ return sub_808700C(a1);
+ return 28;
+}
+
+static u16 sub_80870EC(u32 a1)
+{
+ sub_8086C64();
+ return 17;
+}
+
+static u16 sub_80870F8(u32 a1)
+{
+ u16 retVal;
+ if (ScriptContext2_IsEnabled() == TRUE)
+ {
+ retVal = 17;
+ }
+ else
+ {
+ retVal = 26;
+ c1_link_related_func_set(sub_80870EC);
+ }
+ return retVal;
+}
+
+static u16 sub_808711C(u32 a1)
+{
+ u16 retVal;
+ if (sub_800B4DC() > 2)
+ {
+ retVal = 17;
+ }
+ else
+ {
+ retVal = 26;
+ ScriptContext2_Disable();
+ c1_link_related_func_set(sub_80870EC);
+ }
+ return retVal;
+}
+
+static u16 sub_8087140(u32 a1)
+{
+ u16 retVal;
+ if (sub_8087690() > 2)
+ {
+ retVal = 17;
+ }
+ else
+ {
+ retVal = 26;
+ ScriptContext2_Disable();
+ c1_link_related_func_set(sub_80870EC);
+ }
+ return retVal;
+}
+
+static u16 sub_8087164(u32 a1)
+{
+ sub_8086C64();
+ return 17;
+}
+
+static u16 sub_8087170(u32 linkPlayerId)
+{
+ if (sUnknown_03000E10[linkPlayerId] == 0x82)
+ {
+ if (gMain.newKeys & B_BUTTON)
+ {
+ c1_link_related_func_set(sub_8087164);
+ return 29;
+ }
+ else
+ {
+ return 17;
+ }
+ }
+ else
+ {
+ sub_8086C64();
+ return 17;
+ }
+}
+
+static u16 sub_80871AC(u32 a1)
+{
+ c1_link_related_func_set(sub_8087170);
+ return 22;
+}
+
+static u16 sub_80871C0(u32 a1)
+{
+ return 17;
+}
+
+static u16 sub_80871C4(u32 a1)
+{
+ if (sUnknown_03000E10[a1] != 0x83)
+ sub_8086C64();
+ if (sub_8086CA8(0x83) == TRUE)
+ {
+ ScriptContext1_SetupScript(EventScript_277513);
+ c1_link_related_func_set(sub_80871C0);
+ }
+ return 17;
+}
+
+static u16 sub_80871FC(u32 a1)
+{
+ c1_link_related_func_set(sub_80871C4);
+ return 23;
+}
+
+static u16 sub_8087210(u32 a1)
+{
+ return 17;
+}
+
+u32 sub_8087214(void)
+{
+ if (sub_8086CE0(0x83) == TRUE)
+ return 2;
+ if (sUnknown_03000E14 == sub_8087170 && sUnknown_03000E10[gUnknown_03005DB4] != 0x82)
+ return 0;
+ if (sUnknown_03000E14 == sub_8087164 && sUnknown_03000E10[gUnknown_03005DB4] == 0x81)
+ return 2;
+ if (sub_8086CA8(0x82) != 0)
+ return 1;
+ return 0;
+}
+
+bool32 sub_808727C(void)
+{
+ return sub_8086CE0(0x83);
+}
+
+u16 sub_8087288(void)
+{
+ c1_link_related_func_set(sub_80871AC);
+ return 0;
+}
+
+u16 sub_808729C(void)
+{
+ c1_link_related_func_set(sub_80870F8);
+ return 0;
+}
+
+u16 sub_80872B0(void)
+{
+ c1_link_related_func_set(sub_80871FC);
+ return 0;
+}
+
+u16 sub_80872C4(void)
+{
+ c1_link_related_func_set(sub_8087210);
+ return 0;
+}
+
+static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3)
+{
+ s16 x, y;
+
+ a3->a = linkPlayerId;
+ a3->b = (linkPlayerId == a2) ? 1 : 0;
+ a3->c = gLinkPlayerMapObjects[linkPlayerId].mode;
+ a3->d = sub_80878A0(linkPlayerId);
+ sub_8087878(linkPlayerId, &x, &y);
+ a3->sub.x = x;
+ a3->sub.y = y;
+ a3->sub.height = sub_80878C0(linkPlayerId);
+ a3->field_C = MapGridGetMetatileBehaviorAt(x, y);
+}
+
+static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1)
+{
+ u8 v1 = a1->c;
+ if (v1 == 2 || v1 == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1)
+{
+ u8 v1 = a1->c;
+ if (v1 == 2 || v1 == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1)
+{
+ if (a1->c != 2)
+ return 0;
+ return sub_809D0F4(&a1->sub);
+}
+
+static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1)
+{
+ if (a1->c != 2 && a1->c != 0)
+ return FALSE;
+ if (!MetatileBehavior_IsSouthArrowWarp(a1->field_C))
+ return FALSE;
+ if (a1->d != 1)
+ return FALSE;
+ return TRUE;
+}
+
+static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1)
+{
+ struct MapPosition unkStruct;
+ u8 linkPlayerId;
+
+ if (a1->c && a1->c != 2)
+ return 0;
+
+ unkStruct = a1->sub;
+ unkStruct.x += gUnknown_08339D64[a1->d].x;
+ unkStruct.y += gUnknown_08339D64[a1->d].y;
+ unkStruct.height = 0;
+ linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y);
+
+ if (linkPlayerId != 4)
+ {
+ if (!a1->b)
+ return EventScript_TradeRoom_TooBusyToNotice;
+ if (sUnknown_03000E10[linkPlayerId] != 0x80)
+ return EventScript_TradeRoom_TooBusyToNotice;
+ if (!sub_80B39D4(linkPlayerId))
+ return EventScript_TradeRoom_ReadTrainerCard1;
+ else
+ return EventScript_TradeRoom_ReadTrainerCard2;
+ }
+
+ return sub_809C2C8(&unkStruct, a1->field_C, a1->d);
+}
+
+static u16 sub_8087480(const u8 *script)
+{
+ if (script == gUnknown_08277388)
+ return 10;
+ if (script == gUnknown_082773A3)
+ return 9;
+ if (script == gUnknown_082773BE)
+ return 10;
+ if (script == gUnknown_082773D9)
+ return 9;
+ if (script == gUnknown_0827741D)
+ return 10;
+ if (script == gUnknown_08277432)
+ return 9;
+ if (script == gUnknown_08277447)
+ return 10;
+ if (script == gUnknown_0827745C)
+ return 9;
+ if (script == gUnknown_08277374)
+ return 10;
+ if (script == gUnknown_0827737E)
+ return 9;
+ if (script == gUnknown_082773F5)
+ return 10;
+ if (script == gUnknown_082773FF)
+ return 9;
+ return 0;
+}
+
+static void sub_8087510(void)
+{
+ ScriptContext2_Enable();
+}
+
+static void sub_808751C(void)
+{
+ PlaySE(SE_WIN_OPEN);
+ sub_809FA9C();
+ ScriptContext2_Enable();
+}
+
+static void sub_8087530(const u8 *script)
+{
+ PlaySE(SE_SELECT);
+ ScriptContext1_SetupScript(script);
+ ScriptContext2_Enable();
+}
+
+static void sub_808754C(void)
+{
+ PlaySE(SE_WIN_OPEN);
+ ScriptContext1_SetupScript(gUnknown_082774EF);
+ ScriptContext2_Enable();
+}
+
+static void sub_8087568(const u8 *script)
+{
+ PlaySE(SE_SELECT);
+ ScriptContext1_SetupScript(script);
+ ScriptContext2_Enable();
+}
+
+static void sub_8087584(void)
+{
+ ScriptContext1_SetupScript(gUnknown_08277509);
+ ScriptContext2_Enable();
+}
+
+bool32 sub_8087598(void)
+{
+ if (!is_c1_link_related_active())
+ return 0;
+ if (sub_800B4DC() >= 3)
+ sUnknown_03000E18 = 1;
+ else
+ sUnknown_03000E18 = 0;
+ return sUnknown_03000E18;
+}
+
+bool32 sub_80875C8(void)
+{
+ u8 temp;
+
+ if (sub_800B4DC() < 2)
+ return FALSE;
+
+ if (is_c1_link_related_active() != TRUE)
+ return FALSE;
+
+ if (sub_8009F3C() != TRUE)
+ return FALSE;
+
+ if (sUnknown_03000E14 == sub_808711C)
+ return TRUE;
+
+ if (sUnknown_03000E14 != sub_80870F8)
+ return FALSE;
+
+ temp = sUnknown_03000E18;
+ sUnknown_03000E18 = 0;
+
+ if (temp == TRUE)
+ return TRUE;
+
+ if (gPaletteFade.active && gPaletteFade.softwareFadeFinishing)
+ return TRUE;
+
+ return FALSE;
+}
+
+bool32 sub_8087634(void)
+{
+ if (sub_8087690() < 2)
+ return FALSE;
+
+ if (is_c1_link_related_active() != TRUE)
+ return FALSE;
+
+ if (sub_8009F3C() != TRUE)
+ return FALSE;
+
+ if (sUnknown_03000E14 == sub_8087140)
+ return TRUE;
+
+ return FALSE;
+}
+
+bool32 sub_808766C(void)
+{
+ if (gWirelessCommType != 0)
+ return FALSE;
+ if (!sub_8009F3C())
+ return FALSE;
+ return TRUE;
+}
+
+static u32 sub_8087690(void)
+{
+ if (gWirelessCommType != 0)
+ return gUnknown_03005000.unk_9e8.unk_232;
+ else
+ return gLink.sendQueue.count;
+}
+
+static void ZeroLinkPlayerMapObject(struct LinkPlayerMapObject *linkPlayerMapObj)
+{
+ memset(linkPlayerMapObj, 0, sizeof(struct LinkPlayerMapObject));
+}
+
+void ZeroAllLinkPlayerMapObjects(void)
+{
+ memset(gLinkPlayerMapObjects, 0, sizeof(gLinkPlayerMapObjects));
+}
+
+static void ZeroMapObject(struct MapObject *mapObj)
+{
+ memset(mapObj, 0, sizeof(struct MapObject));
+}
+
+static void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
+{
+ u8 mapObjId = sub_808D4F4();
+ struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+
+ ZeroLinkPlayerMapObject(linkPlayerMapObj);
+ ZeroMapObject(mapObj);
+
+ linkPlayerMapObj->active = 1;
+ linkPlayerMapObj->linkPlayerId = linkPlayerId;
+ linkPlayerMapObj->mapObjId = mapObjId;
+ linkPlayerMapObj->mode = 0;
+
+ mapObj->active = 1;
+ mapObj->mapobj_bit_1 = a4;
+ mapObj->range.as_byte = 2;
+ mapObj->spriteId = 64;
+
+ InitLinkPlayerMapObjectPos(mapObj, x, y);
+}
+
+static void InitLinkPlayerMapObjectPos(struct MapObject *mapObj, s16 x, s16 y)
+{
+ mapObj->coords2.x = x;
+ mapObj->coords2.y = y;
+ mapObj->coords3.x = x;
+ mapObj->coords3.y = y;
+ sub_8093038(x, y, &mapObj->coords1.x, &mapObj->coords1.y);
+ mapObj->coords1.x += 8;
+ FieldObjectUpdateZCoord(mapObj);
+}
+
+static void sub_80877DC(u8 linkPlayerId, u8 a2)
+{
+ if (gLinkPlayerMapObjects[linkPlayerId].active)
+ {
+ u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+ mapObj->range.as_byte = a2;
+ }
+}
+
+static void sub_808780C(u8 linkPlayerId)
+{
+ struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
+ u8 mapObjId = linkPlayerMapObj->mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+ if (mapObj->spriteId != 64 )
+ DestroySprite(&gSprites[mapObj->spriteId]);
+ linkPlayerMapObj->active = 0;
+ mapObj->active = 0;
+}
+
+static u8 sub_8087858(u8 linkPlayerId)
+{
+ u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+ return mapObj->spriteId;
+}
+
+static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y)
+{
+ u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+ *x = mapObj->coords2.x;
+ *y = mapObj->coords2.y;
+}
+
+static u8 sub_80878A0(u8 linkPlayerId)
+{
+ u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+ return mapObj->range.as_byte;
+}
+
+static u8 sub_80878C0(u8 linkPlayerId)
+{
+ u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+ return mapObj->mapobj_unk_0B_0;
+}
+
+static s32 sub_80878E4(u8 linkPlayerId)
+{
+ u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+ return 16 - (s8)mapObj->mapobj_unk_21;
+}
+
+static u8 GetLinkPlayerIdAt(s16 x, s16 y)
+{
+ u8 i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gLinkPlayerMapObjects[i].active
+ && (gLinkPlayerMapObjects[i].mode == 0 || gLinkPlayerMapObjects[i].mode == 2))
+ {
+ struct MapObject *mapObj = &gMapObjects[gLinkPlayerMapObjects[i].mapObjId];
+ if (mapObj->coords2.x == x && mapObj->coords2.y == y)
+ return i;
+ }
+ }
+ return 4;
+}
+
+static void sub_808796C(u8 linkPlayerId, u8 a2)
+{
+ struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
+ u8 mapObjId = linkPlayerMapObj->mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+
+ if (linkPlayerMapObj->active)
+ {
+ if (a2 > 10)
+ mapObj->mapobj_bit_2 = 1;
+ else
+ gUnknown_08339E00[gUnknown_08339DC8[linkPlayerMapObj->mode](linkPlayerMapObj, mapObj, a2)](linkPlayerMapObj, mapObj);
+ }
+}
+
+static u8 sub_80879D8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+{
+ return gUnknown_08339DD4[a3](linkPlayerMapObj, mapObj, a3);
+}
+
+static u8 sub_80879F8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+{
+ return 1;
+}
+
+static u8 sub_80879FC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+{
+ return gUnknown_08339DD4[a3](linkPlayerMapObj, mapObj, a3);
+}
+
+static u8 sub_8087A1C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+{
+ return 0;
+}
+
+static u8 sub_8087A20(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+{
+ s16 x, y;
+
+ mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
+ FieldObjectMoveDestCoords(mapObj, mapObj->range.as_byte, &x, &y);
+
+ if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->range.as_byte, x, y))
+ {
+ return 0;
+ }
+ else
+ {
+ mapObj->mapobj_unk_21 = 16;
+ npc_coords_shift(mapObj, x, y);
+ FieldObjectUpdateZCoord(mapObj);
+ return 1;
+ }
+}
+
+static u8 sub_8087A88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+{
+ mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
+ return 0;
+}
+
+static void sub_8087AA0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+{
+ linkPlayerMapObj->mode = 0;
+}
+
+static void sub_8087AA8(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+{
+ mapObj->mapobj_unk_21--;
+ linkPlayerMapObj->mode = 1;
+ MoveCoords(mapObj->range.as_byte, &mapObj->coords1.x, &mapObj->coords1.y);
+ if (!mapObj->mapobj_unk_21)
+ {
+ npc_coords_shift_still(mapObj);
+ linkPlayerMapObj->mode = 2;
+ }
+}
+
+static u8 npc_something3(u8 a1, u8 a2)
+{
+ switch (a1 - 1)
+ {
+ case 0:
+ case 6:
+ return 2;
+ case 1:
+ case 7:
+ return 1;
+ case 2:
+ case 8:
+ return 3;
+ case 3:
+ case 9:
+ return 4;
+ }
+ return a2;
+}
+
+static u8 LinkPlayerDetectCollision(u8 selfMapObjId, u8 a2, s16 x, s16 y)
+{
+ u8 i;
+ for (i = 0; i < 16; i++)
+ {
+ if (i != selfMapObjId)
+ {
+ if ((gMapObjects[i].coords2.x == x && gMapObjects[i].coords2.y == y)
+ || (gMapObjects[i].coords3.x == x && gMapObjects[i].coords3.y == y))
+ {
+ return 1;
+ }
+ }
+ }
+ return MapGridIsImpassableAt(x, y);
+}
+
+static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
+{
+ struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[linkPlayerId];
+ u8 mapObjId = linkPlayerMapObj->mapObjId;
+ struct MapObject *mapObj = &gMapObjects[mapObjId];
+ struct Sprite *sprite;
+
+ if (linkPlayerMapObj->active)
+ {
+ switch (gameVersion)
+ {
+ case VERSION_FIRE_RED:
+ case VERSION_LEAF_GREEN:
+ mapObj->spriteId = AddPseudoFieldObject(sub_808BD6C(mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
+ break;
+ case VERSION_RUBY:
+ case VERSION_SAPPHIRE:
+ mapObj->spriteId = AddPseudoFieldObject(sub_808BD7C(mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
+ break;
+ case VERSION_EMERALD:
+ mapObj->spriteId = AddPseudoFieldObject(GetRivalAvatarGraphicsIdByStateIdAndGender(0, mapObj->mapobj_bit_1), SpriteCB_LinkPlayer, 0, 0, 0);
+ break;
+ }
+
+ sprite = &gSprites[mapObj->spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->data[0] = linkPlayerId;
+ mapObj->mapobj_bit_2 = 0;
+ }
+}
+
+static void SpriteCB_LinkPlayer(struct Sprite *sprite)
+{
+ struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[sprite->data[0]];
+ struct MapObject *mapObj = &gMapObjects[linkPlayerMapObj->mapObjId];
+ sprite->pos1.x = mapObj->coords1.x;
+ sprite->pos1.y = mapObj->coords1.y;
+ SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
+ sprite->oam.priority = ZCoordToPriority(mapObj->elevation);
+
+ if (!linkPlayerMapObj->mode)
+ StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->range.as_byte));
+ else
+ StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->range.as_byte));
+
+ sub_80979D4(sprite, 0);
+ if (mapObj->mapobj_bit_2)
+ {
+ sprite->invisible = ((sprite->data[7] & 4) >> 2);
+ sprite->data[7]++;
+ }
+}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index b9d1d94c6..b9a1f6bf3 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -74,7 +74,7 @@ extern void (*gFieldCallback)(void);
extern const u16 gUnknown_0860F074[];
-extern void c2_exit_to_overworld_2_switch(void);
+extern void CB2_ReturnToField(void);
extern bool8 sub_81221EC(void);
extern void sub_809882C(u8, u16, u8);
extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8);
@@ -374,7 +374,7 @@ void OpenPokeblockCaseInBattle(void)
void OpenPokeblockCaseOnFeeder(void)
{
- OpenPokeblockCase(PBLOCK_CASE_FEEDER, c2_exit_to_overworld_2_switch);
+ OpenPokeblockCase(PBLOCK_CASE_FEEDER, CB2_ReturnToField);
}
static void CB2_PokeblockMenu(void)
diff --git a/src/region_map.c b/src/region_map.c
index 7f121d1de..f16787fc9 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -1581,7 +1581,7 @@ void MCB2_FlyMap(void)
gUnknown_0203A148 = malloc(sizeof(*gUnknown_0203A148));
if (gUnknown_0203A148 == NULL)
{
- SetMainCallback2(sub_8086194);
+ SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
}
else
{
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
index 9950f6691..50692d356 100644
--- a/src/reset_save_heap.c
+++ b/src/reset_save_heap.c
@@ -26,5 +26,5 @@ void sub_81700F8(void)
Sav2_ClearSetDefault();
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
InitHeap(gHeap, HEAP_SIZE);
- SetMainCallback2(sub_8086230);
+ SetMainCallback2(CB2_ContinueSavedGame);
}
diff --git a/src/safari_zone.c b/src/safari_zone.c
index dd3cf3733..ab5c38f3a 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -30,9 +30,9 @@ extern void sub_80EE44C(u8, u8);
extern void IncrementGameStat(u8 index);
extern void ScriptContext1_SetupScript(u8*);
extern void ScriptContext2_RunNewScript(u8*);
-extern void c2_exit_to_overworld_2_switch(void);
-extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
-extern void c2_load_new_map(void);
+extern void CB2_ReturnToField(void);
+extern void CB2_ReturnToFieldContinueScript(void);
+extern void CB2_LoadMap(void);
extern void sub_80AF6F0(void);
extern void ScriptContext1_Stop(void);
extern void warp_in(void);
@@ -112,20 +112,20 @@ void CB2_EndSafariBattle(void)
sSafariZoneCaughtMons++;
if (gNumSafariBalls != 0)
{
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
}
else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS)
{
ScriptContext2_RunNewScript(EventScript_2A4B4C);
warp_in();
gFieldCallback = sub_80AF6F0;
- SetMainCallback2(c2_load_new_map);
+ SetMainCallback2(CB2_LoadMap);
}
else if (gBattleOutcome == B_OUTCOME_CAUGHT)
{
ScriptContext1_SetupScript(EventScript_2A4B9B);
ScriptContext1_Stop();
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
}
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index deb170c68..ef3fcbcac 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -2054,7 +2054,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx)
{
u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx));
- PlaySlotMachine(slotMachineIndex, c2_exit_to_overworld_1_continue_scripts_restart_music);
+ PlaySlotMachine(slotMachineIndex, CB2_ReturnToFieldContinueScript);
ScriptContext1_Stop();
return TRUE;
}
diff --git a/src/secret_base.c b/src/secret_base.c
index e3c06a75d..63787c43c 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -386,7 +386,7 @@ void sub_80E8FD0(u8 taskId)
sub_80E8F9C();
warp_in();
gFieldCallback = sub_80AF168;
- SetMainCallback2(c2_load_new_map);
+ SetMainCallback2(CB2_LoadMap);
DestroyTask(taskId);
break;
}
@@ -444,7 +444,7 @@ void sub_80E916C(u8 taskId)
Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gUnknown_0858CFE8[idx + 2], gUnknown_0858CFE8[idx + 3]);
warp_in();
gFieldCallback = sub_80E9108;
- SetMainCallback2(c2_load_new_map);
+ SetMainCallback2(CB2_LoadMap);
DestroyTask(taskId);
}
}
@@ -642,7 +642,7 @@ void sub_80E96A4(u8 taskId)
copy_saved_warp2_bank_and_enter_x_to_warp1(0x7e);
warp_in();
gFieldCallback = mapldr_default;
- SetMainCallback2(c2_load_new_map);
+ SetMainCallback2(CB2_LoadMap);
ScriptContext2_Disable();
DestroyTask(taskId);
break;
diff --git a/src/tv.c b/src/tv.c
index fbe39fde0..d3fb20f79 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -3633,7 +3633,7 @@ void ChangePokemonNickname(void)
void ChangePokemonNickname_CB(void)
{
SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2);
- c2_exit_to_overworld_1_continue_scripts_restart_music();
+ CB2_ReturnToFieldContinueScript();
}
void ChangeBoxPokemonNickname(void)
@@ -3649,7 +3649,7 @@ void ChangeBoxPokemonNickname(void)
void ChangeBoxPokemonNickname_CB(void)
{
SetBoxMonNickFromAnyBox(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2);
- c2_exit_to_overworld_1_continue_scripts_restart_music();
+ CB2_ReturnToFieldContinueScript();
}
void TV_CopyNicknameToStringVar1AndEnsureTerminated(void)
diff --git a/src/walda_phrase.c b/src/walda_phrase.c
index 59fd3fedb..04789bfb5 100644
--- a/src/walda_phrase.c
+++ b/src/walda_phrase.c
@@ -14,7 +14,7 @@ extern const u8 gText_Peekaboo[];
extern u8 *GetWaldaPhrasePtr(void);
extern bool32 IsWaldaPhraseEmpty(void);
extern void sub_80AF168(void);
-extern void c2_exit_to_overworld_2_switch(void);
+extern void CB2_ReturnToField(void);
extern void SetWaldaPhrase(const u8 *src);
extern void SetWaldaWallpaperPatternId(u8 patternId);
extern void SetWaldaWallpaperIconId(u8 iconId);
@@ -80,7 +80,7 @@ static void CB2_HandleGivenWaldaPhrase(void)
StringCopy(gStringVar1, GetWaldaPhrasePtr());
gFieldCallback = sub_80AF168;
- SetMainCallback2(c2_exit_to_overworld_2_switch);
+ SetMainCallback2(CB2_ReturnToField);
}
static u32 GetWaldaPhraseInputCase(u8 *inputPtr)
diff --git a/sym_common.txt b/sym_common.txt
index 0249fc4e9..d179df671 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -51,7 +51,7 @@ gUnknown_03005DB0: @ 3005DB0
gUnknown_03005DB4: @ 3005DB4
.space 0x4
-gUnknown_03005DB8: @ 3005DB8
+gFieldLinkPlayerCount: @ 3005DB8
.space 0x8
gUnknown_03005DC0: @ 3005DC0