summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-07-08 08:07:53 -0400
committerGitHub <noreply@github.com>2019-07-08 08:07:53 -0400
commit39d68ebd445be5657a916dec1b4872717e9c40d3 (patch)
tree4394601f49f220e3c32d9879a3c26284c9c92771
parent7980c4aa071685983f84861cc7dc69d6daf30a90 (diff)
parent122f1395823cfa3dfd96842c61411ad29700f8de (diff)
Merge pull request #77 from jiangzhengwenjz/misc
corrected sprite.h + finished safari_zone, list_menu, menu_indicators, field_poison, buy_menu_helpers, dynamic_placeholder_text_util
-rw-r--r--asm/battle_2.s4
-rw-r--r--asm/battle_interface.s4
-rw-r--r--asm/battle_records.s4
-rw-r--r--asm/battle_script_commands.s2
-rw-r--r--asm/battle_setup.s38
-rw-r--r--asm/battle_tower.s4
-rw-r--r--asm/berry_crush_3.s6
-rw-r--r--asm/berry_pouch.s10
-rw-r--r--asm/buy_menu_helpers.s220
-rw-r--r--asm/cable_club.s4
-rw-r--r--asm/diploma.s12
-rw-r--r--asm/dodrio_berry_picking.s14
-rw-r--r--asm/field_control_avatar.s18
-rw-r--r--asm/field_effect.s36
-rw-r--r--asm/field_fadetransition.s26
-rw-r--r--asm/field_poison.s316
-rw-r--r--asm/field_specials.s14
-rw-r--r--asm/item_menu.s42
-rw-r--r--asm/learn_move.s14
-rw-r--r--asm/link_rfu_3.s110
-rw-r--r--asm/list_menu.s2019
-rw-r--r--asm/menu_indicators.s1185
-rw-r--r--asm/new_game.s2
-rw-r--r--asm/overworld.s38
-rw-r--r--asm/party_menu.s12
-rw-r--r--asm/player_pc.s6
-rw-r--r--asm/pokedex_screen.s34
-rw-r--r--asm/pokemon_icon.s6
-rw-r--r--asm/pokemon_jump_2.s20
-rw-r--r--asm/pokemon_special_anim.s14
-rw-r--r--asm/pokemon_storage_system.s8
-rw-r--r--asm/pokemon_summary_screen.s40
-rw-r--r--asm/safari_zone.s167
-rw-r--r--asm/script_pokemon_util_80A0058.s8
-rw-r--r--asm/shop.s44
-rw-r--r--asm/start_menu.s10
-rw-r--r--asm/union_room_chat.s20
-rw-r--r--asm/unk_text_util.s130
-rw-r--r--common_syms/list_menu.txt2
-rw-r--r--data/buy_menu_helpers.s14
-rw-r--r--data/data_83FECCC.s3
-rw-r--r--data/graphics.s12
-rw-r--r--data/map_event_scripts.inc10
-rw-r--r--data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc8
-rw-r--r--data/menu_indicators.s46
-rw-r--r--data/specials.inc4
-rw-r--r--data/unk_text_util.s5
-rw-r--r--graphics/interface/dex_caught_pokeball.pal19
-rw-r--r--graphics/interface/dex_caught_pokeball_and_pokemon_types.pngbin0 -> 1803 bytes
-rw-r--r--graphics/interface/pokemon_types.pal19
-rw-r--r--graphics/interface/red_arrow.pal19
-rw-r--r--graphics/interface/red_arrow.pngbin0 -> 167 bytes
-rw-r--r--graphics/interface/red_arrow_other.pngbin0 -> 197 bytes
-rw-r--r--graphics/interface/selector_outline.pngbin0 -> 156 bytes
-rw-r--r--include/constants/flags.h3
-rw-r--r--include/dynamic_placeholder_text_util.h12
-rw-r--r--include/event_scripts.h5
-rw-r--r--include/field_poison.h10
-rw-r--r--include/field_screen_effect.h1
-rw-r--r--include/graphics.h19
-rw-r--r--include/list_menu.h52
-rw-r--r--include/menu.h7
-rw-r--r--include/menu_indicators.h24
-rw-r--r--include/overworld.h7
-rw-r--r--include/pokemon.h4
-rw-r--r--include/safari_zone.h4
-rw-r--r--include/shop.h11
-rw-r--r--include/sprite.h28
-rw-r--r--include/strings.h1
-rw-r--r--include/task.h1
-rw-r--r--include/unk_text_util.h11
-rw-r--r--ld_script.txt20
-rw-r--r--src/buy_menu_helpers.c216
-rw-r--r--src/daycare.c6
-rw-r--r--src/dynamic_placeholder_text_util.c70
-rw-r--r--src/fame_checker.c6
-rw-r--r--src/field_poison.c117
-rw-r--r--src/intro.c24
-rw-r--r--src/item_pc.c14
-rw-r--r--src/list_menu.c786
-rw-r--r--src/menu_indicators.c659
-rw-r--r--src/mevent_8145654.c2
-rw-r--r--src/pokemon.c4
-rw-r--r--src/quest_log.c206
-rw-r--r--src/safari_zone.c80
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/seagallop.c4
-rw-r--r--src/teachy_tv.c4
-rw-r--r--src/text.c4
-rw-r--r--src/tm_case.c24
-rw-r--r--src/trainer_tower.c2
-rw-r--r--src/wireless_communication_status_screen.c6
-rw-r--r--sym_common.txt9
-rw-r--r--sym_ewram.txt22
94 files changed, 2619 insertions, 4690 deletions
diff --git a/asm/battle_2.s b/asm/battle_2.s
index 0826ea927..ee7b80ad4 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -13497,7 +13497,7 @@ sub_8016AC0: @ 8016AC0
strh r1, [r0]
ldr r0, _08016B08 @ =gBattle_BG0_Y
strh r1, [r0]
- ldr r1, _08016B0C @ =gUnknown_2039994
+ ldr r1, _08016B0C @ =gNumSafariBalls
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
@@ -13518,7 +13518,7 @@ _08016AFC: .4byte gUnknown_2023BDE
_08016B00: .4byte gUnknown_2023BE2
_08016B04: .4byte gBattle_BG0_X
_08016B08: .4byte gBattle_BG0_Y
-_08016B0C: .4byte gUnknown_2039994
+_08016B0C: .4byte gNumSafariBalls
_08016B10: .4byte gUnknown_2023D68
_08016B14: .4byte gUnknown_2023D74
_08016B18: .4byte gUnknown_81D99B0
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
index fa06f684b..acf228669 100644
--- a/asm/battle_interface.s
+++ b/asm/battle_interface.s
@@ -4307,7 +4307,7 @@ UpdateLeftNoOfBallsTextOnHealthbox: @ 8049D10
ldr r1, _08049D84 @ =gUnknown_83FE81C
mov r0, sp
bl StringCopy
- ldr r1, _08049D88 @ =gUnknown_2039994
+ ldr r1, _08049D88 @ =gNumSafariBalls
ldrb r1, [r1]
movs r2, 0
movs r3, 0x2
@@ -4351,7 +4351,7 @@ UpdateLeftNoOfBallsTextOnHealthbox: @ 8049D10
bx r0
.align 2, 0
_08049D84: .4byte gUnknown_83FE81C
-_08049D88: .4byte gUnknown_2039994
+_08049D88: .4byte gNumSafariBalls
_08049D8C: .4byte gSprites
_08049D90: .4byte 0x060102c0
_08049D94: .4byte 0x06010a00
diff --git a/asm/battle_records.s b/asm/battle_records.s
index e48a0025e..d0a99b4cf 100644
--- a/asm/battle_records.s
+++ b/asm/battle_records.s
@@ -287,7 +287,7 @@ sub_80CD460: @ 80CD460
ands r0, r1
cmp r0, 0
bne _080CD490
- ldr r0, _080CD49C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080CD49C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
ldr r0, _080CD4A0 @ =gUnknown_2039A1C
ldr r0, [r0]
@@ -303,7 +303,7 @@ _080CD490:
bx r0
.align 2, 0
_080CD498: .4byte gPaletteFade
-_080CD49C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080CD49C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_080CD4A0: .4byte gUnknown_2039A1C
thumb_func_end sub_80CD460
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
index 60b06f8a6..b240c3da2 100644
--- a/asm/battle_script_commands.s
+++ b/asm/battle_script_commands.s
@@ -17903,7 +17903,7 @@ PutMonIconOnLvlUpBox: @ 8026688
orrs r0, r1
str r0, [sp, 0x4]
adds r0, r4, 0
- bl sub_80971CC
+ bl GetValidMonIconPalettePtr
str r0, [sp, 0x8]
add r4, sp, 0x8
ldr r0, [r4, 0x4]
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
index a13c1a418..db8b366b4 100644
--- a/asm/battle_setup.s
+++ b/asm/battle_setup.s
@@ -46,7 +46,7 @@ _0807F65E:
ldr r0, _0807F68C @ =sub_800FD9C
bl SetMainCallback2
bl sub_806D7E8
- bl overworld_poison_timer_set
+ bl ClearPoisonStepCounter
adds r0, r5, 0
bl DestroyTask
_0807F686:
@@ -221,7 +221,7 @@ sub_807F7D8: @ 807F7D8
bl player_bitmagic
bl sub_805C780
ldr r1, _0807F804 @ =gMain
- ldr r0, _0807F808 @ =sub_80A0F4C
+ ldr r0, _0807F808 @ =CB2_EndSafariBattle
str r0, [r1, 0x8]
ldr r1, _0807F80C @ =gBattleTypeFlags
movs r0, 0x80
@@ -235,7 +235,7 @@ sub_807F7D8: @ 807F7D8
bx r0
.align 2, 0
_0807F804: .4byte gMain
-_0807F808: .4byte sub_80A0F4C
+_0807F808: .4byte CB2_EndSafariBattle
_0807F80C: .4byte gBattleTypeFlags
thumb_func_end sub_807F7D8
@@ -300,7 +300,7 @@ sub_807F888: @ 807F888
bl CreateMaleMon
bl ScriptContext2_Enable
ldr r1, _0807F8B8 @ =gMain
- ldr r0, _0807F8BC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0807F8BC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
str r0, [r1, 0x8]
ldr r1, _0807F8C0 @ =gBattleTypeFlags
movs r0, 0x80
@@ -314,7 +314,7 @@ sub_807F888: @ 807F888
.align 2, 0
_0807F8B4: .4byte gEnemyParty
_0807F8B8: .4byte gMain
-_0807F8BC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0807F8BC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_0807F8C0: .4byte gBattleTypeFlags
thumb_func_end sub_807F888
@@ -679,14 +679,14 @@ _0807FBD4: .4byte 0x01000100
_0807FBD8: .4byte gBattleOutcome
_0807FBDC: .4byte c2_whiteout
_0807FBE0:
- ldr r0, _0807FBEC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0807FBEC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
_0807FBE6:
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
-_0807FBEC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0807FBEC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_807FBA0
thumb_func_start sub_807FBF0
@@ -731,7 +731,7 @@ _0807FC40:
movs r0, 0x1
strh r0, [r1]
_0807FC46:
- ldr r0, _0807FC58 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0807FC58 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
_0807FC4C:
add sp, 0x4
@@ -740,7 +740,7 @@ _0807FC4C:
bx r0
.align 2, 0
_0807FC54: .4byte gSpecialVar_Result
-_0807FC58: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0807FC58: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_807FBF0
thumb_func_start sub_807FC5C
@@ -1878,14 +1878,14 @@ _080804E8:
movs r1, 0
strh r1, [r0]
_080804EE:
- ldr r0, _08080504 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _08080504 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
bl sub_80803FC
bl sub_81139BC
b _0808054E
.align 2, 0
_08080500: .4byte gSpecialVar_Result
-_08080504: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08080504: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08080508:
ldr r0, _0808051C @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
@@ -1893,12 +1893,12 @@ _08080508:
lsls r0, 3
cmp r1, r0
bne _08080524
- ldr r0, _08080520 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _08080520 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
b _0808054E
.align 2, 0
_0808051C: .4byte gTrainerBattleOpponent_A
-_08080520: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08080520: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08080524:
ldr r0, _08080538 @ =gBattleOutcome
ldrb r0, [r0]
@@ -1913,7 +1913,7 @@ _08080530:
_08080538: .4byte gBattleOutcome
_0808053C: .4byte c2_whiteout
_08080540:
- ldr r0, _08080554 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _08080554 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
bl sub_80803FC
bl sub_81139BC
@@ -1921,7 +1921,7 @@ _0808054E:
pop {r0}
bx r0
.align 2, 0
-_08080554: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08080554: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80804AC
thumb_func_start sub_8080558
@@ -1933,12 +1933,12 @@ sub_8080558: @ 8080558
lsls r0, 3
cmp r1, r0
bne _08080578
- ldr r0, _08080574 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _08080574 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
b _080805A6
.align 2, 0
_08080570: .4byte gTrainerBattleOpponent_A
-_08080574: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08080574: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08080578:
ldr r0, _0808058C @ =gBattleOutcome
ldrb r0, [r0]
@@ -1952,7 +1952,7 @@ _08080578:
_0808058C: .4byte gBattleOutcome
_08080590: .4byte c2_whiteout
_08080594:
- ldr r0, _080805AC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080805AC @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
bl sub_80803FC
bl sub_810CDE8
@@ -1961,7 +1961,7 @@ _080805A6:
pop {r0}
bx r0
.align 2, 0
-_080805AC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080805AC: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_8080558
thumb_func_start sub_80805B0
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 503a6343e..01ac780a2 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -2010,14 +2010,14 @@ _080E68A8: .4byte gPlayerParty
_080E68AC:
bl sub_80E7550
_080E68B0:
- ldr r0, _080E68C0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080E68C0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080E68C0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080E68C0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80E6854
thumb_func_start sub_80E68C4
diff --git a/asm/berry_crush_3.s b/asm/berry_crush_3.s
index 716967e65..581b84793 100644
--- a/asm/berry_crush_3.s
+++ b/asm/berry_crush_3.s
@@ -1265,7 +1265,7 @@ _0814DFE0:
adds r4, r2, r4
str r4, [sp, 0x2C]
_0814DFF0:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r0, [sp, 0x10]
cmp r0, 0x1
beq _0814E0E4
@@ -1610,10 +1610,10 @@ _0814E2B8:
ldr r0, [sp, 0xC]
adds r1, r0, r1
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, _0814E324 @ =gStringVar4
adds r1, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r1, [sp, 0x2C]
ldrb r0, [r1]
mov r2, r9
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 6aaa9ba76..8eb127d52 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -1409,7 +1409,7 @@ sub_813D844: @ 813D844
ldr r4, _0813D884 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldr r0, _0813D888 @ =gUnknown_203F36C
ldr r0, [r0]
ldr r0, [r0]
@@ -1688,7 +1688,7 @@ _0813DA90:
b _0813DB9E
_0813DA9E:
ldrb r0, [r7]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r5, r0, 0
ldrb r0, [r7]
ldr r4, _0813DAE0 @ =gUnknown_203F37A
@@ -2504,7 +2504,7 @@ _0813E18A:
ldr r4, _0813E1F8 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_813D8AC
bl sub_813D6F4
bl sub_813D204
@@ -2646,7 +2646,7 @@ sub_813E2B8: @ 813E2B8
ldr r4, _0813E318 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_813D8AC
bl sub_813D6F4
bl sub_813D204
@@ -3277,7 +3277,7 @@ sub_813E7F0: @ 813E7F0
ldr r4, _0813E8C8 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_813D8AC
bl sub_813D6F4
bl sub_813D204
diff --git a/asm/buy_menu_helpers.s b/asm/buy_menu_helpers.s
deleted file mode 100644
index 1eba8e42e..000000000
--- a/asm/buy_menu_helpers.s
+++ /dev/null
@@ -1,220 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_813F66C
-sub_813F66C: @ 813F66C
- push {r4,lr}
- adds r4, r0, 0
- cmp r4, 0x1
- beq _0813F680
- ldr r0, _0813F67C @ =gUnknown_8464804
- bl InitWindows
- b _0813F686
- .align 2, 0
-_0813F67C: .4byte gUnknown_8464804
-_0813F680:
- ldr r0, _0813F6CC @ =gUnknown_846483C
- bl InitWindows
-_0813F686:
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD0
- bl TextWindow_SetUserSelectedFrame
- movs r0, 0
- movs r1, 0x13
- movs r2, 0xE0
- bl TextWindow_LoadResourcesStdFrame0
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xF0
- bl TextWindow_SetStdFrame0_WithPal
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0813F6C4
- movs r0, 0x6
- bl PutWindowTilemap
-_0813F6C4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813F6CC: .4byte gUnknown_846483C
- thumb_func_end sub_813F66C
-
- thumb_func_start sub_813F6D0
-sub_813F6D0: @ 813F6D0
- push {lr}
- ldr r0, _0813F6F0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 2
- adds r0, r1
- bl GetMoney
- adds r3, r0, 0
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xF
- bl PrintMoneyAmountInMoneyBoxWithBorder
- pop {r0}
- bx r0
- .align 2, 0
-_0813F6F0: .4byte gSaveBlock1Ptr
- thumb_func_end sub_813F6D0
-
- thumb_func_start sub_813F6F4
-sub_813F6F4: @ 813F6F4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r3
- ldr r3, [sp, 0x30]
- ldr r4, [sp, 0x34]
- ldr r6, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- mov r8, r5
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- lsls r7, 24
- lsrs r7, 24
- mov r9, r7
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r6, [sp, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- ldr r5, _0813F758 @ =gUnknown_8464884
- adds r4, r5
- str r4, [sp, 0x8]
- mov r4, r8
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- str r2, [sp, 0x10]
- mov r2, r9
- bl AddTextPrinterParameterized4
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813F758: .4byte gUnknown_8464884
- thumb_func_end sub_813F6F4
-
- thumb_func_start sub_813F75C
-sub_813F75C: @ 813F75C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r5, 24
- lsrs r5, 24
- bl sub_809B56C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl GetTextSpeedSetting
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp]
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0x2
- movs r2, 0x13
- movs r3, 0xE
- bl DisplayMessageAndContinueTask
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_813F75C
-
- thumb_func_start sub_813F7A8
-sub_813F7A8: @ 813F7A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x1
- movs r3, 0xD
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end sub_813F7A8
-
- thumb_func_start sub_813F7C0
-sub_813F7C0: @ 813F7C0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0xA
- movs r3, 0xF
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end sub_813F7C0
-
- thumb_func_start sub_813F7D8
-sub_813F7D8: @ 813F7D8
- push {lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0813F800 @ =gUnknown_846487C
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0xD
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- movs r2, 0x2
- movs r3, 0
- bl CreateYesNoMenuWithCallbacks
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0813F800: .4byte gUnknown_846487C
- thumb_func_end sub_813F7D8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cable_club.s b/asm/cable_club.s
index ff11c4cef..85f6243b4 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -2387,13 +2387,13 @@ sp02A_crash_sound: @ 8081A1C
push {lr}
ldr r0, _08081A2C @ =gSpecialVar_0x8006
ldrb r0, [r0]
- ldr r1, _08081A30 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r1, _08081A30 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl sub_808B700
pop {r0}
bx r0
.align 2, 0
_08081A2C: .4byte gSpecialVar_0x8006
-_08081A30: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_08081A30: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sp02A_crash_sound
thumb_func_start sub_8081A34
diff --git a/asm/diploma.s b/asm/diploma.s
index f3fc0871a..9e3d1b3ee 100644
--- a/asm/diploma.s
+++ b/asm/diploma.s
@@ -513,18 +513,18 @@ _080F5014: .4byte gUnknown_203AB48
sub_80F5018: @ 80F5018
push {r4-r6,lr}
sub sp, 0xAC
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r0, _080F5040 @ =gSaveBlock2Ptr
ldr r1, [r0]
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
bl sub_8088F84
lsls r0, 16
cmp r0, 0
beq _080F5048
ldr r1, _080F5044 @ =gUnknown_841B68F
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
b _080F5050
.align 2, 0
_080F5040: .4byte gSaveBlock2Ptr
@@ -532,14 +532,14 @@ _080F5044: .4byte gUnknown_841B68F
_080F5048:
ldr r1, _080F50E0 @ =gUnknown_841B698
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
_080F5050:
movs r0, 0
movs r1, 0
bl FillWindowPixelBuffer
ldr r1, _080F50E4 @ =gUnknown_841B60E
add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r5, 0x1
negs r5, r5
movs r0, 0x2
@@ -562,7 +562,7 @@ _080F5050:
bl AddTextPrinterParameterized3
ldr r1, _080F50EC @ =gUnknown_841B619
add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x2
add r1, sp, 0xC
adds r2, r5, 0
diff --git a/asm/dodrio_berry_picking.s b/asm/dodrio_berry_picking.s
index 35fefbe29..13a4d95b5 100644
--- a/asm/dodrio_berry_picking.s
+++ b/asm/dodrio_berry_picking.s
@@ -9983,7 +9983,7 @@ _08155480:
movs r1, 0
adds r2, r5, 0
bl AddTextPrinterParameterized
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_8153390
lsls r0, 16
lsrs r0, 16
@@ -9992,10 +9992,10 @@ _08155480:
bl CopyItemName
movs r0, 0
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r1, _0815556C @ =gUnknown_841CD7A
add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r0, [r4]
add r0, r10
ldrb r0, [r0]
@@ -10016,7 +10016,7 @@ _08155480:
beq _0815559E
cmp r4, 0x3
beq _0815559E
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_8153390
lsls r0, 16
lsrs r0, 16
@@ -10024,12 +10024,12 @@ _08155480:
bl CopyItemName
movs r0, 0
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
cmp r4, 0x2
bne _08155574
ldr r1, _08155570 @ =gUnknown_841CD9F
add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _08155580
.align 2, 0
_08155558: .4byte 0x00000101
@@ -10044,7 +10044,7 @@ _08155574:
bne _08155580
ldr r1, _081555C4 @ =gUnknown_841CDBA
add r0, sp, 0xC
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
_08155580:
ldr r0, _081555C8 @ =gUnknown_203F440
ldr r0, [r0]
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index c6476053a..2eee6da2f 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -1817,7 +1817,7 @@ _0806D6E0: .4byte gUnknown_203ADFA
_0806D6E4: .4byte gPlayerAvatar
_0806D6E8: .4byte gUnknown_81A8CED
_0806D6EC:
- bl overworld_poison_step
+ bl DoPoisonFieldEffect_step
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1840,7 +1840,7 @@ _0806D704:
.align 2, 0
_0806D71C: .4byte gUnknown_81BF546
_0806D720:
- bl sub_80A0F0C
+ bl SafariZoneTakeStep
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1901,8 +1901,8 @@ _0806D780: .4byte 0x00004021
_0806D784: .4byte gPlayerParty
thumb_func_end AdjustFriendship_step
- thumb_func_start overworld_poison_timer_set
-overworld_poison_timer_set: @ 806D788
+ thumb_func_start ClearPoisonStepCounter
+ClearPoisonStepCounter: @ 806D788
push {lr}
ldr r0, _0806D798 @ =0x00004022
movs r1, 0
@@ -1911,10 +1911,10 @@ overworld_poison_timer_set: @ 806D788
bx r0
.align 2, 0
_0806D798: .4byte 0x00004022
- thumb_func_end overworld_poison_timer_set
+ thumb_func_end ClearPoisonStepCounter
- thumb_func_start overworld_poison_step
-overworld_poison_step: @ 806D79C
+ thumb_func_start DoPoisonFieldEffect_step
+DoPoisonFieldEffect_step: @ 806D79C
push {r4,lr}
ldr r0, _0806D7D8 @ =gMapHeader
ldrb r0, [r0, 0x17]
@@ -1933,7 +1933,7 @@ overworld_poison_step: @ 806D79C
lsls r0, 16
cmp r0, 0
bne _0806D7E0
- bl overworld_poison
+ bl DoPoisonFieldEffect
cmp r0, 0x1
beq _0806D7E0
cmp r0, 0x1
@@ -1951,7 +1951,7 @@ _0806D7E2:
pop {r4}
pop {r1}
bx r1
- thumb_func_end overworld_poison_step
+ thumb_func_end DoPoisonFieldEffect_step
thumb_func_start sub_806D7E8
sub_806D7E8: @ 806D7E8
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 3655d2830..7bd1abe80 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -2039,8 +2039,8 @@ _08084350:
cmp r0, 0
bne _08084376
bl sub_8054CA0
- bl warp_in
- ldr r0, _08084384 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _08084384 @ =CB2_LoadMap
bl SetMainCallback2
ldr r1, _08084388 @ =gFieldCallback
ldr r0, _0808438C @ =mapldr_08084390
@@ -2054,7 +2054,7 @@ _08084376:
.align 2, 0
_0808437C: .4byte gTasks
_08084380: .4byte gFieldEffectArguments
-_08084384: .4byte sub_805671C
+_08084384: .4byte CB2_LoadMap
_08084388: .4byte gFieldCallback
_0808438C: .4byte mapldr_08084390
thumb_func_end task00_8084310
@@ -2860,11 +2860,11 @@ sub_80849A0: @ 80849A0
cmp r0, 0x1
bne _080849DC
bl sub_809C460
- bl warp_in
+ bl WarpIntoMap
ldr r1, _080849E4 @ =gFieldCallback
ldr r0, _080849E8 @ =sub_80849F4
str r0, [r1]
- ldr r0, _080849EC @ =sub_805671C
+ ldr r0, _080849EC @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _080849F0 @ =sub_80847C0
bl FindTaskIdByFunc
@@ -2878,7 +2878,7 @@ _080849DC:
_080849E0: .4byte gPaletteFade
_080849E4: .4byte gFieldCallback
_080849E8: .4byte sub_80849F4
-_080849EC: .4byte sub_805671C
+_080849EC: .4byte CB2_LoadMap
_080849F0: .4byte sub_80847C0
thumb_func_end sub_80849A0
@@ -3883,11 +3883,11 @@ sub_8085168: @ 8085168
lsrs r0, 24
cmp r0, 0x1
bne _080851A0
- bl warp_in
+ bl WarpIntoMap
ldr r1, _080851AC @ =gFieldCallback
ldr r0, _080851B0 @ =mapldr_080851BC
str r0, [r1]
- ldr r0, _080851B4 @ =sub_805671C
+ ldr r0, _080851B4 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _080851B8 @ =sub_8084F44
bl FindTaskIdByFunc
@@ -3902,7 +3902,7 @@ _080851A0:
_080851A8: .4byte gPaletteFade
_080851AC: .4byte gFieldCallback
_080851B0: .4byte mapldr_080851BC
-_080851B4: .4byte sub_805671C
+_080851B4: .4byte CB2_LoadMap
_080851B8: .4byte sub_8084F44
thumb_func_end sub_8085168
@@ -4388,11 +4388,11 @@ sub_808554C: @ 808554C
lsrs r0, 24
cmp r0, 0x1
bne _08085584
- bl warp_in
+ bl WarpIntoMap
ldr r1, _08085590 @ =gFieldCallback
ldr r0, _08085594 @ =sub_8084454
str r0, [r1]
- ldr r0, _08085598 @ =sub_805671C
+ ldr r0, _08085598 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _0808559C @ =sub_80853E4
bl FindTaskIdByFunc
@@ -4407,7 +4407,7 @@ _08085584:
_0808558C: .4byte gPaletteFade
_08085590: .4byte gFieldCallback
_08085594: .4byte sub_8084454
-_08085598: .4byte sub_805671C
+_08085598: .4byte CB2_LoadMap
_0808559C: .4byte sub_80853E4
thumb_func_end sub_808554C
@@ -4612,11 +4612,11 @@ _08085702:
adds r0, r6, 0
bl FieldObjectSetDirection
bl sub_80555E0
- bl warp_in
+ bl WarpIntoMap
ldr r1, _0808575C @ =gFieldCallback
ldr r0, _08085760 @ =sub_80859D4
str r0, [r1]
- ldr r0, _08085764 @ =sub_805671C
+ ldr r0, _08085764 @ =CB2_LoadMap
bl SetMainCallback2
ldr r0, _08085768 @ =sub_808563C
bl FindTaskIdByFunc
@@ -4631,7 +4631,7 @@ _08085750:
_08085758: .4byte gPaletteFade
_0808575C: .4byte gFieldCallback
_08085760: .4byte sub_80859D4
-_08085764: .4byte sub_805671C
+_08085764: .4byte CB2_LoadMap
_08085768: .4byte sub_808563C
thumb_func_end sub_8085690
@@ -5406,8 +5406,8 @@ sub_8085D34: @ 8085D34
cmp r0, 0x1
bne _08085D70
bl copy_saved_warp3_bank_and_enter_x_to_warp1
- bl warp_in
- ldr r0, _08085D78 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _08085D78 @ =CB2_LoadMap
bl SetMainCallback2
ldr r1, _08085D7C @ =gFieldCallback
ldr r0, _08085D80 @ =mapldr_08085D88
@@ -5422,7 +5422,7 @@ _08085D70:
bx r0
.align 2, 0
_08085D74: .4byte gPaletteFade
-_08085D78: .4byte sub_805671C
+_08085D78: .4byte CB2_LoadMap
_08085D7C: .4byte gFieldCallback
_08085D80: .4byte mapldr_08085D88
_08085D84: .4byte sub_8085B78
diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s
index 6939ccac0..b2eb846e7 100644
--- a/asm/field_fadetransition.s
+++ b/asm/field_fadetransition.s
@@ -1411,7 +1411,7 @@ _0807E632:
strh r0, [r4, 0x8]
b _0807E64A
_0807E63A:
- bl warp_in
+ bl WarpIntoMap
ldr r0, _0807E650 @ =sub_8056788
bl SetMainCallback2
adds r0, r5, 0
@@ -1494,8 +1494,8 @@ _0807E6DC:
ldrb r0, [r0]
cmp r0, 0
bne _0807E6F4
- bl warp_in
- ldr r0, _0807E700 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0807E700 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
@@ -1505,7 +1505,7 @@ _0807E6F4:
bx r0
.align 2, 0
_0807E6FC: .4byte gReceivedRemoteLinkPlayers
-_0807E700: .4byte sub_805671C
+_0807E700: .4byte CB2_LoadMap
thumb_func_end sub_807E678
thumb_func_start sub_807E704
@@ -1563,8 +1563,8 @@ _0807E762:
strh r0, [r4, 0x8]
b _0807E77A
_0807E76A:
- bl warp_in
- ldr r0, _0807E780 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0807E780 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
@@ -1573,7 +1573,7 @@ _0807E77A:
pop {r0}
bx r0
.align 2, 0
-_0807E780: .4byte sub_805671C
+_0807E780: .4byte CB2_LoadMap
thumb_func_end sub_807E718
thumb_func_start sub_807E784
@@ -1630,8 +1630,8 @@ _0807E7EA:
strh r0, [r4, 0x8]
b _0807E802
_0807E7F2:
- bl warp_in
- ldr r0, _0807E808 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0807E808 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
@@ -1640,7 +1640,7 @@ _0807E802:
pop {r0}
bx r0
.align 2, 0
-_0807E808: .4byte sub_805671C
+_0807E808: .4byte CB2_LoadMap
thumb_func_end sub_807E784
thumb_func_start sub_807E80C
@@ -1957,8 +1957,8 @@ _0807EA9A:
ldr r0, _0807EAB8 @ =gFieldCallback
ldr r1, _0807EABC @ =sub_807DF64
str r1, [r0]
- bl warp_in
- ldr r0, _0807EAC0 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0807EAC0 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
@@ -1970,7 +1970,7 @@ _0807EAB0:
.align 2, 0
_0807EAB8: .4byte gFieldCallback
_0807EABC: .4byte sub_807DF64
-_0807EAC0: .4byte sub_805671C
+_0807EAC0: .4byte CB2_LoadMap
thumb_func_end sub_807E980
thumb_func_start sub_807EAC4
diff --git a/asm/field_poison.s b/asm/field_poison.s
deleted file mode 100644
index 811f375c6..000000000
--- a/asm/field_poison.s
+++ /dev/null
@@ -1,316 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start CheckMonIsValid
-CheckMonIsValid: @ 80A0460
- push {lr}
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080A0478
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _080A047C
-_080A0478:
- movs r0, 0
- b _080A047E
-_080A047C:
- movs r0, 0x1
-_080A047E:
- pop {r1}
- bx r1
- thumb_func_end CheckMonIsValid
-
- thumb_func_start AllMonsFainted
-AllMonsFainted: @ 80A0484
- push {r4,r5,lr}
- ldr r4, _080A04A4 @ =gPlayerParty
- movs r5, 0
-_080A048A:
- adds r0, r4, 0
- bl CheckMonIsValid
- cmp r0, 0
- beq _080A04A8
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080A04A8
- movs r0, 0
- b _080A04B2
- .align 2, 0
-_080A04A4: .4byte gPlayerParty
-_080A04A8:
- adds r5, 0x1
- adds r4, 0x64
- cmp r5, 0x5
- ble _080A048A
- movs r0, 0x1
-_080A04B2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end AllMonsFainted
-
- thumb_func_start MonFaintFromPoisonOnField
-MonFaintFromPoisonOnField: @ 80A04B8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- adds r4, r0, 0
- muls r4, r1
- ldr r0, _080A04FC @ =gPlayerParty
- adds r4, r0
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x8
- bl AdjustFriendship
- adds r0, r4, 0
- movs r1, 0x37
- mov r2, sp
- bl SetMonData
- ldr r5, _080A0500 @ =gStringVar1
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl GetMonData
- adds r0, r5, 0
- bl StringGetEnd10
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A04FC: .4byte gPlayerParty
-_080A0500: .4byte gStringVar1
- thumb_func_end MonFaintFromPoisonOnField
-
- thumb_func_start CheckMonFaintedFromPoison
-CheckMonFaintedFromPoison: @ 80A0504
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, _080A0540 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- bl CheckMonIsValid
- cmp r0, 0
- beq _080A0544
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A0544
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A0544
- movs r0, 0x1
- b _080A0546
- .align 2, 0
-_080A0540: .4byte gPlayerParty
-_080A0544:
- movs r0, 0
-_080A0546:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end CheckMonFaintedFromPoison
-
- thumb_func_start Task_WhiteOut
-Task_WhiteOut: @ 80A054C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A0570 @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080A05A6
- cmp r0, 0x1
- bgt _080A0574
- cmp r0, 0
- beq _080A057A
- b _080A05F6
- .align 2, 0
-_080A0570: .4byte gTasks+0x8
-_080A0574:
- cmp r0, 0x2
- beq _080A05B8
- b _080A05F6
-_080A057A:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- bgt _080A05A0
-_080A0584:
- lsls r0, r1, 24
- lsrs r0, 24
- bl CheckMonFaintedFromPoison
- cmp r0, 0
- bne _080A05D0
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- adds r1, r0, 0
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080A0584
-_080A05A0:
- movs r0, 0x2
- strh r0, [r4]
- b _080A05F6
-_080A05A6:
- bl IsFieldMessageBoxHidden
- lsls r0, 24
- cmp r0, 0
- beq _080A05F6
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- b _080A05F6
-_080A05B8:
- bl AllMonsFainted
- adds r1, r0, 0
- cmp r1, 0
- beq _080A05E8
- ldr r1, _080A05CC @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
- b _080A05EC
- .align 2, 0
-_080A05CC: .4byte gSpecialVar_Result
-_080A05D0:
- ldrb r0, [r4, 0x2]
- bl MonFaintFromPoisonOnField
- ldr r0, _080A05E4 @ =gUnknown_81A5476
- bl ShowFieldMessage
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080A05F6
- .align 2, 0
-_080A05E4: .4byte gUnknown_81A5476
-_080A05E8:
- ldr r0, _080A05FC @ =gSpecialVar_Result
- strh r1, [r0]
-_080A05EC:
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
-_080A05F6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A05FC: .4byte gSpecialVar_Result
- thumb_func_end Task_WhiteOut
-
- thumb_func_start ExecuteWhiteOut
-ExecuteWhiteOut: @ 80A0600
- push {lr}
- ldr r0, _080A0614 @ =Task_WhiteOut
- movs r1, 0x50
- bl CreateTask
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- .align 2, 0
-_080A0614: .4byte Task_WhiteOut
- thumb_func_end ExecuteWhiteOut
-
- thumb_func_start overworld_poison
-overworld_poison: @ 80A0618
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r4, _080A0684 @ =gPlayerParty
- movs r7, 0
- movs r6, 0
- movs r5, 0x5
-_080A0624:
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _080A0668
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A0668
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- str r0, [sp]
- cmp r0, 0
- beq _080A065A
- subs r0, 0x1
- str r0, [sp]
- cmp r0, 0
- bne _080A065C
-_080A065A:
- adds r6, 0x1
-_080A065C:
- adds r0, r4, 0
- movs r1, 0x39
- mov r2, sp
- bl SetMonData
- adds r7, 0x1
-_080A0668:
- adds r4, 0x64
- subs r5, 0x1
- cmp r5, 0
- bge _080A0624
- cmp r6, 0
- bne _080A0678
- cmp r7, 0
- beq _080A067C
-_080A0678:
- bl FldEffPoison_Start
-_080A067C:
- cmp r6, 0
- beq _080A0688
- movs r0, 0x2
- b _080A0692
- .align 2, 0
-_080A0684: .4byte gPlayerParty
-_080A0688:
- cmp r7, 0
- bne _080A0690
- movs r0, 0
- b _080A0692
-_080A0690:
- movs r0, 0x1
-_080A0692:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end overworld_poison
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_specials.s b/asm/field_specials.s
index fe4ac2b2d..c1555f2bb 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -268,13 +268,13 @@ _080CA7E6:
sub_80CA7EC: @ 80CA7EC
push {lr}
bl sub_8112364
- ldr r1, _080CA800 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r1, _080CA800 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
movs r0, 0x1
bl sub_80BFF50
pop {r0}
bx r0
.align 2, 0
-_080CA800: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080CA800: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80CA7EC
thumb_func_start sub_80CA804
@@ -2781,7 +2781,7 @@ sub_80CBB28: @ 80CBB28
ldrh r0, [r6, 0x24]
lsls r0, 24
lsrs r0, 24
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r4, r0, 0
movs r0, 0x2
negs r0, r0
@@ -2854,7 +2854,7 @@ sub_80CBBAC: @ 80CBBAC
lsrs r0, 24
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldr r0, _080CBC28 @ =gUnknown_2039A14
ldr r0, [r0]
bl Free
@@ -3183,7 +3183,7 @@ _080CBE20:
lsls r0, 24
lsrs r0, 24
_080CBE40:
- bl sub_813CD24
+ bl GetColorFromTextColorTable
_080CBE44:
lsls r0, 24
lsrs r0, 24
@@ -3469,7 +3469,7 @@ ChangeBoxPokemonNickname_CB: @ 80CC064
ldrb r1, [r1]
ldr r2, _080CC084 @ =gStringVar2
bl SetBoxMonNickFromAnyBox
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
+ bl CB2_ReturnToFieldContinueScriptPlayMapMusic
pop {r0}
bx r0
.align 2, 0
@@ -3577,7 +3577,7 @@ ChangePokemonNickname_CB: @ 80CC144
ldr r2, _080CC16C @ =gStringVar2
movs r1, 0x2
bl SetMonData
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
+ bl CB2_ReturnToFieldContinueScriptPlayMapMusic
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 001198d95..8d01691a5 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -1802,7 +1802,7 @@ sub_8108B8C: @ 8108B8C
adds r3, r4, 0
adds r3, 0x8
adds r2, r3
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldr r0, _08108BF0 @ =gUnknown_203AD10
ldr r0, [r0]
ldr r0, [r0]
@@ -2341,7 +2341,7 @@ _08108FA0:
_08108FE0: .4byte gUnknown_203AD10
_08108FE4:
ldrb r0, [r7]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r4, r0, 0
ldrb r0, [r7]
ldr r5, _08109014 @ =gUnknown_203ACFC
@@ -2617,7 +2617,7 @@ sub_81091D0: @ 81091D0
adds r1, r2, r1
adds r3, 0x8
adds r2, r3
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r0, _08109290 @ =gUnknown_203AD10
@@ -2835,7 +2835,7 @@ sub_81093B8: @ 81093B8
ldrb r0, [r2]
movs r1, 0x10
movs r2, 0x1
- bl sub_8107BD0
+ bl ListMenuSetUnkIndicatorsStructField
mov r0, r8
strh r4, [r0, 0x2]
ldr r0, _08109498 @ =gUnknown_203AD10
@@ -2931,7 +2931,7 @@ sub_81094B0: @ 81094B0
cmp r0, 0x1
beq _0810959E
ldrb r0, [r4]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r5, r0, 0
ldrb r0, [r4]
ldr r3, _0810953C @ =gUnknown_203ACFC
@@ -3082,7 +3082,7 @@ _081095E8:
adds r7, r4, 0
adds r7, 0x8
adds r2, r7
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r3, 0x2
ldrsh r0, [r6, r3]
cmp r0, r5
@@ -3160,7 +3160,7 @@ sub_810967C: @ 810967C
adds r7, r5, 0
adds r7, 0x8
adds r2, r7
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r3, 0x2
ldrsh r0, [r6, r3]
cmp r0, r4
@@ -4213,7 +4213,7 @@ _08109F6E:
adds r6, r4, 0
adds r6, 0x8
adds r2, r6
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_8108DC8
ldrb r0, [r4, 0x6]
@@ -4304,7 +4304,7 @@ _0810A052:
adds r6, r4, 0
adds r6, 0x8
adds r2, r6
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_810842C
ldr r0, _0810A0A4 @ =gMultiuseListMenuTemplate
@@ -4519,7 +4519,7 @@ sub_810A1F8: @ 810A1F8
adds r3, r4
mov r9, r3
add r2, r9
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_8108DC8
ldrb r0, [r4, 0x6]
@@ -5497,7 +5497,7 @@ sub_810A9D4: @ 810A9D4
adds r3, r4
mov r9, r3
add r2, r9
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_8108DC8
ldrb r0, [r4, 0x6]
@@ -6212,7 +6212,7 @@ _0810B01C:
ldrb r0, [r5]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
bl sub_8108CB4
adds r0, r7, 0
@@ -6537,7 +6537,7 @@ _0810B29E:
adds r6, r4, 0
adds r6, 0x8
adds r2, r6
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x6]
bl sub_810842C
ldr r0, _0810B328 @ =gMultiuseListMenuTemplate
@@ -6573,7 +6573,7 @@ _0810B32C:
movs r0, 0x80
strh r0, [r1, 0x30]
ldrb r0, [r7]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
b _0810B36C
.align 2, 0
_0810B340: .4byte gMain
@@ -6583,7 +6583,7 @@ _0810B344:
ldrb r0, [r7]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
bl sub_8108CB4
adds r0, r6, 0
@@ -6701,7 +6701,7 @@ _0810B428:
_0810B430:
strh r0, [r1, 0x30]
ldrb r0, [r4]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
b _0810B4B0
.align 2, 0
_0810B43C: .4byte gMain
@@ -6738,7 +6738,7 @@ _0810B468:
ldrb r0, [r4]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
bl sub_8108CB4
adds r0, r7, 0
@@ -6817,7 +6817,7 @@ _0810B528:
strh r6, [r0, 0x2E]
strh r7, [r0, 0x30]
ldrb r0, [r5]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
b _0810B5C0
.align 2, 0
_0810B538: .4byte gMain
@@ -6854,7 +6854,7 @@ _0810B564:
ldrb r0, [r5]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
ldr r1, _0810B5B0 @ =gUnknown_3005E98
ldr r0, _0810B5B4 @ =ItemUseCB_Medicine
@@ -6950,7 +6950,7 @@ _0810B64E:
strh r5, [r0, 0x2E]
strh r7, [r0, 0x30]
ldrb r0, [r6]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
b _0810B6E0
.align 2, 0
_0810B65C: .4byte gMain
@@ -6989,7 +6989,7 @@ _0810B68C:
ldrb r0, [r6]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_810AECC
ldr r0, _0810B6D4 @ =gUnknown_203AD10
ldr r1, [r0]
diff --git a/asm/learn_move.s b/asm/learn_move.s
index f00135fda..6684874bb 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -1409,7 +1409,7 @@ sub_80E5204: @ 80E5204
ldr r1, _080E525C @ =0x00000263
adds r0, r1
ldrb r0, [r0]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
ldr r0, _080E5260 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
@@ -1568,7 +1568,7 @@ sub_80E5340: @ 80E5340
movs r0, 0x2
movs r2, 0x1
movs r3, 0x4
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldrb r0, [r4, 0x1]
cmp r0, 0x1
bhi _080E5388
@@ -1680,27 +1680,27 @@ sub_80E5444: @ 80E5444
movs r1, 0x13
movs r2, 0x1
movs r3, 0x4
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0x1
movs r1, 0x14
movs r2, 0
movs r3, 0x4
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0x1
movs r1, 0x15
movs r2, 0
movs r3, 0x13
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0
movs r1, 0x16
movs r2, 0x1
movs r3, 0x13
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0
movs r1, 0x17
movs r2, 0x1
movs r3, 0x22
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0
bl PutWindowTilemap
movs r0, 0x1
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index 111161c06..78c09b0ff 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -620,7 +620,7 @@ _08115DD4:
bl sub_81165E8
strb r0, [r5, 0x13]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
b _0811610C
.align 2, 0
_08115DE4: .4byte gUnknown_203B058
@@ -783,7 +783,7 @@ _08115EF4:
movs r0, 0
strb r0, [r1, 0x1B]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
ldrb r0, [r5, 0x13]
adds r0, 0x1
strb r0, [r5, 0x13]
@@ -870,7 +870,7 @@ _08115FB4:
ldr r0, [r5]
bl sub_81165E8
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
_08115FF0:
movs r0, 0x4
strb r0, [r5, 0xC]
@@ -1139,7 +1139,7 @@ sub_81161E4: @ 81161E4
ldrb r0, [r4, 0x12]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4, 0x10]
bl ClearWindowTilemap
ldrb r0, [r4, 0xF]
@@ -1400,7 +1400,7 @@ _08116460:
movs r0, 0x2
bl PlaySE
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
ldr r4, _081164A0 @ =gStringVar2
ldrb r0, [r5, 0x13]
lsls r0, 5
@@ -1433,7 +1433,7 @@ _081164AC:
movs r1, 0
bl sub_80FB9E4
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
strb r4, [r5, 0xC]
movs r0, 0x1
b _081164C2
@@ -1972,7 +1972,7 @@ _08116916:
b _08116BF6
_0811691E:
ldrb r0, [r6, 0xE]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r4, r0, 0
ldr r0, _0811696C @ =gMain
ldrh r1, [r0, 0x2E]
@@ -2301,7 +2301,7 @@ _08116BF4:
strb r0, [r6, 0x8]
_08116BF6:
ldrb r0, [r6, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
b _08116D06
_08116BFE:
bl sub_80FB9F4
@@ -2322,7 +2322,7 @@ _08116C10:
ldrb r0, [r6, 0xE]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r6, 0xC]
bl ClearWindowTilemap
ldrb r0, [r6, 0xB]
@@ -2480,7 +2480,7 @@ sub_8116D60: @ 8116D60
movs r1, 0
bl sub_80FCD74
ldrb r0, [r4, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
ldr r5, _08116DD4 @ =gStringVar1
ldrb r0, [r4, 0xF]
lsls r0, 5
@@ -3367,7 +3367,7 @@ sub_8117440: @ 8117440
movs r0, 0
mov r3, r8
bl SetDynamicWarpWithCoords
- bl warp_in
+ bl WarpIntoMap
add sp, 0x8
pop {r3}
mov r8, r3
@@ -3424,7 +3424,7 @@ sub_81174B4: @ 81174B4
adds r1, r5, 0
mov r3, r8
bl Overworld_SetWarpDestination
- bl warp_in
+ bl WarpIntoMap
add sp, 0x4
pop {r3}
mov r8, r3
@@ -3763,21 +3763,21 @@ _08117890:
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
- ldr r1, _081178AC @ =sub_805671C
+ ldr r1, _081178AC @ =CB2_LoadMap
bl sub_8147AA8
b _081178E0
.align 2, 0
-_081178AC: .4byte sub_805671C
+_081178AC: .4byte CB2_LoadMap
_081178B0:
movs r0, 0x7
movs r1, 0x9
movs r2, 0x1
bl sub_8117440
- ldr r0, _081178C4 @ =sub_805671C
+ ldr r0, _081178C4 @ =CB2_LoadMap
bl sub_814B754
b _081178E0
.align 2, 0
-_081178C4: .4byte sub_805671C
+_081178C4: .4byte CB2_LoadMap
_081178C8:
movs r0, 0x8
movs r1, 0x5
@@ -3786,7 +3786,7 @@ _081178C8:
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
- ldr r1, _081178F8 @ =sub_805671C
+ ldr r1, _081178F8 @ =CB2_LoadMap
bl sub_81507FC
_081178E0:
adds r0, r4, 0
@@ -3800,7 +3800,7 @@ _081178E0:
pop {r0}
bx r0
.align 2, 0
-_081178F8: .4byte sub_805671C
+_081178F8: .4byte CB2_LoadMap
_081178FC: .4byte gSpecialVar_Result
thumb_func_end sub_81175BC
@@ -4151,7 +4151,7 @@ _08117BF4:
bl sub_81165E8
strb r0, [r5, 0x13]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
_08117C02:
movs r0, 0x2
strb r0, [r5, 0xC]
@@ -4198,7 +4198,7 @@ _08117C42:
adds r1, r0
strb r4, [r1, 0x1B]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
movs r0, 0x5
strb r0, [r5, 0x19]
ldrb r1, [r5, 0x13]
@@ -4268,7 +4268,7 @@ _08117CB2:
movs r0, 0
strb r0, [r1, 0x1B]
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
ldrb r0, [r5, 0x13]
adds r0, 0x1
strb r0, [r5, 0x13]
@@ -4327,7 +4327,7 @@ _08117D3C:
ldr r0, [r5]
bl sub_81165E8
ldrb r0, [r5, 0x12]
- bl sub_8107180
+ bl RedrawListMenu
movs r0, 0x2
strb r0, [r5, 0xC]
_08117D7C:
@@ -4398,7 +4398,7 @@ _08117DEE:
ldrb r0, [r5, 0x12]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r5, 0xF]
@@ -4457,7 +4457,7 @@ _08117E80:
ldrb r0, [r5, 0x12]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r5, 0xF]
@@ -4673,11 +4673,11 @@ _08118070:
bl PlaySE
_08118086:
ldrb r0, [r5, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
b _08118288
_0811808E:
ldrb r0, [r5, 0xE]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r2, r0, 0
ldr r0, _08118128 @ =gMain
ldrh r1, [r0, 0x2E]
@@ -4707,7 +4707,7 @@ _0811808E:
movs r1, 0
bl sub_80FCD74
ldrb r0, [r5, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
ldr r4, _0811812C @ =gStringVar1
ldrb r0, [r5, 0xF]
lsls r0, 5
@@ -4842,7 +4842,7 @@ _081181EC:
ldrb r0, [r5, 0xE]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r5, 0xD]
@@ -5085,14 +5085,14 @@ _0811841E:
b _08118604
_08118426:
ldrb r0, [r5, 0xE]
- bl sub_8107180
+ bl RedrawListMenu
b _08118604
_0811842E:
ldrb r0, [r5, 0x13]
cmp r0, 0
beq _0811843A
ldrb r0, [r5, 0xE]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
_0811843A:
ldrb r0, [r5, 0x14]
cmp r0, 0x78
@@ -5242,7 +5242,7 @@ _08118564:
ldrb r0, [r5, 0xE]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r5, 0xB]
@@ -8715,7 +8715,7 @@ _0811A270: .4byte gMultiuseListMenuTemplate
_0811A274:
mov r3, r9
ldrb r0, [r3]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
mov r8, r0
ldr r0, _0811A2AC @ =gMain
ldrh r1, [r0, 0x2E]
@@ -8726,7 +8726,7 @@ _0811A274:
ldrb r0, [r4]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r5]
movs r1, 0x1
bl ClearStdWindowAndFrame
@@ -8747,7 +8747,7 @@ _0811A2B0:
ldrb r0, [r6]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r5]
movs r1, 0x1
bl ClearStdWindowAndFrame
@@ -8821,7 +8821,7 @@ _0811A350: .4byte gUnknown_8456F1C
_0811A354: .4byte gMultiuseListMenuTemplate
_0811A358:
ldrb r0, [r5]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r1, r0, 0
ldr r0, _0811A3A8 @ =gMain
ldrh r2, [r0, 0x2E]
@@ -8842,7 +8842,7 @@ _0811A37E:
ldrb r0, [r5]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4]
movs r1, 0x1
bl ClearStdWindowAndFrame
@@ -8867,7 +8867,7 @@ _0811A3AC:
ldrb r0, [r5]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
ldrb r0, [r4]
movs r1, 0x1
bl ClearStdWindowAndFrame
@@ -9999,7 +9999,7 @@ _0811AC3C:
adds r0, r6, 0
movs r2, 0x44
adds r3, r5, 0
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
movs r0, 0xB
mov r2, r8
muls r2, r0
@@ -10537,14 +10537,14 @@ _0811B056:
lsls r0, r4, 24
lsrs r0, 24
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
adds r5, 0xB
adds r4, 0x1
cmp r4, 0x3
ble _0811B056
ldr r1, _0811B074 @ =gUnknown_8457D44
adds r0, r7, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _0811B080
.align 2, 0
_0811B074: .4byte gUnknown_8457D44
@@ -10952,7 +10952,7 @@ sub_811B31C: @ 811B31C
ldr r0, _0811B4B0 @ =gUnknown_2039624
adds r1, r0
mov r8, r1
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
mov r6, r9
adds r6, 0xAC
bl sub_80447F0
@@ -10966,11 +10966,11 @@ sub_811B31C: @ 811B31C
bl StringCopy
movs r0, 0
adds r1, r6, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
mov r1, r8
adds r1, 0x30
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r4, 0xB0
lsls r4, 1
add r4, r9
@@ -10984,7 +10984,7 @@ sub_811B31C: @ 811B31C
bl StringCopy
movs r0, 0x2
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
mov r5, r9
adds r5, 0xCA
mov r0, r8
@@ -10995,7 +10995,7 @@ sub_811B31C: @ 811B31C
bl ConvertIntToDecimalStringN
movs r0, 0x3
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r2, 0xD9
add r2, r9
mov r10, r2
@@ -11015,16 +11015,16 @@ sub_811B31C: @ 811B31C
bl ConvertIntToDecimalStringN
movs r0, 0x4
mov r1, r10
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r0, 0x5
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r4, 0xC8
lsls r4, 1
add r4, r9
ldr r1, _0811B4BC @ =gUnknown_84594C4
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r0, _0811B4C0 @ =gStringVar4
adds r1, r4, 0
bl StringCopy
@@ -11041,7 +11041,7 @@ _0811B40A:
bl ConvertIntToDecimalStringN
movs r0, 0
adds r1, r6, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
mov r2, r8
ldrh r1, [r2, 0x16]
cmp r1, r4
@@ -11056,7 +11056,7 @@ _0811B426:
bl ConvertIntToDecimalStringN
movs r0, 0x2
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
mov r0, r8
ldrh r1, [r0, 0x20]
adds r0, r5, 0
@@ -11065,7 +11065,7 @@ _0811B426:
bl ConvertIntToDecimalStringN
movs r0, 0x3
adds r1, r5, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r7, 0
movs r6, 0x80
lsls r6, 19
@@ -11078,7 +11078,7 @@ _0811B45E:
bl CopyEasyChatWord
lsrs r0, r6, 24
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r2, 0x80
lsls r2, 17
adds r6, r2
@@ -11092,7 +11092,7 @@ _0811B45E:
add r4, r9
ldr r1, _0811B4C8 @ =gUnknown_8459504
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r5, _0811B4C0 @ =gStringVar4
adds r0, r5, 0
adds r1, r4, 0
@@ -11102,7 +11102,7 @@ _0811B45E:
bne _0811B4D0
ldr r1, _0811B4CC @ =gUnknown_8459588
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
adds r0, r5, 0
adds r1, r4, 0
bl StringAppend
@@ -11127,7 +11127,7 @@ _0811B4D0:
adds r1, r0
ldr r1, [r1]
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
adds r0, r5, 0
adds r1, r4, 0
bl StringAppend
diff --git a/asm/list_menu.s b/asm/list_menu.s
deleted file mode 100644
index e6e316fb7..000000000
--- a/asm/list_menu.s
+++ /dev/null
@@ -1,2019 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_90
-nullsub_90: @ 8106ECC
- bx lr
- thumb_func_end nullsub_90
-
- thumb_func_start DoMysteryGiftListMenu
-DoMysteryGiftListMenu: @ 8106ED0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- mov r12, r0
- str r1, [sp]
- ldr r0, [sp, 0x28]
- lsls r2, 24
- lsrs r6, r2, 24
- mov r10, r6
- lsls r3, 16
- lsrs r7, r3, 16
- str r7, [sp, 0x4]
- lsls r0, 16
- mov r8, r0
- lsrs r0, 16
- mov r9, r0
- ldr r5, _08106F60 @ =gUnknown_203ACF4
- ldrb r4, [r5, 0x4]
- cmp r4, 0x1
- beq _08106F68
- cmp r4, 0x1
- ble _08106F06
- cmp r4, 0x2
- beq _08106FCC
-_08106F06:
- mov r0, r12
- bl AddWindow
- strb r0, [r5, 0x5]
- cmp r6, 0x1
- beq _08106F24
- cmp r6, 0x2
- bne _08106F34
- ldrb r0, [r5, 0x5]
- mov r1, r9
- lsls r2, r1, 24
- lsrs r2, 24
- adds r1, r7, 0
- bl TextWindow_SetUserSelectedFrame
-_08106F24:
- ldrb r0, [r5, 0x5]
- mov r3, r8
- lsrs r2, r3, 20
- lsls r2, 24
- lsrs r2, 24
- ldr r1, [sp, 0x4]
- bl DrawTextBorderOuter
-_08106F34:
- ldr r0, _08106F64 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, [sp]
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldr r4, _08106F60 @ =gUnknown_203ACF4
- ldrb r1, [r4, 0x5]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r4, 0x6]
- ldrb r0, [r4, 0x5]
- movs r1, 0x1
- bl CopyWindowToVram
- movs r0, 0x1
- strb r0, [r4, 0x4]
- b _08106FE4
- .align 2, 0
-_08106F60: .4byte gUnknown_203ACF4
-_08106F64: .4byte gMultiuseListMenuTemplate
-_08106F68:
- ldrb r0, [r5, 0x6]
- bl ListMenuHandleInput
- str r0, [r5]
- ldr r1, _08106FA4 @ =gMain
- ldrh r0, [r1, 0x2E]
- ands r4, r0
- cmp r4, 0
- beq _08106F7E
- movs r0, 0x2
- strb r0, [r5, 0x4]
-_08106F7E:
- ldrh r1, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08106F92
- movs r0, 0x2
- negs r0, r0
- str r0, [r5]
- movs r0, 0x2
- strb r0, [r5, 0x4]
-_08106F92:
- ldrb r0, [r5, 0x4]
- cmp r0, 0x2
- bne _08106FE4
- cmp r6, 0
- bne _08106FA8
- ldrb r0, [r5, 0x5]
- bl ClearWindowTilemap
- b _08106FBA
- .align 2, 0
-_08106FA4: .4byte gMain
-_08106FA8:
- mov r4, r10
- cmp r4, 0
- blt _08106FBA
- cmp r4, 0x2
- bgt _08106FBA
- ldrb r0, [r5, 0x5]
- movs r1, 0
- bl ClearStdWindowAndFrame
-_08106FBA:
- ldr r0, _08106FC8 @ =gUnknown_203ACF4
- ldrb r0, [r0, 0x5]
- movs r1, 0x1
- bl CopyWindowToVram
- b _08106FE4
- .align 2, 0
-_08106FC8: .4byte gUnknown_203ACF4
-_08106FCC:
- ldrb r0, [r5, 0x6]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenu
- ldrb r0, [r5, 0x5]
- bl RemoveWindow
- movs r0, 0
- strb r0, [r5, 0x4]
- ldr r0, [r5]
- b _08106FE8
-_08106FE4:
- movs r0, 0x1
- negs r0, r0
-_08106FE8:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end DoMysteryGiftListMenu
-
- thumb_func_start ListMenuInit
-ListMenuInit: @ 8106FF8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- bl ListMenuInitInternal
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5, 0x10]
- bl PutWindowTilemap
- ldrb r0, [r5, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ListMenuInit
-
- thumb_func_start Unused_ListMenuInit2
-Unused_ListMenuInit2: @ 8107024
- push {r4-r7,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r4, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- bl ListMenuInitInternal
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r4, 0x4]
- cmp r0, 0xFF
- beq _08107064
- adds r5, r4, 0
-_08107048:
- ldrb r0, [r6, 0x10]
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldrb r3, [r5, 0x2]
- ldrb r4, [r5, 0x3]
- str r4, [sp]
- ldrb r4, [r5, 0x4]
- str r4, [sp, 0x4]
- bl PutWindowRectTilemapOverridePalette
- adds r5, 0x8
- ldrb r0, [r5, 0x4]
- cmp r0, 0xFF
- bne _08107048
-_08107064:
- ldrb r0, [r6, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- adds r0, r7, 0
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end Unused_ListMenuInit2
-
- thumb_func_start ListMenuHandleInput
-ListMenuHandleInput: @ 8107078
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _081070A4 @ =gTasks+0x8
- adds r3, r1, r0
- ldr r2, _081070A8 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081070AC
- ldrh r0, [r3, 0x18]
- ldrh r1, [r3, 0x1A]
- adds r0, r1
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- b _08107136
- .align 2, 0
-_081070A4: .4byte gTasks+0x8
-_081070A8: .4byte gMain
-_081070AC:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081070BA
- movs r0, 0x2
- negs r0, r0
- b _08107136
-_081070BA:
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081070CE
- adds r0, r3, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0
- b _0810712E
-_081070CE:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081070DE
- adds r0, r3, 0
- movs r1, 0x1
- movs r2, 0x1
- b _0810712C
-_081070DE:
- ldrb r0, [r3, 0x16]
- lsrs r0, 6
- cmp r0, 0x1
- beq _081070F4
- cmp r0, 0x1
- ble _081070EE
- cmp r0, 0x2
- beq _08107100
-_081070EE:
- movs r2, 0
- movs r0, 0
- b _08107114
-_081070F4:
- movs r0, 0x20
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0x10
- b _0810710E
-_08107100:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0x80
- lsls r0, 1
-_0810710E:
- ands r0, r1
- lsls r0, 16
- lsrs r0, 16
-_08107114:
- cmp r2, 0
- beq _08107122
- ldrb r2, [r3, 0xE]
- adds r0, r3, 0
- movs r1, 0x1
- movs r3, 0
- b _0810712E
-_08107122:
- cmp r0, 0
- beq _08107132
- ldrb r2, [r3, 0xE]
- adds r0, r3, 0
- movs r1, 0x1
-_0810712C:
- movs r3, 0x1
-_0810712E:
- bl ListMenuChangeSelection
-_08107132:
- movs r0, 0x1
- negs r0, r0
-_08107136:
- pop {r1}
- bx r1
- thumb_func_end ListMenuHandleInput
-
- thumb_func_start DestroyListMenu
-DestroyListMenu: @ 810713C
- push {r4,lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0810717C @ =gTasks+0x8
- adds r1, r0, r1
- cmp r3, 0
- beq _08107158
- ldrh r0, [r1, 0x18]
- strh r0, [r3]
-_08107158:
- cmp r2, 0
- beq _08107160
- ldrh r0, [r1, 0x1A]
- strh r0, [r2]
-_08107160:
- ldrb r0, [r1, 0x1E]
- cmp r0, 0xFF
- beq _08107170
- ldrb r1, [r1, 0x17]
- lsrs r1, 6
- subs r1, 0x2
- bl ListMenuRemoveCursorObject
-_08107170:
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810717C: .4byte gTasks+0x8
- thumb_func_end DestroyListMenu
-
- thumb_func_start sub_8107180
-sub_8107180: @ 8107180
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _081071C0 @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4, 0x10]
- ldrb r2, [r4, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- bl FillWindowPixelBuffer
- ldrh r1, [r4, 0x18]
- ldrh r3, [r4, 0xE]
- adds r0, r4, 0
- movs r2, 0
- bl ListMenuPrintEntries
- adds r0, r4, 0
- bl ListMenuDrawCursor
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081071C0: .4byte gTasks+0x8
- thumb_func_end sub_8107180
-
- thumb_func_start sub_81071C4
-sub_81071C4: @ 81071C4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _08107204 @ =gTasks+0x8
- adds r4, r0
- lsrs r1, 20
- ldrb r6, [r4, 0x14]
- movs r5, 0xF
- adds r0, r5, 0
- ands r0, r6
- orrs r0, r1
- strb r0, [r4, 0x14]
- ands r2, r5
- ldrb r1, [r4, 0x15]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- lsrs r3, 20
- ands r0, r5
- orrs r0, r3
- strb r0, [r4, 0x15]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08107204: .4byte gTasks+0x8
- thumb_func_end sub_81071C4
-
- thumb_func_start sub_8107208
-sub_8107208: @ 8107208
- push {r4,r5,lr}
- adds r3, r1, 0
- adds r5, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _08107240 @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4, 0x10]
- movs r1, 0x1
- adds r2, r3, 0
- bl SetWindowAttribute
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- adds r2, r5, 0
- bl SetWindowAttribute
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08107240: .4byte gTasks+0x8
- thumb_func_end sub_8107208
-
- thumb_func_start sub_8107244
-sub_8107244: @ 8107244
- push {r4-r7,lr}
- sub sp, 0x20
- mov r12, r2
- ldr r5, [sp, 0x34]
- lsls r3, 16
- lsrs r3, 16
- adds r4, r3, 0
- mov r3, sp
- ldm r0!, {r2,r6,r7}
- stm r3!, {r2,r6,r7}
- ldm r0!, {r2,r6,r7}
- stm r3!, {r2,r6,r7}
- mov r0, sp
- movs r3, 0
- strh r1, [r0, 0x18]
- mov r1, r12
- strh r1, [r0, 0x1A]
- strb r3, [r0, 0x1C]
- strb r3, [r0, 0x1D]
- cmp r4, 0x40
- bne _08107278
- movs r1, 0
- movs r2, 0x1
- movs r3, 0
- bl ListMenuChangeSelection
-_08107278:
- cmp r4, 0x80
- bne _08107288
- mov r0, sp
- movs r1, 0
- movs r2, 0x1
- movs r3, 0x1
- bl ListMenuChangeSelection
-_08107288:
- cmp r5, 0
- beq _08107292
- mov r0, sp
- ldrh r0, [r0, 0x18]
- strh r0, [r5]
-_08107292:
- ldr r2, [sp, 0x38]
- cmp r2, 0
- beq _0810729E
- mov r0, sp
- ldrh r0, [r0, 0x1A]
- strh r0, [r2]
-_0810729E:
- movs r0, 0x1
- negs r0, r0
- add sp, 0x20
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8107244
-
- thumb_func_start sub_81072AC
-sub_81072AC: @ 81072AC
- push {lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _081072D0 @ =gTasks+0x8
- adds r1, r0
- cmp r2, 0
- beq _081072CA
- ldrh r0, [r1, 0x1A]
- ldrh r1, [r1, 0x18]
- adds r0, r1
- strh r0, [r2]
-_081072CA:
- pop {r0}
- bx r0
- .align 2, 0
-_081072D0: .4byte gTasks+0x8
- thumb_func_end sub_81072AC
-
- thumb_func_start ListMenuGetScrollAndRow
-ListMenuGetScrollAndRow: @ 81072D4
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _081072FC @ =gTasks+0x8
- adds r1, r0
- cmp r3, 0
- beq _081072EE
- ldrh r0, [r1, 0x18]
- strh r0, [r3]
-_081072EE:
- cmp r2, 0
- beq _081072F6
- ldrh r0, [r1, 0x1A]
- strh r0, [r2]
-_081072F6:
- pop {r0}
- bx r0
- .align 2, 0
-_081072FC: .4byte gTasks+0x8
- thumb_func_end ListMenuGetScrollAndRow
-
- thumb_func_start ListMenuGetYCoordForPrintingArrowCursor
-ListMenuGetYCoordForPrintingArrowCursor: @ 8107300
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _08107344 @ =gTasks+0x8
- adds r4, r0
- ldrb r0, [r4, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- ldrb r1, [r4, 0x16]
- lsls r1, 26
- lsrs r1, 29
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x1A]
- adds r2, r1, 0
- muls r2, r0
- adds r1, r2, 0
- ldrb r0, [r4, 0x14]
- lsls r0, 28
- lsrs r0, 28
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08107344: .4byte gTasks+0x8
- thumb_func_end ListMenuGetYCoordForPrintingArrowCursor
-
- thumb_func_start ListMenuInitInternal
-ListMenuInitInternal: @ 8107348
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- ldr r0, _08107418 @ =nullsub_90
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _0810741C @ =gTasks+0x8
- adds r7, r0, r1
- adds r0, r7, 0
- ldm r4!, {r1-r3}
- stm r0!, {r1-r3}
- ldm r4!, {r1-r3}
- stm r0!, {r1-r3}
- movs r1, 0
- strh r5, [r7, 0x18]
- strh r6, [r7, 0x1A]
- strb r1, [r7, 0x1C]
- strb r1, [r7, 0x1D]
- movs r0, 0xFF
- strb r0, [r7, 0x1E]
- strb r1, [r7, 0x1F]
- ldr r3, _08107420 @ =gUnknown_3005E60
- ldrb r1, [r7, 0x14]
- movs r5, 0xF
- lsrs r1, 4
- ldrb r4, [r3]
- movs r2, 0x10
- negs r2, r2
- adds r0, r2, 0
- ands r0, r4
- orrs r0, r1
- strb r0, [r3]
- ldrb r1, [r7, 0x15]
- lsls r1, 28
- lsrs r1, 24
- ands r0, r5
- orrs r0, r1
- strb r0, [r3]
- ldrb r0, [r7, 0x15]
- lsrs r0, 4
- ands r5, r0
- ldrb r0, [r3, 0x1]
- ands r2, r0
- orrs r2, r5
- strb r2, [r3, 0x1]
- ldrb r1, [r7, 0x16]
- lsls r1, 29
- lsrs r1, 17
- ldr r0, [r3]
- ldr r2, _08107424 @ =0xfffc0fff
- ands r0, r2
- orrs r0, r1
- str r0, [r3]
- ldrb r0, [r7, 0x17]
- lsls r0, 26
- lsrs r0, 26
- strb r0, [r3, 0x3]
- ldrh r0, [r7, 0xC]
- ldrh r1, [r7, 0xE]
- cmp r0, r1
- bcs _081073E0
- strh r0, [r7, 0xE]
-_081073E0:
- ldrb r0, [r7, 0x10]
- ldrb r2, [r7, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- bl FillWindowPixelBuffer
- ldrh r1, [r7, 0x18]
- ldrh r3, [r7, 0xE]
- adds r0, r7, 0
- movs r2, 0
- bl ListMenuPrintEntries
- adds r0, r7, 0
- bl ListMenuDrawCursor
- adds r0, r7, 0
- movs r1, 0x1
- bl ListMenuCallSelectionChangedCallback
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08107418: .4byte nullsub_90
-_0810741C: .4byte gTasks+0x8
-_08107420: .4byte gUnknown_3005E60
-_08107424: .4byte 0xfffc0fff
- thumb_func_end ListMenuInitInternal
-
- thumb_func_start ListMenuPrint
-ListMenuPrint: @ 8107428
- push {r4-r7,lr}
- sub sp, 0x18
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r12, r3
- ldr r5, _08107490 @ =gUnknown_3005E60
- ldrb r1, [r5, 0x3]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _08107494
- add r1, sp, 0x14
- ldr r2, [r5]
- lsls r0, r2, 24
- lsrs r0, 28
- movs r3, 0
- strb r0, [r1]
- lsls r0, r2, 28
- lsrs r0, 28
- strb r0, [r1, 0x1]
- lsls r0, r2, 20
- lsrs r0, 28
- strb r0, [r1, 0x2]
- ldrb r0, [r4, 0x10]
- lsls r1, r2, 1
- lsrs r1, 25
- lsls r2, 14
- lsrs r2, 26
- str r2, [sp]
- str r3, [sp, 0x4]
- add r2, sp, 0x14
- str r2, [sp, 0x8]
- movs r2, 0x1
- negs r2, r2
- str r2, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r2, r7, 0
- mov r3, r12
- bl AddTextPrinterParameterized4
- ldrb r1, [r5, 0x3]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r5, 0x3]
- b _081074D2
- .align 2, 0
-_08107490: .4byte gUnknown_3005E60
-_08107494:
- add r2, sp, 0x14
- ldrb r1, [r4, 0x15]
- lsls r0, r1, 28
- lsrs r0, 28
- strb r0, [r2]
- ldrb r0, [r4, 0x14]
- lsrs r0, 4
- strb r0, [r2, 0x1]
- adds r0, r2, 0
- lsls r1, 24
- lsrs r1, 28
- strb r1, [r0, 0x2]
- ldrb r0, [r4, 0x10]
- ldrb r1, [r4, 0x17]
- lsls r1, 26
- lsrs r1, 26
- ldrb r2, [r4, 0x16]
- lsls r2, 29
- lsrs r2, 29
- str r2, [sp]
- str r3, [sp, 0x4]
- add r2, sp, 0x14
- str r2, [sp, 0x8]
- movs r2, 0x1
- negs r2, r2
- str r2, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r2, r7, 0
- mov r3, r12
- bl AddTextPrinterParameterized4
-_081074D2:
- add sp, 0x18
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuPrint
-
- thumb_func_start ListMenuPrintEntries
-ListMenuPrintEntries: @ 81074DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp]
- lsls r3, 16
- lsrs r3, 16
- mov r10, r3
- ldrb r0, [r4, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- ldrb r1, [r4, 0x16]
- lsls r1, 26
- lsrs r1, 29
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0
- mov r8, r0
- cmp r8, r10
- bge _08107584
-_0810751E:
- ldr r0, [r4]
- mov r2, r9
- lsls r1, r2, 3
- adds r0, r1, r0
- ldr r2, [r0, 0x4]
- movs r0, 0x3
- negs r0, r0
- adds r5, r1, 0
- cmp r2, r0
- beq _08107536
- ldrb r6, [r4, 0x12]
- b _08107538
-_08107536:
- ldrb r6, [r4, 0x11]
-_08107538:
- ldr r0, [sp]
- add r0, r8
- ldr r2, [sp, 0x4]
- adds r1, r0, 0
- muls r1, r2
- ldrb r0, [r4, 0x14]
- lsls r0, 28
- lsrs r0, 28
- adds r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- adds r7, r2, 0
- ldr r3, [r4, 0x8]
- cmp r3, 0
- beq _08107562
- ldrb r0, [r4, 0x10]
- ldr r1, [r4]
- adds r1, r5, r1
- ldr r1, [r1, 0x4]
- bl _call_via_r3
-_08107562:
- ldr r0, [r4]
- adds r0, r5, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl ListMenuPrint
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r0, 0x1
- add r8, r0
- cmp r8, r10
- blt _0810751E
-_08107584:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuPrintEntries
-
- thumb_func_start ListMenuDrawCursor
-ListMenuDrawCursor: @ 8107594
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldrb r0, [r6, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- ldrb r1, [r6, 0x16]
- lsls r1, 26
- lsrs r1, 29
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r6, 0x13]
- mov r8, r1
- ldrh r1, [r6, 0x1A]
- muls r1, r0
- ldrb r0, [r6, 0x14]
- lsls r0, 28
- lsrs r0, 28
- adds r0, r1
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r6, 0x17]
- lsrs r0, 6
- cmp r0, 0x1
- beq _08107680
- cmp r0, 0x1
- bgt _081075DA
- cmp r0, 0
- beq _081075E4
- b _08107680
-_081075DA:
- cmp r0, 0x2
- beq _081075F8
- cmp r0, 0x3
- beq _08107640
- b _08107680
-_081075E4:
- ldr r1, _081075F4 @ =gFameCheckerText_ListMenuCursor
- adds r0, r6, 0
- mov r2, r8
- adds r3, r7, 0
- bl ListMenuPrint
- b _08107680
- .align 2, 0
-_081075F4: .4byte gFameCheckerText_ListMenuCursor
-_081075F8:
- ldrb r0, [r6, 0x1E]
- cmp r0, 0xFF
- bne _08107608
- adds r0, r6, 0
- movs r1, 0
- bl ListMenuAddCursorObject
- strb r0, [r6, 0x1E]
-_08107608:
- ldrb r5, [r6, 0x1E]
- ldrb r0, [r6, 0x10]
- movs r1, 0x1
- bl GetWindowAttribute
- adds r4, r0, 0
- lsls r4, 19
- ldr r0, _0810763C @ =0xffff0000
- adds r4, r0
- lsrs r4, 16
- ldrb r0, [r6, 0x10]
- movs r1, 0x2
- bl GetWindowAttribute
- adds r2, r0, 0
- lsls r2, 3
- adds r2, r7
- subs r2, 0x1
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0
- bl ListMenuUpdateCursorObject
- b _08107680
- .align 2, 0
-_0810763C: .4byte 0xffff0000
-_08107640:
- ldrb r0, [r6, 0x1E]
- cmp r0, 0xFF
- bne _08107650
- adds r0, r6, 0
- movs r1, 0x1
- bl ListMenuAddCursorObject
- strb r0, [r6, 0x1E]
-_08107650:
- ldrb r5, [r6, 0x1E]
- ldrb r0, [r6, 0x10]
- movs r1, 0x1
- bl GetWindowAttribute
- adds r4, r0, 0
- lsls r4, 3
- add r4, r8
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r6, 0x10]
- movs r1, 0x2
- bl GetWindowAttribute
- adds r2, r0, 0
- lsls r2, 3
- adds r2, r7
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- movs r3, 0x1
- bl ListMenuUpdateCursorObject
-_08107680:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuDrawCursor
-
- thumb_func_start ListMenuAddCursorObject
-ListMenuAddCursorObject: @ 810768C
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- adds r5, r1, 0
- mov r1, sp
- movs r0, 0
- strb r0, [r1]
- movs r0, 0xA0
- strb r0, [r1, 0x1]
- ldrb r0, [r4, 0x10]
- movs r1, 0x3
- bl GetWindowAttribute
- mov r1, sp
- lsls r0, 3
- adds r0, 0x2
- strh r0, [r1, 0x2]
- ldrb r0, [r4, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- mov r1, sp
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x2
- strh r0, [r1, 0x4]
- movs r0, 0x80
- lsls r0, 7
- strh r0, [r1, 0x6]
- ldr r0, _081076E8 @ =0x0000ffff
- strh r0, [r1, 0x8]
- movs r0, 0xF
- strb r0, [r1, 0xA]
- mov r0, sp
- adds r1, r5, 0
- bl ListMenuAddCursorObjectInternal
- lsls r0, 24
- lsrs r0, 24
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081076E8: .4byte 0x0000ffff
- thumb_func_end ListMenuAddCursorObject
-
- thumb_func_start ListMenuErasePrintedCursor
-ListMenuErasePrintedCursor: @ 81076EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r7, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldrb r1, [r7, 0x17]
- lsrs r0, r1, 6
- cmp r0, 0
- bne _08107768
- lsls r0, r1, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- adds r4, r0, 0
- ldrb r0, [r7, 0x16]
- lsls r0, 26
- lsrs r0, 29
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r7, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldrb r0, [r7, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- ldrb r6, [r7, 0x10]
- ldrb r2, [r7, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- ldrb r2, [r7, 0x13]
- mov r3, r8
- muls r3, r4
- adds r4, r3, 0
- ldrb r3, [r7, 0x14]
- lsls r3, 28
- lsrs r3, 28
- adds r3, r4
- lsls r3, 16
- lsrs r3, 16
- str r5, [sp]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- bl FillWindowPixelRect
-_08107768:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuErasePrintedCursor
-
- thumb_func_start ListMenuUpdateSelectedRowIndexAndScrollOffset
-ListMenuUpdateSelectedRowIndexAndScrollOffset: @ 8107774
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- ldrh r3, [r4, 0x1A]
- ldrh r5, [r4, 0x18]
- cmp r1, 0
- bne _081077E8
- ldrh r0, [r4, 0xE]
- cmp r0, 0x1
- bne _0810778C
- movs r2, 0
- b _0810779E
-_0810778C:
- ldrh r0, [r4, 0xE]
- lsrs r2, r0, 1
- movs r1, 0x1
- ands r1, r0
- adds r2, r1
- subs r0, r2
- subs r0, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
-_0810779E:
- cmp r5, 0
- bne _081077C4
- cmp r3, 0
- beq _0810782A
- ldr r1, [r4]
- movs r2, 0x3
- negs r2, r2
-_081077AC:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r5, r3
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- cmp r0, r2
- bne _0810782E
- cmp r3, 0
- bne _081077AC
- b _0810782A
-_081077C4:
- cmp r3, r2
- bls _081077E4
- ldr r1, [r4]
- movs r6, 0x3
- negs r6, r6
-_081077CE:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r5, r3
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- cmp r0, r6
- bne _0810782E
- cmp r3, r2
- bhi _081077CE
-_081077E4:
- subs r0, r5, 0x1
- b _08107856
-_081077E8:
- ldrh r0, [r4, 0xE]
- cmp r0, 0x1
- bne _081077F2
- movs r2, 0
- b _081077FC
-_081077F2:
- ldrh r0, [r4, 0xE]
- lsrs r2, r0, 1
- movs r1, 0x1
- ands r1, r0
- adds r2, r1
-_081077FC:
- adds r1, r0, 0
- ldrh r0, [r4, 0xC]
- subs r0, r1
- cmp r5, r0
- bne _08107834
- subs r0, r1, 0x1
- cmp r3, r0
- bge _0810782A
- ldr r2, [r4]
- movs r6, 0x3
- negs r6, r6
- adds r1, r0, 0
-_08107814:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r5, r3
- lsls r0, 3
- adds r0, r2
- ldr r0, [r0, 0x4]
- cmp r0, r6
- bne _0810782E
- cmp r3, r1
- blt _08107814
-_0810782A:
- movs r0, 0
- b _0810785C
-_0810782E:
- strh r3, [r4, 0x1A]
- movs r0, 0x1
- b _0810785C
-_08107834:
- cmp r3, r2
- bcs _08107854
- ldr r1, [r4]
- movs r6, 0x3
- negs r6, r6
-_0810783E:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r5, r3
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- cmp r0, r6
- bne _0810782E
- cmp r3, r2
- bcc _0810783E
-_08107854:
- adds r0, r5, 0x1
-_08107856:
- strh r2, [r4, 0x1A]
- strh r0, [r4, 0x18]
- movs r0, 0x2
-_0810785C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ListMenuUpdateSelectedRowIndexAndScrollOffset
-
- thumb_func_start ListMenuScroll
-ListMenuScroll: @ 8107864
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- adds r7, r5, 0
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldrh r0, [r6, 0xE]
- cmp r5, r0
- bcc _0810789E
- ldrb r0, [r6, 0x10]
- ldrb r2, [r6, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- bl FillWindowPixelBuffer
- ldrh r1, [r6, 0x18]
- ldrh r3, [r6, 0xE]
- adds r0, r6, 0
- movs r2, 0
- bl ListMenuPrintEntries
- b _0810798E
-_0810789E:
- ldrb r0, [r6, 0x17]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0x1
- bl GetFontAttribute
- ldrb r1, [r6, 0x16]
- lsls r1, 26
- lsrs r1, 29
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- mov r1, r8
- cmp r1, 0
- bne _08107930
- ldrb r0, [r6, 0x10]
- adds r2, r5, 0
- muls r2, r4
- lsls r2, 24
- lsrs r2, 24
- ldrb r1, [r6, 0x15]
- lsls r1, 28
- lsrs r3, r1, 4
- orrs r3, r1
- lsrs r3, 24
- movs r1, 0x1
- bl ScrollWindow
- ldrh r1, [r6, 0x18]
- adds r0, r6, 0
- movs r2, 0
- adds r3, r5, 0
- bl ListMenuPrintEntries
- ldrh r0, [r6, 0xE]
- adds r1, r0, 0
- muls r1, r4
- adds r0, r1, 0
- ldrb r4, [r6, 0x14]
- lsls r4, 28
- lsrs r4, 28
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r6, 0x10]
- movs r1, 0x3
- bl GetWindowAttribute
- adds r5, r0, 0
- lsls r5, 19
- lsrs r5, 16
- ldrb r0, [r6, 0x10]
- movs r1, 0x4
- bl GetWindowAttribute
- lsls r0, 3
- subs r0, r4
- lsls r0, 16
- lsrs r0, 16
- ldrb r3, [r6, 0x10]
- ldrb r2, [r6, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- str r5, [sp]
- str r0, [sp, 0x4]
- adds r0, r3, 0
- movs r2, 0
- adds r3, r4, 0
- bl FillWindowPixelRect
- b _0810798E
-_08107930:
- ldrb r0, [r6, 0x10]
- adds r2, r7, 0
- muls r2, r4
- lsls r2, 24
- lsrs r2, 24
- ldrb r1, [r6, 0x15]
- lsls r1, 28
- lsrs r3, r1, 4
- orrs r3, r1
- lsrs r3, 24
- movs r1, 0
- bl ScrollWindow
- ldrh r2, [r6, 0xE]
- subs r2, r7
- ldrh r1, [r6, 0x18]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r3, r7, 0
- bl ListMenuPrintEntries
- ldrb r0, [r6, 0x10]
- movs r1, 0x3
- bl GetWindowAttribute
- lsls r0, 19
- lsrs r0, 16
- ldrb r3, [r6, 0x10]
- ldrb r2, [r6, 0x15]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- str r0, [sp]
- ldrb r0, [r6, 0x14]
- lsls r0, 28
- lsrs r0, 28
- str r0, [sp, 0x4]
- adds r0, r3, 0
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
-_0810798E:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ListMenuScroll
-
- thumb_func_start ListMenuChangeSelection
-ListMenuChangeSelection: @ 810799C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- ldrh r0, [r4, 0x1A]
- mov r10, r0
- movs r7, 0
- movs r5, 0
- movs r0, 0
- cmp r7, r8
- bcs _08107A04
-_081079CA:
- adds r6, r0, 0x1
- b _081079EA
-_081079CE:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r4, 0x18]
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- ldr r1, [r4]
- lsls r0, 3
- adds r0, r1
- ldr r1, [r0, 0x4]
- movs r0, 0x3
- negs r0, r0
- cmp r1, r0
- bne _081079FC
-_081079EA:
- adds r0, r4, 0
- mov r1, r9
- bl ListMenuUpdateSelectedRowIndexAndScrollOffset
- lsls r0, 24
- lsrs r0, 24
- orrs r5, r0
- cmp r0, 0x2
- beq _081079CE
-_081079FC:
- lsls r0, r6, 24
- lsrs r0, 24
- cmp r0, r8
- bcc _081079CA
-_08107A04:
- ldr r0, [sp]
- cmp r0, 0
- beq _08107A62
- cmp r5, 0x1
- beq _08107A1A
- cmp r5, 0x1
- ble _08107A16
- cmp r5, 0x3
- ble _08107A3A
-_08107A16:
- movs r0, 0x1
- b _08107A64
-_08107A1A:
- adds r0, r4, 0
- mov r1, r10
- bl ListMenuErasePrintedCursor
- adds r0, r4, 0
- bl ListMenuDrawCursor
- adds r0, r4, 0
- movs r1, 0
- bl ListMenuCallSelectionChangedCallback
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- b _08107A62
-_08107A3A:
- adds r0, r4, 0
- mov r1, r10
- bl ListMenuErasePrintedCursor
- adds r0, r4, 0
- adds r1, r7, 0
- mov r2, r9
- bl ListMenuScroll
- adds r0, r4, 0
- bl ListMenuDrawCursor
- adds r0, r4, 0
- movs r1, 0
- bl ListMenuCallSelectionChangedCallback
- ldrb r0, [r4, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
-_08107A62:
- movs r0, 0
-_08107A64:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end ListMenuChangeSelection
-
- thumb_func_start ListMenuCallSelectionChangedCallback
-ListMenuCallSelectionChangedCallback: @ 8107A74
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r3, [r2, 0x4]
- cmp r3, 0
- beq _08107A96
- ldrh r0, [r2, 0x18]
- ldrh r1, [r2, 0x1A]
- adds r0, r1
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0, 0x4]
- adds r1, r4, 0
- bl _call_via_r3
-_08107A96:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ListMenuCallSelectionChangedCallback
-
- thumb_func_start sub_8107A9C
-sub_8107A9C: @ 8107A9C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r6, _08107AE8 @ =gUnknown_3005E60
- movs r5, 0xF
- ands r0, r5
- ldrb r3, [r6]
- mov r8, r3
- movs r4, 0x10
- negs r4, r4
- adds r3, r4, 0
- mov r7, r8
- ands r3, r7
- orrs r3, r0
- lsrs r1, 20
- ands r3, r5
- orrs r3, r1
- strb r3, [r6]
- ands r2, r5
- ldrb r0, [r6, 0x1]
- ands r4, r0
- orrs r4, r2
- strb r4, [r6, 0x1]
- ldrb r0, [r6, 0x3]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r6, 0x3]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08107AE8: .4byte gUnknown_3005E60
- thumb_func_end sub_8107A9C
-
- thumb_func_start ListMenuDefaultCursorMoveFunc
-ListMenuDefaultCursorMoveFunc: @ 8107AEC
- push {lr}
- lsls r1, 24
- cmp r1, 0
- bne _08107AFA
- movs r0, 0x5
- bl PlaySE
-_08107AFA:
- pop {r0}
- bx r0
- thumb_func_end ListMenuDefaultCursorMoveFunc
-
- thumb_func_start sub_8107B00
-sub_8107B00: @ 8107B00
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08107B24 @ =gTasks+0x8
- adds r2, r1, r0
- cmp r3, 0x10
- bhi _08107BC8
- lsls r0, r3, 2
- ldr r1, _08107B28 @ =_08107B2C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08107B24: .4byte gTasks+0x8
-_08107B28: .4byte _08107B2C
- .align 2, 0
-_08107B2C:
- .4byte _08107B70
- .4byte _08107B70
- .4byte _08107B74
- .4byte _08107B78
- .4byte _08107B7C
- .4byte _08107B80
- .4byte _08107B84
- .4byte _08107B88
- .4byte _08107B8C
- .4byte _08107B90
- .4byte _08107B96
- .4byte _08107B9E
- .4byte _08107BA4
- .4byte _08107BAC
- .4byte _08107BB4
- .4byte _08107BBA
- .4byte _08107BC2
-_08107B70:
- ldr r0, [r2, 0x4]
- b _08107BCC
-_08107B74:
- ldrh r0, [r2, 0xC]
- b _08107BCC
-_08107B78:
- ldrh r0, [r2, 0xE]
- b _08107BCC
-_08107B7C:
- ldrb r0, [r2, 0x10]
- b _08107BCC
-_08107B80:
- ldrb r0, [r2, 0x11]
- b _08107BCC
-_08107B84:
- ldrb r0, [r2, 0x12]
- b _08107BCC
-_08107B88:
- ldrb r0, [r2, 0x13]
- b _08107BCC
-_08107B8C:
- ldrb r0, [r2, 0x14]
- b _08107B98
-_08107B90:
- ldrb r0, [r2, 0x14]
- lsrs r0, 4
- b _08107BCC
-_08107B96:
- ldrb r0, [r2, 0x15]
-_08107B98:
- lsls r0, 28
- lsrs r0, 28
- b _08107BCC
-_08107B9E:
- ldrb r0, [r2, 0x15]
- lsrs r0, 4
- b _08107BCC
-_08107BA4:
- ldrb r0, [r2, 0x16]
- lsls r0, 29
- lsrs r0, 29
- b _08107BCC
-_08107BAC:
- ldrb r0, [r2, 0x16]
- lsls r0, 26
- lsrs r0, 29
- b _08107BCC
-_08107BB4:
- ldrb r0, [r2, 0x16]
- lsrs r0, 6
- b _08107BCC
-_08107BBA:
- ldrb r0, [r2, 0x17]
- lsls r0, 26
- lsrs r0, 26
- b _08107BCC
-_08107BC2:
- ldrb r0, [r2, 0x17]
- lsrs r0, 6
- b _08107BCC
-_08107BC8:
- movs r0, 0x1
- negs r0, r0
-_08107BCC:
- pop {r1}
- bx r1
- thumb_func_end sub_8107B00
-
- thumb_func_start sub_8107BD0
-sub_8107BD0: @ 8107BD0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08107BF4 @ =gTasks+0x8
- adds r3, r1, r0
- cmp r4, 0x10
- bhi _08107CD0
- lsls r0, r4, 2
- ldr r1, _08107BF8 @ =_08107BFC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08107BF4: .4byte gTasks+0x8
-_08107BF8: .4byte _08107BFC
- .align 2, 0
-_08107BFC:
- .4byte _08107C40
- .4byte _08107C40
- .4byte _08107C44
- .4byte _08107C48
- .4byte _08107C4C
- .4byte _08107C50
- .4byte _08107C54
- .4byte _08107C58
- .4byte _08107C5C
- .4byte _08107C68
- .4byte _08107C76
- .4byte _08107C82
- .4byte _08107C90
- .4byte _08107C9C
- .4byte _08107CAA
- .4byte _08107CB8
- .4byte _08107CC4
-_08107C40:
- str r2, [r3, 0x4]
- b _08107CD0
-_08107C44:
- strh r2, [r3, 0xC]
- b _08107CD0
-_08107C48:
- strh r2, [r3, 0xE]
- b _08107CD0
-_08107C4C:
- strb r2, [r3, 0x10]
- b _08107CD0
-_08107C50:
- strb r2, [r3, 0x11]
- b _08107CD0
-_08107C54:
- strb r2, [r3, 0x12]
- b _08107CD0
-_08107C58:
- strb r2, [r3, 0x13]
- b _08107CD0
-_08107C5C:
- movs r0, 0xF
- ands r2, r0
- ldrb r1, [r3, 0x14]
- movs r0, 0x10
- negs r0, r0
- b _08107C6E
-_08107C68:
- lsls r2, 4
- ldrb r1, [r3, 0x14]
- movs r0, 0xF
-_08107C6E:
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x14]
- b _08107CD0
-_08107C76:
- movs r0, 0xF
- ands r2, r0
- ldrb r1, [r3, 0x15]
- movs r0, 0x10
- negs r0, r0
- b _08107C88
-_08107C82:
- lsls r2, 4
- ldrb r1, [r3, 0x15]
- movs r0, 0xF
-_08107C88:
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x15]
- b _08107CD0
-_08107C90:
- movs r0, 0x7
- ands r2, r0
- ldrb r1, [r3, 0x16]
- movs r0, 0x8
- negs r0, r0
- b _08107CB0
-_08107C9C:
- movs r0, 0x7
- ands r2, r0
- lsls r2, 3
- ldrb r1, [r3, 0x16]
- movs r0, 0x39
- negs r0, r0
- b _08107CB0
-_08107CAA:
- lsls r2, 6
- ldrb r1, [r3, 0x16]
- movs r0, 0x3F
-_08107CB0:
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x16]
- b _08107CD0
-_08107CB8:
- movs r0, 0x3F
- ands r2, r0
- ldrb r1, [r3, 0x17]
- movs r0, 0x40
- negs r0, r0
- b _08107CCA
-_08107CC4:
- lsls r2, 6
- ldrb r1, [r3, 0x17]
- movs r0, 0x3F
-_08107CCA:
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x17]
-_08107CD0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8107BD0
-
- thumb_func_start sub_8107CD8
-sub_8107CD8: @ 8107CD8
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80971CC
- adds r1, r4, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8107CD8
-
- thumb_func_start sub_8107CF8
-sub_8107CF8: @ 8107CF8
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r4, r3, 0
- ldr r5, [sp, 0x18]
- lsls r6, 24
- lsrs r6, 24
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r2, 0x1
- bl GetMonIconPtr
- adds r1, r0, 0
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl BlitBitmapToWindow
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8107CF8
-
- thumb_func_start sub_8107D38
-sub_8107D38: @ 8107D38
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _08107D4A
- cmp r1, 0x1
- beq _08107D54
-_08107D4A:
- ldr r0, _08107D50 @ =gUnknown_8E95D9C
- b _08107D56
- .align 2, 0
-_08107D50: .4byte gUnknown_8E95D9C
-_08107D54:
- ldr r0, _08107D64 @ =gUnknown_8E95DBC
-_08107D56:
- adds r1, r2, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_08107D64: .4byte gUnknown_8E95DBC
- thumb_func_end sub_8107D38
-
- thumb_func_start blit_move_info_icon
-blit_move_info_icon: @ 8107D68
- push {r4,r5,lr}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r4, _08107DAC @ =gUnknown_8452C94
- lsrs r1, 22
- adds r1, r4
- ldrh r5, [r1, 0x2]
- lsls r5, 5
- ldr r4, _08107DB0 @ =gUnknown_8E95DDC
- adds r5, r4
- movs r4, 0x80
- str r4, [sp]
- str r4, [sp, 0x4]
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- ldrb r2, [r1]
- str r2, [sp, 0x10]
- ldrb r1, [r1, 0x1]
- str r1, [sp, 0x14]
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0
- bl BlitBitmapRectToWindow
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08107DAC: .4byte gUnknown_8452C94
-_08107DB0: .4byte gUnknown_8E95DDC
- thumb_func_end blit_move_info_icon
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/menu_indicators.s b/asm/menu_indicators.s
deleted file mode 100644
index d7b78b1b2..000000000
--- a/asm/menu_indicators.s
+++ /dev/null
@@ -1,1185 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8133904
-sub_8133904: @ 8133904
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08133916
- cmp r0, 0x1
- beq _0813392A
- b _08133984
-_08133916:
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08133984
-_0813392A:
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0813393A
- cmp r0, 0x1
- beq _08133960
- ldrh r2, [r4, 0x38]
- b _0813397E
-_0813393A:
- movs r0, 0x34
- ldrsh r3, [r4, r0]
- ldr r1, _0813395C @ =gSineTable
- ldrh r2, [r4, 0x38]
- lsls r0, r2, 24
- lsrs r0, 23
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- muls r0, r3
- cmp r0, 0
- bge _08133954
- adds r0, 0xFF
-_08133954:
- asrs r0, 8
- strh r0, [r4, 0x24]
- b _0813397E
- .align 2, 0
-_0813395C: .4byte gSineTable
-_08133960:
- movs r0, 0x34
- ldrsh r3, [r4, r0]
- ldr r1, _0813398C @ =gSineTable
- ldrh r2, [r4, 0x38]
- lsls r0, r2, 24
- lsrs r0, 23
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- muls r0, r3
- cmp r0, 0
- bge _0813397A
- adds r0, 0xFF
-_0813397A:
- asrs r0, 8
- strh r0, [r4, 0x26]
-_0813397E:
- ldrh r0, [r4, 0x36]
- adds r0, r2, r0
- strh r0, [r4, 0x38]
-_08133984:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813398C: .4byte gSineTable
- thumb_func_end sub_8133904
-
- thumb_func_start AddScrollIndicatorArrowObject
-AddScrollIndicatorArrowObject: @ 8133990
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- adds r6, r0, 0
- ldr r5, [sp, 0x30]
- lsls r6, 24
- lsrs r6, 24
- mov r8, r6
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r5, 16
- lsrs r5, 16
- mov r12, r5
- mov r4, sp
- ldr r0, _08133A14 @ =gUnknown_84632A4
- ldm r0!, {r5-r7}
- stm r4!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r4!, {r5-r7}
- mov r0, sp
- movs r4, 0
- strh r3, [r0]
- mov r3, r12
- strh r3, [r0, 0x2]
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08133A18 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r1
- adds r5, r3, 0
- adds r5, 0x3E
- ldrb r1, [r5]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r5]
- strh r4, [r3, 0x2E]
- ldr r1, _08133A1C @ =gUnknown_846325C
- mov r5, r8
- lsls r6, r5, 2
- adds r6, r1
- ldrb r2, [r6]
- lsls r1, r2, 28
- lsrs r1, 28
- strh r1, [r3, 0x30]
- lsrs r2, 4
- strh r2, [r3, 0x32]
- ldrb r1, [r6, 0x1]
- strh r1, [r3, 0x34]
- ldrh r1, [r6, 0x2]
- strh r1, [r3, 0x36]
- strh r4, [r3, 0x38]
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08133A14: .4byte gUnknown_84632A4
-_08133A18: .4byte gSprites
-_08133A1C: .4byte gUnknown_846325C
- thumb_func_end AddScrollIndicatorArrowObject
-
- thumb_func_start AddScrollIndicatorArrowPair
-AddScrollIndicatorArrowPair: @ 8133A20
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- adds r6, r0, 0
- mov r9, r1
- ldr r0, _08133A6C @ =gUnknown_8463328
- str r0, [sp, 0x4]
- ldr r5, _08133A70 @ =0xffff0000
- ldr r0, [sp, 0x8]
- ands r0, r5
- movs r1, 0x80
- lsls r1, 1
- orrs r0, r1
- ldrh r1, [r6, 0xA]
- lsls r1, 16
- ldr r4, _08133A74 @ =0x0000ffff
- ands r0, r4
- orrs r0, r1
- str r0, [sp, 0x8]
- add r0, sp, 0x4
- bl LoadCompressedSpriteSheet
- ldrh r2, [r6, 0xC]
- cmp r2, r4
- bne _08133A7C
- ldr r0, _08133A78 @ =gUnknown_8463308
- ldrb r1, [r6, 0xE]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- b _08133A8E
- .align 2, 0
-_08133A6C: .4byte gUnknown_8463328
-_08133A70: .4byte 0xffff0000
-_08133A74: .4byte 0x0000ffff
-_08133A78: .4byte gUnknown_8463308
-_08133A7C:
- ldr r0, _08133B2C @ =gUnknown_8463308
- str r0, [sp, 0xC]
- add r0, sp, 0xC
- ldr r1, [r0, 0x4]
- ands r1, r5
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpritePalette
-_08133A8E:
- ldr r0, _08133B30 @ =sub_8133BA4
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, _08133B34 @ =gTasks+0x8
- adds r7, r0, r1
- movs r0, 0
- strb r0, [r7]
- mov r0, r9
- str r0, [r7, 0x4]
- ldrh r0, [r6, 0x6]
- strh r0, [r7, 0x8]
- ldrh r0, [r6, 0x8]
- strh r0, [r7, 0xA]
- ldrh r0, [r6, 0xA]
- strh r0, [r7, 0xE]
- ldrh r0, [r6, 0xC]
- strh r0, [r7, 0x10]
- ldrb r0, [r6]
- ldrb r1, [r6, 0x1]
- ldrb r2, [r6, 0x2]
- ldrh r3, [r6, 0xA]
- ldrh r4, [r6, 0xC]
- str r4, [sp]
- bl AddScrollIndicatorArrowObject
- strb r0, [r7, 0xC]
- ldrb r0, [r6, 0x3]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x5]
- ldrh r3, [r6, 0xA]
- ldrh r4, [r6, 0xC]
- str r4, [sp]
- bl AddScrollIndicatorArrowObject
- strb r0, [r7, 0xD]
- ldrh r1, [r6, 0xC]
- ldr r0, _08133B38 @ =0x0000ffff
- cmp r1, r0
- bne _08133B1C
- ldr r5, _08133B3C @ =gSprites
- ldrb r0, [r7, 0xC]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r3, [r6, 0xE]
- lsls r3, 4
- ldrb r4, [r1, 0x5]
- movs r2, 0xF
- adds r0, r2, 0
- ands r0, r4
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r7, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r6, 0xE]
- lsls r1, 4
- ldrb r3, [r0, 0x5]
- ands r2, r3
- orrs r2, r1
- strb r2, [r0, 0x5]
-_08133B1C:
- mov r0, r8
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08133B2C: .4byte gUnknown_8463308
-_08133B30: .4byte sub_8133BA4
-_08133B34: .4byte gTasks+0x8
-_08133B38: .4byte 0x0000ffff
-_08133B3C: .4byte gSprites
- thumb_func_end AddScrollIndicatorArrowPair
-
- thumb_func_start AddScrollIndicatorArrowPairParameterized
-AddScrollIndicatorArrowPairParameterized: @ 8133B40
- push {r4,lr}
- adds r4, r1, 0
- subs r0, 0x2
- cmp r0, 0x1
- bhi _08133B64
- ldr r0, _08133B60 @ =gUnknown_203B130
- movs r1, 0x2
- strb r1, [r0]
- strb r4, [r0, 0x1]
- strb r2, [r0, 0x2]
- movs r1, 0x3
- strb r1, [r0, 0x3]
- strb r4, [r0, 0x4]
- strb r3, [r0, 0x5]
- b _08133B76
- .align 2, 0
-_08133B60: .4byte gUnknown_203B130
-_08133B64:
- ldr r0, _08133BA0 @ =gUnknown_203B130
- movs r1, 0
- strb r1, [r0]
- strb r2, [r0, 0x1]
- strb r4, [r0, 0x2]
- movs r1, 0x1
- strb r1, [r0, 0x3]
- strb r3, [r0, 0x4]
- strb r4, [r0, 0x5]
-_08133B76:
- adds r2, r0, 0
- movs r1, 0
- movs r0, 0
- strh r0, [r2, 0x6]
- ldr r0, [sp, 0x8]
- strh r0, [r2, 0x8]
- ldr r0, [sp, 0xC]
- strh r0, [r2, 0xA]
- ldr r0, [sp, 0x10]
- strh r0, [r2, 0xC]
- strb r1, [r2, 0xE]
- adds r0, r2, 0
- ldr r1, [sp, 0x14]
- bl AddScrollIndicatorArrowPair
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08133BA0: .4byte gUnknown_203B130
- thumb_func_end AddScrollIndicatorArrowPairParameterized
-
- thumb_func_start sub_8133BA4
-sub_8133BA4: @ 8133BA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08133BD4 @ =gTasks+0x8
- adds r4, r1, r0
- ldr r0, [r4, 0x4]
- ldrh r5, [r0]
- ldrh r0, [r4, 0x8]
- cmp r5, r0
- bne _08133BDC
- ldr r3, _08133BD8 @ =gSprites
- ldrb r1, [r4, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- b _08133BF2
- .align 2, 0
-_08133BD4: .4byte gTasks+0x8
-_08133BD8: .4byte gSprites
-_08133BDC:
- ldr r3, _08133C10 @ =gSprites
- ldrb r1, [r4, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
-_08133BF2:
- strb r1, [r0]
- ldrh r0, [r4, 0xA]
- cmp r5, r0
- bne _08133C14
- ldrb r1, [r4, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- b _08133C28
- .align 2, 0
-_08133C10: .4byte gSprites
-_08133C14:
- ldrb r1, [r4, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
-_08133C28:
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8133BA4
-
- thumb_func_start RemoveScrollIndicatorArrowPair
-RemoveScrollIndicatorArrowPair: @ 8133C30
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _08133C84 @ =gTasks+0x8
- adds r5, r0, r1
- ldrh r0, [r5, 0xE]
- ldr r4, _08133C88 @ =0x0000ffff
- cmp r0, r4
- beq _08133C4E
- bl FreeSpriteTilesByTag
-_08133C4E:
- ldrh r0, [r5, 0x10]
- cmp r0, r4
- beq _08133C58
- bl FreeSpritePaletteByTag
-_08133C58:
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08133C8C @ =gSprites
- adds r0, r4
- bl DestroySprite
- ldrb r1, [r5, 0xD]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- adds r0, r6, 0
- bl DestroyTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08133C84: .4byte gTasks+0x8
-_08133C88: .4byte 0x0000ffff
-_08133C8C: .4byte gSprites
- thumb_func_end RemoveScrollIndicatorArrowPair
-
- thumb_func_start ListMenuAddCursorObjectInternal
-ListMenuAddCursorObjectInternal: @ 8133C90
- push {lr}
- cmp r1, 0
- beq _08133C9A
- cmp r1, 0x1
- beq _08133CA0
-_08133C9A:
- bl ListMenuAddRedOutlineCursorObject
- b _08133CA4
-_08133CA0:
- bl ListMenuAddRedArrowCursorObject
-_08133CA4:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end ListMenuAddCursorObjectInternal
-
- thumb_func_start ListMenuUpdateCursorObject
-ListMenuUpdateCursorObject: @ 8133CAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- cmp r3, 0
- beq _08133CC4
- cmp r3, 0x1
- beq _08133CCA
- b _08133CCE
-_08133CC4:
- bl ListMenuUpdateRedOutlineCursorObject
- b _08133CCE
-_08133CCA:
- bl ListMenuUpdateRedArrowCursorObject
-_08133CCE:
- pop {r0}
- bx r0
- thumb_func_end ListMenuUpdateCursorObject
-
- thumb_func_start ListMenuRemoveCursorObject
-ListMenuRemoveCursorObject: @ 8133CD4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r1, 0
- beq _08133CE4
- cmp r1, 0x1
- beq _08133CEA
- b _08133CEE
-_08133CE4:
- bl ListMenuRemoveRedOutlineCursorObject
- b _08133CEE
-_08133CEA:
- bl ListMenuRemoveRedArrowCursorObject
-_08133CEE:
- pop {r0}
- bx r0
- thumb_func_end ListMenuRemoveCursorObject
-
- thumb_func_start nullsub_94
-nullsub_94: @ 8133CF4
- bx lr
- thumb_func_end nullsub_94
-
- thumb_func_start ListMenuGetRedOutlineCursorSpriteCount
-ListMenuGetRedOutlineCursorSpriteCount: @ 8133CF8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- movs r3, 0x4
- cmp r0, 0x10
- bls _08133D18
- movs r2, 0x8
- subs r0, 0x8
- cmp r2, r0
- bge _08133D18
-_08133D10:
- adds r3, 0x2
- adds r2, 0x8
- cmp r2, r0
- blt _08133D10
-_08133D18:
- cmp r1, 0x10
- bls _08133D2C
- movs r2, 0x8
- subs r1, 0x8
- cmp r2, r1
- bge _08133D2C
-_08133D24:
- adds r3, 0x2
- adds r2, 0x8
- cmp r2, r1
- blt _08133D24
-_08133D2C:
- lsls r0, r3, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end ListMenuGetRedOutlineCursorSpriteCount
-
- thumb_func_start ListMenuSetUpRedOutlineCursorSpriteOamTable
-ListMenuSetUpRedOutlineCursorSpriteOamTable: @ 8133D34
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r3, r2, 0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- ldr r0, _08133E18 @ =gUnknown_84632BC
- ldr r0, [r0]
- str r0, [r3]
- movs r1, 0x88
- strb r1, [r3]
- strb r1, [r3, 0x1]
- ldr r0, _08133E1C @ =gUnknown_84632C0
- ldr r0, [r0]
- str r0, [r3, 0x4]
- mov r2, r8
- adds r2, 0x80
- strb r2, [r3, 0x4]
- strb r1, [r3, 0x5]
- ldr r0, _08133E20 @ =gUnknown_84632D4
- ldr r0, [r0]
- str r0, [r3, 0x8]
- strb r1, [r3, 0x8]
- mov r4, r9
- adds r4, 0x80
- strb r4, [r3, 0x9]
- ldr r0, _08133E24 @ =gUnknown_84632D8
- ldr r0, [r0]
- str r0, [r3, 0xC]
- strb r2, [r3, 0xC]
- strb r4, [r3, 0xD]
- movs r0, 0x4
- mov r12, r0
- mov r2, r8
- cmp r2, 0x10
- bls _08133DC8
- movs r2, 0x8
- mov r5, r8
- subs r5, 0x8
- cmp r2, r5
- bge _08133DC8
- ldr r0, _08133E28 @ =gUnknown_84632C4
- ldr r0, [r0]
- str r0, [sp]
- ldr r0, _08133E2C @ =gUnknown_84632D0
- ldr r6, [r0]
- adds r1, r3, 0
- adds r1, 0x10
- movs r7, 0x88
- mov r10, r7
-_08133DA6:
- ldr r0, [sp]
- str r0, [r1]
- adds r0, r2, 0
- subs r0, 0x78
- strb r0, [r1]
- mov r7, r10
- strb r7, [r1, 0x1]
- adds r1, 0x4
- str r6, [r1]
- strb r0, [r1]
- strb r4, [r1, 0x1]
- adds r1, 0x4
- movs r0, 0x2
- add r12, r0
- adds r2, 0x8
- cmp r2, r5
- blt _08133DA6
-_08133DC8:
- mov r2, r9
- cmp r2, 0x10
- bls _08133E06
- movs r1, 0x8
- mov r4, r9
- subs r4, 0x8
- cmp r1, r4
- bge _08133E06
- ldr r0, _08133E30 @ =gUnknown_84632C8
- ldr r6, [r0]
- ldr r0, _08133E34 @ =gUnknown_84632CC
- ldr r5, [r0]
- mov r7, r12
- lsls r0, r7, 2
- adds r2, r0, r3
- movs r7, 0x88
- mov r3, r8
- adds r3, 0x80
-_08133DEC:
- str r6, [r2]
- strb r7, [r2]
- adds r0, r1, 0
- subs r0, 0x78
- strb r0, [r2, 0x1]
- adds r2, 0x4
- str r5, [r2]
- strb r3, [r2]
- strb r0, [r2, 0x1]
- adds r2, 0x4
- adds r1, 0x8
- cmp r1, r4
- blt _08133DEC
-_08133E06:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08133E18: .4byte gUnknown_84632BC
-_08133E1C: .4byte gUnknown_84632C0
-_08133E20: .4byte gUnknown_84632D4
-_08133E24: .4byte gUnknown_84632D8
-_08133E28: .4byte gUnknown_84632C4
-_08133E2C: .4byte gUnknown_84632D0
-_08133E30: .4byte gUnknown_84632C8
-_08133E34: .4byte gUnknown_84632CC
- thumb_func_end ListMenuSetUpRedOutlineCursorSpriteOamTable
-
- thumb_func_start ListMenuAddRedOutlineCursorObject
-ListMenuAddRedOutlineCursorObject: @ 8133E38
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- adds r6, r0, 0
- ldr r0, _08133E84 @ =gUnknown_8463398
- str r0, [sp, 0x18]
- ldr r5, _08133E88 @ =0xffff0000
- add r0, sp, 0x18
- ldr r1, [r0, 0x4]
- ands r1, r5
- movs r2, 0x80
- lsls r2, 1
- orrs r1, r2
- ldrh r2, [r6, 0x6]
- lsls r2, 16
- ldr r3, _08133E8C @ =0x0000ffff
- ands r1, r3
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadCompressedSpriteSheet
- ldrh r2, [r6, 0x8]
- ldr r7, _08133E8C @ =0x0000ffff
- cmp r2, r7
- bne _08133E94
- ldr r0, _08133E90 @ =gUnknown_8463308
- ldrb r1, [r6, 0xA]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- b _08133EA6
- .align 2, 0
-_08133E84: .4byte gUnknown_8463398
-_08133E88: .4byte 0xffff0000
-_08133E8C: .4byte 0x0000ffff
-_08133E90: .4byte gUnknown_8463308
-_08133E94:
- ldr r0, _08133F8C @ =gUnknown_8463308
- str r0, [sp, 0x20]
- add r0, sp, 0x20
- ldr r1, [r0, 0x4]
- ands r1, r5
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpritePalette
-_08133EA6:
- ldr r0, _08133F90 @ =nullsub_94
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08133F94 @ =gTasks+0x8
- adds r5, r0, r1
- ldrh r0, [r6, 0x6]
- movs r3, 0
- mov r8, r3
- strh r0, [r5, 0xE]
- ldrh r0, [r6, 0x8]
- strh r0, [r5, 0x10]
- ldrh r0, [r6, 0x2]
- ldrh r1, [r6, 0x4]
- bl ListMenuGetRedOutlineCursorSpriteCount
- strb r0, [r5]
- ldrb r0, [r5]
- lsls r0, 2
- bl Alloc
- adds r2, r0, 0
- str r2, [r5, 0x8]
- str r2, [r5, 0x4]
- ldrh r0, [r6, 0x2]
- ldrh r1, [r6, 0x4]
- bl ListMenuSetUpRedOutlineCursorSpriteOamTable
- mov r1, sp
- ldr r0, _08133F98 @ =gDummySpriteTemplate
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- mov r1, sp
- ldrh r0, [r6, 0x6]
- strh r0, [r1]
- ldrh r0, [r6, 0x8]
- strh r0, [r1, 0x2]
- ldrb r1, [r6]
- adds r1, 0x78
- ldrb r2, [r6, 0x1]
- adds r2, 0x78
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- strb r0, [r5, 0xC]
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r7, _08133F9C @ =gSprites
- adds r0, r7
- adds r1, r5, 0
- bl SetSubspriteTables
- ldrb r0, [r5, 0xC]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- adds r0, 0x43
- mov r1, r8
- strb r1, [r0]
- ldrb r1, [r5, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- adds r0, 0x42
- ldrb r2, [r0]
- movs r1, 0x40
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrh r1, [r6, 0x8]
- ldr r0, _08133FA0 @ =0x0000ffff
- cmp r1, r0
- bne _08133F7E
- ldrb r0, [r5, 0xC]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r6, 0xA]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_08133F7E:
- adds r0, r4, 0
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08133F8C: .4byte gUnknown_8463308
-_08133F90: .4byte nullsub_94
-_08133F94: .4byte gTasks+0x8
-_08133F98: .4byte gDummySpriteTemplate
-_08133F9C: .4byte gSprites
-_08133FA0: .4byte 0x0000ffff
- thumb_func_end ListMenuAddRedOutlineCursorObject
-
- thumb_func_start ListMenuUpdateRedOutlineCursorObject
-ListMenuUpdateRedOutlineCursorObject: @ 8133FA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- lsls r3, r0, 2
- adds r3, r0
- lsls r3, 3
- ldr r0, _08133FE0 @ =gTasks+0x8
- adds r3, r0
- ldr r5, _08133FE4 @ =gSprites
- ldrb r4, [r3, 0xC]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r5
- adds r1, 0x78
- strh r1, [r0, 0x20]
- ldrb r1, [r3, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r2, 0x78
- strh r2, [r0, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08133FE0: .4byte gTasks+0x8
-_08133FE4: .4byte gSprites
- thumb_func_end ListMenuUpdateRedOutlineCursorObject
-
- thumb_func_start ListMenuRemoveRedOutlineCursorObject
-ListMenuRemoveRedOutlineCursorObject: @ 8133FE8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08134034 @ =gTasks+0x8
- adds r4, r0, r1
- ldr r0, [r4, 0x8]
- bl Free
- ldrh r0, [r4, 0xE]
- ldr r6, _08134038 @ =0x0000ffff
- cmp r0, r6
- beq _0813400C
- bl FreeSpriteTilesByTag
-_0813400C:
- ldrh r0, [r4, 0x10]
- cmp r0, r6
- beq _08134016
- bl FreeSpritePaletteByTag
-_08134016:
- ldrb r1, [r4, 0xC]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0813403C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0
- bl DestroyTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08134034: .4byte gTasks+0x8
-_08134038: .4byte 0x0000ffff
-_0813403C: .4byte gSprites
- thumb_func_end ListMenuRemoveRedOutlineCursorObject
-
- thumb_func_start ObjectCB_RedArrowCursor
-ObjectCB_RedArrowCursor: @ 8134040
- push {lr}
- adds r2, r0, 0
- ldr r1, _08134068 @ =gSineTable
- ldrh r3, [r2, 0x2E]
- lsls r0, r3, 24
- lsrs r0, 23
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _08134058
- adds r0, 0x3F
-_08134058:
- asrs r0, 6
- strh r0, [r2, 0x24]
- adds r0, r3, 0
- adds r0, 0x8
- strh r0, [r2, 0x2E]
- pop {r0}
- bx r0
- .align 2, 0
-_08134068: .4byte gSineTable
- thumb_func_end ObjectCB_RedArrowCursor
-
- thumb_func_start nullsub_95
-nullsub_95: @ 813406C
- bx lr
- thumb_func_end nullsub_95
-
- thumb_func_start ListMenuAddRedArrowCursorObject
-ListMenuAddRedArrowCursorObject: @ 8134070
- push {r4-r7,lr}
- sub sp, 0x28
- adds r5, r0, 0
- ldr r0, _081340B4 @ =gUnknown_84633D8
- str r0, [sp, 0x18]
- ldr r6, _081340B8 @ =0xffff0000
- add r0, sp, 0x18
- ldr r1, [r0, 0x4]
- ands r1, r6
- movs r2, 0x80
- orrs r1, r2
- ldrh r2, [r5, 0x6]
- lsls r2, 16
- ldr r4, _081340BC @ =0x0000ffff
- ands r1, r4
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadCompressedSpriteSheet
- ldrh r2, [r5, 0x8]
- cmp r2, r4
- bne _081340C4
- ldr r0, _081340C0 @ =gUnknown_8463308
- ldrb r1, [r5, 0xA]
- lsls r1, 20
- movs r2, 0x80
- lsls r2, 17
- adds r1, r2
- lsrs r1, 16
- movs r2, 0x20
- bl LoadPalette
- b _081340D6
- .align 2, 0
-_081340B4: .4byte gUnknown_84633D8
-_081340B8: .4byte 0xffff0000
-_081340BC: .4byte 0x0000ffff
-_081340C0: .4byte gUnknown_8463308
-_081340C4:
- ldr r0, _08134160 @ =gUnknown_8463308
- str r0, [sp, 0x20]
- add r0, sp, 0x20
- ldr r1, [r0, 0x4]
- ands r1, r6
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpritePalette
-_081340D6:
- ldr r0, _08134164 @ =nullsub_95
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _08134168 @ =gTasks+0x8
- adds r4, r0, r1
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x4]
- mov r1, sp
- ldr r0, _0813416C @ =gUnknown_84632F0
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- mov r1, sp
- ldrh r0, [r5, 0x6]
- strh r0, [r1]
- ldrh r0, [r5, 0x8]
- strh r0, [r1, 0x2]
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- strb r0, [r4]
- ldr r3, _08134170 @ =gSprites
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r2, 0x8
- strh r2, [r0, 0x24]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x26]
- ldrh r1, [r5, 0x8]
- ldr r0, _08134174 @ =0x0000ffff
- cmp r1, r0
- bne _08134156
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5, 0xA]
- lsls r2, 4
- ldrb r3, [r1, 0x5]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
-_08134156:
- adds r0, r6, 0
- add sp, 0x28
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08134160: .4byte gUnknown_8463308
-_08134164: .4byte nullsub_95
-_08134168: .4byte gTasks+0x8
-_0813416C: .4byte gUnknown_84632F0
-_08134170: .4byte gSprites
-_08134174: .4byte 0x0000ffff
- thumb_func_end ListMenuAddRedArrowCursorObject
-
- thumb_func_start ListMenuUpdateRedArrowCursorObject
-ListMenuUpdateRedArrowCursorObject: @ 8134178
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r3, r0, 2
- adds r3, r0
- lsls r3, 3
- ldr r0, _081341A8 @ =gTasks+0x8
- adds r3, r0
- ldr r5, _081341AC @ =gSprites
- ldrb r4, [r3]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r5
- strh r1, [r0, 0x20]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x22]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081341A8: .4byte gTasks+0x8
-_081341AC: .4byte gSprites
- thumb_func_end ListMenuUpdateRedArrowCursorObject
-
- thumb_func_start ListMenuRemoveRedArrowCursorObject
-ListMenuRemoveRedArrowCursorObject: @ 81341B0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _081341F4 @ =gTasks+0x8
- adds r4, r0, r1
- ldrh r0, [r4, 0x2]
- ldr r6, _081341F8 @ =0x0000ffff
- cmp r0, r6
- beq _081341CE
- bl FreeSpriteTilesByTag
-_081341CE:
- ldrh r0, [r4, 0x4]
- cmp r0, r6
- beq _081341D8
- bl FreeSpritePaletteByTag
-_081341D8:
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081341FC @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r5, 0
- bl DestroyTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081341F4: .4byte gTasks+0x8
-_081341F8: .4byte 0x0000ffff
-_081341FC: .4byte gSprites
- thumb_func_end ListMenuRemoveRedArrowCursorObject
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/new_game.s b/asm/new_game.s
index ad4983770..e2b9c876f 100644
--- a/asm/new_game.s
+++ b/asm/new_game.s
@@ -159,7 +159,7 @@ sub_80549F8: @ 80549F8
movs r1, 0x1
movs r3, 0x6
bl Overworld_SetWarpDestination
- bl warp_in
+ bl WarpIntoMap
add sp, 0x4
pop {r0}
bx r0
diff --git a/asm/overworld.s b/asm/overworld.s
index aacb22510..be0fc577f 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -22,7 +22,7 @@ sub_8054BC8: @ 8054BC8
bl sp000_heal_pokemon
bl sub_8054DD8
bl sub_80554BC
- bl warp_in
+ bl WarpIntoMap
pop {r4}
pop {r0}
bx r0
@@ -993,15 +993,15 @@ _0805536C:
_08055374: .4byte gMapHeader
thumb_func_end update_camera_pos_from_warpid
- thumb_func_start warp_in
-warp_in: @ 8055378
+ thumb_func_start WarpIntoMap
+WarpIntoMap: @ 8055378
push {lr}
bl warp_shift
bl set_current_map_header_from_sav1_save_old_name
bl update_camera_pos_from_warpid
pop {r0}
bx r0
- thumb_func_end warp_in
+ thumb_func_end WarpIntoMap
thumb_func_start Overworld_SetWarpDestination
Overworld_SetWarpDestination: @ 805538C
@@ -3571,8 +3571,8 @@ _08056714: .4byte sub_8056534
_08056718: .4byte sub_80565B4
thumb_func_end c2_whiteout
- thumb_func_start sub_805671C
-sub_805671C: @ 805671C
+ thumb_func_start CB2_LoadMap
+CB2_LoadMap: @ 805671C
push {lr}
bl sub_80569BC
bl ScriptContext1_Init
@@ -3590,7 +3590,7 @@ sub_805671C: @ 805671C
_08056740: .4byte sub_80C9BFC
_08056744: .4byte gMain
_08056748: .4byte sub_805674C
- thumb_func_end sub_805671C
+ thumb_func_end CB2_LoadMap
thumb_func_start sub_805674C
sub_805674C: @ 805674C
@@ -3784,8 +3784,8 @@ _080568D8: .4byte gFieldCallback
_080568DC: .4byte sub_807DD44
thumb_func_end sub_80568C4
- thumb_func_start c2_exit_to_overworld_1_continue_scripts_restart_music
-c2_exit_to_overworld_1_continue_scripts_restart_music: @ 80568E0
+ thumb_func_start CB2_ReturnToFieldContinueScriptPlayMapMusic
+CB2_ReturnToFieldContinueScriptPlayMapMusic: @ 80568E0
push {lr}
bl sub_80569BC
ldr r1, _080568F4 @ =gFieldCallback
@@ -3797,7 +3797,7 @@ c2_exit_to_overworld_1_continue_scripts_restart_music: @ 80568E0
.align 2, 0
_080568F4: .4byte gFieldCallback
_080568F8: .4byte FieldCallback_ReturnToEventScript2
- thumb_func_end c2_exit_to_overworld_1_continue_scripts_restart_music
+ thumb_func_end CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_start sub_80568FC
sub_80568FC: @ 80568FC
@@ -3858,14 +3858,14 @@ CB2_ContinueSavedGame: @ 8056938
bne _0805699C
bl sav2_x9_clear_bit1
bl warp1_set_to_sav1w
- bl warp_in
- ldr r0, _08056998 @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _08056998 @ =CB2_LoadMap
bl SetMainCallback2
b _080569AC
.align 2, 0
_08056990: .4byte gFieldCallback2
_08056994: .4byte gUnknown_2031DE0
-_08056998: .4byte sub_805671C
+_08056998: .4byte CB2_LoadMap
_0805699C:
ldr r0, _080569B0 @ =gFieldCallback
ldr r1, _080569B4 @ =sub_8056918
@@ -5139,14 +5139,14 @@ sub_8057430: @ 8057430
bne _08057490
bl sav2_x9_clear_bit1
bl warp1_set_to_sav1w
- bl warp_in
- ldr r0, _0805748C @ =sub_805671C
+ bl WarpIntoMap
+ ldr r0, _0805748C @ =CB2_LoadMap
bl SetMainCallback2
b _0805749A
.align 2, 0
_08057484: .4byte gUnknown_2036E28
_08057488: .4byte gUnknown_2031DE0
-_0805748C: .4byte sub_805671C
+_0805748C: .4byte CB2_LoadMap
_08057490:
ldr r0, _080574A0 @ =sub_8056534
bl sub_80565E0
@@ -5304,7 +5304,7 @@ _08057560:
adds r0, r4
ldrh r0, [r0, 0x4]
strh r0, [r1]
- bl warp_in
+ bl WarpIntoMap
ldr r2, _08057610 @ =gPaletteFade
ldrb r0, [r2, 0x8]
movs r1, 0x80
@@ -5620,7 +5620,7 @@ sub_8057854: @ 8057854
cmp r0, 0
bne _08057876
bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _08057880 @ =sub_805671C
+ ldr r0, _08057880 @ =CB2_LoadMap
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
@@ -5630,7 +5630,7 @@ _08057876:
bx r0
.align 2, 0
_0805787C: .4byte gPaletteFade
-_08057880: .4byte sub_805671C
+_08057880: .4byte CB2_LoadMap
thumb_func_end sub_8057854
thumb_func_start c1_link_related
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 58f7529e2..07db16817 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -17844,7 +17844,7 @@ sub_812781C: @ 812781C
str r0, [sp]
ldr r0, _08127848 @ =sub_811FB28
str r0, [sp, 0x4]
- ldr r0, _0812784C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0812784C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -17855,13 +17855,13 @@ sub_812781C: @ 812781C
.align 2, 0
_08127844: .4byte gSpecialVar_0x8005
_08127848: .4byte sub_811FB28
-_0812784C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0812784C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08127850:
movs r0, 0x7F
str r0, [sp]
ldr r0, _08127878 @ =sub_8126DC8
str r0, [sp, 0x4]
- ldr r0, _0812787C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _0812787C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
str r0, [sp, 0x8]
movs r0, 0
movs r1, 0
@@ -17878,7 +17878,7 @@ _08127870:
bx r0
.align 2, 0
_08127878: .4byte sub_8126DC8
-_0812787C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_0812787C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
_08127880: .4byte gUnknown_203B0A0
_08127884: .4byte gSpecialVar_0x8007
thumb_func_end sub_812781C
@@ -17891,7 +17891,7 @@ sub_8127888: @ 8127888
str r0, [sp]
ldr r0, _081278AC @ =sub_811FB28
str r0, [sp, 0x4]
- ldr r0, _081278B0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _081278B0 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
str r0, [sp, 0x8]
movs r0, 0xB
movs r1, 0
@@ -17903,7 +17903,7 @@ sub_8127888: @ 8127888
bx r0
.align 2, 0
_081278AC: .4byte sub_811FB28
-_081278B0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_081278B0: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_8127888
thumb_func_start sub_81278B4
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 4d917504a..dfcac85f4 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -1134,7 +1134,7 @@ sub_80EBF40: @ 80EBF40
cmp r0, 0
bne _080EBFEA
ldrb r0, [r4, 0x16]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r6, r0, 0
ldrb r0, [r4, 0x16]
ldr r7, _080EBF9C @ =gUnknown_203AAC6
@@ -1174,7 +1174,7 @@ _080EBFB6:
ldrb r0, [r4, 0x16]
adds r1, r7, 0
mov r2, r8
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl ScheduleBgCopyTilemapToVram
mov r1, r8
@@ -1288,7 +1288,7 @@ sub_80EC094: @ 80EC094
ldrb r0, [r4, 0x16]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0
bl ScheduleBgCopyTilemapToVram
bl sub_810EDB0
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 80cc1ab5d..268b65fd8 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -621,7 +621,7 @@ _08102A10: .4byte gUnknown_203ACF0
_08102A14:
ldr r0, [r4]
ldrb r0, [r0, 0x17]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
ldr r1, [r4]
str r0, [r1, 0xC]
ldrb r0, [r1, 0x17]
@@ -754,7 +754,7 @@ _08102B24:
adds r1, r2, 0
adds r1, 0x12
adds r2, 0x10
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0x20
str r0, [sp]
movs r0, 0x14
@@ -804,7 +804,7 @@ _08102B94:
adds r1, r2, 0
adds r1, 0x12
adds r2, 0x10
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0x1
bl HideBg
ldr r0, [r4]
@@ -832,7 +832,7 @@ _08102BD8:
adds r1, r2, 0
adds r1, 0x12
adds r2, 0x10
- bl DestroyListMenu
+ bl DestroyListMenuTask
movs r0, 0x1
bl HideBg
ldr r0, [r4]
@@ -1238,7 +1238,7 @@ _08102F60:
movs r0, 0x1
movs r1, 0
movs r2, 0x3
- bl sub_8107A9C
+ bl ListMenuOverrideSetColors
b _08102F7A
.align 2, 0
_08102F6C: .4byte gUnknown_203ACF0
@@ -1246,7 +1246,7 @@ _08102F70:
movs r0, 0xA
movs r1, 0
movs r2, 0xB
- bl sub_8107A9C
+ bl ListMenuOverrideSetColors
_08102F7A:
pop {r0}
bx r0
@@ -1379,7 +1379,7 @@ _08103098:
ldr r0, [r4]
adds r0, 0x41
ldrb r0, [r0]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
ldr r1, [r4]
str r0, [r1, 0x30]
ldrb r0, [r1, 0x17]
@@ -1700,7 +1700,7 @@ _08103362:
ldr r0, [r4]
adds r0, 0x41
ldrb r0, [r0]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
ldr r1, [r4]
str r0, [r1, 0x30]
ldrb r0, [r1, 0x17]
@@ -2433,7 +2433,7 @@ _08103964:
ldrh r3, [r0, 0x3C]
_0810396E:
adds r0, r5, 0
- bl Unused_ListMenuInit2
+ bl ListMenuInitInRect
ldr r1, [r4]
adds r1, 0x41
strb r0, [r1]
@@ -2467,7 +2467,7 @@ _0810399C:
adds r1, r2, 0
adds r1, 0x36
adds r2, 0x34
- bl DestroyListMenu
+ bl DestroyListMenuTask
b _081039E8
.align 2, 0
_081039B4: .4byte gUnknown_203ACF0
@@ -2480,7 +2480,7 @@ _081039B8:
adds r1, r2, 0
adds r1, 0x3A
adds r2, 0x38
- bl DestroyListMenu
+ bl DestroyListMenuTask
b _081039E8
.align 2, 0
_081039D0: .4byte gUnknown_203ACF0
@@ -2493,7 +2493,7 @@ _081039D4:
adds r1, r2, 0
adds r1, 0x3E
adds r2, 0x3C
- bl DestroyListMenu
+ bl DestroyListMenuTask
_081039E8:
pop {r0}
bx r0
@@ -2572,7 +2572,7 @@ sub_8103A40: @ 8103A40
movs r1, 0
movs r2, 0x28
adds r3, r6, 0
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldr r0, _08103AC4 @ =gBaseStats
lsls r4, r5, 3
subs r4, r5
@@ -2587,7 +2587,7 @@ sub_8103A40: @ 8103A40
lsrs r1, 24
movs r2, 0x78
adds r3, r6, 0
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldrb r1, [r4, 0x7]
cmp r5, r1
beq _08103AB6
@@ -2599,7 +2599,7 @@ sub_8103A40: @ 8103A40
lsrs r1, 24
movs r2, 0x98
adds r3, r6, 0
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08103AB6:
add sp, 0x4
pop {r4-r7}
@@ -7753,7 +7753,7 @@ _08106478:
lsrs r1, 24
movs r2, 0
movs r3, 0x1
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldrb r1, [r4, 0x7]
cmp r5, r1
beq _08106504
@@ -7765,7 +7765,7 @@ _08106478:
lsrs r1, 24
movs r2, 0x20
movs r3, 0x1
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08106504:
ldr r7, _081066B8 @ =gUnknown_203ACF0
ldr r0, [r7]
diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s
index a6a83033a..4eb654a50 100644
--- a/asm/pokemon_icon.s
+++ b/asm/pokemon_icon.s
@@ -519,8 +519,8 @@ _080971C0:
_080971C8: .4byte gUnknown_83D4038
thumb_func_end sub_8097198
- thumb_func_start sub_80971CC
-sub_80971CC: @ 80971CC
+ thumb_func_start GetValidMonIconPalettePtr
+GetValidMonIconPalettePtr: @ 80971CC
push {lr}
lsls r0, 16
lsrs r2, r0, 16
@@ -542,7 +542,7 @@ _080971DC:
.align 2, 0
_080971F0: .4byte gUnknown_83D4038
_080971F4: .4byte gUnknown_83D3E80
- thumb_func_end sub_80971CC
+ thumb_func_end GetValidMonIconPalettePtr
thumb_func_start sub_80971F8
sub_80971F8: @ 80971F8
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index af4b28a27..7ef149fec 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -5644,20 +5644,20 @@ sub_814A468: @ 814A468
ldr r1, _0814A530 @ =gUnknown_846D94C
bl StringAppend
_0814A4C2:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r4, _0814A52C @ =gUnknown_203F3D8
ldr r1, [r4]
adds r1, 0x26
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r1, [r4]
adds r1, 0x66
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r4]
adds r0, 0xA6
ldr r1, _0814A534 @ =gUnknown_841CBA9
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x4
movs r1, 0x8
movs r2, 0x16
@@ -5706,15 +5706,15 @@ sub_814A53C: @ 814A53C
ldr r1, [r4]
adds r1, 0x26
bl CopyItemName
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r1, [r4]
adds r1, 0x26
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r4]
adds r0, 0xA6
ldr r1, _0814A5B0 @ =gUnknown_841CBCA
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x4
movs r1, 0x8
movs r2, 0x16
@@ -5761,15 +5761,15 @@ sub_814A5B4: @ 814A5B4
ldr r1, [r4]
adds r1, 0x26
bl CopyItemName
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r1, [r4]
adds r1, 0x26
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r4]
adds r0, 0xA6
ldr r1, _0814A628 @ =gUnknown_841CBE4
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x4
movs r1, 0x9
movs r2, 0x16
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s
index 31e3752d3..5c91419df 100644
--- a/asm/pokemon_special_anim.s
+++ b/asm/pokemon_special_anim.s
@@ -1815,15 +1815,15 @@ _0811D3C0:
_0811D3D4: .4byte gUnknown_841B295
_0811D3D8: .4byte gUnknown_841B2A7
_0811D3DC:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_811D0F4
adds r1, r0, 0
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
bl sub_811D0D0
adds r1, r0, 0
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
adds r4, 0x14
ldr r1, _0811D400 @ =gUnknown_841B32E
b _0811D470
@@ -1866,20 +1866,20 @@ _0811D444: .4byte gUnknown_841B2F1
_0811D448: .4byte gUnknown_841B2ED
_0811D44C: .4byte gUnknown_8459998
_0811D450:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_811D0F4
adds r1, r0, 0
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
bl sub_811D0C4
adds r1, r0, 0
movs r0, 0x1
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
adds r4, 0x14
ldr r1, _0811D478 @ =gUnknown_841B306
_0811D470:
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _0811D4A2
.align 2, 0
_0811D478: .4byte gUnknown_841B306
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 0c9536a8e..a5e91a4a6 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -8190,7 +8190,7 @@ sub_808FBA4: @ 808FBA4
sub sp, 0xC
lsls r0, 24
lsrs r6, r0, 24
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r1, _0808FBC8 @ =gUnknown_83CEA88
lsls r0, r6, 3
adds r0, r1
@@ -8231,7 +8231,7 @@ _0808FC04:
adds r1, r2
_0808FC0C:
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
b _0808FC7C
.align 2, 0
_0808FC14: .4byte gUnknown_20397B0
@@ -8281,7 +8281,7 @@ _0808FC62:
ldr r0, _0808FCE0 @ =0x000021db
adds r1, r0
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
_0808FC7C:
ldr r5, _0808FCDC @ =gUnknown_20397B0
ldr r0, [r5]
@@ -8292,7 +8292,7 @@ _0808FC7C:
lsls r1, r6, 3
adds r1, r2
ldr r1, [r1]
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x1
movs r1, 0x11
bl FillWindowPixelBuffer
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index f561ad660..2fa836876 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5747,7 +5747,7 @@ _08137574:
sub_8137578: @ 8137578
push {r4-r7,lr}
sub sp, 0xD4
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r7, _081375E8 @ =gUnknown_203B140
ldr r0, [r7]
ldr r4, _081375EC @ =0x00003290
@@ -5760,7 +5760,7 @@ sub_8137578: @ 8137578
adds r0, r1
ldr r1, [r0]
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r7]
adds r0, r4
movs r1, 0x24
@@ -5777,7 +5777,7 @@ _081375B2:
bl ConvertIntToDecimalStringN
movs r0, 0x1
add r1, sp, 0x14
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r7]
adds r0, r4
movs r1, 0x23
@@ -5824,7 +5824,7 @@ _0813761C:
_08137626:
adds r1, r4, 0
movs r0, 0x2
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r4, _08137664 @ =gUnknown_203B140
ldr r0, [r4]
ldr r1, _08137668 @ =0x00003290
@@ -5901,7 +5901,7 @@ _081376C0:
ldr r1, _081376D8 @ =gUnknown_8419841
_081376CE:
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _081376E6
.align 2, 0
_081376D8: .4byte gUnknown_8419841
@@ -5909,7 +5909,7 @@ _081376DC:
add r4, sp, 0x3C
ldr r1, _08137714 @ =gUnknown_8419822
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
_081376E6:
ldr r0, _08137718 @ =gUnknown_203B140
ldr r0, [r0]
@@ -5944,7 +5944,7 @@ _08137720: .4byte gUnknown_8463FA4
sub_8137724: @ 8137724
push {r4-r6,lr}
sub sp, 0xD4
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r5, _081377A0 @ =gUnknown_203B140
ldr r0, [r5]
ldr r4, _081377A4 @ =0x00003290
@@ -5957,7 +5957,7 @@ sub_8137724: @ 8137724
adds r0, r1
ldr r1, [r0]
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r5]
adds r0, r4
movs r1, 0x24
@@ -5974,7 +5974,7 @@ _0813775E:
bl ConvertIntToDecimalStringN
movs r0, 0x1
add r1, sp, 0x14
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r0, [r5]
adds r0, r4
movs r1, 0x23
@@ -6025,7 +6025,7 @@ _081377D0:
ldr r1, _081377E8 @ =gUnknown_841979D
_081377DE:
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _081377F6
.align 2, 0
_081377E8: .4byte gUnknown_841979D
@@ -6033,7 +6033,7 @@ _081377EC:
add r4, sp, 0x3C
ldr r1, _08137820 @ =gUnknown_8419782
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
_081377F6:
ldr r0, _08137824 @ =gUnknown_203B140
ldr r0, [r0]
@@ -6077,7 +6077,7 @@ _08137846:
_08137850:
adds r1, r4, 0
movs r0, 0x2
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r4, _08137890 @ =gUnknown_203B140
ldr r0, [r4]
ldr r1, _08137894 @ =0x00003290
@@ -6149,7 +6149,7 @@ _081378EA:
ldr r1, _081378F8 @ =gUnknown_841988A
_081378EE:
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
b _08137906
.align 2, 0
_081378F8: .4byte gUnknown_841988A
@@ -6157,7 +6157,7 @@ _081378FC:
add r4, sp, 0x3C
ldr r1, _08137934 @ =gUnknown_8419860
adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
_08137906:
ldr r0, _08137938 @ =gUnknown_203B140
ldr r0, [r0]
@@ -6636,7 +6636,7 @@ _08137CA4:
adds r3, r2
lsrs r3, 16
movs r2, 0x3
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08137CDE:
adds r0, r4, 0x1
lsls r0, 24
@@ -6660,7 +6660,7 @@ _08137CDE:
lsrs r1, 24
movs r2, 0x3
movs r3, 0x75
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08137D0E:
pop {r4,r5}
pop {r0}
@@ -8325,7 +8325,7 @@ _08138A62:
lsrs r1, 24
movs r2, 0x2F
movs r3, 0x23
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldr r1, [r6]
adds r4, r1, r4
ldr r3, _08138AB8 @ =0x00003221
@@ -8342,7 +8342,7 @@ _08138A62:
lsrs r1, 24
movs r2, 0x53
movs r3, 0x23
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
b _08138B0E
.align 2, 0
_08138AB0: .4byte 0x00003003
@@ -8365,7 +8365,7 @@ _08138ABC:
lsrs r1, 24
movs r2, 0
movs r3, 0x3
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
ldr r2, [r6]
adds r4, r2, r4
ldr r1, _08138B1C @ =0x00003221
@@ -8381,7 +8381,7 @@ _08138ABC:
lsrs r1, 24
movs r2, 0x24
movs r3, 0x3
- bl blit_move_info_icon
+ bl BlitMoveInfoIcon
_08138B04:
ldr r0, [r6]
adds r0, r5
diff --git a/asm/safari_zone.s b/asm/safari_zone.s
deleted file mode 100644
index 4bc9d6eb7..000000000
--- a/asm/safari_zone.s
+++ /dev/null
@@ -1,167 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start GetSafariZoneFlag
-GetSafariZoneFlag: @ 80A0E90
- push {lr}
- movs r0, 0x80
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetSafariZoneFlag
-
- thumb_func_start sub_80A0EA4
-sub_80A0EA4: @ 80A0EA4
- push {lr}
- movs r0, 0x80
- lsls r0, 4
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end sub_80A0EA4
-
- thumb_func_start ResetSafariZoneFlag
-ResetSafariZoneFlag: @ 80A0EB4
- push {lr}
- movs r0, 0x80
- lsls r0, 4
- bl FlagClear
- pop {r0}
- bx r0
- thumb_func_end ResetSafariZoneFlag
-
- thumb_func_start sub_80A0EC4
-sub_80A0EC4: @ 80A0EC4
- push {lr}
- movs r0, 0x11
- bl IncrementGameStat
- bl sub_80A0EA4
- ldr r1, _080A0EE4 @ =gUnknown_2039994
- movs r0, 0x1E
- strb r0, [r1]
- ldr r1, _080A0EE8 @ =gUnknown_2039996
- movs r2, 0x96
- lsls r2, 2
- adds r0, r2, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080A0EE4: .4byte gUnknown_2039994
-_080A0EE8: .4byte gUnknown_2039996
- thumb_func_end sub_80A0EC4
-
- thumb_func_start sub_80A0EEC
-sub_80A0EEC: @ 80A0EEC
- push {lr}
- bl ResetSafariZoneFlag
- ldr r1, _080A0F04 @ =gUnknown_2039994
- movs r0, 0
- strb r0, [r1]
- ldr r1, _080A0F08 @ =gUnknown_2039996
- movs r0, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080A0F04: .4byte gUnknown_2039994
-_080A0F08: .4byte gUnknown_2039996
- thumb_func_end sub_80A0EEC
-
- thumb_func_start sub_80A0F0C
-sub_80A0F0C: @ 80A0F0C
- push {lr}
- bl GetSafariZoneFlag
- cmp r0, 0
- beq _080A0F24
- ldr r1, _080A0F28 @ =gUnknown_2039996
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _080A0F2C
-_080A0F24:
- movs r0, 0
- b _080A0F34
- .align 2, 0
-_080A0F28: .4byte gUnknown_2039996
-_080A0F2C:
- ldr r0, _080A0F38 @ =gUnknown_81BFBC5
- bl ScriptContext1_SetupScript
- movs r0, 0x1
-_080A0F34:
- pop {r1}
- bx r1
- .align 2, 0
-_080A0F38: .4byte gUnknown_81BFBC5
- thumb_func_end sub_80A0F0C
-
- thumb_func_start sub_80A0F3C
-sub_80A0F3C: @ 80A0F3C
- push {lr}
- ldr r0, _080A0F48 @ =gUnknown_81BFBAA
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_080A0F48: .4byte gUnknown_81BFBAA
- thumb_func_end sub_80A0F3C
-
- thumb_func_start sub_80A0F4C
-sub_80A0F4C: @ 80A0F4C
- push {lr}
- ldr r0, _080A0F60 @ =gUnknown_2039994
- ldrb r0, [r0]
- cmp r0, 0
- beq _080A0F68
- ldr r0, _080A0F64 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _080A0FB0
- .align 2, 0
-_080A0F60: .4byte gUnknown_2039994
-_080A0F64: .4byte CB2_ReturnToField
-_080A0F68:
- ldr r0, _080A0F88 @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080A0F9C
- ldr r0, _080A0F8C @ =gUnknown_81BFB87
- bl ScriptContext2_RunNewScript
- bl warp_in
- ldr r1, _080A0F90 @ =gFieldCallback
- ldr r0, _080A0F94 @ =sub_807E3EC
- str r0, [r1]
- ldr r0, _080A0F98 @ =sub_805671C
- bl SetMainCallback2
- b _080A0FB0
- .align 2, 0
-_080A0F88: .4byte gBattleOutcome
-_080A0F8C: .4byte gUnknown_81BFB87
-_080A0F90: .4byte gFieldCallback
-_080A0F94: .4byte sub_807E3EC
-_080A0F98: .4byte sub_805671C
-_080A0F9C:
- cmp r0, 0x7
- bne _080A0FB0
- ldr r0, _080A0FB4 @ =gUnknown_81BFBD7
- bl ScriptContext1_SetupScript
- bl ScriptContext1_Stop
- ldr r0, _080A0FB8 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080A0FB0:
- pop {r0}
- bx r0
- .align 2, 0
-_080A0FB4: .4byte gUnknown_81BFBD7
-_080A0FB8: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_80A0F4C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s
index 60f416b48..6b4cdd1a8 100644
--- a/asm/script_pokemon_util_80A0058.s
+++ b/asm/script_pokemon_util_80A0058.s
@@ -411,13 +411,13 @@ _080A0368:
movs r0, 0x1
strh r0, [r1]
_080A036E:
- ldr r0, _080A037C @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080A037C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
pop {r0}
bx r0
.align 2, 0
_080A0378: .4byte gSpecialVar_Result
-_080A037C: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080A037C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80A0350
thumb_func_start sub_80A0380
@@ -455,14 +455,14 @@ _080A03B8:
movs r0, 0x1
strh r0, [r1]
_080A03C2:
- ldr r0, _080A03D4 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
+ ldr r0, _080A03D4 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
bl SetMainCallback2
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A03D0: .4byte gSpecialVar_Result
-_080A03D4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
+_080A03D4: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
thumb_func_end sub_80A039C
thumb_func_start sub_80A03D8
diff --git a/asm/shop.s b/asm/shop.s
index 51955f88d..01bca8033 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -572,7 +572,7 @@ _0809AEAC:
ldrb r0, [r0, 0x16]
lsls r0, 28
lsrs r0, 28
- bl sub_813F66C
+ bl BuyMenuInitWindows
bl sub_809B080
b _0809AF5E
.align 2, 0
@@ -819,7 +819,7 @@ sub_809B15C: @ 809B15C
push {lr}
bl sub_809B764
bl sub_809BAFC
- bl sub_813F6D0
+ bl BuyMenuDrawMoneyBox
movs r0, 0
bl ScheduleBgCopyTilemapToVram
movs r0, 0x1
@@ -1116,7 +1116,7 @@ _0809B398:
movs r1, 0x2
adds r2, r7, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
b _0809B400
.align 2, 0
_0809B3D0: .4byte 0x00000177
@@ -1138,7 +1138,7 @@ _0809B3D8:
movs r1, 0x2
adds r2, r7, 0
movs r3, 0x2
- bl sub_813F6F4
+ bl BuyMenuPrint
_0809B400:
add sp, 0x14
pop {r4-r7}
@@ -1204,7 +1204,7 @@ _0809B45C:
adds r0, r6, 0
movs r1, 0
movs r3, 0x69
- bl sub_813F6F4
+ bl BuyMenuPrint
_0809B480:
add sp, 0x14
pop {r4-r6}
@@ -1251,7 +1251,7 @@ sub_809B494: @ 809B494
movs r1, 0
adds r2, r5, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
lsls r0, r7, 16
lsrs r0, 16
bl ItemIdToBattleMoveId
@@ -1273,7 +1273,7 @@ sub_809B494: @ 809B494
movs r1, 0x2
adds r2, r5, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
b _0809B55C
.align 2, 0
_0809B514: .4byte gStringVar1
@@ -1294,7 +1294,7 @@ _0809B528:
movs r0, 0x6
movs r1, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
ldr r2, _0809B568 @ =gUnknown_8416217
movs r0, 0x10
str r0, [sp]
@@ -1305,7 +1305,7 @@ _0809B528:
movs r0, 0x6
movs r1, 0x2
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
_0809B55C:
add sp, 0x14
pop {r4-r7}
@@ -1388,7 +1388,7 @@ _0809B5E0:
movs r0, 0x4
movs r1, 0x2
movs r3, 0x1
- bl sub_813F6F4
+ bl BuyMenuPrint
_0809B5F8:
add sp, 0x14
pop {r4,r5}
@@ -2134,7 +2134,7 @@ sub_809BB44: @ 809BB44
movs r1, 0
adds r2, r4, 0
movs r3, 0x2
- bl sub_813F6F4
+ bl BuyMenuPrint
add sp, 0x14
pop {r4}
pop {r0}
@@ -2164,7 +2164,7 @@ sub_809BBC0: @ 809BBC0
cmp r0, 0
bne _0809BC8E
ldrb r0, [r5, 0xE]
- bl ListMenuHandleInput
+ bl ListMenu_ProcessInput
adds r4, r0, 0
ldrb r0, [r5, 0xE]
ldr r7, _0809BC08 @ =gUnknown_2039942
@@ -2223,7 +2223,7 @@ _0809BC1A:
ldr r1, _0809BC74 @ =gUnknown_8416842
ldr r2, _0809BC78 @ =sub_809BF98
adds r0, r6, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
b _0809BC8E
.align 2, 0
_0809BC70: .4byte gSaveBlock1Ptr
@@ -2236,7 +2236,7 @@ _0809BC7C:
ldr r1, _0809BC98 @ =gUnknown_8416766
ldr r2, _0809BC9C @ =sub_809BCA0
adds r0, r6, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
_0809BC8E:
pop {r4-r7}
pop {r0}
@@ -2265,7 +2265,7 @@ sub_809BCA0: @ 809BCA0
lsrs r4, 16
movs r0, 0x1
movs r1, 0
- bl sub_813F7C0
+ bl BuyMenuQuantityBoxThinBorder
ldr r0, _0809BD44 @ =gStringVar1
adds r1, r4, 0
movs r2, 0x1
@@ -2287,11 +2287,11 @@ sub_809BCA0: @ 809BCA0
movs r1, 0x2
adds r2, r6, 0
movs r3, 0
- bl sub_813F6F4
+ bl BuyMenuPrint
strh r4, [r5, 0x2]
movs r0, 0x3
movs r1, 0
- bl sub_813F7A8
+ bl BuyMenuQuantityBoxNormalBorder
adds r0, r7, 0
bl sub_809BB44
movs r0, 0
@@ -2423,7 +2423,7 @@ _0809BDD4:
ldr r1, _0809BE4C @ =gUnknown_841678E
ldr r2, _0809BE50 @ =sub_809BE90
adds r0, r5, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
b _0809BE88
.align 2, 0
_0809BE3C: .4byte gMain
@@ -2464,7 +2464,7 @@ sub_809BE90: @ 809BE90
lsls r0, 24
lsrs r0, 24
ldr r1, _0809BEA0 @ =gUnknown_83DF0B4
- bl sub_813F7D8
+ bl BuyMenuConfirmPurchase
pop {r0}
bx r0
.align 2, 0
@@ -2493,7 +2493,7 @@ sub_809BEA4: @ 809BEA4
ldr r1, _0809BEEC @ =gUnknown_84167E7
ldr r2, _0809BEF0 @ =sub_809BF0C
adds r0, r5, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
adds r0, r5, 0
bl nullsub_52
ldrh r0, [r4, 0xA]
@@ -2509,7 +2509,7 @@ _0809BEF4:
ldr r1, _0809BF04 @ =gUnknown_8416861
ldr r2, _0809BF08 @ =sub_809BF98
adds r0, r5, 0
- bl sub_813F75C
+ bl BuyMenuDisplayMessage
_0809BEFE:
pop {r4,r5}
pop {r0}
@@ -2691,7 +2691,7 @@ sub_809C04C: @ 809C04C
ldrb r0, [r2, 0xE]
movs r1, 0
movs r2, 0
- bl DestroyListMenu
+ bl DestroyListMenuTask
bl sub_809B604
ldr r0, _0809C090 @ =CB2_ReturnToField
bl SetMainCallback2
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 9f6ef8662..4f898b88c 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -160,7 +160,7 @@ sub_806EE7C: @ 806EE7C
movs r1, 0
bl DrawStdWindowFrame
ldr r0, _0806EEFC @ =gStringVar1
- ldr r1, _0806EF00 @ =gUnknown_2039996
+ ldr r1, _0806EF00 @ =gSafariZoneStepCounter
ldrh r1, [r1]
movs r2, 0x1
movs r3, 0x3
@@ -172,7 +172,7 @@ sub_806EE7C: @ 806EE7C
movs r3, 0x3
bl ConvertIntToDecimalStringN
ldr r0, _0806EF08 @ =gStringVar3
- ldr r1, _0806EF0C @ =gUnknown_2039994
+ ldr r1, _0806EF0C @ =gNumSafariBalls
ldrb r1, [r1]
movs r2, 0x1
movs r3, 0x2
@@ -203,10 +203,10 @@ sub_806EE7C: @ 806EE7C
_0806EEF4: .4byte gUnknown_2037101
_0806EEF8: .4byte gUnknown_83A738C
_0806EEFC: .4byte gStringVar1
-_0806EF00: .4byte gUnknown_2039996
+_0806EF00: .4byte gSafariZoneStepCounter
_0806EF04: .4byte gStringVar2
_0806EF08: .4byte gStringVar3
-_0806EF0C: .4byte gUnknown_2039994
+_0806EF0C: .4byte gNumSafariBalls
_0806EF10: .4byte gStringVar4
_0806EF14: .4byte gUnknown_84162A9
thumb_func_end sub_806EE7C
@@ -1009,7 +1009,7 @@ sub_806F554: @ 806F554
bl sub_806EF18
bl sub_80F7998
bl sub_806FEA0
- bl sub_80A0F3C
+ bl SafariZoneRetirePrompt
movs r0, 0x1
pop {r1}
bx r1
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index 137ee69c1..609cf8366 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -2362,10 +2362,10 @@ _08129664:
ldrb r1, [r4, 0x8]
cmp r0, r1
beq _081296EC
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
movs r0, 0
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r1, _08129684 @ =gUnknown_841B3AA
b _081296D8
.align 2, 0
@@ -2404,14 +2404,14 @@ _081296BE:
ldrb r5, [r5]
cmp r0, r5
beq _081296EC
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
movs r0, 0
adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
ldr r1, _081296E8 @ =gUnknown_841B3BE
_081296D8:
adds r0, r6, 0
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
movs r0, 0x1
b _081296EE
.align 2, 0
@@ -3957,11 +3957,11 @@ sub_812A240: @ 812A240
beq _0812A280
b _0812A28A
_0812A250:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
bl sub_8129814
adds r1, r0, 0
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r0, 0x5
movs r1, 0
bl sub_812A578
@@ -4122,11 +4122,11 @@ sub_812A378: @ 812A378
beq _0812A3BC
b _0812A3C6
_0812A388:
- bl UnkTextUtil_Reset
+ bl DynamicPlaceholderTextUtil_Reset
ldr r0, _0812A3B4 @ =gSaveBlock2Ptr
ldr r1, [r0]
movs r0, 0
- bl UnkTextUtil_SetPtrI
+ bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
movs r0, 0x9
movs r1, 0
bl sub_812A578
@@ -4455,7 +4455,7 @@ _0812A5F8:
adds r0, r1, 0
adds r0, 0x22
ldr r1, [r4]
- bl UnkTextUtil_StringExpandPlaceholders
+ bl DynamicPlaceholderTextUtil_ExpandPlaceholders
ldr r0, [r5]
adds r6, r0, 0
adds r6, 0x22
diff --git a/asm/unk_text_util.s b/asm/unk_text_util.s
deleted file mode 100644
index 15d21c95a..000000000
--- a/asm/unk_text_util.s
+++ /dev/null
@@ -1,130 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start UnkTextUtil_Reset
-UnkTextUtil_Reset: @ 813CC90
- push {lr}
- ldr r1, _0813CCA8 @ =gUnknown_203F34C
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0x1C
-_0813CC9A:
- str r2, [r0]
- subs r0, 0x4
- cmp r0, r1
- bge _0813CC9A
- pop {r0}
- bx r0
- .align 2, 0
-_0813CCA8: .4byte gUnknown_203F34C
- thumb_func_end UnkTextUtil_Reset
-
- thumb_func_start UnkTextUtil_SetPtrI
-UnkTextUtil_SetPtrI: @ 813CCAC
- push {lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _0813CCC0
- ldr r1, _0813CCC4 @ =gUnknown_203F34C
- lsls r0, 2
- adds r0, r1
- str r2, [r0]
-_0813CCC0:
- pop {r0}
- bx r0
- .align 2, 0
-_0813CCC4: .4byte gUnknown_203F34C
- thumb_func_end UnkTextUtil_SetPtrI
-
- thumb_func_start UnkTextUtil_StringExpandPlaceholders
-UnkTextUtil_StringExpandPlaceholders: @ 813CCC8
- push {r4,r5,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _0813CD08
- ldr r5, _0813CCE4 @ =gUnknown_203F34C
-_0813CCD8:
- cmp r1, 0xF7
- beq _0813CCE8
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- b _0813CD00
- .align 2, 0
-_0813CCE4: .4byte gUnknown_203F34C
-_0813CCE8:
- adds r4, 0x1
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- cmp r1, 0
- beq _0813CCFE
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
-_0813CCFE:
- adds r4, 0x1
-_0813CD00:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0813CCD8
-_0813CD08:
- movs r0, 0xFF
- strb r0, [r2]
- adds r0, r2, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end UnkTextUtil_StringExpandPlaceholders
-
- thumb_func_start UnkTextUtil_GetPtrI
-UnkTextUtil_GetPtrI: @ 813CD14
- lsls r0, 24
- ldr r1, _0813CD20 @ =gUnknown_203F34C
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_0813CD20: .4byte gUnknown_203F34C
- thumb_func_end UnkTextUtil_GetPtrI
-
- thumb_func_start sub_813CD24
-sub_813CD24: @ 813CD24
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- lsrs r2, r0, 17
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- cmp r2, 0x4B
- bhi _0813CD48
- ldr r0, _0813CD44 @ =gUnknown_8464300
- adds r0, r2, r0
- ldrb r0, [r0]
- asrs r0, r1
- movs r1, 0xF
- ands r0, r1
- b _0813CD4A
- .align 2, 0
-_0813CD44: .4byte gUnknown_8464300
-_0813CD48:
- movs r0, 0x3
-_0813CD4A:
- pop {r1}
- bx r1
- thumb_func_end sub_813CD24
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/common_syms/list_menu.txt b/common_syms/list_menu.txt
new file mode 100644
index 000000000..ed5343618
--- /dev/null
+++ b/common_syms/list_menu.txt
@@ -0,0 +1,2 @@
+gListMenuOverride
+gMultiuseListMenuTemplate
diff --git a/data/buy_menu_helpers.s b/data/buy_menu_helpers.s
deleted file mode 100644
index a59b8e069..000000000
--- a/data/buy_menu_helpers.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .section .rodata
- .align 2
-
-gUnknown_8464804:: @ 8464804
- .incbin "baserom.gba", 0x464804, 0x38
-
-gUnknown_846483C:: @ 846483C
- .incbin "baserom.gba", 0x46483C, 0x40
-
-gUnknown_846487C:: @ 846487C
- .incbin "baserom.gba", 0x46487C, 0x8
-
-gUnknown_8464884:: @ 8464884
- .incbin "baserom.gba", 0x464884, 0xC
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index bbd53eca8..d16de696f 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -759,8 +759,7 @@ gUnknown_84524C4:: @ 84524C4
gUnknown_8452C4C:: @ 8452C4C
.incbin "baserom.gba", 0x452C4C, 0x48
-gUnknown_8452C94:: @ 8452C94
- .incbin "baserom.gba", 0x452C94, 0x60
+ .section .rodata.8452CF4
gUnknown_8452CF4:: @ 8452CF4
.incbin "baserom.gba", 0x452CF4, 0x8
diff --git a/data/graphics.s b/data/graphics.s
index b655cadc7..83d14001d 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -16029,14 +16029,14 @@ gFile_graphics_mail_retro_map_tilemap:: @ 8E95C88
.incbin "graphics/mail/retro/map.bin.lz"
.align 2
-gUnknown_8E95D9C:: @ 8E95D9C
- .incbin "baserom.gba", 0xE95D9C, 0x20 @UNKNOWN
+gFireRedMenuElements1_Pal:: @ 8E95D9C
+ .incbin "graphics/interface/dex_caught_pokeball.gbapal"
-gUnknown_8E95DBC:: @ 8E95DBC
- .incbin "baserom.gba", 0xE95DBC, 0x20 @UNKNOWN
+gFireRedMenuElements2_Pal:: @ 8E95DBC
+ .incbin "graphics/interface/pokemon_types.gbapal"
-gUnknown_8E95DDC:: @ 8E95DDC
- .incbin "baserom.gba", 0xE95DDC, 0x2000 @UNKNOWN
+gFireRedMenuElements_Gfx:: @ 8E95DDC
+ .incbin "graphics/interface/dex_caught_pokeball_and_pokemon_types.4bpp"
gUnknown_8E97DDC:: @ 8E97DDC
.incbin "baserom.gba", 0xE97DDC, 0x20 @UNKNOWN
diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc
index f3205689d..899ed20e6 100644
--- a/data/map_event_scripts.inc
+++ b/data/map_event_scripts.inc
@@ -1065,7 +1065,7 @@ Text_1A5446:: @ 81A5446
.string "Want to give a nickname to the\n"
.string "{STR_VAR_2} you received?$"
-gUnknown_81A5476:: @ 81A5476
+gText_PkmnFainted3:: @ 81A5476
.string "{STR_VAR_1} fainted…\p"
.string "$"
@@ -4178,16 +4178,16 @@ gUnknown_81BFB5F:: @ 81BFB5F
gUnknown_81BFB65:: @ 81BFB65
.incbin "baserom.gba", 0x1BFB65, 0x22
-gUnknown_81BFB87:: @ 81BFB87
+EventScript_SafariWarpOut:: @ 81BFB87
.incbin "baserom.gba", 0x1BFB87, 0x23
-gUnknown_81BFBAA:: @ 81BFBAA
+EventScript_SafariRetire:: @ 81BFBAA
.incbin "baserom.gba", 0x1BFBAA, 0x1B
-gUnknown_81BFBC5:: @ 81BFBC5
+EventScript_SafariTimesUp:: @ 81BFBC5
.incbin "baserom.gba", 0x1BFBC5, 0x12
-gUnknown_81BFBD7:: @ 81BFBD7
+EventScript_SafariOutOfBalls:: @ 81BFBD7
.incbin "baserom.gba", 0x1BFBD7, 0x2D5
gUnknown_81BFEAC:: @ 81BFEAC
diff --git a/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc b/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc
index a2ee86113..d9bcea13d 100644
--- a/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc
+++ b/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc
@@ -17,7 +17,7 @@ EventScript_16D2C8:: @ 816D2C8
closemessage
applymovement 255, Movement_16D367
waitmovement 0
- special sub_80A0EEC
+ special ExitSafariMode
setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
releaseall
end
@@ -29,7 +29,7 @@ EventScript_16D2F2:: @ 816D2F2
closemessage
applymovement 255, Movement_16D362
waitmovement 0
- special sub_80A0EEC
+ special ExitSafariMode
setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
releaseall
end
@@ -44,7 +44,7 @@ EventScript_16D312:: @ 816D312
closemessage
applymovement 255, Movement_16D362
waitmovement 0
- special sub_80A0EEC
+ special ExitSafariMode
setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
releaseall
end
@@ -132,7 +132,7 @@ EventScript_16D3CA:: @ 816D3CA
call_if 1, EventScript_16D441
compare_var_to_value VAR_0x4002, 2
call_if 1, EventScript_16D457
- special sub_80A0EC4
+ special EnterSafariMode
setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 2
warp MAP_SAFARI_ZONE_CENTER, 255, 26, 30
waitstate
diff --git a/data/menu_indicators.s b/data/menu_indicators.s
deleted file mode 100644
index dd8911c7d..000000000
--- a/data/menu_indicators.s
+++ /dev/null
@@ -1,46 +0,0 @@
- .section .rodata
- .align 2
-gUnknown_846325C:: @ 846325C
- .incbin "baserom.gba", 0x46325C, 0x48
-
-gUnknown_84632A4:: @ 84632A4
- .incbin "baserom.gba", 0x4632A4, 0x18
-
-gUnknown_84632BC:: @ 84632BC
- .incbin "baserom.gba", 0x4632BC, 0x4
-
-gUnknown_84632C0:: @ 84632C0
- .incbin "baserom.gba", 0x4632C0, 0x4
-
-gUnknown_84632C4:: @ 84632C4
- .incbin "baserom.gba", 0x4632C4, 0x4
-
-gUnknown_84632C8:: @ 84632C8
- .incbin "baserom.gba", 0x4632C8, 0x4
-
-gUnknown_84632CC:: @ 84632CC
- .incbin "baserom.gba", 0x4632CC, 0x4
-
-gUnknown_84632D0:: @ 84632D0
- .incbin "baserom.gba", 0x4632D0, 0x4
-
-gUnknown_84632D4:: @ 84632D4
- .incbin "baserom.gba", 0x4632D4, 0x4
-
-gUnknown_84632D8:: @ 84632D8
- .incbin "baserom.gba", 0x4632D8, 0x18
-
-gUnknown_84632F0:: @ 84632F0
- .incbin "baserom.gba", 0x4632F0, 0x18
-
-gUnknown_8463308:: @ 8463308
- .incbin "baserom.gba", 0x463308, 0x20
-
-gUnknown_8463328:: @ 8463328
- .incbin "baserom.gba", 0x463328, 0x70
-
-gUnknown_8463398:: @ 8463398
- .incbin "baserom.gba", 0x463398, 0x40
-
-gUnknown_84633D8:: @ 84633D8
- .incbin "baserom.gba", 0x4633D8, 0x44
diff --git a/data/specials.inc b/data/specials.inc
index e6cec1766..24d793093 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -214,8 +214,8 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special nullsub_75
def_special nullsub_75
- def_special sub_80A0EC4
- def_special sub_80A0EEC
+ def_special EnterSafariMode
+ def_special ExitSafariMode
def_special nullsub_75
def_special nullsub_75
def_special nullsub_75
diff --git a/data/unk_text_util.s b/data/unk_text_util.s
deleted file mode 100644
index 5e5ce1a5d..000000000
--- a/data/unk_text_util.s
+++ /dev/null
@@ -1,5 +0,0 @@
- .section .rodata
- .align 2
-
-gUnknown_8464300:: @ 8464300
- .incbin "baserom.gba", 0x464300, 0x4C
diff --git a/graphics/interface/dex_caught_pokeball.pal b/graphics/interface/dex_caught_pokeball.pal
new file mode 100644
index 000000000..ab57da621
--- /dev/null
+++ b/graphics/interface/dex_caught_pokeball.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+123 156 131
+238 238 238
+0 0 0
+213 213 189
+172 164 123
+255 131 123
+238 49 0
+222 49 16
+197 49 41
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/interface/dex_caught_pokeball_and_pokemon_types.png b/graphics/interface/dex_caught_pokeball_and_pokemon_types.png
new file mode 100644
index 000000000..4a9e67954
--- /dev/null
+++ b/graphics/interface/dex_caught_pokeball_and_pokemon_types.png
Binary files differ
diff --git a/graphics/interface/pokemon_types.pal b/graphics/interface/pokemon_types.pal
new file mode 100644
index 000000000..16a03be2c
--- /dev/null
+++ b/graphics/interface/pokemon_types.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+123 156 131
+238 49 0
+246 131 49
+255 180 16
+222 230 49
+123 205 82
+156 222 222
+106 148 246
+164 65 164
+172 172 123
+222 222 197
+189 164 57
+255 90 139
+82 123 139
+65 65 65
+255 255 255
diff --git a/graphics/interface/red_arrow.pal b/graphics/interface/red_arrow.pal
new file mode 100644
index 000000000..f820b52bb
--- /dev/null
+++ b/graphics/interface/red_arrow.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 164 197
+255 82 0
+131 32 0
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/graphics/interface/red_arrow.png b/graphics/interface/red_arrow.png
new file mode 100644
index 000000000..91c8268b7
--- /dev/null
+++ b/graphics/interface/red_arrow.png
Binary files differ
diff --git a/graphics/interface/red_arrow_other.png b/graphics/interface/red_arrow_other.png
new file mode 100644
index 000000000..33fcf44b9
--- /dev/null
+++ b/graphics/interface/red_arrow_other.png
Binary files differ
diff --git a/graphics/interface/selector_outline.png b/graphics/interface/selector_outline.png
new file mode 100644
index 000000000..d9f3e1b8d
--- /dev/null
+++ b/graphics/interface/selector_outline.png
Binary files differ
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 209e68aee..de9a98b43 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -2,6 +2,7 @@
#define GUARD_CONSTANTS_FLAGS_H
// Sys Flags Maybe
+#define FLAG_SYS_SAFARI_MODE 0x800
#define FLAG_WHITE_FLUTE_ACTIVE 0x803
#define FLAG_BLACK_FLUTE_ACTIVE 0x804
@@ -1436,7 +1437,7 @@
#define FLAG_SYS_USE_STRENGTH (CODE_FLAGS + 0x29)
#define FLAG_SYS_WEATHER_CTRL (CODE_FLAGS + 0x2A)
#define FLAG_SYS_CYCLING_ROAD (CODE_FLAGS + 0x2B)
-#define FLAG_SYS_SAFARI_MODE (CODE_FLAGS + 0x2C)
+#define FLAG_0x88C (CODE_FLAGS + 0x2C)
#define FLAG_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D)
#define FLAG_0x88E (CODE_FLAGS + 0x2E)
diff --git a/include/dynamic_placeholder_text_util.h b/include/dynamic_placeholder_text_util.h
new file mode 100644
index 000000000..31cfe8d30
--- /dev/null
+++ b/include/dynamic_placeholder_text_util.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_UNK_TEXT_UTIL_H
+#define GUARD_UNK_TEXT_UTIL_H
+
+#include "global.h"
+
+void DynamicPlaceholderTextUtil_Reset(void);
+void DynamicPlaceholderTextUtil_SetPlaceholderPtr(u8 idx, const u8 *ptr);
+u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src);
+const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx);
+u8 GetColorFromTextColorTable(u16 graphicId);
+
+#endif //GUARD_UNK_TEXT_UTIL_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 917269de4..91612c06b 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1148,4 +1148,9 @@ extern const u8 EventScript_FldEffStrength[];
extern const u8 EventScript_FailSweetScent[];
extern const u8 EventScript_FldEffRockSmash[];
+extern const u8 EventScript_SafariTimesUp[];
+extern const u8 EventScript_SafariRetire[];
+extern const u8 EventScript_SafariWarpOut[];
+extern const u8 EventScript_SafariOutOfBalls[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_poison.h b/include/field_poison.h
index fcfb71cf5..4887fa27a 100644
--- a/include/field_poison.h
+++ b/include/field_poison.h
@@ -3,19 +3,13 @@
#include "global.h"
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
enum {
FLDPSN_NONE,
FLDPSN_PSN,
FLDPSN_FNT
};
-void sub_80F972C(void);
-unsigned int overworld_poison(void);
+void ExecuteWhiteOut(void);
+s32 DoPoisonFieldEffect(void);
#endif //GUARD_FIELD_POISON_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index 14d7e5d81..d1fde7eac 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -6,5 +6,6 @@
void sub_80AF79C(void);
void sub_807F028(u8);
void sub_80B0244(void);
+void sub_807E3EC(void);
#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/graphics.h b/include/graphics.h
index 1b2913164..e8503609e 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -32,6 +32,9 @@ extern const u8 gInterfacePal_LuxuryBall[];
extern const u8 gInterfaceGfx_PremierBall[];
extern const u8 gInterfacePal_PremierBall[];
extern const u8 gOpenPokeballGfx[];
+extern const u8 gFireRedMenuElements_Gfx[];
+extern const u16 gFireRedMenuElements1_Pal[];
+extern const u16 gFireRedMenuElements2_Pal[];
extern const u8 gItemIcon_QuestionMark[];
extern const u8 gItemIconPalette_QuestionMark[];
@@ -202,11 +205,11 @@ extern const u8 gItemPcBgPals[];
extern const u8 gItemPcTilemap[];
// item_menu_icons
-extern const u8 gUnknown_8E8362C[];
-extern const u8 gUnknown_8E83DBC[];
-extern const u8 gUnknown_8E84560[];
-extern const u8 gFile_graphics_interface_bag_swap_sheet[];
-extern const u8 gFile_graphics_interface_bag_swap_palette[];
+extern const u32 gUnknown_8E8362C[];
+extern const u32 gUnknown_8E83DBC[];
+extern const u32 gUnknown_8E84560[];
+extern const u32 gFile_graphics_interface_bag_swap_sheet[];
+extern const u32 gFile_graphics_interface_bag_swap_palette[];
extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
extern const u8 gFile_graphics_items_icons_master_ball_sheet[];
@@ -266,12 +269,10 @@ extern const u8 gFile_graphics_items_icon_palettes_soda_pop_palette[];
extern const u8 gFile_graphics_items_icons_lemonade_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_lemonade_palette[];
extern const u8 gFile_graphics_items_icons_moomoo_milk_sheet[];
-extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];
-extern const u8 gFile_graphics_items_icons_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];;
extern const u8 gFile_graphics_items_icon_palettes_energy_powder_palette[];
extern const u8 gFile_graphics_items_icons_energy_root_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_energy_root_palette[];
-extern const u8 gFile_graphics_items_icons_powder_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_heal_powder_palette[];
extern const u8 gFile_graphics_items_icons_revival_herb_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_revival_herb_palette[];
@@ -299,7 +300,7 @@ extern const u8 gFile_graphics_items_icons_berry_juice_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_berry_juice_palette[];
extern const u8 gFile_graphics_items_icons_sacred_ash_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_sacred_ash_palette[];
-extern const u8 gFile_graphics_items_icons_powder_sheet[];
+extern const u32 gFile_graphics_items_icons_powder_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_shoal_salt_palette[];
extern const u8 gFile_graphics_items_icons_shoal_shell_sheet[];
extern const u8 gFile_graphics_items_icon_palettes_shell_palette[];
diff --git a/include/list_menu.h b/include/list_menu.h
index 290b1d925..df53bb529 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -4,9 +4,21 @@
#include "global.h"
#include "window.h"
-// Exported type declarations
+#define LIST_NOTHING_CHOSEN -1
+#define LIST_CANCEL -2
+#define LIST_HEADER -3
-// Exported RAM declarations
+#define LIST_NO_MULTIPLE_SCROLL 0
+#define LIST_MULTIPLE_SCROLL_DPAD 1
+#define LIST_MULTIPLE_SCROLL_L_R 2
+
+enum
+{
+ SCROLL_ARROW_LEFT,
+ SCROLL_ARROW_RIGHT,
+ SCROLL_ARROW_UP,
+ SCROLL_ARROW_DOWN,
+};
struct ListMenuItem
{
@@ -38,8 +50,9 @@ struct ListMenuTemplate
u8 cursorKind:2; // x40, x80
};
-struct ListMenu {
- struct ListMenuTemplate _template;
+struct ListMenu
+{
+ struct ListMenuTemplate template;
u16 scrollOffset;
u16 selectedRow;
u8 unk_1C;
@@ -48,20 +61,27 @@ struct ListMenu {
u8 unk_1F;
};
-extern struct ListMenuTemplate gUnknown_03006310;
-extern struct ListMenuTemplate gMultiuseListMenuTemplate;
+struct ListMenuWindowRect
+{
+ u8 x;
+ u8 y;
+ u8 width;
+ u8 height;
+ u8 palNum;
+};
-// Exported ROM declarations
+extern struct ListMenuTemplate gMultiuseListMenuTemplate;
-u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2);
-s32 ListMenuHandleInput(u8 id);
-void ListMenuGetScrollAndRow(u8 a0, u16 *a1, u16 *a2);
-void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
-void DestroyListMenu(u8, u16 *, u16 *);
-u16 ListMenuGetYCoordForPrintingArrowCursor(u8);
-void sub_8107D38(u8, u8);
s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
-void ListMenuDefaultCursorMoveFunc(s32, u8, struct ListMenu *);
-void sub_8107BD0(u8 taskId, u8 attr, s32 value);
+u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
+u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow);
+s32 ListMenu_ProcessInput(u8 listTaskId);
+void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+void RedrawListMenu(u8 listTaskId);
+void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId);
+void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
+void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value);
#endif //GUARD_LIST_MENU_H
diff --git a/include/menu.h b/include/menu.h
index 3231587de..19efc3ad9 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -27,12 +27,10 @@ void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8);
u8 GetMenuCursorPos(void);
s8 ProcessMenuInput(void);
s8 ProcessMenuInputNoWrapAround(void);
-void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y);
void ResetTempTileDataBuffers(void);
void *DecompressAndCopyTileDataToVram(u8 bg_id, const void *src, u32 size, u16 offset, u8 mode);
bool8 FreeTempTileDataBuffersIfPossible(void);
u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
-//void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
s8 Menu_ProcessInputNoWrapClearOnChoose(void);
void DoScheduledBgTilemapCopiesToVram(void);
void ClearScheduledBgCopiesToVram(void);
@@ -54,4 +52,9 @@ void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 l
void ClearMenuWindow_BorderThickness2(u8 windowId, u8 a1);
void PrintTextArray(u8, u8, u8, u8, u8, u8, const struct MenuAction *);
+void sub_8107CD8(u8 palOffset, u16 speciesId);
+void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y);
+void sub_8107D38(u8, u8);
+void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y);
+
#endif // GUARD_MENU_H
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
index 76f25224c..fbcee2590 100644
--- a/include/menu_indicators.h
+++ b/include/menu_indicators.h
@@ -3,10 +3,6 @@
#include "global.h"
-// Exported type declarations
-
-// Exported RAM declarations
-
struct ScrollArrowsTemplate
{
u8 firstArrowType;
@@ -22,9 +18,25 @@ struct ScrollArrowsTemplate
u8 palNum;
};
-// Exported ROM declarations
-u8 AddScrollIndicatorArrowPairParameterized(u8, u8, u8, u8, s32, u16, u16, u16 *);
+struct CursorStruct
+{
+ u8 left;
+ u8 top;
+ u16 rowWidth;
+ u16 rowHeight;
+ u16 tileTag;
+ u16 palTag;
+ u8 palNum;
+};
+
+u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset);
u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate * template, u16 * a1);
void RemoveScrollIndicatorArrowPair(u8);
+u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind);
+u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor);
+void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y);
+void ListMenuRemoveRedOutlineCursorObject(u8 taskId);
+void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind);
+void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind);
#endif //GUARD_MENU_INDICATORS_H
diff --git a/include/overworld.h b/include/overworld.h
index bab4797ff..60fa566f7 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -2,7 +2,6 @@
#define GUARD_ROM4_H
#include "global.h"
-
#include "main.h"
struct UnkPlayerStruct
@@ -69,8 +68,8 @@ void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void CB2_ReturnToField(void);
bool32 sub_8087598(void);
-void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
-void warp_in(void);
+void CB2_ReturnToFieldContinueScriptPlayMapMusic(void);
+void WarpIntoMap(void);
u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
void sub_8086194(void);
void sub_8084CCC(u8 spawn);
@@ -110,7 +109,7 @@ bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
void Overworld_ResetStateAfterTeleport(void);
void Overworld_FadeOutMapMusic(void);
-void sub_805671C(void);
+void CB2_LoadMap(void);
bool8 sub_8055FC4(void);
bool8 is_light_level_8_or_9(u8 mapType);
bool32 sub_8055C9C(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index ed0108159..558eedc67 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -625,8 +625,8 @@ u32 CanMonLearnTMHM(struct Pokemon *, u8);
u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
void ClearBattleMonForms(void);
-const u8 *GetMonFrontSpritePal(struct Pokemon *mon);
-const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32);
+const u32 *GetMonFrontSpritePal(struct Pokemon *mon);
+const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32);
const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32);
bool8 IsOtherTrainer(u32, u8 *);
void SetWildMonHeldItem(void);
diff --git a/include/safari_zone.h b/include/safari_zone.h
index b20555a8c..feaa93ed0 100644
--- a/include/safari_zone.h
+++ b/include/safari_zone.h
@@ -4,6 +4,7 @@
#include "global.h"
extern u8 gNumSafariBalls;
+extern u16 gSafariZoneStepCounter;
bool32 GetSafariZoneFlag(void);
void SetSafariZoneFlag(void);
@@ -15,7 +16,4 @@ void ExitSafariMode(void);
bool8 SafariZoneTakeStep(void);
void SafariZoneRetirePrompt(void);
-struct Pokeblock *SafariZoneGetActivePokeblock(void);
-void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
-
#endif // GUARD_SAFARI_ZONE_H
diff --git a/include/shop.h b/include/shop.h
index 05f5160e6..481fd6c76 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -2,6 +2,7 @@
#define GUARD_SHOP_H
#include "global.h"
+#include "menu_helpers.h"
extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
@@ -9,5 +10,15 @@ void CreatePokemartMenu(const u16 *);
void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
void sub_809C09C(u16, u16, u8);
+u8 sub_809B56C(void);
+
+// buy_menu_helper
+void BuyMenuInitWindows(bool32 isSellingTM);
+void BuyMenuDrawMoneyBox(void);
+void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color);
+void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback);
+void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram);
+void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram);
+void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo);
#endif // GUARD_SHOP_H
diff --git a/include/sprite.h b/include/sprite.h
index 5fa85ee21..27e5dc852 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -4,28 +4,30 @@
#include "global.h"
#define MAX_SPRITES 64
+#define SPRITE_INVALID_TAG 0xFFFF
struct SpriteSheet
{
- const u8 *data; // Raw uncompressed pixel data
+ const void *data; // Raw uncompressed pixel data
u16 size;
u16 tag;
};
struct CompressedSpriteSheet
{
- const u8 *data; // LZ77 compressed pixel data
+ const u32 *data; // LZ77 compressed pixel data
u16 size; // Uncompressed size of pixel data
u16 tag;
};
struct SpriteFrameImage
{
- const u8 *data;
+ const void *data;
u16 size;
};
#define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr}
+#define overworld_frame(ptr, width, height, frame) {.data = (u8 *)ptr + (width * height * frame * 64)/2, .size = (width * height * 64)/2}
struct SpritePalette
{
@@ -35,7 +37,7 @@ struct SpritePalette
struct CompressedSpritePalette
{
- const u8 *data; // LZ77 compressed palette data
+ const u32 *data; // LZ77 compressed palette data
u16 tag;
};
@@ -102,6 +104,12 @@ struct AffineAnimJumpCmd
u16 target;
};
+struct AffineAnimEndCmdAlt
+{
+ s16 type;
+ u16 val;
+};
+
union AffineAnimCmd
{
s16 type;
@@ -126,6 +134,8 @@ union AffineAnimCmd
{.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}}
#define AFFINEANIMCMD_JUMP(_target) \
{.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}}
+#define AFFINEANIMCMD_END_ALT(_val) \
+ {.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}}
struct AffineAnimState
{
@@ -163,6 +173,8 @@ struct SubspriteTable
struct Sprite;
+typedef void (*SpriteCallback)(struct Sprite *);
+
struct SpriteTemplate
{
u16 tileTag;
@@ -171,7 +183,7 @@ struct SpriteTemplate
const union AnimCmd *const *anims;
const struct SpriteFrameImage *images;
const union AffineAnimCmd *const *affineAnims;
- void (*callback)(struct Sprite *);
+ SpriteCallback callback;
};
struct Sprite
@@ -182,7 +194,7 @@ struct Sprite
/*0x10*/ const union AffineAnimCmd *const *affineAnims;
/*0x14*/ const struct SpriteTemplate *template;
/*0x18*/ const struct SubspriteTable *subspriteTables;
- /*0x1C*/ void (*callback)(struct Sprite *);
+ /*0x1C*/ SpriteCallback callback;
/*0x20*/ struct Coords16 pos1;
/*0x24*/ struct Coords16 pos2;
@@ -232,14 +244,12 @@ struct OamMatrix
s16 d;
};
-typedef void (*SpriteCallback)(struct Sprite *);
-
extern const struct OamData gDummyOamData;
extern const union AnimCmd *const gDummySpriteAnimTable[];
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
-
+extern const struct SpriteTemplate gDummySpriteTemplate;
extern struct Sprite gSprites[];
void ResetSpriteData(void);
diff --git a/include/strings.h b/include/strings.h
index 1aa858e82..55c178b0d 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -91,6 +91,7 @@ extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
extern const u8 gText_EggNickname[];
extern const u8 gText_Pokemon[];
+extern const u8 gText_PkmnFainted3[];
extern const u8 gOtherText_Use[];
extern const u8 gOtherText_Give[];
diff --git a/include/task.h b/include/task.h
index cd3deb544..834bb5655 100644
--- a/include/task.h
+++ b/include/task.h
@@ -4,6 +4,7 @@
#include "global.h"
#define NUM_TASKS 16
+#define TASK_NONE 0xFF
typedef void (*TaskFunc)(u8 taskId);
diff --git a/include/unk_text_util.h b/include/unk_text_util.h
deleted file mode 100644
index 750c0541e..000000000
--- a/include/unk_text_util.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef GUARD_UNK_TEXT_UTIL_H
-#define GUARD_UNK_TEXT_UTIL_H
-
-#include "global.h"
-
-void UnkTextUtil_Reset(void);
-void UnkTextUtil_SetPtrI(u8 idx, const u8 *ptr);
-u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src);
-const u8 *UnkTextUtil_GetPtrI(u8 idx);
-
-#endif //GUARD_UNK_TEXT_UTIL_H
diff --git a/ld_script.txt b/ld_script.txt
index 494c35e86..2867cd998 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -146,13 +146,13 @@ SECTIONS {
asm/naming_screen.o(.text);
src/money.o(.text);
asm/script_pokemon_util_80A0058.o(.text);
- asm/field_poison.o(.text);
+ src/field_poison.o(.text);
asm/pokemon_size_record.o(.text);
asm/pc_screen_effect.o(.text);
src/fldeff_poison.o(.text);
src/fldeff_berrytree.o(.text);
src/field_special_scene.o(.text);
- asm/safari_zone.o(.text);
+ src/safari_zone.o(.text);
src/item_use.o(.text);
asm/battle_anim_effects_1.o(.text);
asm/battle_anim_effects_2.o(.text);
@@ -226,7 +226,7 @@ SECTIONS {
asm/link_rfu_2.o(.text);
asm/link_rfu.o(.text);
asm/pokedex_screen.o(.text);
- asm/list_menu.o(.text);
+ src/list_menu.o(.text);
asm/item_menu.o(.text);
src/save_location.o(.text);
src/bag.o(.text);
@@ -246,15 +246,15 @@ SECTIONS {
src/menu2.o(.text);
src/oak_speech.o(.text);
src/tm_case.o(.text);
- asm/menu_indicators.o(.text);
+ src/menu_indicators.o(.text);
asm/pokedex_area_markers.o(.text);
asm/pokemon_summary_screen.o(.text);
src/help_system.o(.text);
asm/wild_pokemon_area.o(.text);
- asm/unk_text_util.o(.text);
+ src/dynamic_placeholder_text_util.o(.text);
asm/berry_pouch.o(.text);
asm/itemfinder.o(.text);
- asm/buy_menu_helpers.o(.text);
+ src/buy_menu_helpers.o(.text);
asm/slot_machine.o(.text);
src/roamer.o(.text);
src/mystery_gift_menu.o(.text);
@@ -424,6 +424,8 @@ SECTIONS {
data/data_83FECCC.o(.rodata.841EE44);
src/new_menu_helpers.o(.rodata);
data/data_83FECCC.o(.rodata.841F4B4);
+ src/list_menu.o(.rodata);
+ data/data_83FECCC.o(.rodata.8452CF4);
src/save_location.o(.rodata);
src/bag.o(.rodata);
src/trainer_pokemon_sprites.o(.rodata);
@@ -437,15 +439,15 @@ SECTIONS {
src/menu2.o(.rodata);
src/oak_speech.o(.rodata);
src/tm_case.o(.rodata);
- data/menu_indicators.o(.rodata);
+ src/menu_indicators.o(.rodata);
data/pokedex_area_markers.o(.rodata);
data/pokemon_summary_screen.o(.rodata);
src/help_system.o(.rodata);
data/wild_pokemon_area.o(.rodata);
- data/unk_text_util.o(.rodata);
+ src/dynamic_placeholder_text_util.o(.rodata);
data/berry_pouch.o(.rodata);
data/itemfinder.o(.rodata);
- data/buy_menu_helpers.o(.rodata);
+ src/buy_menu_helpers.o(.rodata);
data/slot_machine.o(.rodata);
src/roamer.o(.rodata);
src/mystery_gift_menu.o(.rodata);
diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c
new file mode 100644
index 000000000..4febb8209
--- /dev/null
+++ b/src/buy_menu_helpers.c
@@ -0,0 +1,216 @@
+#include "global.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "money.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "menu.h"
+#include "shop.h"
+
+static const struct WindowTemplate sShopBuyMenuWindowTemplatesNormal[] =
+{
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0x1,
+ .width = 0x8,
+ .height = 0x3,
+ .paletteNum = 0xF,
+ .baseBlock = 0x27,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xB,
+ .width = 0xD,
+ .height = 0x2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x3F,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x2,
+ .tilemapTop = 0xF,
+ .width = 0x1A,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x59,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x11,
+ .tilemapTop = 0x9,
+ .width = 0xC,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xB,
+ .tilemapTop = 0x1,
+ .width = 0x11,
+ .height = 0xC,
+ .paletteNum = 0xE,
+ .baseBlock = 0xF1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x5,
+ .tilemapTop = 0xE,
+ .width = 0x19,
+ .height = 0x6,
+ .paletteNum = 0xF,
+ .baseBlock = 0x1BD,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+// firered uses different layout when selling TMs
+static const struct WindowTemplate sShopBuyMenuWindowTemplatesTM[] =
+{
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0x1,
+ .width = 0x8,
+ .height = 0x3,
+ .paletteNum = 0xF,
+ .baseBlock = 0x27,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xB,
+ .width = 0xD,
+ .height = 0x2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x3F,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x2,
+ .tilemapTop = 0xF,
+ .width = 0x1A,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x59,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x11,
+ .tilemapTop = 0x9,
+ .width = 0xC,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xB,
+ .tilemapTop = 0x1,
+ .width = 0x11,
+ .height = 0xA,
+ .paletteNum = 0xE,
+ .baseBlock = 0xF1,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0xC,
+ .tilemapTop = 0xC,
+ .width = 0x12,
+ .height = 0x8,
+ .paletteNum = 0xE,
+ .baseBlock = 0x19B,
+ },
+ {
+ .bg = 0x0,
+ .tilemapLeft = 0x1,
+ .tilemapTop = 0xE,
+ .width = 0xA,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0x22B,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static const struct WindowTemplate sShopBuyMenuYesNoWindowTemplate =
+{
+ .bg = 0x0,
+ .tilemapLeft = 0x15,
+ .tilemapTop = 0x9,
+ .width = 0x6,
+ .height = 0x4,
+ .paletteNum = 0xE,
+ .baseBlock = 0xC1,
+};
+
+static const struct TextColor sShopBuyMenuTextColors[] =
+{
+ {
+ .fgColor = 0,
+ .bgColor = 1,
+ .shadowColor = 2,
+ },
+ {
+ .fgColor = 0,
+ .bgColor = 2,
+ .shadowColor = 3,
+ },
+ {
+ .fgColor = 0,
+ .bgColor = 3,
+ .shadowColor = 2,
+ },
+};
+
+void BuyMenuInitWindows(bool32 isSellingTM)
+{
+ if (isSellingTM != TRUE)
+ InitWindows(sShopBuyMenuWindowTemplatesNormal);
+ else
+ InitWindows(sShopBuyMenuWindowTemplatesTM);
+ DeactivateAllTextPrinters();
+ TextWindow_SetUserSelectedFrame(0, 0x1, 0xD0);
+ TextWindow_LoadResourcesStdFrame0(0, 0x13, 0xE0);
+ TextWindow_SetStdFrame0_WithPal(0, 0xA, 0xF0);
+ PutWindowTilemap(0);
+ PutWindowTilemap(4);
+ PutWindowTilemap(5);
+ if (isSellingTM == TRUE)
+ PutWindowTilemap(6);
+}
+
+void BuyMenuDrawMoneyBox(void)
+{
+ PrintMoneyAmountInMoneyBoxWithBorder(0, 0xA, 0xF, GetMoney(&gSaveBlock1Ptr->money));
+}
+
+void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color)
+{
+ AddTextPrinterParameterized4(windowId, font, x, y, letterSpacing, lineSpacing, &sShopBuyMenuTextColors[color], speed, text);
+}
+
+void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
+{
+ DisplayMessageAndContinueTask(taskId, 2, 0x13, 0xE, sub_809B56C(), GetTextSpeedSetting(), text, callback);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram)
+{
+ SetWindowBorderStyle(windowId, copyToVram, 0x1, 0xD);
+}
+
+void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram)
+{
+ SetWindowBorderStyle(windowId, copyToVram, 0xA, 0xF);
+}
+
+void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo)
+{
+ CreateYesNoMenuWithCallbacks(taskId, &sShopBuyMenuYesNoWindowTemplate, 2, 0, 2, 1, 0xD, yesNo);
+}
diff --git a/src/daycare.c b/src/daycare.c
index 7a2cb0698..abc3b23ca 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1533,7 +1533,7 @@ static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
static void Task_HandleDaycareLevelMenuInput(u8 taskId)
{
- u32 input = ListMenuHandleInput(gTasks[taskId].tMenuListTaskId);
+ u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuListTaskId);
if (gMain.newKeys & A_BUTTON)
{
@@ -1547,7 +1547,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
gSpecialVar_Result = 2;
break;
}
- DestroyListMenu(gTasks[taskId].tMenuListTaskId, NULL, NULL);
+ DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
@@ -1556,7 +1556,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
else if (gMain.newKeys & B_BUTTON)
{
gSpecialVar_Result = 2;
- DestroyListMenu(gTasks[taskId].tMenuListTaskId, NULL, NULL);
+ DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE);
RemoveWindow(gTasks[taskId].tWindowId);
DestroyTask(taskId);
diff --git a/src/dynamic_placeholder_text_util.c b/src/dynamic_placeholder_text_util.c
new file mode 100644
index 000000000..6909fea30
--- /dev/null
+++ b/src/dynamic_placeholder_text_util.c
@@ -0,0 +1,70 @@
+#include "global.h"
+#include "text.h"
+#include "dynamic_placeholder_text_util.h"
+#include "string_util.h"
+
+static EWRAM_DATA const u8 *sStringPointers[8] = {0};
+
+static const u8 sTextColorTable[] =
+{
+ 0, 0, 0, 16, 17, 17, 17, 16, 16, 0, 0, 17, 1, 0, 17, 16,
+ 0, 16, 16, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0,
+ 17, 1, 0, 0, 0, 16, 17, 0, 16, 16, 16, 0, 1, 0, 51, 51,
+ 51, 51, 51, 51, 51, 51, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 50,
+};
+
+void DynamicPlaceholderTextUtil_Reset(void)
+{
+ const u8 **ptr = sStringPointers;
+ u8 *fillval = NULL;
+ const u8 **ptr2 = ptr + (NELEMS(sStringPointers) - 1);
+
+ do
+ {
+ *ptr2-- = fillval;
+ }
+ while ((intptr_t)ptr2 >= (intptr_t)ptr);
+}
+
+void DynamicPlaceholderTextUtil_SetPlaceholderPtr(u8 idx, const u8 *ptr)
+{
+ if (idx < NELEMS(sStringPointers))
+ sStringPointers[idx] = ptr;
+}
+
+u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src)
+{
+ while (*src != EOS)
+ {
+ if (*src != CHAR_SPECIAL_F7)
+ {
+ *dest++ = *src++;
+ }
+ else
+ {
+ src++;
+ if (sStringPointers[*src] != NULL)
+ dest = StringCopy(dest, sStringPointers[*src]);
+ src++;
+ }
+ }
+ *dest = EOS;
+ return dest;
+}
+
+const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx)
+{
+ return sStringPointers[idx];
+}
+
+u8 GetColorFromTextColorTable(u16 graphicId)
+{
+ u32 test = graphicId >> 1;
+ u32 shift = (graphicId & 1) << 2;
+
+ if (test > 0x4B)
+ return 3;
+ else
+ return (sTextColorTable[graphicId >> 1] >> shift) & 0xF;
+}
diff --git a/src/fame_checker.c b/src/fame_checker.c
index bf99bdf56..aa1684981 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -580,7 +580,7 @@ static void Task_TopMenuHandleInput(u8 taskId)
}
else if (JOY_NEW(A_BUTTON))
{
- cursorPos = ListMenuHandleInput(0);
+ cursorPos = ListMenu_ProcessInput(0);
if (cursorPos == sFameCheckerData->numUnlockedPersons - 1) // CANCEL
task->func = Task_StartToCloseFameChecker;
else if (sFameCheckerData->inPickMode)
@@ -615,7 +615,7 @@ static void Task_TopMenuHandleInput(u8 taskId)
task->func = Task_StartToCloseFameChecker;
}
else
- ListMenuHandleInput(0);
+ ListMenu_ProcessInput(0);
}
}
@@ -853,7 +853,7 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId)
FreeQuestionMarkSpriteResources();
FreeListMenuSelectorArrowPairResources();
SetMainCallback2(sFameCheckerData->savedCallback);
- DestroyListMenu(sFameCheckerData->listMenuTaskId, NULL, NULL);
+ DestroyListMenuTask(sFameCheckerData->listMenuTaskId, NULL, NULL);
Free(sBg3TilemapBuffer);
Free(sBg1TilemapBuffer);
Free(sBg2TilemapBuffer);
diff --git a/src/field_poison.c b/src/field_poison.c
new file mode 100644
index 000000000..474fbcd69
--- /dev/null
+++ b/src/field_poison.c
@@ -0,0 +1,117 @@
+#include "global.h"
+#include "strings.h"
+#include "task.h"
+#include "field_message_box.h"
+#include "script.h"
+#include "string_util.h"
+#include "event_data.h"
+#include "fldeff.h"
+#include "party_menu.h"
+#include "field_poison.h"
+#include "constants/species.h"
+#include "constants/battle.h"
+
+static bool32 IsMonValidSpecies(struct Pokemon *pokemon)
+{
+ u16 species = GetMonData(pokemon, MON_DATA_SPECIES2);
+ if (species == SPECIES_NONE || species == SPECIES_EGG)
+ return FALSE;
+ return TRUE;
+}
+
+static bool32 AllMonsFainted(void)
+{
+ int i;
+
+ struct Pokemon *pokemon = gPlayerParty;
+ for (i = 0; i < PARTY_SIZE; i++, pokemon++)
+ if (IsMonValidSpecies(pokemon) && GetMonData(pokemon, MON_DATA_HP))
+ return FALSE;
+ return TRUE;
+}
+
+static void FaintFromFieldPoison(u8 partyIdx)
+{
+ struct Pokemon *pokemon = gPlayerParty + partyIdx;
+ u32 status = STATUS1_NONE;
+ AdjustFriendship(pokemon, 8);
+ SetMonData(pokemon, MON_DATA_STATUS, &status);
+ GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
+ StringGetEnd10(gStringVar1);
+}
+
+static bool32 MonFaintedFromPoison(u8 partyIdx)
+{
+ struct Pokemon *pokemon = gPlayerParty + partyIdx;
+ if (IsMonValidSpecies(pokemon) && !GetMonData(pokemon, MON_DATA_HP) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
+ return TRUE;
+ return FALSE;
+}
+
+static void Task_WhiteOut(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ for (; data[1] < PARTY_SIZE; data[1]++)
+ {
+ if (MonFaintedFromPoison(data[1]))
+ {
+ FaintFromFieldPoison(data[1]);
+ ShowFieldMessage(gText_PkmnFainted3);
+ data[0]++;
+ return;
+ }
+ }
+ data[0] = 2;
+ break;
+ case 1:
+ if (IsFieldMessageBoxHidden())
+ data[0]--;
+ break;
+ case 2:
+ if (AllMonsFainted())
+ gSpecialVar_Result = 1;
+ else
+ gSpecialVar_Result = 0;
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void ExecuteWhiteOut(void)
+{
+ CreateTask(Task_WhiteOut, 80);
+ ScriptContext1_Stop();
+}
+
+s32 DoPoisonFieldEffect(void)
+{
+ int i;
+ u32 hp;
+
+ struct Pokemon *pokemon = gPlayerParty;
+ u32 numPoisoned = 0;
+ u32 numFainted = 0;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(pokemon, MON_DATA_SANITY_HAS_SPECIES) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
+ {
+ hp = GetMonData(pokemon, MON_DATA_HP);
+ if (hp == 0 || --hp == 0)
+ numFainted++;
+ SetMonData(pokemon, MON_DATA_HP, &hp);
+ numPoisoned++;
+ }
+ pokemon++;
+ }
+ if (numFainted || numPoisoned)
+ FldEffPoison_Start();
+ if (numFainted)
+ return FLDPSN_FNT;
+ if (numPoisoned)
+ return FLDPSN_PSN;
+ return FLDPSN_NONE;
+}
diff --git a/src/intro.c b/src/intro.c
index 0ebf71a8d..bb7242f2f 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -142,13 +142,13 @@ static const u8 gUnknown_8402650[] = INCBIN_U8("graphics/intro/unk_8402650.4bpp.
static const u8 gUnknown_8402668[] = INCBIN_U8("graphics/intro/unk_8402668.bin.lz");
static const u16 gUnknown_840270C[] = INCBIN_U16("graphics/intro/unk_840270C.gbapal");
static const u8 gUnknown_840272C[] = INCBIN_U8("graphics/intro/unk_840272C.4bpp.lz");
-static const u8 gUnknown_84028F8[] = INCBIN_U8("graphics/intro/unk_84028F8.bin.lz");
+static const u32 gUnknown_84028F8[] = INCBIN_U32("graphics/intro/unk_84028F8.bin.lz");
static const u16 gUnknown_8402A44[] = INCBIN_U16("graphics/intro/unk_8402A64.gbapal");
-static const u8 gUnknown_8402A64[] = INCBIN_U8("graphics/intro/unk_8402A64.4bpp.lz");
+static const u32 gUnknown_8402A64[] = INCBIN_U32("graphics/intro/unk_8402A64.4bpp.lz");
static const u16 gUnknown_8402ABC[] = INCBIN_U16("graphics/intro/unk_8402ADC.gbapal");
-static const u8 gUnknown_8402ADC[] = INCBIN_U8("graphics/intro/unk_8402ADC.4bpp.lz");
-static const u8 gUnknown_8402B2C[] = INCBIN_U8("graphics/intro/unk_8402B2C.4bpp.lz");
-static const u8 gUnknown_8402CD4[] = INCBIN_U8("graphics/intro/unk_8402CD4.4bpp.lz");
+static const u32 gUnknown_8402ADC[] = INCBIN_U32("graphics/intro/unk_8402ADC.4bpp.lz");
+static const u32 gUnknown_8402B2C[] = INCBIN_U32("graphics/intro/unk_8402B2C.4bpp.lz");
+static const u32 gUnknown_8402CD4[] = INCBIN_U32("graphics/intro/unk_8402CD4.4bpp.lz");
static const u16 gUnknown_8402D34[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal");
static const u8 gUnknown_8402D54[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz");
static const u8 gUnknown_8403FE8[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz");
@@ -172,17 +172,17 @@ static const u8 gUnknown_8407470[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp.
static const u8 gUnknown_8407A50[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz");
static const u8 gUnknown_8407B9C[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz");
static const u8 gUnknown_8408D98[] = INCBIN_U8("graphics/intro/unk_8408D98.bin.lz");
-static const u8 gUnknown_840926C[] = INCBIN_U8("graphics/intro/unk_840926C.4bpp.lz");
+static const u32 gUnknown_840926C[] = INCBIN_U32("graphics/intro/unk_840926C.4bpp.lz");
static const u16 gUnknown_84096AC[] = INCBIN_U16("graphics/intro/unk_84096AC.gbapal");
-static const u8 gUnknown_84096CC[] = INCBIN_U8("graphics/intro/unk_84096CC.4bpp.lz");
+static const u32 gUnknown_84096CC[] = INCBIN_U32("graphics/intro/unk_84096CC.4bpp.lz");
static const u16 gUnknown_8409A1C[] = INCBIN_U16("graphics/intro/unk_8409A1C.gbapal");
-static const u8 gUnknown_8409A3C[] = INCBIN_U8("graphics/intro/unk_8409A3C.4bpp.lz");
-static const u8 gUnknown_8409D20[] = INCBIN_U8("graphics/intro/unk_8409D20.4bpp.lz");
-static const u8 gUnknown_840A3E4[] = INCBIN_U8("graphics/intro/unk_840A3E4.4bpp.lz");
+static const u32 gUnknown_8409A3C[] = INCBIN_U32("graphics/intro/unk_8409A3C.4bpp.lz");
+static const u32 gUnknown_8409D20[] = INCBIN_U32("graphics/intro/unk_8409D20.4bpp.lz");
+static const u32 gUnknown_840A3E4[] = INCBIN_U32("graphics/intro/unk_840A3E4.4bpp.lz");
static const u16 gUnknown_840B834[] = INCBIN_U16("graphics/intro/unk_840B834.gbapal");
static const u16 gUnknown_840B854[] = INCBIN_U16("graphics/intro/unk_840B854.gbapal");
-static const u8 gUnknown_840B874[] = INCBIN_U8("graphics/intro/unk_840B874.4bpp.lz");
-static const u8 gUnknown_840BAE0[] = INCBIN_U8("graphics/intro/unk_840BAE0.4bpp.lz");
+static const u32 gUnknown_840B874[] = INCBIN_U32("graphics/intro/unk_840B874.4bpp.lz");
+static const u32 gUnknown_840BAE0[] = INCBIN_U32("graphics/intro/unk_840BAE0.4bpp.lz");
static const struct BgTemplate gUnknown_840BB80[] = {
{ 3, 3, 31, 0, 0, 3, 0x000 },
diff --git a/src/item_pc.c b/src/item_pc.c
index 2d30416c9..abafaa8d9 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -653,7 +653,7 @@ static void Task_ItemPcTurnOff2(u8 taskId)
if (!gPaletteFade.active && !sub_80A0AAC())
{
- DestroyListMenu(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
if (sStateDataPtr->savedCallback != NULL)
SetMainCallback2(sStateDataPtr->savedCallback);
else
@@ -737,7 +737,7 @@ static void Task_ItemPcMain(u8 taskId)
return;
}
}
- input = ListMenuHandleInput(data[0]);
+ input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sListMenuState.scroll, &sListMenuState.row);
switch (input)
{
@@ -772,7 +772,7 @@ static void ItemPc_MoveItemModeInit(u8 taskId, s16 pos)
{
s16 * data = gTasks[taskId].data;
- sub_8107BD0(data[0], 16, 1);
+ ListMenuSetUnkIndicatorsStructField(data[0], 16, 1);
data[1] = pos;
sStateDataPtr->moveModeOrigPos = pos;
StringCopy(gStringVar1, ItemId_GetName(ItemPc_GetItemIdBySlotId(data[1])));
@@ -789,7 +789,7 @@ static void Task_ItemPcMoveItemModeRun(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ListMenuHandleInput(data[0]);
+ ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sListMenuState.scroll, &sListMenuState.row);
sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0]));
if (JOY_NEW(A_BUTTON | SELECT_BUTTON))
@@ -814,7 +814,7 @@ static void ItemPc_InsertItemIntoNewSlot(u8 taskId, u32 pos)
else
{
ItemMenu_MoveItemSlotToNewPositionInArray(gSaveBlock1Ptr->pcItems, data[1], pos);
- DestroyListMenu(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
if (data[1] < pos)
sListMenuState.row--;
ItemPc_BuildListMenuTemplate();
@@ -828,7 +828,7 @@ static void ItemPc_MoveItemModeCancel(u8 taskId, u32 pos)
{
s16 * data = gTasks[taskId].data;
- DestroyListMenu(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
if (data[1] < pos)
sListMenuState.row--;
ItemPc_BuildListMenuTemplate();
@@ -947,7 +947,7 @@ static void Task_ItemPcCleanUpWithdraw(u8 taskId)
ItemPc_DestroySubwindow(2);
PutWindowTilemap(1);
- DestroyListMenu(data[0], &sListMenuState.scroll, &sListMenuState.row);
+ DestroyListMenuTask(data[0], &sListMenuState.scroll, &sListMenuState.row);
ItemPc_CountPcItems();
ItemPc_SetCursorPosition();
ItemPc_BuildListMenuTemplate();
diff --git a/src/list_menu.c b/src/list_menu.c
new file mode 100644
index 000000000..5f2bd02b3
--- /dev/null
+++ b/src/list_menu.c
@@ -0,0 +1,786 @@
+#include "global.h"
+#include "menu.h"
+#include "list_menu.h"
+#include "menu_indicators.h"
+#include "new_menu_helpers.h"
+#include "window.h"
+#include "text_window.h"
+#include "main.h"
+#include "task.h"
+#include "graphics.h"
+#include "decompress.h"
+#include "palette.h"
+#include "malloc.h"
+#include "strings.h"
+#include "sound.h"
+#include "pokemon_icon.h"
+#include "constants/songs.h"
+
+struct UnkIndicatorsStruct
+{
+ u8 field_0;
+ u16 *field_4;
+ u16 field_8;
+ u16 field_A;
+ u16 field_C;
+ u16 field_E;
+ u8 field_10;
+ u8 field_11;
+ u8 field_12;
+ u8 field_13;
+ u8 field_14_0:4;
+ u8 field_14_1:4;
+ u8 field_15_0:4;
+ u8 field_15_1:4;
+ u8 field_16_0:3;
+ u8 field_16_1:3;
+ u8 field_16_2:2;
+ u8 field_17_0:6;
+ u8 field_17_1:2;
+};
+
+struct MysteryGiftLinkMenuStruct
+{
+ s32 currItemId;
+ u8 state;
+ u8 windowId;
+ u8 listTaskId;
+};
+
+struct ListMenuOverride
+{
+ u8 cursorPal:4;
+ u8 fillValue:4;
+ u8 cursorShadowPal:4;
+ u8 lettersSpacing:6;
+ u8 field_2_2:6; // unused
+ u8 fontId:7;
+ bool8 enabled:1;
+};
+
+struct MoveMenuInfoIcon
+{
+ u8 width;
+ u8 height;
+ u16 offset;
+};
+
+static EWRAM_DATA struct MysteryGiftLinkMenuStruct sMysteryGiftLinkMenu = {0};
+
+struct ListMenuOverride gListMenuOverride;
+struct ListMenuTemplate gMultiuseListMenuTemplate;
+
+static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
+static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown);
+static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count);
+static void ListMenuDrawCursor(struct ListMenu *list);
+static void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 onInit);
+static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind);
+
+const struct MoveMenuInfoIcon gMoveMenuInfoIcons[] =
+{
+ { 12, 12, 0x00 }, // Unused
+ { 32, 12, 0x20 }, // Normal icon
+ { 32, 12, 0x64 }, // Fight icon
+ { 32, 12, 0x60 }, // Flying icon
+ { 32, 12, 0x80 }, // Poison icon
+ { 32, 12, 0x48 }, // Ground icon
+ { 32, 12, 0x44 }, // Rock icon
+ { 32, 12, 0x6C }, // Bug icon
+ { 32, 12, 0x68 }, // Ghost icon
+ { 32, 12, 0x88 }, // Steel icon
+ { 32, 12, 0xA4 }, // ??? (Mystery) icon
+ { 32, 12, 0x24 }, // Fire icon
+ { 32, 12, 0x28 }, // Water icon
+ { 32, 12, 0x2C }, // Grass icon
+ { 32, 12, 0x40 }, // Electric icon
+ { 32, 12, 0x84 }, // Psychic icon
+ { 32, 12, 0x4C }, // Ice icon
+ { 32, 12, 0xA0 }, // Dragon icon
+ { 32, 12, 0x8C }, // Dark icon
+ { 40, 12, 0xA8 }, // -Type- icon
+ { 40, 12, 0xC0 }, // -Power- icon
+ { 40, 12, 0xC8 }, // -Accuracy- icon
+ { 40, 12, 0xE0 }, // -PP- icon
+ { 40, 12, 0xE8 }, // -Effect- icon
+};
+
+static void ListMenuDummyTask(u8 taskId)
+{
+}
+
+s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum)
+{
+ switch (sMysteryGiftLinkMenu.state)
+ {
+ case 0:
+ default:
+ sMysteryGiftLinkMenu.windowId = AddWindow(windowTemplate);
+ switch (arg2)
+ {
+ case 2:
+ TextWindow_SetUserSelectedFrame(sMysteryGiftLinkMenu.windowId, tileNum, palNum);
+ case 1:
+ DrawTextBorderOuter(sMysteryGiftLinkMenu.windowId, tileNum, palNum / 16);
+ break;
+ }
+ gMultiuseListMenuTemplate = *listMenuTemplate;
+ gMultiuseListMenuTemplate.windowId = sMysteryGiftLinkMenu.windowId;
+ sMysteryGiftLinkMenu.listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+ CopyWindowToVram(sMysteryGiftLinkMenu.windowId, 1);
+ sMysteryGiftLinkMenu.state = 1;
+ break;
+ case 1:
+ sMysteryGiftLinkMenu.currItemId = ListMenu_ProcessInput(sMysteryGiftLinkMenu.listTaskId);
+ if (JOY_NEW(A_BUTTON))
+ {
+ sMysteryGiftLinkMenu.state = 2;
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ sMysteryGiftLinkMenu.currItemId = LIST_CANCEL;
+ sMysteryGiftLinkMenu.state = 2;
+ }
+ if (sMysteryGiftLinkMenu.state == 2)
+ {
+ if (!arg2)
+ {
+ ClearWindowTilemap(sMysteryGiftLinkMenu.windowId);
+ }
+ else
+ {
+ switch (arg2)
+ {
+ case 0: // can never be reached, because of the if statement above
+ ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE);
+ break;
+ case 2:
+ case 1:
+ ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE);
+ break;
+ }
+ }
+ CopyWindowToVram(sMysteryGiftLinkMenu.windowId, 1);
+ }
+ break;
+ case 2:
+ DestroyListMenuTask(sMysteryGiftLinkMenu.listTaskId, NULL, NULL);
+ RemoveWindow(sMysteryGiftLinkMenu.windowId);
+ sMysteryGiftLinkMenu.state = 0;
+ return sMysteryGiftLinkMenu.currItemId;
+ }
+ return LIST_NOTHING_CHOSEN;
+}
+
+u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow)
+{
+ u8 taskId = ListMenuInitInternal(listMenuTemplate, scrollOffset, selectedRow);
+ PutWindowTilemap(listMenuTemplate->windowId);
+ CopyWindowToVram(listMenuTemplate->windowId, 2);
+ return taskId;
+}
+
+u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow)
+{
+ s32 i;
+ u8 taskId = ListMenuInitInternal(listMenuTemplate, scrollOffset, selectedRow);
+
+ for (i = 0; rect[i].palNum != 0xFF; i++)
+ PutWindowRectTilemapOverridePalette(listMenuTemplate->windowId, rect[i].x, rect[i].y, rect[i].width, rect[i].height, rect[i].palNum);
+ CopyWindowToVram(listMenuTemplate->windowId, 2);
+ return taskId;
+}
+
+s32 ListMenu_ProcessInput(u8 listTaskId)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ return list->template.items[list->scrollOffset + list->selectedRow].index;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return LIST_CANCEL;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ ListMenuChangeSelection(list, TRUE, 1, FALSE);
+ return LIST_NOTHING_CHOSEN;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ ListMenuChangeSelection(list, TRUE, 1, TRUE);
+ return LIST_NOTHING_CHOSEN;
+ }
+ else // try to move by one window scroll
+ {
+ bool16 rightButton, leftButton;
+ switch (list->template.scrollMultiple)
+ {
+ case LIST_NO_MULTIPLE_SCROLL:
+ default:
+ leftButton = FALSE;
+ rightButton = FALSE;
+ break;
+ case LIST_MULTIPLE_SCROLL_DPAD:
+ leftButton = gMain.newAndRepeatedKeys & DPAD_LEFT;
+ rightButton = gMain.newAndRepeatedKeys & DPAD_RIGHT;
+ break;
+ case LIST_MULTIPLE_SCROLL_L_R:
+ leftButton = gMain.newAndRepeatedKeys & L_BUTTON;
+ rightButton = gMain.newAndRepeatedKeys & R_BUTTON;
+ break;
+ }
+ if (leftButton)
+ {
+ ListMenuChangeSelection(list, TRUE, list->template.maxShowed, FALSE);
+ return LIST_NOTHING_CHOSEN;
+ }
+ else if (rightButton)
+ {
+ ListMenuChangeSelection(list, TRUE, list->template.maxShowed, TRUE);
+ return LIST_NOTHING_CHOSEN;
+ }
+ else
+ {
+ return LIST_NOTHING_CHOSEN;
+ }
+ }
+}
+
+void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ if (scrollOffset != NULL)
+ *scrollOffset = list->scrollOffset;
+ if (selectedRow != NULL)
+ *selectedRow = list->selectedRow;
+
+ if (list->taskId != TASK_NONE)
+ ListMenuRemoveCursorObject(list->taskId, list->template.cursorKind - 2);
+
+ DestroyTask(listTaskId);
+}
+
+void RedrawListMenu(u8 listTaskId)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
+ ListMenuDrawCursor(list);
+ CopyWindowToVram(list->template.windowId, 2);
+}
+
+static void ChangeListMenuPals(u8 listTaskId, u8 cursorPal, u8 fillValue, u8 cursorShadowPal)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ list->template.cursorPal = cursorPal;
+ list->template.fillValue = fillValue;
+ list->template.cursorShadowPal = cursorShadowPal;
+}
+
+static void ChangeListMenuCoords(u8 listTaskId, u8 x, u8 y)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ SetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT, x);
+ SetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP, y);
+}
+
+static s32 ListMenuTestInput(struct ListMenuTemplate *template, u32 scrollOffset, u32 selectedRow, u16 keys, u16 *newScrollOffset, u16 *newSelectedRow)
+{
+ struct ListMenu list;
+
+ list.template = *template;
+ list.scrollOffset = scrollOffset;
+ list.selectedRow = selectedRow;
+ list.unk_1C = 0;
+ list.unk_1D = 0;
+ if (keys == DPAD_UP)
+ ListMenuChangeSelection(&list, FALSE, 1, FALSE);
+ if (keys == DPAD_DOWN)
+ ListMenuChangeSelection(&list, FALSE, 1, TRUE);
+
+ if (newScrollOffset != NULL)
+ *newScrollOffset = list.scrollOffset;
+ if (newSelectedRow != NULL)
+ *newSelectedRow = list.selectedRow;
+ return LIST_NOTHING_CHOSEN;
+}
+
+static void ListMenuGetCurrentItemArrayId(u8 listTaskId, u16 *arrayId)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ if (arrayId != NULL)
+ *arrayId = list->scrollOffset + list->selectedRow;
+}
+
+void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ if (scrollOffset != NULL)
+ *scrollOffset = list->scrollOffset;
+ if (selectedRow != NULL)
+ *selectedRow = list->selectedRow;
+}
+
+u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId)
+{
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+
+ return list->selectedRow * yMultiplier + list->template.upText_Y;
+}
+
+static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow)
+{
+ u8 listTaskId = CreateTask(ListMenuDummyTask, 0);
+ struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
+
+ list->template = *listMenuTemplate;
+ list->scrollOffset = scrollOffset;
+ list->selectedRow = selectedRow;
+ list->unk_1C = 0;
+ list->unk_1D = 0;
+ list->taskId = TASK_NONE;
+ list->unk_1F = 0;
+ gListMenuOverride.cursorPal = list->template.cursorPal;
+ gListMenuOverride.fillValue = list->template.fillValue;
+ gListMenuOverride.cursorShadowPal = list->template.cursorShadowPal;
+ gListMenuOverride.lettersSpacing = list->template.lettersSpacing;
+ gListMenuOverride.fontId = list->template.fontId;
+ gListMenuOverride.enabled = FALSE;
+ if (list->template.totalItems < list->template.maxShowed)
+ list->template.maxShowed = list->template.totalItems;
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, TRUE);
+
+ return listTaskId;
+}
+
+static void ListMenuPrint(struct ListMenu *list, const u8 *str, u8 x, u8 y)
+{
+ struct TextColor colors;
+ if (gListMenuOverride.enabled)
+ {
+ colors.fgColor = gListMenuOverride.fillValue;
+ colors.bgColor = gListMenuOverride.cursorPal;
+ colors.shadowColor = gListMenuOverride.cursorShadowPal;
+ AddTextPrinterParameterized4(list->template.windowId, gListMenuOverride.fontId, x, y, gListMenuOverride.lettersSpacing, 0, &colors, TEXT_SPEED_FF, str);
+ gListMenuOverride.enabled = FALSE;
+ }
+ else
+ {
+ colors.fgColor = list->template.fillValue;
+ colors.bgColor = list->template.cursorPal;
+ colors.shadowColor = list->template.cursorShadowPal;
+ AddTextPrinterParameterized4(list->template.windowId, list->template.fontId, x, y, list->template.lettersSpacing, 0, &colors, TEXT_SPEED_FF, str);
+ }
+}
+
+static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count)
+{
+ s32 i;
+ u8 x, y;
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+
+ for (i = 0; i < count; i++)
+ {
+ if (list->template.items[startIndex].index != LIST_HEADER)
+ x = list->template.item_X;
+ else
+ x = list->template.header_X;
+ y = (yOffset + i) * yMultiplier + list->template.upText_Y;
+ if (list->template.itemPrintFunc != NULL)
+ list->template.itemPrintFunc(list->template.windowId, list->template.items[startIndex].index, y);
+ ListMenuPrint(list, list->template.items[startIndex].label, x, y);
+ startIndex++;
+ }
+}
+
+static void ListMenuDrawCursor(struct ListMenu *list)
+{
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+ u8 x = list->template.cursor_X;
+ u8 y = list->selectedRow * yMultiplier + list->template.upText_Y;
+
+ switch (list->template.cursorKind)
+ {
+ case 0:
+ ListMenuPrint(list, gFameCheckerText_ListMenuCursor, x, y);
+ break;
+ case 1:
+ break;
+ case 2:
+ if (list->taskId == TASK_NONE)
+ list->taskId = ListMenuAddCursorObject(list, 0);
+ ListMenuUpdateCursorObject(list->taskId, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT) * 8 - 1, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y - 1, 0);
+ break;
+ case 3:
+ if (list->taskId == TASK_NONE)
+ list->taskId = ListMenuAddCursorObject(list, 1);
+ ListMenuUpdateCursorObject(list->taskId, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT) * 8 + x, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y, 1);
+ break;
+ }
+}
+
+static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind)
+{
+ struct CursorStruct cursor;
+
+ cursor.left = 0;
+ cursor.top = 160;
+ cursor.rowWidth = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8 + 2;
+ cursor.rowHeight = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + 2;
+ cursor.tileTag = 0x4000;
+ cursor.palTag = SPRITE_INVALID_TAG;
+ cursor.palNum = 15;
+ return ListMenuAddCursorObjectInternal(&cursor, cursorKind);
+}
+
+static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow)
+{
+ u8 cursorKind = list->template.cursorKind;
+ if (cursorKind == 0)
+ {
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+ u8 width = GetMenuCursorDimensionByFont(list->template.fontId, 0);
+ u8 height = GetMenuCursorDimensionByFont(list->template.fontId, 1);
+ FillWindowPixelRect(list->template.windowId,
+ PIXEL_FILL(list->template.fillValue),
+ list->template.cursor_X,
+ selectedRow * yMultiplier + list->template.upText_Y,
+ width,
+ height);
+ }
+}
+
+static u8 ListMenuUpdateSelectedRowIndexAndScrollOffset(struct ListMenu *list, bool8 movingDown)
+{
+ u16 selectedRow = list->selectedRow;
+ u16 scrollOffset = list->scrollOffset;
+ u16 newRow;
+ u32 newScroll;
+
+ if (!movingDown)
+ {
+ if (list->template.maxShowed == 1)
+ newRow = 0;
+ else
+ newRow = list->template.maxShowed - ((list->template.maxShowed / 2) + (list->template.maxShowed % 2)) - 1;
+
+ if (scrollOffset == 0)
+ {
+ while (selectedRow != 0)
+ {
+ selectedRow--;
+ if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER)
+ {
+ list->selectedRow = selectedRow;
+ return 1;
+ }
+ }
+ return 0;
+ }
+ else
+ {
+ while (selectedRow > newRow)
+ {
+ selectedRow--;
+ if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER)
+ {
+ list->selectedRow = selectedRow;
+ return 1;
+ }
+ }
+ newScroll = scrollOffset - 1;
+ }
+ }
+ else
+ {
+ if (list->template.maxShowed == 1)
+ newRow = 0;
+ else
+ newRow = ((list->template.maxShowed / 2) + (list->template.maxShowed % 2));
+
+ if (scrollOffset == list->template.totalItems - list->template.maxShowed)
+ {
+ while (selectedRow < list->template.maxShowed - 1)
+ {
+ selectedRow++;
+ if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER)
+ {
+ list->selectedRow = selectedRow;
+ return 1;
+ }
+ }
+ return 0;
+ }
+ else
+ {
+ while (selectedRow < newRow)
+ {
+ selectedRow++;
+ if (list->template.items[scrollOffset + selectedRow].index != LIST_HEADER)
+ {
+ list->selectedRow = selectedRow;
+ return 1;
+ }
+ }
+ newScroll = scrollOffset + 1;
+ }
+ }
+ list->selectedRow = newRow;
+ list->scrollOffset = newScroll;
+ return 2;
+}
+
+static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown)
+{
+ if (count >= list->template.maxShowed)
+ {
+ FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed);
+ }
+ else
+ {
+ u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding;
+
+ if (!movingDown)
+ {
+ u16 y, width, height;
+
+ ScrollWindow(list->template.windowId, 1, count * yMultiplier, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset, 0, count);
+
+ y = (list->template.maxShowed * yMultiplier) + list->template.upText_Y;
+ width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8;
+ height = (GetWindowAttribute(list->template.windowId, WINDOW_HEIGHT) * 8) - y;
+ FillWindowPixelRect(list->template.windowId,
+ PIXEL_FILL(list->template.fillValue),
+ 0, y, width, height);
+ }
+ else
+ {
+ u16 width;
+
+ ScrollWindow(list->template.windowId, 0, count * yMultiplier, PIXEL_FILL(list->template.fillValue));
+ ListMenuPrintEntries(list, list->scrollOffset + (list->template.maxShowed - count), list->template.maxShowed - count, count);
+
+ width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8;
+ FillWindowPixelRect(list->template.windowId,
+ PIXEL_FILL(list->template.fillValue),
+ 0, 0, width, list->template.upText_Y);
+ }
+ }
+}
+
+static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown)
+{
+ u16 oldSelectedRow;
+ u8 selectionChange, i, cursorCount;
+
+ oldSelectedRow = list->selectedRow;
+ cursorCount = 0;
+ selectionChange = 0;
+ for (i = 0; i < count; i++)
+ {
+ do
+ {
+ u8 ret = ListMenuUpdateSelectedRowIndexAndScrollOffset(list, movingDown);
+
+ selectionChange |= ret;
+ if (ret != 2)
+ break;
+ cursorCount++;
+ }
+ while (list->template.items[list->scrollOffset + list->selectedRow].index == LIST_HEADER);
+ }
+
+ if (updateCursorAndCallCallback)
+ {
+ switch (selectionChange)
+ {
+ case 0:
+ default:
+ return TRUE;
+ case 1:
+ ListMenuErasePrintedCursor(list, oldSelectedRow);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, FALSE);
+ CopyWindowToVram(list->template.windowId, 2);
+ break;
+ case 2:
+ case 3:
+ ListMenuErasePrintedCursor(list, oldSelectedRow);
+ ListMenuScroll(list, cursorCount, movingDown);
+ ListMenuDrawCursor(list);
+ ListMenuCallSelectionChangedCallback(list, FALSE);
+ CopyWindowToVram(list->template.windowId, 2);
+ break;
+ }
+ }
+ return FALSE;
+}
+
+static void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 onInit)
+{
+ if (list->template.moveCursorFunc != NULL)
+ list->template.moveCursorFunc(list->template.items[list->scrollOffset + list->selectedRow].index, onInit, list);
+}
+
+void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal)
+{
+ gListMenuOverride.cursorPal = cursorPal;
+ gListMenuOverride.fillValue = fillValue;
+ gListMenuOverride.cursorShadowPal = cursorShadowPal;
+ gListMenuOverride.enabled = TRUE;
+}
+
+void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (!onInit)
+ PlaySE(SE_SELECT);
+}
+
+static s32 ListMenuGetUnkIndicatorsStructFields(u8 taskId, u8 field)
+{
+ struct UnkIndicatorsStruct *data = (struct UnkIndicatorsStruct *)gTasks[taskId].data;
+
+ switch (field)
+ {
+ case 0:
+ case 1:
+ return (s32)(data->field_4);
+ case 2:
+ return data->field_C;
+ case 3:
+ return data->field_E;
+ case 4:
+ return data->field_10;
+ case 5:
+ return data->field_11;
+ case 6:
+ return data->field_12;
+ case 7:
+ return data->field_13;
+ case 8:
+ return data->field_14_0;
+ case 9:
+ return data->field_14_1;
+ case 10:
+ return data->field_15_0;
+ case 11:
+ return data->field_15_1;
+ case 12:
+ return data->field_16_0;
+ case 13:
+ return data->field_16_1;
+ case 14:
+ return data->field_16_2;
+ case 15:
+ return data->field_17_0;
+ case 16:
+ return data->field_17_1;
+ default:
+ return -1;
+ }
+}
+
+void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value)
+{
+ struct UnkIndicatorsStruct *data = (struct UnkIndicatorsStruct *)gTasks[taskId].data;
+
+ switch (field)
+ {
+ case 0:
+ case 1:
+ data->field_4 = (void *)value;
+ break;
+ case 2:
+ data->field_C = value;
+ break;
+ case 3:
+ data->field_E = value;
+ break;
+ case 4:
+ data->field_10 = value;
+ break;
+ case 5:
+ data->field_11 = value;
+ break;
+ case 6:
+ data->field_12 = value;
+ break;
+ case 7:
+ data->field_13 = value;
+ break;
+ case 8:
+ data->field_14_0 = value;
+ break;
+ case 9:
+ data->field_14_1 = value;
+ break;
+ case 10:
+ data->field_15_0 = value;
+ break;
+ case 11:
+ data->field_15_1 = value;
+ break;
+ case 12:
+ data->field_16_0 = value;
+ break;
+ case 13:
+ data->field_16_1 = value;
+ break;
+ case 14:
+ data->field_16_2 = value;
+ break;
+ case 15:
+ data->field_17_0 = value;
+ break;
+ case 16:
+ data->field_17_1 = value;
+ break;
+ }
+}
+
+void sub_8107CD8(u8 palOffset, u16 speciesId)
+{
+ LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, 0x20);
+}
+
+void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y)
+{
+ BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32);
+}
+
+void sub_8107D38(u8 palOffset, u8 palId)
+{
+ const u16 *palette;
+
+ switch (palId)
+ {
+ case 0:
+ default:
+ palette = gFireRedMenuElements1_Pal;
+ break;
+ case 1:
+ palette = gFireRedMenuElements2_Pal;
+ break;
+ }
+ LoadPalette(palette, palOffset, 0x20);
+}
+
+void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y)
+{
+ BlitBitmapRectToWindow(windowId, gFireRedMenuElements_Gfx + gMoveMenuInfoIcons[iconId].offset * 32, 0, 0, 128, 128, x, y, gMoveMenuInfoIcons[iconId].width, gMoveMenuInfoIcons[iconId].height);
+}
diff --git a/src/menu_indicators.c b/src/menu_indicators.c
new file mode 100644
index 000000000..1d6589fb0
--- /dev/null
+++ b/src/menu_indicators.c
@@ -0,0 +1,659 @@
+#include "global.h"
+#include "malloc.h"
+#include "task.h"
+#include "decompress.h"
+#include "palette.h"
+#include "strings.h"
+#include "sprite.h"
+#include "trig.h"
+#include "list_menu.h"
+#include "menu_indicators.h"
+
+struct ScrollIndicatorPair
+{
+ u8 field_0;
+ u16 *scrollOffset;
+ u16 fullyUpThreshold;
+ u16 fullyDownThreshold;
+ u8 topSpriteId;
+ u8 bottomSpriteId;
+ u16 tileTag;
+ u16 palTag;
+};
+
+struct RedOutlineCursor
+{
+ struct SubspriteTable subspriteTable;
+ struct Subsprite *subspritesPtr;
+ u8 spriteId;
+ u16 tileTag;
+ u16 palTag;
+};
+
+struct RedArrowCursor
+{
+ u8 spriteId;
+ u16 tileTag;
+ u16 palTag;
+};
+
+struct ScrollIndicatorTemplate
+{
+ u8 animNum:4;
+ u8 bounceDir:4;
+ u8 multiplier;
+ s16 frequency;
+};
+
+static EWRAM_DATA struct ScrollArrowsTemplate sTempScrollArrowTemplate = {0};
+
+static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite);
+static void SpriteCallback_RedArrowCursor(struct Sprite *sprite);
+static void Task_ScrollIndicatorArrowPair(u8 taskId);
+static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor);
+static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y);
+static void ListMenuRemoveRedArrowCursorObject(u8 taskId);
+
+static const struct ScrollIndicatorTemplate sScrollIndicatorTemplates[] =
+{
+ {
+ .animNum = 0,
+ .bounceDir = 0,
+ .multiplier = 2,
+ .frequency = 8,
+ },
+ {
+ .animNum = 1,
+ .bounceDir = 0,
+ .multiplier = 2,
+ .frequency = -8,
+ },
+ {
+ .animNum = 2,
+ .bounceDir = 1,
+ .multiplier = 2,
+ .frequency = 8,
+ },
+ {
+ .animNum = 3,
+ .bounceDir = 1,
+ .multiplier = 2,
+ .frequency = -8,
+ },
+};
+
+static const struct OamData sOamData_ScrollArrowIndicator =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_ScrollArrowIndicator0[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_ScrollArrowIndicator1[] =
+{
+ ANIMCMD_FRAME(0, 30, 1, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_ScrollArrowIndicator2[] =
+{
+ ANIMCMD_FRAME(4, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sSpriteAnim_ScrollArrowIndicator3[] =
+{
+ ANIMCMD_FRAME(4, 30, 0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sSpriteAnimTable_ScrollArrowIndicator[] =
+{
+ sSpriteAnim_ScrollArrowIndicator0,
+ sSpriteAnim_ScrollArrowIndicator1,
+ sSpriteAnim_ScrollArrowIndicator2,
+ sSpriteAnim_ScrollArrowIndicator3,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_ScrollArrowIndicator =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_ScrollArrowIndicator,
+ .anims = sSpriteAnimTable_ScrollArrowIndicator,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_ScrollIndicatorArrow,
+};
+
+static const struct Subsprite sSubsprite_RedOutline1 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 0,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline2 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 1,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline3 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 2,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline4 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 3,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline5 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 4,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline6 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 5,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline7 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 6,
+ .priority = 0,
+};
+
+static const struct Subsprite sSubsprite_RedOutline8 =
+{
+ .x = 0,
+ .y = 0,
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .tileOffset = 7,
+ .priority = 0,
+};
+
+static const struct OamData sOamData_RedArrowCursor =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_RedArrowCursor[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sSpriteAnimTable_RedArrowCursor[] = { sSpriteAnim_RedArrowCursor };
+
+static const struct SpriteTemplate sSpriteTemplate_RedArrowCursor =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_RedArrowCursor,
+ .anims = sSpriteAnimTable_RedArrowCursor,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_RedArrowCursor,
+};
+
+static const u16 sRedArrowPal[] = INCBIN_U16("graphics/interface/red_arrow.gbapal");
+static const u32 sRedArrowOtherGfx[] = INCBIN_U32("graphics/interface/red_arrow_other.4bpp.lz");
+static const u32 sSelectorOutlineGfx[] = INCBIN_U32("graphics/interface/selector_outline.4bpp.lz");
+static const u32 sRedArrowGfx[] = INCBIN_U32("graphics/interface/red_arrow.4bpp.lz");
+
+#define tState data[0]
+#define tAnimNum data[1]
+#define tBounceDir data[2]
+#define tMultiplier data[3]
+#define tFrequency data[4]
+#define tSinePos data[5]
+
+static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite)
+{
+ s32 multiplier;
+
+ switch (sprite->tState)
+ {
+ case 0:
+ StartSpriteAnim(sprite, sprite->tAnimNum);
+ sprite->tState++;
+ break;
+ case 1:
+ switch (sprite->tBounceDir)
+ {
+ case 0:
+ multiplier = sprite->tMultiplier;
+ sprite->pos2.x = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
+ break;
+ case 1:
+ multiplier = sprite->tMultiplier;
+ sprite->pos2.y = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
+ break;
+ }
+ sprite->tSinePos += sprite->tFrequency;
+ break;
+ }
+}
+
+static u8 AddScrollIndicatorArrowObject(u8 arrowDir, u8 x, u8 y, u16 tileTag, u16 palTag)
+{
+ u8 spriteId;
+ struct SpriteTemplate spriteTemplate;
+
+ spriteTemplate = sSpriteTemplate_ScrollArrowIndicator;
+ spriteTemplate.tileTag = tileTag;
+ spriteTemplate.paletteTag = palTag;
+ spriteId = CreateSprite(&spriteTemplate, x, y, 0);
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].tState = 0;
+ gSprites[spriteId].tAnimNum = sScrollIndicatorTemplates[arrowDir].animNum;
+ gSprites[spriteId].tBounceDir = sScrollIndicatorTemplates[arrowDir].bounceDir;
+ gSprites[spriteId].tMultiplier = sScrollIndicatorTemplates[arrowDir].multiplier;
+ gSprites[spriteId].tFrequency = sScrollIndicatorTemplates[arrowDir].frequency;
+ gSprites[spriteId].tSinePos = 0;
+ return spriteId;
+}
+
+#undef tState
+#undef tAnimNum
+#undef tBounceDir
+#undef tMultiplier
+#undef tFrequency
+#undef tSinePos
+
+u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 *scrollOffset)
+{
+ struct CompressedSpriteSheet spriteSheet;
+ struct SpritePalette spritePal;
+ struct ScrollIndicatorPair *data;
+ u8 taskId;
+
+ spriteSheet.data = sRedArrowOtherGfx;
+ spriteSheet.size = 0x100;
+ spriteSheet.tag = arrowInfo->tileTag;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ if (arrowInfo->palTag == SPRITE_INVALID_TAG)
+ {
+ LoadPalette(sRedArrowPal, (16 * arrowInfo->palNum) + 0x100, 0x20);
+ }
+ else
+ {
+ spritePal.data = sRedArrowPal;
+ spritePal.tag = arrowInfo->palTag;
+ LoadSpritePalette(&spritePal);
+ }
+ taskId = CreateTask(Task_ScrollIndicatorArrowPair, 0);
+ data = (struct ScrollIndicatorPair *)gTasks[taskId].data;
+
+ data->field_0 = 0;
+ data->scrollOffset = scrollOffset;
+ data->fullyUpThreshold = arrowInfo->fullyUpThreshold;
+ data->fullyDownThreshold = arrowInfo->fullyDownThreshold;
+ data->tileTag = arrowInfo->tileTag;
+ data->palTag = arrowInfo->palTag;
+ data->topSpriteId = AddScrollIndicatorArrowObject(arrowInfo->firstArrowType, arrowInfo->firstX, arrowInfo->firstY, arrowInfo->tileTag, arrowInfo->palTag);
+ data->bottomSpriteId = AddScrollIndicatorArrowObject(arrowInfo->secondArrowType, arrowInfo->secondX, arrowInfo->secondY, arrowInfo->tileTag, arrowInfo->palTag);
+
+ if (arrowInfo->palTag == SPRITE_INVALID_TAG)
+ {
+ gSprites[data->topSpriteId].oam.paletteNum = arrowInfo->palNum;
+ gSprites[data->bottomSpriteId].oam.paletteNum = arrowInfo->palNum;
+ }
+ return taskId;
+}
+
+u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset)
+{
+ if (arrowType == SCROLL_ARROW_UP || arrowType == SCROLL_ARROW_DOWN)
+ {
+ sTempScrollArrowTemplate.firstArrowType = SCROLL_ARROW_UP;
+ sTempScrollArrowTemplate.firstX = commonPos;
+ sTempScrollArrowTemplate.firstY = firstPos;
+ sTempScrollArrowTemplate.secondArrowType = SCROLL_ARROW_DOWN;
+ sTempScrollArrowTemplate.secondX = commonPos;
+ sTempScrollArrowTemplate.secondY = secondPos;
+ }
+ else
+ {
+ sTempScrollArrowTemplate.firstArrowType = SCROLL_ARROW_LEFT;
+ sTempScrollArrowTemplate.firstX = firstPos;
+ sTempScrollArrowTemplate.firstY = commonPos;
+ sTempScrollArrowTemplate.secondArrowType = SCROLL_ARROW_RIGHT;
+ sTempScrollArrowTemplate.secondX = secondPos;
+ sTempScrollArrowTemplate.secondY = commonPos;
+ }
+ sTempScrollArrowTemplate.fullyUpThreshold = 0;
+ sTempScrollArrowTemplate.fullyDownThreshold = fullyDownThreshold;
+ sTempScrollArrowTemplate.tileTag = tileTag;
+ sTempScrollArrowTemplate.palTag = palTag;
+ sTempScrollArrowTemplate.palNum = 0;
+
+ return AddScrollIndicatorArrowPair(&sTempScrollArrowTemplate, scrollOffset);
+}
+
+static void Task_ScrollIndicatorArrowPair(u8 taskId)
+{
+ struct ScrollIndicatorPair *data = (struct ScrollIndicatorPair *)gTasks[taskId].data;
+ u16 currItem = (*data->scrollOffset);
+
+ if (currItem == data->fullyUpThreshold)
+ gSprites[data->topSpriteId].invisible = TRUE;
+ else
+ gSprites[data->topSpriteId].invisible = FALSE;
+
+ if (currItem == data->fullyDownThreshold)
+ gSprites[data->bottomSpriteId].invisible = TRUE;
+ else
+ gSprites[data->bottomSpriteId].invisible = FALSE;
+}
+
+void RemoveScrollIndicatorArrowPair(u8 taskId)
+{
+ struct ScrollIndicatorPair *data = (struct ScrollIndicatorPair *)gTasks[taskId].data;
+
+ if (data->tileTag != SPRITE_INVALID_TAG)
+ FreeSpriteTilesByTag(data->tileTag);
+ if (data->palTag != SPRITE_INVALID_TAG)
+ FreeSpritePaletteByTag(data->palTag);
+ DestroySprite(&gSprites[data->topSpriteId]);
+ DestroySprite(&gSprites[data->bottomSpriteId]);
+ DestroyTask(taskId);
+}
+
+u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind)
+{
+ switch (cursorKind)
+ {
+ case 0:
+ default:
+ return ListMenuAddRedOutlineCursorObject(cursor);
+ case 1:
+ return ListMenuAddRedArrowCursorObject(cursor);
+ }
+}
+
+void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind)
+{
+ switch (cursorKind)
+ {
+ case 0:
+ ListMenuUpdateRedOutlineCursorObject(taskId, x, y);
+ break;
+ case 1:
+ ListMenuUpdateRedArrowCursorObject(taskId, x, y);
+ break;
+ }
+}
+
+void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind)
+{
+ switch (cursorKind)
+ {
+ case 0:
+ ListMenuRemoveRedOutlineCursorObject(taskId);
+ break;
+ case 1:
+ ListMenuRemoveRedArrowCursorObject(taskId);
+ break;
+ }
+}
+
+void Task_RedOutlineCursor(u8 taskId)
+{
+}
+
+u8 ListMenuGetRedOutlineCursorSpriteCount(u16 rowWidth, u16 rowHeight)
+{
+ s32 i, count = 4;
+
+ if (rowWidth > 16)
+ for (i = 8; i < (rowWidth - 8); i += 8)
+ count += 2;
+ if (rowHeight > 16)
+ for (i = 8; i < (rowHeight - 8); i += 8)
+ count += 2;
+ return count;
+}
+
+void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, struct Subsprite *subsprites)
+{
+ s32 i, j, id = 0;
+
+ subsprites[id] = sSubsprite_RedOutline1;
+ subsprites[id].x = 136;
+ subsprites[id].y = 136;
+ id++;
+ subsprites[id] = sSubsprite_RedOutline2;
+ subsprites[id].x = rowWidth + 128;
+ subsprites[id].y = 136;
+ id++;
+ subsprites[id] = sSubsprite_RedOutline7;
+ subsprites[id].x = 136;
+ subsprites[id].y = rowHeight + 128;
+ id++;
+ subsprites[id] = sSubsprite_RedOutline8;
+ subsprites[id].x = rowWidth + 128;
+ subsprites[id].y = rowHeight + 128;
+ id++;
+ if (rowWidth > 16)
+ {
+ for (i = 8; i < rowWidth - 8; i += 8)
+ {
+ subsprites[id] = sSubsprite_RedOutline3;
+ subsprites[id].x = i - 120;
+ subsprites[id].y = 136;
+ id++;
+
+ subsprites[id] = sSubsprite_RedOutline6;
+ subsprites[id].x = i - 120;
+ subsprites[id].y = rowHeight + 128;
+ id++;
+ }
+ }
+ if (rowHeight > 16)
+ {
+ for (j = 8; j < rowHeight - 8; j += 8)
+ {
+ subsprites[id] = sSubsprite_RedOutline4;
+ subsprites[id].x = 136;
+ subsprites[id].y = j - 120;
+ id++;
+ subsprites[id] = sSubsprite_RedOutline5;
+ subsprites[id].x = rowWidth + 128;
+ subsprites[id].y = j - 120;
+ id++;
+ }
+ }
+}
+
+u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor)
+{
+ struct CompressedSpriteSheet spriteSheet;
+ struct SpritePalette spritePal;
+ struct RedOutlineCursor *data;
+ struct SpriteTemplate spriteTemplate;
+ u8 taskId;
+
+ spriteSheet.data = sSelectorOutlineGfx;
+ spriteSheet.size = 0x100;
+ spriteSheet.tag = cursor->tileTag;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ if (cursor->palTag == SPRITE_INVALID_TAG)
+ {
+ LoadPalette(sRedArrowPal, (16 * cursor->palNum) + 0x100, 0x20);
+ }
+ else
+ {
+ spritePal.data = sRedArrowPal;
+ spritePal.tag = cursor->palTag;
+ LoadSpritePalette(&spritePal);
+ }
+ taskId = CreateTask(Task_RedOutlineCursor, 0);
+ data = (struct RedOutlineCursor *)gTasks[taskId].data;
+ data->tileTag = cursor->tileTag;
+ data->palTag = cursor->palTag;
+ data->subspriteTable.subspriteCount = ListMenuGetRedOutlineCursorSpriteCount(cursor->rowWidth, cursor->rowHeight);
+ data->subspriteTable.subsprites = data->subspritesPtr = Alloc(data->subspriteTable.subspriteCount * 4);
+ ListMenuSetUpRedOutlineCursorSpriteOamTable(cursor->rowWidth, cursor->rowHeight, data->subspritesPtr);
+ spriteTemplate = gDummySpriteTemplate;
+ spriteTemplate.tileTag = cursor->tileTag;
+ spriteTemplate.paletteTag = cursor->palTag;
+ data->spriteId = CreateSprite(&spriteTemplate, cursor->left + 120, cursor->top + 120, 0);
+ SetSubspriteTables(&gSprites[data->spriteId], &data->subspriteTable);
+ gSprites[data->spriteId].oam.priority = 0;
+ gSprites[data->spriteId].subpriority = 0;
+ gSprites[data->spriteId].subspriteTableNum = 0;
+ if (cursor->palTag == SPRITE_INVALID_TAG)
+ gSprites[data->spriteId].oam.paletteNum = cursor->palNum;
+ return taskId;
+}
+
+void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y)
+{
+ struct RedOutlineCursor *data = (struct RedOutlineCursor *)gTasks[taskId].data;
+
+ gSprites[data->spriteId].pos1.x = x + 120;
+ gSprites[data->spriteId].pos1.y = y + 120;
+}
+
+void ListMenuRemoveRedOutlineCursorObject(u8 taskId)
+{
+ struct RedOutlineCursor *data = (struct RedOutlineCursor *)gTasks[taskId].data;
+
+ Free(data->subspritesPtr);
+ if (data->tileTag != SPRITE_INVALID_TAG)
+ FreeSpriteTilesByTag(data->tileTag);
+ if (data->palTag != SPRITE_INVALID_TAG)
+ FreeSpritePaletteByTag(data->palTag);
+ DestroySprite(&gSprites[data->spriteId]);
+ DestroyTask(taskId);
+}
+
+static void SpriteCallback_RedArrowCursor(struct Sprite *sprite)
+{
+ sprite->pos2.x = gSineTable[(u8)(sprite->data[0])] / 64;
+ sprite->data[0] += 8;
+}
+
+static void Task_RedArrowCursor(u8 taskId)
+{
+}
+
+static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor)
+{
+ struct CompressedSpriteSheet spriteSheet;
+ struct SpritePalette spritePal;
+ struct RedArrowCursor *data;
+ struct SpriteTemplate spriteTemplate;
+ u8 taskId;
+
+ spriteSheet.data = sRedArrowGfx;
+ spriteSheet.size = 0x80;
+ spriteSheet.tag = cursor->tileTag;
+ LoadCompressedSpriteSheet(&spriteSheet);
+ if (cursor->palTag == SPRITE_INVALID_TAG)
+ {
+ LoadPalette(sRedArrowPal, (16 * cursor->palNum) + 0x100, 0x20);
+ }
+ else
+ {
+ spritePal.data = sRedArrowPal;
+ spritePal.tag = cursor->palTag;
+ LoadSpritePalette(&spritePal);
+ }
+ taskId = CreateTask(Task_RedArrowCursor, 0);
+ data = (struct RedArrowCursor *)gTasks[taskId].data;
+ data->tileTag = cursor->tileTag;
+ data->palTag = cursor->palTag;
+ spriteTemplate = sSpriteTemplate_RedArrowCursor;
+ spriteTemplate.tileTag = cursor->tileTag;
+ spriteTemplate.paletteTag = cursor->palTag;
+ data->spriteId = CreateSprite(&spriteTemplate, cursor->left, cursor->top, 0);
+ gSprites[data->spriteId].pos2.x = 8;
+ gSprites[data->spriteId].pos2.y = 8;
+ if (cursor->palTag == SPRITE_INVALID_TAG)
+ gSprites[data->spriteId].oam.paletteNum = cursor->palNum;
+ return taskId;
+}
+
+static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y)
+{
+ struct RedArrowCursor *data = (struct RedArrowCursor *)gTasks[taskId].data;
+
+ gSprites[data->spriteId].pos1.x = x;
+ gSprites[data->spriteId].pos1.y = y;
+}
+
+static void ListMenuRemoveRedArrowCursorObject(u8 taskId)
+{
+ struct RedArrowCursor *data = (struct RedArrowCursor *)gTasks[taskId].data;
+
+ if (data->tileTag != SPRITE_INVALID_TAG)
+ FreeSpriteTilesByTag(data->tileTag);
+ if (data->palTag != SPRITE_INVALID_TAG)
+ FreeSpritePaletteByTag(data->palTag);
+ DestroySprite(&gSprites[data->spriteId]);
+ DestroyTask(taskId);
+}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index abd29ca11..de6e1caa5 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -97,7 +97,7 @@ const u16 gUnknown_8467E74[] = INCBIN_U16("data/graphics/mevent/pal_467E74.gbapa
const u16 gUnknown_8467E94[] = INCBIN_U16("data/graphics/mevent/pal_467E94.gbapal");
const u16 gUnknown_8467EB4[] = INCBIN_U16("data/graphics/mevent/pal_467EB4.gbapal");
const u16 gUnknown_8467ED4[] = INCBIN_U16("data/graphics/mevent/pal_467ED4.gbapal");
-const u8 gUnknown_8467EF4[] = INCBIN_U8("data/graphics/mevent/gfx_467EF4.4bpp.lz");
+const u32 gUnknown_8467EF4[] = INCBIN_U32("data/graphics/mevent/gfx_467EF4.4bpp.lz");
const struct CompressedSpriteSheet gUnknown_8467F58 = {
gUnknown_8467EF4, 0x100, 0x8000
diff --git a/src/pokemon.c b/src/pokemon.c
index 906b97cae..b9b5e6d76 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -5423,7 +5423,7 @@ void PlayMapChosenOrBattleBGM(u16 songId)
PlayNewMapMusic(GetMUS_ForBattle());
}
-const u8 *GetMonFrontSpritePal(struct Pokemon *mon)
+const u32 *GetMonFrontSpritePal(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0);
@@ -5431,7 +5431,7 @@ const u8 *GetMonFrontSpritePal(struct Pokemon *mon)
return GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality);
}
-const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
+const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality)
{
u32 shinyValue;
diff --git a/src/quest_log.c b/src/quest_log.c
index fe83f67e9..d08724a56 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -11,7 +11,7 @@
#include "menu_helpers.h"
#include "window.h"
#include "text_window.h"
-#include "unk_text_util.h"
+#include "dynamic_placeholder_text_util.h"
#include "event_data.h"
#include "event_scripts.h"
#include "string_util.h"
@@ -996,7 +996,7 @@ void sub_8111368(void)
else
{
sub_8111274(gUnknown_203ADF8, 1);
- warp_in();
+ WarpIntoMap();
gFieldCallback2 = sub_8111000;
SetMainCallback2(sub_805726C);
}
@@ -3656,9 +3656,9 @@ void QuestLog_AutoGetSpeciesName(u16 a0, u8 * a1, u8 a2)
else
{
if (a0 != SPECIES_EGG)
- UnkTextUtil_SetPtrI(a2, gSpeciesNames[a0]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(a2, gSpeciesNames[a0]);
else
- UnkTextUtil_SetPtrI(a2, gText_EggNickname);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(a2, gText_EggNickname);
}
}
@@ -3949,14 +3949,14 @@ u16 * sub_81144EC(u16 * a0, const u16 * a1)
const u16 * sub_8114518(const u16 * a0)
{
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, 8);
memcpy(gStringVar1, (const u8 *)a0 + 5, 7);
sub_8115834(gStringVar1);
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, gUnknown_8456AE4[((const u8 *)a0)[4]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A422);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_8456AE4[((const u8 *)a0)[4]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A422);
a0 += 6;
return a0;
}
@@ -3973,14 +3973,14 @@ u16 * sub_8114578(u16 * a0, const u16 * a1)
const u16 * sub_81145A4(const u16 * a0)
{
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, 8);
memcpy(gStringVar1, (const u8 *)a0 + 5, 7);
sub_8115834(gStringVar1);
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, gUnknown_8456AE4[((const u8 *)a0)[4]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A477);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_8456AE4[((const u8 *)a0)[4]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A477);
a0 += 6;
return a0;
}
@@ -3999,7 +3999,7 @@ u16 * sub_8114604(u16 * a0, const u16 * a1)
const u16 * sub_811464C(const u16 * a0)
{
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
memset(gStringVar1, EOS, 8);
memset(gStringVar2, EOS, 8);
@@ -4010,12 +4010,12 @@ const u16 * sub_811464C(const u16 * a0)
sub_8115834(gStringVar1);
sub_8115834(gStringVar2);
sub_8115834(gStringVar3);
- UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName);
- UnkTextUtil_SetPtrI(1, gStringVar1);
- UnkTextUtil_SetPtrI(2, gStringVar2);
- UnkTextUtil_SetPtrI(3, gStringVar3);
- UnkTextUtil_SetPtrI(4, gUnknown_8456AE4[((const u8 *)a0)[4]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A4C6);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gStringVar3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gUnknown_8456AE4[((const u8 *)a0)[4]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A4C6);
a0 += 13;
return a0;
}
@@ -4111,12 +4111,12 @@ const u16 * sub_81148BC(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(20, a0);
boxIdxs = (const u8 *)a0 + 4;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
- UnkTextUtil_SetPtrI(2, GetBoxNamePtr(boxIdxs[1]));
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, GetBoxNamePtr(boxIdxs[1]));
QuestLog_AutoGetSpeciesName(a0[1], NULL, 3);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A566);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A566);
return a0 + 3;
}
@@ -4136,11 +4136,11 @@ const u16 * sub_8114944(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(21, a0);
boxIdxs = (const u8 *)a0 + 4;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
QuestLog_AutoGetSpeciesName(a0[1], NULL, 2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A5D9);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A5D9);
return a0 + 3;
}
@@ -4172,11 +4172,11 @@ const u16 * sub_81149D0(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(22, a0);
boxIdxs = (const u8 *)a0 + 4;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
QuestLog_AutoGetSpeciesName(a0[1], NULL, 2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A60A);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A60A);
return a0 + 3;
}
@@ -4199,11 +4199,11 @@ const u16 * sub_8114A4C(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(23, a0);
boxIdxs = (const u8 *)a0 + 2;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
- UnkTextUtil_SetPtrI(2, GetBoxNamePtr(boxIdxs[1]));
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A59C);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, GetBoxNamePtr(boxIdxs[1]));
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A59C);
return (const u16 *)boxIdxs + 1;
}
@@ -4223,10 +4223,10 @@ const u16 * sub_8114AC8(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(24, a0);
boxIdxs = (const u8 *)a0 + 2;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A5FA);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A5FA);
return (const u16 *)boxIdxs + 1;
}
@@ -4246,10 +4246,10 @@ const u16 * sub_8114B34(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(25, a0);
boxIdxs = (const u8 *)a0 + 2;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(boxIdxs[0]));
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A632);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A632);
return (const u16 *)boxIdxs + 1;
}
@@ -4269,10 +4269,10 @@ const u16 * sub_8114BA0(const u16 * a0)
const u8 * boxIdxs;
a0 = sub_8113E88(26, a0);
boxIdxs = (const u8 *)a0 + 2;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
QuestLog_AutoGetSpeciesName(a0[0], NULL, 0);
- UnkTextUtil_SetPtrI(1, GetBoxNamePtr(boxIdxs[0]));
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A64F);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetBoxNamePtr(boxIdxs[0]));
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A64F);
return (const u16 *)boxIdxs + 1;
}
@@ -4290,13 +4290,13 @@ u16 * sub_8114BE4(u16 * a0, const u16 * a1)
const u16 * sub_8114C0C(const u16 * a0)
{
const u16 *r4 = sub_8113E88(27, a0);
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, GetBoxNamePtr(*((const u8 *)r4 + 0)));
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, GetBoxNamePtr(*((const u8 *)r4 + 0)));
if (*((const u8 *)r4 + 0) == *((const u8 *)r4 + 1))
- UnkTextUtil_SetPtrI(1, gUnknown_841A694);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841A694);
else
- UnkTextUtil_SetPtrI(1, GetBoxNamePtr(*((const u8 *)r4 + 1)));
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A66E);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetBoxNamePtr(*((const u8 *)r4 + 1)));
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A66E);
return r4 + 1;
}
@@ -4358,14 +4358,14 @@ const u16 * sub_8114D68(const u16 * a0)
const u8 * r6;
a0 = sub_8113E88(30, a0);
r6 = (const u8 *)a0 + 6;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r6[0]);
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, gTrainers[a0[2]].trainerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gTrainers[a0[2]].trainerName);
QuestLog_AutoGetSpeciesName(a0[0], 0, 2);
QuestLog_AutoGetSpeciesName(a0[1], 0, 3);
- UnkTextUtil_SetPtrI(4, gUnknown_8456ACC[r6[1]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF0C);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gUnknown_8456ACC[r6[1]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AF0C);
return a0 + 4;
}
@@ -4399,43 +4399,43 @@ const u16 * sub_8114E68(const u16 * a0)
return NULL;
r6 = (const u8 *)a0 + 8;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r6[2]);
- UnkTextUtil_SetPtrI(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
QuestLog_AutoGetSpeciesName(a0[2], NULL, 1);
ConvertIntToDecimalStringN(gStringVar2, r6[0], STR_CONV_MODE_LEFT_ALIGN, 3);
- UnkTextUtil_SetPtrI(2, gStringVar2);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2);
QuestLog_AutoGetSpeciesName(a0[3], NULL, 3);
ConvertIntToDecimalStringN(gStringVar3, r6[1], STR_CONV_MODE_LEFT_ALIGN, 3);
- UnkTextUtil_SetPtrI(4, gStringVar3);
- UnkTextUtil_SetPtrI(5, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gStringVar3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gSaveBlock2Ptr->playerName);
if (r6[0] == 0)
{
if (r6[1] == 1)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA01);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AA01);
else
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA2B);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AA2B);
}
else if (r6[1] == 0)
{
if (r6[0] == 1)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A9A9);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A9A9);
else
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A9D4);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A9D4);
}
else if (r6[0] == 1)
{
if (r6[1] == 1)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA76);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AA76);
else
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AAAA);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AAAA);
}
else
{
if (r6[1] == 1)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AAEC);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AAEC);
else
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AB29);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AB29);
}
return (const u16 *)(r6 + 4);
}
@@ -4464,12 +4464,12 @@ const u16 * sub_811500C(const u16 * a0)
const u8 * r5;
a0 = sub_8113E88(32, a0);
r5 = (const u8 *)a0 + 6;
- UnkTextUtil_Reset();
- UnkTextUtil_SetPtrI(0, gTrainers[a0[2]].trainerName);
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gTrainers[a0[2]].trainerName);
QuestLog_AutoGetSpeciesName(a0[0], NULL, 1);
QuestLog_AutoGetSpeciesName(a0[1], NULL, 2);
- UnkTextUtil_SetPtrI(3, gUnknown_8456ACC[r5[1]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF3E);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gUnknown_8456ACC[r5[1]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AF3E);
return a0 + 4;
}
@@ -4493,25 +4493,25 @@ const u16 * sub_81150CC(const u16 * a0)
return NULL;
r5 = (const u8 *)a0 + 8;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
switch (gUnknown_203B044.unk_2)
{
case 0:
- UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName);
- UnkTextUtil_SetPtrI(1, gSaveBlock1Ptr->rivalName);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A2E1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gSaveBlock1Ptr->rivalName);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A2E1);
break;
case 1:
- UnkTextUtil_SetPtrI(0, gSaveBlock1Ptr->rivalName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock1Ptr->rivalName);
QuestLog_AutoGetSpeciesName(a0[2], NULL, 1);
- UnkTextUtil_SetPtrI(2, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gSaveBlock2Ptr->playerName);
QuestLog_AutoGetSpeciesName(a0[3], NULL, 3);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A312);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A312);
break;
case 2:
- UnkTextUtil_SetPtrI(0, gUnknown_8456AD8[r5[0]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A349);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_8456AD8[r5[0]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A349);
break;
}
return (const u16 *)(r5 + 2);
@@ -4527,21 +4527,21 @@ const u16 * sub_81151DC(const u16 * a0)
{
const u16 * r5 = sub_8113E88(34, a0);
const u8 * r6 = (const u8 *)r5 + 6;
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r6[0]);
- UnkTextUtil_SetPtrI(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
if (
gTrainers[r5[2]].trainerClass == 0x51
|| gTrainers[r5[2]].trainerClass == 0x59
|| gTrainers[r5[2]].trainerClass == 0x5A
)
- UnkTextUtil_SetPtrI(1, GetExpandedPlaceholder(6));
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, GetExpandedPlaceholder(6));
else
- UnkTextUtil_SetPtrI(1, gTrainers[r5[2]].trainerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gTrainers[r5[2]].trainerName);
QuestLog_AutoGetSpeciesName(r5[0], NULL, 2);
QuestLog_AutoGetSpeciesName(r5[1], NULL, 3);
- UnkTextUtil_SetPtrI(4, gUnknown_8456ACC[r6[1]]);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF6D);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gUnknown_8456ACC[r6[1]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841AF6D);
return (const u16 *)(r6 + 2);
}
@@ -4814,17 +4814,17 @@ const u16 * sub_8115518(const u16 * a0)
const u16 * r4 = sub_8113E88(37, a0);
const u8 * r7 = (const u8 *)r4 + 8;
u32 r6 = (r4[2] << 16) + r4[3];
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r7[0]);
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, ItemId_GetName(r4[0]));
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, ItemId_GetName(r4[0]));
if (r4[1] < 2)
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A7DD);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A7DD);
else
{
ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6);
- UnkTextUtil_SetPtrI(2, gStringVar2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A810);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A810);
}
return (const u16 *)(r7 + 2);
}
@@ -4847,30 +4847,30 @@ const u16 * sub_81155E0(const u16 * a0) {
const u16 *r5 = sub_8113E88(38, a0);
const u8 *r7 = (const u8 *) r5 + 8;
u32 r6 = (r5[2] << 16) + r5[3];
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
sub_80C4DF8(gStringVar1, r7[0]);
if (r7[1] == 0) {
- UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName);
- UnkTextUtil_SetPtrI(1, gStringVar1);
- UnkTextUtil_SetPtrI(2, ItemId_GetName(r5[0]));
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, ItemId_GetName(r5[0]));
if (r5[1] == 1)
- UnkTextUtil_SetPtrI(3, gUnknown_841A8D4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gUnknown_841A8D4);
else
{
ConvertIntToDecimalStringN(gStringVar2, r5[1], STR_CONV_MODE_LEFT_ALIGN, 3);
- UnkTextUtil_SetPtrI(4, gStringVar2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar3, gUnknown_841A8DD);
- UnkTextUtil_SetPtrI(3, gStringVar3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, gStringVar2);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar3, gUnknown_841A8DD);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, gStringVar3);
}
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A858);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A858);
}
else
{
- UnkTextUtil_SetPtrI(0, gStringVar1);
- UnkTextUtil_SetPtrI(1, ItemId_GetName(r5[0]));
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, ItemId_GetName(r5[0]));
ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6);
- UnkTextUtil_SetPtrI(2, gStringVar2);
- UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A896);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar2);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A896);
}
return (const u16 *)(r7 + 2);
}
diff --git a/src/safari_zone.c b/src/safari_zone.c
new file mode 100644
index 000000000..cb0a58586
--- /dev/null
+++ b/src/safari_zone.c
@@ -0,0 +1,80 @@
+#include "global.h"
+#include "battle.h"
+#include "event_scripts.h"
+#include "overworld.h"
+#include "battle.h"
+#include "script.h"
+#include "event_data.h"
+#include "field_screen_effect.h"
+
+EWRAM_DATA u8 gNumSafariBalls = 0;
+EWRAM_DATA u16 gSafariZoneStepCounter = 0;
+
+bool32 GetSafariZoneFlag(void)
+{
+ return FlagGet(FLAG_SYS_SAFARI_MODE);
+}
+
+void SetSafariZoneFlag(void)
+{
+ FlagSet(FLAG_SYS_SAFARI_MODE);
+}
+
+void ResetSafariZoneFlag(void)
+{
+ FlagClear(FLAG_SYS_SAFARI_MODE);
+}
+
+void EnterSafariMode(void)
+{
+ IncrementGameStat(GAME_STAT_ENTERED_SAFARI_ZONE);
+ SetSafariZoneFlag();
+ gNumSafariBalls = 30;
+ gSafariZoneStepCounter = 600;
+}
+
+void ExitSafariMode(void)
+{
+ ResetSafariZoneFlag();
+ gNumSafariBalls = 0;
+ gSafariZoneStepCounter = 0;
+}
+
+bool8 SafariZoneTakeStep(void)
+{
+ if (GetSafariZoneFlag() == FALSE)
+ return FALSE;
+ gSafariZoneStepCounter--;
+ if (gSafariZoneStepCounter == 0)
+ {
+ ScriptContext1_SetupScript(EventScript_SafariTimesUp);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void SafariZoneRetirePrompt(void)
+{
+ ScriptContext1_SetupScript(EventScript_SafariRetire);
+}
+
+void CB2_EndSafariBattle(void)
+{
+ if (gNumSafariBalls != 0)
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS)
+ {
+ ScriptContext2_RunNewScript(EventScript_SafariWarpOut);
+ WarpIntoMap();
+ gFieldCallback = sub_807E3EC;
+ SetMainCallback2(CB2_LoadMap);
+ }
+ else if (gBattleOutcome == B_OUTCOME_CAUGHT)
+ {
+ ScriptContext1_SetupScript(EventScript_SafariOutOfBalls);
+ ScriptContext1_Stop();
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+ }
+}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index d317a78b5..cef1a1eb7 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1984,7 +1984,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_ReturnToFieldContinueScriptPlayMapMusic);
ScriptContext1_Stop();
return TRUE;
}
diff --git a/src/seagallop.c b/src/seagallop.c
index ae880b2a3..e3333ef32 100644
--- a/src/seagallop.c
+++ b/src/seagallop.c
@@ -323,8 +323,8 @@ static void Task_SeaGallop_3(void)
PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = sub_807DF64;
- warp_in();
- SetMainCallback2(sub_805671C);
+ WarpIntoMap();
+ SetMainCallback2(CB2_LoadMap);
ResetInitialPlayerAvatarState();
FreeFerrySpriteResources();
Free(sBg3TilemapBuffer);
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index 1e3f42027..0b0e7b932 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -734,7 +734,7 @@ static void TeachyTvOptionListController(u8 taskId)
TeachyTvBg2AnimController();
if (!gPaletteFade.active)
{
- input = ListMenuHandleInput(data[0]);
+ input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow);
if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != ReturnToBagFromKeyItem))
{
@@ -754,7 +754,7 @@ static void TeachyTvOptionListController(u8 taskId)
default:
PlaySE(SE_SELECT);
sStaticResources.whichScript = input;
- DestroyListMenu(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow);
+ DestroyListMenuTask(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow);
TeachyTvClearWindowRegs();
ClearWindowTilemap(1);
ScheduleBgCopyTilemapToVram(0);
diff --git a/src/text.c b/src/text.c
index c0fe6a444..d36a448ad 100644
--- a/src/text.c
+++ b/src/text.c
@@ -18,7 +18,7 @@ extern u8 GetKeypadIconWidth(u8 keypadIconId);
extern void CopyWindowToVram(u8 windowId, u8 mode);
extern s32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
extern void PlaySE(u16 songNum);
-extern u8* UnkTextUtil_GetPtrI(u8 a1);
+extern u8* DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 a1);
TextFlags gTextFlags;
@@ -1544,7 +1544,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
}
case 0xF7:
if (bufferPointer == NULL)
- bufferPointer = UnkTextUtil_GetPtrI(*++str);
+ bufferPointer = DynamicPlaceholderTextUtil_GetPlaceholderPtr(*++str);
while (*bufferPointer != 0xFF)
{
glyphWidth = func(*bufferPointer++, isJapanese);
diff --git a/src/tm_case.c b/src/tm_case.c
index 54c50cc71..0266f9c90 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -716,7 +716,7 @@ static void Task_FadeOutAndCloseTMCase(u8 taskId)
if (!gPaletteFade.active)
{
- DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
+ DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
if (sTMCaseDynamicResources->savedCallback != NULL)
SetMainCallback2(sTMCaseDynamicResources->savedCallback);
else
@@ -736,7 +736,7 @@ static void Task_TMCaseMain(u8 taskId)
{
if (sub_80BF72C() != TRUE)
{
- input = ListMenuHandleInput(data[0]);
+ input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
if (JOY_NEW(SELECT_BUTTON) && sTMCaseStaticResources.unk_05 == 1)
{
@@ -909,7 +909,7 @@ static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
+ DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
ClearMenuWindow_BorderThickness2(6, 0);
@@ -1108,7 +1108,7 @@ static void Task_DoSaleOfTMs(u8 taskId)
RemoveBagItem(gSpecialVar_ItemId, data[8]);
AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]);
sub_809C09C(gSpecialVar_ItemId, data[8], 2);
- DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
+ DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
TMCaseSetup_GetTMCount();
TMCaseSetup_InitListMenuPositions();
InitTMCaseListMenuItems();
@@ -1204,7 +1204,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
gMain.newKeys = 0;
gMain.newAndRepeatedKeys = DPAD_DOWN;
- ListMenuHandleInput(data[0]);
+ ListMenu_ProcessInput(data[0]);
}
data[9]++;
if (data[9] > 0x65)
@@ -1223,7 +1223,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
gMain.newKeys = 0;
gMain.newAndRepeatedKeys = DPAD_UP;
- ListMenuHandleInput(data[0]);
+ ListMenu_ProcessInput(data[0]);
}
data[9]++;
if (data[9] > 0x65)
@@ -1269,7 +1269,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
memcpy(gSaveBlock1Ptr->bagPocket_TMHM, sPokeDudePackBackup->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM));
memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, sPokeDudePackBackup->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems));
- DestroyListMenu(data[0], NULL, NULL);
+ DestroyListMenuTask(data[0], NULL, NULL);
sTMCaseStaticResources.selectedRow = sPokeDudePackBackup->unk_160;
sTMCaseStaticResources.scrollOffset = sPokeDudePackBackup->unk_162;
Free(sPokeDudePackBackup);
@@ -1344,10 +1344,10 @@ static void PrintStringTMCaseOnWindow3(void)
static void DrawMoveInfoUIMarkers(void)
{
- blit_move_info_icon(4, 19, 0, 0);
- blit_move_info_icon(4, 20, 0, 12);
- blit_move_info_icon(4, 21, 0, 24);
- blit_move_info_icon(4, 22, 0, 36);
+ BlitMoveInfoIcon(4, 19, 0, 0);
+ BlitMoveInfoIcon(4, 20, 0, 12);
+ BlitMoveInfoIcon(4, 21, 0, 24);
+ BlitMoveInfoIcon(4, 22, 0, 36);
CopyWindowToVram(4, 2);
}
@@ -1369,7 +1369,7 @@ static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId)
else
{
move = ItemIdToBattleMoveId(itemId);
- blit_move_info_icon(5, gBattleMoves[move].type + 1, 0, 0);
+ BlitMoveInfoIcon(5, gBattleMoves[move].type + 1, 0, 0);
if (gBattleMoves[move].power < 2)
str = gText_ThreeHyphens;
else
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index ef2a12ce0..65d825dfe 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -1106,7 +1106,7 @@ void sub_815E068(u8 battleType, u8 facilityClass)
void sub_815E114(void)
{
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
void sub_815E124(u8 taskId)
diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c
index 1eb29be1b..cc80d37b6 100644
--- a/src/wireless_communication_status_screen.c
+++ b/src/wireless_communication_status_screen.c
@@ -10,7 +10,7 @@
#include "scanline_effect.h"
#include "m4a.h"
#include "string_util.h"
-#include "unk_text_util.h"
+#include "dynamic_placeholder_text_util.h"
#include "overworld.h"
#include "sound.h"
#include "menu.h"
@@ -208,7 +208,7 @@ void sub_814F1E4(void)
ChangeBgY(1, 0, 0);
LoadPalette(gUnknown_846F4D0, 0, 0x20);
Menu_LoadStdPalAt(0xf0);
- UnkTextUtil_Reset();
+ DynamicPlaceholderTextUtil_Reset();
FillBgTilemapBufferRect(0, 0x000, 0, 0, 32, 32, 0xF);
CopyBgTilemapBufferToVram(1);
SetMainCallback2(sub_814F19C);
@@ -229,7 +229,7 @@ void sub_814F32C(void)
Free(GetBgTilemapBuffer(i));
}
Free(gUnknown_3002040);
- SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
void sub_814F364(s16 * unk0, s16 * unk1)
diff --git a/sym_common.txt b/sym_common.txt
index 56eed9a16..e875d439b 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -298,12 +298,9 @@ gUnknown_3005E10: @ 3005E10
gUnknown_3005E20: @ 3005E20
.space 0x40
-gUnknown_3005E60: @ 3005E60
- .space 0x10
-
-gMultiuseListMenuTemplate: @ 3005E70
- .space 0x18
-
+ .align 4
+ .include "list_menu.o"
+ .align 2
.include "quest_log.o"
gUnknown_3005E8C: @ 3005E8C
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 63b75ae19..bec821a2f 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -979,13 +979,7 @@ gUnknown_203998C: @ 203998C
.include "src/money.o"
.align 2
-gUnknown_2039994: @ 2039994
- .space 0x2
-
-gUnknown_2039996: @ 2039996
- .space 0x2
-
- .align 2
+ .include "src/safari_zone.o"
.include "src/item_use.o"
.align 2
@@ -1174,9 +1168,8 @@ gUnknown_203ACEC: @ 203ACEC
gUnknown_203ACF0: @ 203ACF0
.space 0x4
-gUnknown_203ACF4: @ 203ACF4
- .space 0x8
-
+ .include "src/list_menu.o"
+ .align 2
gUnknown_203ACFC: @ 203ACFC
.space 0x6
@@ -1359,9 +1352,7 @@ gUnknown_203B0E8: @ 203B0E8
.include "src/oak_speech.o"
.align 2
.include "src/tm_case.o"
-
-gUnknown_203B130: @ 203B130
- .space 0x10
+ .include "src/menu_indicators.o"
gUnknown_203B140: @ 203B140
.space 0x4
@@ -1401,10 +1392,7 @@ gUnknown_203B170: @ 203B170
.align 2
.include "src/help_system.o"
-
- @ src/unk_text_util.o
-gUnknown_203F34C: @ 203F34C
- .space 0x20
+ .include "src/dynamic_placeholder_text_util.o"
gUnknown_203F36C: @ 203F36C
.space 0x4