summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_frontier_2.s2
-rw-r--r--asm/easy_chat.s8
-rw-r--r--asm/learn_move.s1652
-rw-r--r--asm/party_menu.s26
-rw-r--r--asm/pokemon_storage_system.s8
-rw-r--r--asm/pokemon_summary_screen.s2
-rw-r--r--asm/rom_8011DC0.s8
-rw-r--r--asm/script_menu.s4
-rw-r--r--asm/shop.s2
-rw-r--r--asm/slot_machine.s2
-rw-r--r--asm/trade.s6
-rw-r--r--asm/use_pokeblock.s2
-rw-r--r--data/learn_move.s93
-rw-r--r--data/maps/FallarborTown_House2/scripts.inc2
-rw-r--r--data/specials.inc2
-rw-r--r--include/learn_move.h4
-rw-r--r--include/list_menu.h2
-rw-r--r--include/menu.h4
-rwxr-xr-xinclude/pokemon_summary_screen.h1
-rw-r--r--include/pokenav.h5
-rw-r--r--include/strings.h10
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_script_commands.c4
-rw-r--r--src/berry_blender.c2
-rw-r--r--src/clear_save_data_screen.c2
-rw-r--r--src/egg_hatch.c2
-rw-r--r--src/evolution_scene.c8
-rwxr-xr-xsrc/item_menu.c2
-rw-r--r--src/learn_move.c877
-rw-r--r--src/main_menu.c4
-rw-r--r--src/menu.c8
-rw-r--r--src/menu_helpers.c2
-rw-r--r--src/player_pc.c4
-rw-r--r--src/pokeblock.c2
-rw-r--r--src/pokemon_summary_screen.c2
-rw-r--r--src/secret_base.c2
-rw-r--r--src/start_menu.c6
-rw-r--r--src/starter_choose.c2
-rw-r--r--src/wallclock.c2
39 files changed, 875 insertions, 1902 deletions
diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s
index 38e0d2e62..8f2d7b0e0 100644
--- a/asm/battle_frontier_2.s
+++ b/asm/battle_frontier_2.s
@@ -11771,7 +11771,7 @@ sub_81A070C: @ 81A070C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _081A0730
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
b _081A0734
.pool
_081A0730:
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index 4ee0fa2ae..dadc5bda4 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -1635,7 +1635,7 @@ _0811AF86:
thumb_func_start sub_811AF8C
sub_811AF8C: @ 811AF8C
push {lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1684,7 +1684,7 @@ _0811AFE6:
thumb_func_start sub_811AFEC
sub_811AFEC: @ 811AFEC
push {r4,lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1727,7 +1727,7 @@ _0811B03A:
thumb_func_start sub_811B040
sub_811B040: @ 811B040
push {lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1832,7 +1832,7 @@ sub_811B0E8: @ 811B0E8
thumb_func_start sub_811B0F8
sub_811B0F8: @ 811B0F8
push {r4,lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/learn_move.s b/asm/learn_move.s
index 2bd50789c..2428f2984 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -5,1656 +5,4 @@
.text
-/*
- thumb_func_start sub_8160624
-sub_8160624: @ 8160624
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8160624
-*/
-
-/*
- thumb_func_start sub_8160638
-sub_8160638: @ 8160638
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, =sub_8160664
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160638
-*/
-
-/*
- thumb_func_start sub_8160664
-sub_8160664: @ 8160664
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08160688
- ldr r0, =sub_81606A0
- bl SetMainCallback2
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF168
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_08160688:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160664
-*/
-
-/*
- thumb_func_start sub_81606A0
-sub_81606A0: @ 81606A0
- push {r4-r6,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- bl clear_scheduled_bg_copies_to_vram
- ldr r6, =gUnknown_0203BC34
- movs r0, 0x8C
- lsls r0, 1
- bl AllocZeroed
- str r0, [r6]
- ldr r1, =gSpecialVar_0x8004
- ldrh r1, [r1]
- adds r0, 0x44
- movs r5, 0
- strb r1, [r0]
- ldr r0, =sub_8160624
- bl SetVBlankCallback
- bl sub_81607EC
- movs r0, 0
- bl sub_81D2824
- ldr r4, =gUnknown_0203BC38
- movs r0, 0
- strh r5, [r4]
- strh r5, [r4, 0x2]
- strb r0, [r4, 0x4]
- bl sub_8161280
- ldr r0, =gUnknown_085CEBB0
- bl LoadSpriteSheet
- ldr r0, =gUnknown_085CEBB8
- bl LoadSpritePalette
- bl sub_81610B8
- ldr r0, =gMultiuseListMenuTemplate
- ldrh r1, [r4]
- ldrh r2, [r4, 0x2]
- bl ListMenuInit
- ldr r1, [r6]
- movs r2, 0x89
- lsls r2, 1 //0x112
- adds r1, r2 //partymon + 0x112
- strb r0, [r1]
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- ldr r0, =sub_816082C
- bl SetMainCallback2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81606A0
-*/
-
-/*
- thumb_func_start sub_8160740
-sub_8160740: @ 8160740
- push {r4,r5,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- bl clear_scheduled_bg_copies_to_vram
- ldr r5, =gUnknown_0203BC34
- movs r0, 0x8C
- lsls r0, 1
- bl AllocZeroed
- str r0, [r5]
- movs r1, 0x1C
- strb r1, [r0]
- ldr r0, [r5]
- ldr r1, =gSpecialVar_0x8004
- ldrh r1, [r1]
- adds r0, 0x44
- strb r1, [r0]
- ldr r0, [r5]
- ldr r1, =gSpecialVar_0x8005
- ldrh r1, [r1]
- adds r0, 0x45
- strb r1, [r0]
- ldr r0, =sub_8160624
- bl SetVBlankCallback
- bl sub_81607EC
- ldr r4, =gUnknown_0203BC38
- ldrb r0, [r4, 0x4]
- bl sub_81D2824
- bl sub_8161280
- ldr r0, =gUnknown_085CEBB0
- bl LoadSpriteSheet
- ldr r0, =gUnknown_085CEBB8
- bl LoadSpritePalette
- bl sub_81610B8
- ldr r0, =gMultiuseListMenuTemplate
- ldrh r1, [r4]
- ldrh r2, [r4, 0x2]
- bl ListMenuInit
- ldr r1, [r5]
- movs r2, 0x89
- lsls r2, 1
- adds r1, r2
- strb r0, [r1]
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- ldr r0, =sub_816082C
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160740
-*/
-
-/*
- thumb_func_start sub_81607EC
-sub_81607EC: @ 81607EC
- push {lr}
- bl ResetVramOamAndBgCntRegs
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085CEC28
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- bl ResetAllBgsCoordinates
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81607EC
-*/
-
-/*
- thumb_func_start sub_816082C
-sub_816082C: @ 816082C
- push {lr}
- bl sub_8160868
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_816082C
-*/
-
- thumb_func_start sub_816084C
-sub_816084C: @ 816084C
- push {r4,lr}
- adds r1, r0, 0
- ldr r4, =gStringVar4
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- bl sub_81D2BF4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_816084C
-
- thumb_func_start sub_8160868
-sub_8160868: @ 8160868
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, =gUnknown_0203BC34
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0x21
- bls _0816087E
- b _08160E8A
-_0816087E:
- lsls r0, 2
- ldr r1, =_08160890
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08160890:
- .4byte _08160918
- .4byte _08160932
- .4byte _0816094C
- .4byte _08160954
- .4byte _0816095C
- .4byte _08160964
- .4byte _08160980
- .4byte _08160E8A
- .4byte _08160988
- .4byte _081609A8
- .4byte _08160E8A
- .4byte _08160E8A
- .4byte _08160A44
- .4byte _08160A64
- .4byte _08160CB8
- .4byte _08160CD8
- .4byte _08160AB8
- .4byte _08160AD0
- .4byte _08160AEC
- .4byte _08160C1C
- .4byte _08160C48
- .4byte _08160C98
- .4byte _08160CA6
- .4byte _08160E8A
- .4byte _08160B2C
- .4byte _08160B60
- .4byte _08160B80
- .4byte _08160BDC
- .4byte _08160CFC
- .4byte _08160D48
- .4byte _08160E0C
- .4byte _08160E38
- .4byte _08160E58
- .4byte _08160E70
-_08160918:
- ldr r1, [r7]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r4, 0
- strb r0, [r1]
- movs r0, 0
- bl render_previous_quest_text
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- b _08160CAE
-_08160932:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08160940
- b _08160E8A
-_08160940:
- ldr r1, [r7]
- movs r0, 0x4
- b _08160E88
- .pool
-_0816094C:
- ldr r1, [r7]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08160E88
-_08160954:
- movs r0, 0
- bl render_previous_quest_text
- b _0816096A
-_0816095C:
- movs r0, 0
- bl sub_8160F50
- b _08160E8A
-_08160964:
- movs r0, 0
- bl sub_8161074
-_0816096A:
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_81611AC
- b _08160E8A
- .pool
-_08160980:
- movs r0, 0x1
- bl sub_8160F50
- b _08160E8A
-_08160988:
- bl sub_81D2C3C
- lsls r0, 16
- cmp r0, 0
- beq _08160994
- b _08160E8A
-_08160994:
- bl sub_81D2C50
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08160E88
- .pool
-_081609A8:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08160A0A
- ldr r5, =gUnknown_0203BC34
- ldr r0, [r5]
- adds r0, 0x44
- ldrb r1, [r0]
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- bl sub_8161054
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl GiveMoveToMon
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- beq _08160A04
- ldr r0, =gText_PkmnLearnedMove4
- bl sub_816084C
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, [r5]
- movs r0, 0x1F
- b _08160E88
- .pool
-_08160A04:
- ldr r1, [r5]
- movs r0, 0x10
- b _08160E88
-_08160A0A:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08160A18
- cmp r1, 0x1
- beq _08160A18
- b _08160E8A
-_08160A18:
- ldr r0, =gUnknown_0203BC38
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _08160A30
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x3
- b _08160E88
- .pool
-_08160A30:
- cmp r0, 0x1
- beq _08160A36
- b _08160E8A
-_08160A36:
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x5
- b _08160E88
- .pool
-_08160A44:
- bl sub_81D2C3C
- lsls r0, 16
- cmp r0, 0
- beq _08160A50
- b _08160E8A
-_08160A50:
- bl sub_81D2C50
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08160E88
- .pool
-_08160A64:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08160A7C
- ldr r0, =gSpecialVar_0x8004
- strh r1, [r0]
- b _08160E82
- .pool
-_08160A7C:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08160A8A
- cmp r1, 0x1
- beq _08160A8A
- b _08160E8A
-_08160A8A:
- ldr r0, =gUnknown_0203BC38
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _08160AA4
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x3
- b _08160E88
- .pool
-_08160AA4:
- cmp r0, 0x1
- beq _08160AAA
- b _08160E8A
-_08160AAA:
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x5
- b _08160E88
- .pool
-_08160AB8:
- ldr r0, =gText_PkmnTryingToLearnMove
- bl sub_816084C
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08160E88
- .pool
-_08160AD0:
- bl sub_81D2C3C
- lsls r0, 16
- cmp r0, 0
- beq _08160ADC
- b _08160E8A
-_08160ADC:
- bl sub_81D2C50
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x12
- b _08160E88
- .pool
-_08160AEC:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08160B10
- ldr r0, =gText_WhichMoveToForget2
- bl sub_816084C
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x13
- b _08160E88
- .pool
-_08160B10:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08160B1E
- cmp r1, 0x1
- beq _08160B1E
- b _08160E8A
-_08160B1E:
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x18
- b _08160E88
- .pool
-_08160B2C:
- ldr r4, =gStringVar2
- bl sub_8161054
- movs r1, 0xD
- muls r1, r0
- ldr r0, =gMoveNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, =gText_StopTryingToTeachMove
- bl sub_816084C
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08160E88
- .pool
-_08160B60:
- bl sub_81D2C3C
- lsls r0, 16
- cmp r0, 0
- beq _08160B6C
- b _08160E8A
-_08160B6C:
- bl sub_81D2C50
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08160E88
- .pool
-_08160B80:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08160B98
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x1B
- b _08160E88
- .pool
-_08160B98:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08160BA6
- cmp r1, 0x1
- beq _08160BA6
- b _08160E8A
-_08160BA6:
- ldr r0, =gUnknown_0203BC38
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _08160BC4
- ldr r2, =gUnknown_0203BC34
- ldr r1, [r2]
- movs r0, 0x3
- strb r0, [r1]
- adds r7, r2, 0
- b _08160BD0
- .pool
-_08160BC4:
- ldr r7, =gUnknown_0203BC34
- cmp r0, 0x1
- bne _08160BD0
- ldr r1, [r7]
- movs r0, 0x5
- strb r0, [r1]
-_08160BD0:
- ldr r1, [r7]
- movs r0, 0x10
- b _08160E88
- .pool
-_08160BDC:
- bl sub_81D2C3C
- lsls r0, 16
- cmp r0, 0
- beq _08160BE8
- b _08160E8A
-_08160BE8:
- movs r0, 0x3
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, =gUnknown_0203BC38
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _08160C08
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x3
- b _08160E88
- .pool
-_08160C08:
- cmp r0, 0x1
- beq _08160C0E
- b _08160E8A
-_08160C0E:
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x5
- b _08160E88
- .pool
-_08160C1C:
- bl sub_81D2C3C
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _08160C2A
- b _08160E8A
-_08160C2A:
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x14
- strb r0, [r1]
- subs r0, 0x15
- str r2, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08160E8A
- .pool
-_08160C48:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08160C56
- b _08160E8A
-_08160C56:
- bl sub_8161054
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gPlayerParty
- ldr r1, =gUnknown_0203BC34
- ldr r1, [r1]
- adds r1, 0x44
- ldrb r1, [r1]
- ldr r2, =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, =sub_8160740
- str r0, [sp]
- adds r0, r4, 0
- bl sub_81BFA38
- bl sub_8160EA0
- b _08160E8A
- .pool
-_08160C98:
- bl sub_81D2C3C
- lsls r0, 16
- cmp r0, 0
- beq _08160CA4
- b _08160E8A
-_08160CA4:
- b _08160E82
-_08160CA6:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
-_08160CAE:
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08160E8A
-_08160CB8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08160E88
- .pool
-_08160CD8:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08160CE6
- b _08160E8A
-_08160CE6:
- bl sub_8160EA0
- ldr r0, =CB2_ReturnToField
- bl SetMainCallback2
- b _08160E8A
- .pool
-_08160CFC:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, =gUnknown_0203BC38
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _08160D30
- movs r0, 0x1
- bl render_previous_quest_text
- b _08160D3A
- .pool
-_08160D30:
- cmp r0, 0x1
- bne _08160D3A
- movs r0, 0x1
- bl sub_8161074
-_08160D3A:
- bl sub_8161234
- movs r0, 0x3
- movs r1, 0x2
- bl CopyWindowToVram
- b _08160E8A
-_08160D48:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08160D56
- b _08160E8A
-_08160D56:
- ldr r1, [r7]
- adds r2, r1, 0
- adds r2, 0x45
- ldrb r0, [r2]
- cmp r0, 0x4
- bne _08160D6C
- movs r0, 0x18
- b _08160E88
- .pool
-_08160D6C:
- adds r0, r1, 0
- adds r0, 0x44
- ldrb r0, [r0]
- movs r4, 0x64
- muls r0, r4
- ldr r5, =gPlayerParty
- adds r0, r5
- ldrb r1, [r2]
- adds r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r2, =gStringVar3
- movs r1, 0xD
- mov r8, r1
- mov r1, r8
- muls r1, r0
- ldr r6, =gMoveNames
- adds r1, r6
- adds r0, r2, 0
- bl StringCopy
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0x44
- ldrb r0, [r0]
- muls r0, r4
- adds r0, r5
- adds r1, 0x45
- ldrb r1, [r1]
- bl RemoveMonPPBonus
- ldr r0, [r7]
- adds r0, 0x44
- ldrb r0, [r0]
- muls r4, r0
- adds r4, r5
- bl sub_8161054
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [r7]
- adds r0, 0x45
- ldrb r2, [r0]
- adds r0, r4, 0
- bl SetMonMoveSlot
- ldr r4, =gStringVar2
- bl sub_8161054
- mov r1, r8
- muls r1, r0
- adds r1, r6
- adds r0, r4, 0
- bl StringCopy
- ldr r0, =gText_12AndPoof
- bl sub_816084C
- ldr r1, [r7]
- movs r0, 0x1E
- strb r0, [r1]
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- b _08160E8A
- .pool
-_08160E0C:
- bl sub_81D2C3C
- lsls r0, 16
- cmp r0, 0
- bne _08160E8A
- ldr r0, =gText_PkmnForgotMoveAndLearnedNew
- bl sub_816084C
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x1F
- strb r0, [r1]
- ldr r0, =0x0000016f
- bl PlayFanfare
- b _08160E8A
- .pool
-_08160E38:
- bl sub_81D2C3C
- lsls r0, 16
- cmp r0, 0
- bne _08160E8A
- ldr r0, =0x0000016f
- bl PlayFanfare
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x20
- b _08160E88
- .pool
-_08160E58:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08160E8A
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0x21
- b _08160E88
- .pool
-_08160E70:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08160E8A
- movs r0, 0x5
- bl PlaySE
-_08160E82:
- ldr r0, =gUnknown_0203BC34
- ldr r1, [r0]
- movs r0, 0xE
-_08160E88:
- strb r0, [r1]
-_08160E8A:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160868
-
- thumb_func_start sub_8160EA0
-sub_8160EA0: @ 8160EA0
- push {r4,lr}
- bl sub_8161234
- ldr r4, =gUnknown_0203BC34
- ldr r0, [r4]
- movs r1, 0x89
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, =gUnknown_0203BC38
- adds r2, r1, 0x2
- bl DestroyListMenuTask
- bl FreeAllWindowBuffers
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160EA0
-
- thumb_func_start render_previous_quest_text
-render_previous_quest_text: @ 8160EE0
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- movs r2, 0
- ldr r6, =gSprites
- ldr r4, =gUnknown_0203BC34
- movs r3, 0x4
-_08160EF0:
- ldr r0, [r4]
- adds r0, 0x1
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0xF
- ble _08160EF0
- cmp r5, 0
- bne _08160F38
- ldr r4, =gStringVar4
- ldr r1, =gText_TeachWhichMoveToPkmn
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x3
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x1
- str r0, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0
- bl PrintTextOnWindow
-_08160F38:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end render_previous_quest_text
-
- thumb_func_start sub_8160F50
-sub_8160F50: @ 8160F50
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r6, =gUnknown_0203BC34
- ldr r0, [r6]
- movs r4, 0x89
- lsls r4, 1
- adds r0, r4
- ldrb r0, [r0]
- bl ListMenuHandleInputGetItemId
- adds r5, r0, 0
- ldr r0, [r6]
- adds r0, r4
- ldrb r0, [r0]
- ldr r4, =gUnknown_0203BC38
- adds r2, r4, 0x2
- adds r1, r4, 0
- bl ListMenuGetScrollAndRow
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _08160FE4
- adds r0, 0x1
- cmp r5, r0
- bne _08161010
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- bne _08160F9C
- bl GetLRKeysState
- lsls r0, 24
- cmp r0, 0
- beq _0816103E
-_08160F9C:
- movs r0, 0x5
- bl PlaySE
- cmp r7, 0
- bne _08160FC4
- movs r0, 0x1
- bl PutWindowTilemap
- ldr r0, [r6]
- movs r1, 0x5
- strb r1, [r0]
- movs r0, 0x1
- strb r0, [r4, 0x4]
- b _08160FD4
- .pool
-_08160FC4:
- movs r0, 0
- bl PutWindowTilemap
- ldr r0, [r6]
- movs r2, 0
- movs r1, 0x3
- strb r1, [r0]
- strb r2, [r4, 0x4]
-_08160FD4:
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- bl sub_8161054
- bl sub_816137C
- b _0816103E
-_08160FE4:
- movs r0, 0x5
- bl PlaySE
- bl sub_8161234
- ldr r1, [r6]
- movs r0, 0xC
- strb r0, [r1]
- ldr r4, =gStringVar4
- ldr r1, =gText_GiveUpTeachingNewMove
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- bl sub_81D2BF4
- b _0816103E
- .pool
-_08161010:
- movs r0, 0x5
- bl PlaySE
- bl sub_8161234
- ldr r1, [r6]
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, =gStringVar2
- movs r1, 0xD
- muls r1, r5
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_TeachX
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- bl sub_81D2BF4
-_0816103E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8160F50
-
- thumb_func_start sub_8161054
-sub_8161054: @ 8161054
- ldr r0, =gUnknown_0203BC34
- ldr r2, [r0]
- ldr r1, =gUnknown_0203BC38
- ldrh r0, [r1, 0x2]
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 3
- adds r2, 0x4C
- adds r2, r0
- ldr r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_8161054
-
- thumb_func_start sub_8161074
-sub_8161074: @ 8161074
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _081610A6
- ldr r4, =gStringVar4
- ldr r1, =gText_TeachWhichMoveToPkmn
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x3
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x1
- str r0, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0
- bl PrintTextOnWindow
-_081610A6:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8161074
-
- thumb_func_start sub_81610B8
-sub_81610B8: @ 81610B8
- push {r4-r7,lr}
- ldr r2, =gUnknown_0203BC34
- ldr r0, [r2]
- movs r1, 0x8A
- lsls r1, 1
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- ldr r0, [r2]
- ldr r2, =0x00000113
- adds r1, r0, r2
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1]
- bl sub_81611AC
- movs r4, 0
- ldr r5, =gUnknown_085CEC10
-_081610DC:
- adds r2, r4, 0
- cmp r4, 0
- bge _081610E4
- adds r2, r4, 0x3
-_081610E4:
- asrs r2, 2
- lsls r1, r2, 2
- subs r1, r4, r1
- lsls r1, 19
- movs r0, 0xD0
- lsls r0, 15
- adds r1, r0
- asrs r1, 16
- lsls r2, 19
- movs r0, 0x90
- lsls r0, 14
- adds r2, r0
- asrs r2, 16
- adds r0, r5, 0
- movs r3, 0
- bl CreateSprite
- ldr r2, =gUnknown_0203BC34
- ldr r1, [r2]
- adds r1, 0x1
- adds r1, r4
- strb r0, [r1]
- adds r4, 0x1
- cmp r4, 0x7
- ble _081610DC
- movs r4, 0
- ldr r7, =gUnknown_085CEC10
- adds r6, r2, 0
-_0816111C:
- adds r2, r4, 0
- cmp r4, 0
- bge _08161124
- adds r2, r4, 0x3
-_08161124:
- asrs r2, 2
- lsls r1, r2, 2
- subs r1, r4, r1
- lsls r1, 19
- movs r0, 0xD0
- lsls r0, 15
- adds r1, r0
- asrs r1, 16
- lsls r2, 19
- movs r0, 0xD0
- lsls r0, 14
- adds r2, r0
- asrs r2, 16
- adds r0, r7, 0
- movs r3, 0
- bl CreateSprite
- ldr r1, [r6]
- adds r2, r4, 0
- adds r2, 0x8
- adds r1, 0x1
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x1
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, =gSprites
- adds r0, r5
- movs r1, 0x2
- bl StartSpriteAnim
- adds r4, 0x1
- cmp r4, 0x7
- ble _0816111C
- movs r4, 0
- ldr r3, =gUnknown_0203BC34
- movs r2, 0x4
-_08161176:
- ldr r0, [r3]
- adds r0, 0x1
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0xF
- ble _08161176
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81610B8
-
- thumb_func_start sub_81611AC
-sub_81611AC: @ 81611AC
- push {r4-r6,lr}
- ldr r4, =gUnknown_0203BC34
- ldr r1, [r4]
- movs r2, 0x8A
- lsls r2, 1
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _081611D4
- ldr r0, =gUnknown_085CEBC0
- movs r3, 0x8B
- lsls r3, 1
- adds r1, r3
- bl AddScrollIndicatorArrowPair
- ldr r1, [r4]
- movs r5, 0x8A
- lsls r5, 1
- adds r1, r5
- strb r0, [r1]
-_081611D4:
- ldr r0, [r4]
- ldr r6, =0x00000113
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08161210
- ldr r0, =gTempScrollArrowTemplate
- adds r2, r0, 0
- ldr r1, =gUnknown_085CEBD0
- ldm r1!, {r3,r5,r6}
- stm r2!, {r3,r5,r6}
- ldr r1, [r1]
- str r1, [r2]
- ldr r2, [r4]
- movs r3, 0x88
- lsls r3, 1
- adds r1, r2, r3
- ldrb r1, [r1]
- ldr r5, =0x00000111
- adds r2, r5
- ldrb r2, [r2]
- subs r1, r2
- strh r1, [r0, 0x8]
- ldr r1, =gUnknown_0203BC38
- bl AddScrollIndicatorArrowPair
- ldr r1, [r4]
- ldr r6, =0x00000113
- adds r1, r6
- strb r0, [r1]
-_08161210:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81611AC
-
- thumb_func_start sub_8161234
-sub_8161234: @ 8161234
- push {r4,lr}
- ldr r4, =gUnknown_0203BC34
- ldr r0, [r4]
- movs r2, 0x8A
- lsls r2, 1
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08161256
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- movs r1, 0x8A
- lsls r1, 1
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
-_08161256:
- ldr r0, [r4]
- ldr r2, =0x00000113
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08161270
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- ldr r2, =0x00000113
- adds r1, r0, r2
- movs r0, 0xFF
- strb r0, [r1]
-_08161270:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8161234
-
- thumb_func_start sub_8161280
-sub_8161280: @ 8161280
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- ldr r4, =gUnknown_0203BC34
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x44
- ldrb r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, =gPlayerParty
- adds r0, r2
- adds r1, 0x12
- bl GetMoveRelearnerMoves
- ldr r1, [r4]
- movs r6, 0x88
- lsls r6, 1
- adds r1, r6
- strb r0, [r1]
- movs r5, 0
- ldr r0, [r4]
- adds r0, r6
- ldrb r0, [r0]
- cmp r5, r0
- bge _081612F6
- mov r8, r4
- movs r0, 0xD
- mov r12, r0
- ldr r2, =gMoveNames
- mov r9, r2
-_081612C2:
- mov r7, r8
- ldr r4, [r7]
- lsls r3, r5, 3
- adds r2, r4, 0
- adds r2, 0x48
- adds r2, r3
- lsls r0, r5, 1
- adds r1, r4, 0
- adds r1, 0x12
- adds r1, r0
- ldrh r0, [r1]
- mov r7, r12
- muls r7, r0
- adds r0, r7, 0
- add r0, r9
- str r0, [r2]
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r3
- ldrh r1, [r1]
- str r1, [r0]
- adds r5, 0x1
- adds r0, r4, r6
- ldrb r0, [r0]
- cmp r5, r0
- blt _081612C2
-_081612F6:
- ldr r4, =gUnknown_0203BC34
- ldr r0, [r4]
- adds r0, 0x44
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, =gStringVar1
- mov r1, sp
- bl StringCopy10
- ldr r2, [r4]
- movs r5, 0x88
- lsls r5, 1
- adds r3, r2, r5
- ldrb r0, [r3]
- lsls r0, 3
- adds r1, r2, 0
- adds r1, 0x48
- adds r1, r0
- ldr r0, =gText_Cancel
- str r0, [r1]
- ldrb r0, [r3]
- lsls r0, 3
- adds r2, 0x4C
- adds r2, r0
- movs r0, 0x2
- negs r0, r0
- str r0, [r2]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x48
- adds r1, r5
- ldrb r1, [r1]
- bl sub_81D28C8
- ldr r1, [r4]
- ldr r2, =0x00000111
- adds r1, r2
- strb r0, [r1]
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8161280
-
- thumb_func_start sub_816137C
-sub_816137C: @ 816137C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- ldr r0, =gUnknown_0203BC38
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _08161394
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- bne _081613CC
-_08161394:
- movs r5, 0
- ldr r4, =gSprites
- ldr r3, =gUnknown_0203BC34
- movs r2, 0x4
-_0816139C:
- ldr r0, [r3]
- adds r0, 0x1
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xF
- bls _0816139C
- b _081614FE
- .pool
-_081613CC:
- ldr r1, =gContestEffects
- ldr r0, =gContestMoves
- lsls r4, 3
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x1]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r6, r0, 24
- mov r8, r4
- cmp r6, 0xFF
- bne _081613EE
- movs r6, 0
-_081613EE:
- movs r5, 0
- ldr r7, =gUnknown_0203BC34
- ldr r4, =gSprites
-_081613F4:
- cmp r5, r6
- bcs _08161420
- ldr r0, [r7]
- adds r0, 0x1
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAnim
- b _08161436
- .pool
-_08161420:
- ldr r0, [r7]
- adds r0, 0x1
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0
- bl StartSpriteAnim
-_08161436:
- ldr r0, [r7]
- adds r0, 0x1
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r3, 0x5
- negs r3, r3
- adds r2, r3, 0
- ands r1, r2
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x7
- bls _081613F4
- ldr r1, =gContestEffects
- ldr r0, =gContestMoves
- add r0, r8
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xFF
- bne _0816147C
- movs r6, 0
-_0816147C:
- movs r5, 0
- ldr r0, =gUnknown_0203BC34
- mov r8, r0
- ldr r7, =gSprites
-_08161484:
- cmp r5, r6
- bcs _081614B8
- mov r1, r8
- ldr r0, [r1]
- adds r4, r5, 0
- adds r4, 0x8
- adds r0, 0x1
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- movs r1, 0x3
- bl StartSpriteAnim
- b _081614D4
- .pool
-_081614B8:
- mov r3, r8
- ldr r0, [r3]
- adds r4, r5, 0
- adds r4, 0x8
- adds r0, 0x1
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- movs r1, 0x2
- bl StartSpriteAnim
-_081614D4:
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x1
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r3, 0x5
- negs r3, r3
- adds r2, r3, 0
- ands r1, r2
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x7
- bls _08161484
-_081614FE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_816137C
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 0d5c6b631..5c70e218e 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -2740,7 +2740,7 @@ sub_81B1708: @ 81B1708
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -4196,7 +4196,7 @@ sub_81B227C: @ 81B227C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -6692,7 +6692,7 @@ sub_81B3730: @ 81B3730
ldrb r0, [r0, 0x17]
cmp r0, 0x3
bhi _081B3774
- bl ProcessMenuInputNoWrapAround_other
+ bl Menu_ProcessInputNoWrapAround_other
b _081B3778
.pool
_081B3774:
@@ -8138,7 +8138,7 @@ sub_81B43DC: @ 81B43DC
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -8671,7 +8671,7 @@ sub_81B48DC: @ 81B48DC
muls r1, r0
ldr r0, =gPlayerParty
adds r4, r1, r0
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -8963,7 +8963,7 @@ sub_81B4BA0: @ 81B4BA0
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -9069,7 +9069,7 @@ sub_81B4C94: @ 81B4C94
push {r7}
lsls r0, 24
lsrs r5, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -9877,7 +9877,7 @@ sub_81B5430: @ 81B5430
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -10171,7 +10171,7 @@ sub_81B56D8: @ 81B56D8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -13156,7 +13156,7 @@ sub_81B7028: @ 81B7028
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -13235,7 +13235,7 @@ sub_81B70B8: @ 81B70B8
ldr r3, =sub_81B70F0
ldrh r4, [r4, 0xE]
str r4, [sp]
- bl sub_81BFA38
+ bl ShowSelectMovePokemonSummaryScreen
add sp, 0x4
pop {r4}
pop {r0}
@@ -13458,7 +13458,7 @@ sub_81B72C8: @ 81B72C8
muls r1, r0
ldr r0, =gPlayerParty
adds r4, r1, r0
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r5, r0, 24
cmp r5, 0
@@ -15240,7 +15240,7 @@ sub_81B82D4: @ 81B82D4
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 24e041b7f..e4475c159 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -3409,7 +3409,7 @@ _080C8F0C:
adds r0, 0x1
strb r0, [r1]
_080C8F22:
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -4133,7 +4133,7 @@ _080C9584:
b _080C9664
.pool
_080C95A4:
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -4927,7 +4927,7 @@ _080C9C78:
b _080C9CAA
.pool
_080C9C8C:
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -5058,7 +5058,7 @@ _080C9DAC:
b _080C9DE0
.pool
_080C9DC0:
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index b2cba6dab..91b1693fd 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -3040,7 +3040,7 @@ sub_81C5F68: @ 81C5F68
lsrs r0, 24
cmp r0, 0x1
beq _081C5FD0
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s
index 61324b207..306e2892d 100644
--- a/asm/rom_8011DC0.s
+++ b/asm/rom_8011DC0.s
@@ -2920,7 +2920,7 @@ _080170E0:
negs r0, r0
b _08017110
_080170F2:
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
movs r2, 0x80
@@ -6278,7 +6278,7 @@ _08018BD6:
b _08018C3E
.pool
_08018BE4:
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r6, r0, 24
movs r1, 0x80
@@ -28890,7 +28890,7 @@ _0802426A:
bl sub_8197930
b _080242D0
_08024270:
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -47811,7 +47811,7 @@ _0802DA84:
thumb_func_start sub_802DA8C
sub_802DA8C: @ 802DA8C
push {lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r0, 24
pop {r1}
diff --git a/asm/script_menu.s b/asm/script_menu.s
index 670740a77..b521121bf 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -327,7 +327,7 @@ _080E2090:
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080E209E
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
b _080E20A2
_080E209E:
bl ProcessMenuInput
@@ -444,7 +444,7 @@ task_yes_no_maybe: @ 80E215C
b _080E21C4
.pool
_080E2180:
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
diff --git a/asm/shop.s b/asm/shop.s
index 1412fef22..30a5ec278 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -137,7 +137,7 @@ Task_ShopMenu: @ 80DFB88
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r2, r0, 24
movs r0, 0x2
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 4f76d1b69..0f7b84d3c 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -1581,7 +1581,7 @@ sub_812B158: @ 812B158
thumb_func_start sub_812B1B0
sub_812B1B0: @ 812B1B0
push {lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/trade.s b/asm/trade.s
index 763b1a9ec..19dfd5ff9 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -3349,7 +3349,7 @@ sub_8078EF8: @ 8078EF8
sub_8078F50: @ 8078F50
push {lr}
sub sp, 0x4
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r0, 24
movs r1, 0x1
@@ -3695,7 +3695,7 @@ _0807920E:
thumb_func_start sub_8079218
sub_8079218: @ 8079218
push {lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -3797,7 +3797,7 @@ _080792D8:
thumb_func_start sub_80792E4
sub_80792E4: @ 80792E4
push {lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s
index 5047ec65e..4cee3c4d9 100644
--- a/asm/use_pokeblock.s
+++ b/asm/use_pokeblock.s
@@ -900,7 +900,7 @@ sub_8166D44: @ 8166D44
thumb_func_start sub_8166DE4
sub_8166DE4: @ 8166DE4
push {r4,lr}
- bl ProcessMenuInputNoWrap_
+ bl Menu_ProcessInputNoWrap_
lsls r0, 24
lsrs r4, r0, 24
asrs r1, r0, 24
diff --git a/data/learn_move.s b/data/learn_move.s
deleted file mode 100644
index 0a2c31e58..000000000
--- a/data/learn_move.s
+++ /dev/null
@@ -1,93 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_085CE9F8:: @ 85CE9F8
- .incbin "graphics/interface/ui_learn_move.gbapal"
-
-gUnknown_085CEA18:: @ 85CEA18
- .incbin "graphics/interface/ui_learn_move.4bpp"
-
-gUnknown_085CEB98:: @ 85CEB98
- .2byte 0
- .2byte 0
- .2byte 0
- .2byte 0
- .2byte 0x8000
- .2byte 0
- .2byte 0
- .2byte 0
- .2byte 0x4000
- .2byte 0
- .2byte 0
- .2byte 0
-
-gUnknown_085CEBB0:: @ 85CEBB0
- obj_tiles gUnknown_085CEA18, 0x180, 0x1595
-
-gUnknown_085CEBB8:: @ 85CEBB8
- obj_pal gUnknown_085CE9F8, 0x1596
-
-gUnknown_085CEBC0:: @ 85CEBC0
- .byte 0
- .byte 0x1B
- .byte 16
- .byte 1
- .byte 0x75
- .byte 16
- .2byte 0xFFFF
- .2byte 0xFFFF
- .2byte 0x14CD
- .2byte 0x14CD
- .byte 0, 0
-
-gUnknown_085CEBD0:: @ 85CEBD0
- .byte 2
- .byte 0xC0
- .byte 8
- .byte 3
- .byte 0xC0
- .byte 0x68
- .2byte 0
- .2byte 0
- .2byte 0x1531
- .2byte 0x1531
- .byte 0, 0
-
-gUnknown_085CEBE0:: @ 85CEBE0
- .2byte 8
- .2byte 5
- .2byte 0xFFFF
- .2byte 0
-
-gUnknown_085CEBE8:: @ 85CEBE8
- .2byte 9
- .2byte 5
- .2byte 0xFFFF
- .2byte 0
-
-gUnknown_085CEBF0:: @ 85CEBF0
- .2byte 10
- .2byte 5
- .2byte 0xFFFF
- .2byte 0
-
-gUnknown_085CEBF8:: @ 85CEBF8
- .2byte 11
- .2byte 5
- .2byte 0xFFFF
- .2byte 0
-
-gUnknown_085CEC00:: @ 85CEC00
- .4byte gUnknown_085CEBE0
- .4byte gUnknown_085CEBE8
- .4byte gUnknown_085CEBF0
- .4byte gUnknown_085CEBF8
-
-gUnknown_085CEC10:: @ 85CEC10
- spr_template 0x1595, 0x1596, gUnknown_085CEB98, gUnknown_085CEC00, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_085CEC28:: @ 85CEC28
- .4byte 0x1F0
- .4byte 0x11E1
diff --git a/data/maps/FallarborTown_House2/scripts.inc b/data/maps/FallarborTown_House2/scripts.inc
index b78756e0a..7ab0666e8 100644
--- a/data/maps/FallarborTown_House2/scripts.inc
+++ b/data/maps/FallarborTown_House2/scripts.inc
@@ -38,7 +38,7 @@ FallarborTown_House2_EventScript_2013D6:: @ 82013D6
FallarborTown_House2_EventScript_20140C:: @ 820140C
msgbox FallarborTown_House2_Text_2015C3, 4
- special sub_8160638
+ special TeachMoveTutorMove
waitstate
compare VAR_0x8004, 0
goto_eq FallarborTown_House2_EventScript_2013D6
diff --git a/data/specials.inc b/data/specials.inc
index 86355f484..01bb9cb89 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -235,7 +235,7 @@ gSpecials:: @ 81DBA64
def_special sub_81B9770
def_special sub_81B9718
def_special sub_81B96D0
- def_special sub_8160638
+ def_special TeachMoveTutorMove
def_special GetRecordedCyclingRoadResults
def_special Special_BeginCyclingRoadChallenge
def_special GetPlayerAvatarBike
diff --git a/include/learn_move.h b/include/learn_move.h
index 034d689d4..9a7a779df 100644
--- a/include/learn_move.h
+++ b/include/learn_move.h
@@ -1,7 +1,7 @@
#ifndef GUARD_LEARN_MOVE_H
#define GUARD_LEARN_MOVE_H
-void sub_8160624(void);
-void sub_8160638(void);
+void VBlankCB_LearnMove(void);
+void TeachMoveTutorMove(void);
#endif //GUARD_LEARN_MOVE_H
diff --git a/include/list_menu.h b/include/list_menu.h
index d38980213..ee3d60f3d 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -1,6 +1,8 @@
#ifndef GUARD_LIST_MENU_H
#define GUARD_LIST_MENU_H
+#include "window.h"
+
#define LIST_NOTHING_CHOSEN -1
#define LIST_B_PRESSED -2
#define LIST_HEADER -3
diff --git a/include/menu.h b/include/menu.h
index 4cc43dd4c..5dfd99c64 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -46,7 +46,7 @@ void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs);
u8 InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 windowId, u8 numItems, u8 initialCursorPos);
u8 GetMenuCursorPos(void);
s8 ProcessMenuInput(void);
-s8 ProcessMenuInputNoWrapAround(void);
+s8 Menu_ProcessInputNoWrapAround(void);
void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y);
void reset_temp_tile_data_buffers(void);
void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size, u16 offset, u8 mode);
@@ -54,7 +54,7 @@ bool8 free_temp_tile_data_buffers_if_possible(void);
struct WindowTemplate CreateWindowTemplate(u8, u8, u8, u8, u8, u8, u16);
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
void copy_decompressed_tile_data_to_vram_autofree(u8 bgId, const void *src, int size, u16 offset, u8 mode);
-s8 ProcessMenuInputNoWrap_(void);
+s8 Menu_ProcessInputNoWrap_(void);
s8 ProcessMenuInput_other(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);
void clear_scheduled_bg_copies_to_vram(void);
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index adadcea03..75caa9a3a 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -2,5 +2,6 @@
#define GUARD_POKEMON_SUMMARY_SCREEN_H
void sub_81C4F98(u8, void(*)(void));
+void ShowSelectMovePokemonSummaryScreen(void *a, u8 b, u8 c, void *d, u16 e);
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/pokenav.h b/include/pokenav.h
index 2bca4db94..1fef8c91b 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -22,6 +22,9 @@ void sub_81D1D04(u8);
bool8 sub_81D1C44(u8);
void sub_81D5FB4(u16*);
bool8 sub_81D4A58(struct EventObject*);
-
+void sub_81D2BF4(u8 *);
+u16 sub_81D2C3C(void);
+void sub_81D2C50(void);
+u8 sub_81D28C8(const struct ListMenuItem *items, u16 numChoices);
#endif //GUARD_POKENAV_H
diff --git a/include/strings.h b/include/strings.h
index 528f70f69..f8d108eba 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -762,4 +762,14 @@ extern const u8 gText_Winona[];
extern const u8 gText_Phoebe[];
extern const u8 gText_Glacia[];
+extern const u8 gText_PkmnLearnedMove4[];
+extern const u8 gText_PkmnTryingToLearnMove[];
+extern const u8 gText_WhichMoveToForget2[];
+extern const u8 gText_StopTryingToTeachMove[];
+extern const u8 gText_12AndPoof[];
+extern const u8 gText_PkmnForgotMoveAndLearnedNew[];
+extern const u8 gText_TeachWhichMoveToPkmn[];
+extern const u8 gText_GiveUpTeachingNewMove[];
+extern const u8 gText_TeachX[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 69e677e9b..972ced45b 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -486,7 +486,6 @@ SECTIONS {
data/contest_ai.o(.rodata);
src/battle_controller_safari.o(.rodata);
data/battle_anim_815A0D4.o(.rodata);
- data/learn_move.o(.rodata);
src/learn_move.o(.rodata);
src/roamer.o(.rodata);
data/battle_tower.o(.rodata);
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 7f5a4fb48..b13727a12 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -55,7 +55,7 @@ extern const u8* const gBattleScriptsForMoveEffects[];
// functions
extern void sub_81A5718(u8 battlerId); // battle frontier 2
extern void sub_81A56B4(void); // battle frontier 2
-extern void sub_81BFA38(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen
+extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen
extern u8 sub_81C1B94(void); // pokemon summary screen
extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s
extern void sub_81D3640(u8 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s
@@ -5732,7 +5732,7 @@ static void atk5A_yesnoboxlearnmove(void)
if (!gPaletteFade.active)
{
FreeAllWindowBuffers();
- sub_81BFA38(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
gBattleScripting.learnMoveState++;
}
break;
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 257c7233f..46b0f76ad 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -2436,7 +2436,7 @@ static void CB2_HandleBlenderEndGame(void)
sBerryBlenderData->gameEndState++;
break;
case 10:
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 1:
case -1:
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 266ea8250..5c1f7db20 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -86,7 +86,7 @@ static void Task_DoClearSaveDataScreenYesNo(u8 taskId)
static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId)
{
- switch(ProcessMenuInputNoWrap_())
+ switch(Menu_ProcessInputNoWrap_())
{
case 0:
FillWindowPixelBuffer(0, 17);
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 67876f33b..ab0cd92a2 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -659,7 +659,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 10:
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index f039c5f24..7960d6cba 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -66,7 +66,7 @@ extern void sub_807F19C(void);
extern void sub_807B140(void);
extern void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
extern void Overworld_PlaySpecialMapMusic(void);
-extern void sub_81BFA38(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move);
+extern void ShowSelectMovePokemonSummaryScreen(struct Pokemon *party, u8 monId, u8 partyCount, void *CB2_ptr, u16 move);
extern u8 sub_81C1B94(void);
extern void sub_807F1A8(u8 arg0, const u8 *arg1, u8 arg2);
extern void sub_800E084(void);
@@ -918,7 +918,7 @@ static void Task_EvolutionScene(u8 taskID)
if (!gPaletteFade.active)
{
FreeAllWindowBuffers();
- sub_81BFA38(gPlayerParty, gTasks[taskID].tPartyID,
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID,
gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics,
gMoveToLearn);
gTasks[taskID].tLearnMoveState++;
@@ -1222,7 +1222,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
}
break;
case 4:
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0:
sEvoCursorPos = 0;
@@ -1252,7 +1252,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
Free(GetBgTilemapBuffer(0));
FreeAllWindowBuffers();
- sub_81BFA38(gPlayerParty, gTasks[taskID].tPartyID,
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID,
gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics,
gMoveToLearn);
gTasks[taskID].tLearnMoveState++;
diff --git a/src/item_menu.c b/src/item_menu.c
index d134e6375..f58c2b8b3 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -1369,7 +1369,7 @@ void Task_HandleInBattleItemMenuInput(u8 taskId)
{
if (sub_81221EC() != TRUE)
{
- s8 r4 = ProcessMenuInputNoWrapAround();
+ s8 r4 = Menu_ProcessInputNoWrapAround();
switch (r4)
{
case -2:
diff --git a/src/learn_move.c b/src/learn_move.c
index addae6a38..b65fd2045 100644
--- a/src/learn_move.c
+++ b/src/learn_move.c
@@ -1,26 +1,219 @@
#include "global.h"
#include "main.h"
-#include "task.h"
-#include "script.h"
-#include "sprite.h"
-#include "palette.h"
-#include "menu.h"
-#include "menu_helpers.h"
-#include "list_menu.h"
-#include "malloc.h"
-#include "field_screen.h"
-#include "event_data.h"
#include "bg.h"
+#include "data2.h"
+#include "event_data.h"
+#include "field_screen.h"
#include "gpu_regs.h"
#include "learn_move.h"
+#include "list_menu.h"
+#include "malloc.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokemon_summary_screen.h"
+#include "pokenav.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+
+struct LearnMoveStruct
+{
+ u8 state;
+ u8 spriteIds[16]; /*0x001*/
+ u8 filler11; /*0x011*/
+ u16 movesToLearn[4]; /*0x012*/
+ u8 filler1A[0x44 - 0x1A]; /*0x01A*/
+ u8 partyMon; /*0x044*/
+ u8 unk045; /*0x045*/
+ u8 filler46[2]; /*0x046*/
+ struct ListMenuItem menuItems[4]; /*0x048*/
+ u8 filler68[0x110 - 0x68]; /*0x068*/
+ u8 numMenuChoices; /*0x110*/
+ u8 unk111; /*0x111*/
+ u8 listMenuTask; /*0x112*/
+ u8 unk113; /*0x113*/
+ u8 unk114; /*0x114*/
+ u16 unk116; /*0x116*/
+};
-EWRAM_DATA u8 *gUnknown_0203BC34 = 0;
-EWRAM_DATA u8 gUnknown_0203BC38[8] = {0};
+EWRAM_DATA struct LearnMoveStruct *sLearnMoveStruct = {0};
+EWRAM_DATA struct {
+ u16 listOffset;
+ u16 listRow;
+ u8 showContestInfo;
+} gUnknown_0203BC38 = {0};
extern void (*gFieldCallback)(void);
-extern const struct SpritePalette gUnknown_085CEBB8;
-extern const struct SpriteSheet gUnknown_085CEBB0;
-extern const struct BgTemplate gUnknown_085CEC28;
+
+const u16 gUnknown_085CE9F8[] = INCBIN_U16("graphics/interface/ui_learn_move.gbapal");
+const u8 gUnknown_085CEA18[] = INCBIN_U8("graphics/interface/ui_learn_move.4bpp");
+
+const struct OamData gUnknown_085CEB98 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_SQUARE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct OamData gUnknown_085CEBA0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_V_RECTANGLE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct OamData gUnknown_085CEBA8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = ST_OAM_H_RECTANGLE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct SpriteSheet gUnknown_085CEBB0 =
+{
+ .data = gUnknown_085CEA18,
+ .size = 0x180,
+ .tag = 5525
+};
+
+const struct SpritePalette gUnknown_085CEBB8 =
+{
+ .data = gUnknown_085CE9F8,
+ .tag = 5526
+};
+
+const struct ScrollArrowsTemplate gUnknown_085CEBC0 =
+{
+ .firstArrowType = 0,
+ .firstX = 27,
+ .firstY = 16,
+ .secondArrowType = 1,
+ .secondX = 117,
+ .secondY = 16,
+ .fullyUpThreshold = -1,
+ .fullyDownThreshold = -1,
+ .tileTag = 5325,
+ .palTag = 5325,
+ .palNum = 0,
+};
+
+const struct ScrollArrowsTemplate gUnknown_085CEBD0 =
+{
+ .firstArrowType = 2,
+ .firstX = 192,
+ .firstY = 8,
+ .secondArrowType = 3,
+ .secondX = 192,
+ .secondY = 104,
+ .fullyUpThreshold = 0,
+ .fullyDownThreshold = 0,
+ .tileTag = 5425,
+ .palTag = 5425,
+ .palNum = 0,
+};
+
+const union AnimCmd gUnknown_085CEBE0[] =
+{
+ ANIMCMD_FRAME(8, 5, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_085CEBE8[] =
+{
+ ANIMCMD_FRAME(9, 5, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_085CEBF0[] =
+{
+ ANIMCMD_FRAME(10, 5, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gUnknown_085CEBF8[] =
+{
+ ANIMCMD_FRAME(11, 5, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_085CEC00[] =
+{
+ gUnknown_085CEBE0,
+ gUnknown_085CEBE8,
+ gUnknown_085CEBF0,
+ gUnknown_085CEBF8,
+};
+
+const struct SpriteTemplate gUnknown_085CEC10 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gUnknown_085CEB98,
+ .anims = gUnknown_085CEC00,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+const struct BgTemplate gUnknown_085CEC28[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ },
+};
+
extern void sub_81D2824(u16);
void sub_8160868(void);
@@ -29,111 +222,621 @@ void sub_81610B8(void);
void sub_816082C(void);
static void sub_8160664(u8 taskId);
-void sub_81606A0(void); //CB2_InitLearnMove
+void CB2_InitLearnMove(void);
void sub_8160740(void);
void sub_81607EC(void);
void sub_816082C(void);
-void sub_8160624(void) //VBlankCB_LearnMove
+void VBlankCB_LearnMove(void)
{
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
}
-void sub_8160638(void) //TeachMoveTutorMove
+void TeachMoveTutorMove(void)
{
- ScriptContext2_Enable();
- CreateTask(sub_8160664, 0xA);
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ ScriptContext2_Enable();
+ CreateTask(sub_8160664, 0xA);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
}
void sub_8160664(u8 taskId)
{
- if (!gPaletteFade.active)
- {
- SetMainCallback2(sub_81606A0);
- gFieldCallback = sub_80AF168;
- DestroyTask(taskId);
- }
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_InitLearnMove);
+ gFieldCallback = sub_80AF168;
+ DestroyTask(taskId);
+ }
}
-// Doesn't match
-void sub_81606A0(void) //CB2_InitLearnMove
+void CB2_InitLearnMove(void)
{
- ResetSpriteData();
- FreeAllSpritePalettes();
- ResetTasks();
- clear_scheduled_bg_copies_to_vram();
-
- gUnknown_0203BC34 = AllocZeroed(0x118); //gUnknown_0203BC34 ?
- gUnknown_0203BC34[68] = gSpecialVar_0x8004;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ clear_scheduled_bg_copies_to_vram();
+ sLearnMoveStruct = AllocZeroed(sizeof(struct LearnMoveStruct));
+ sLearnMoveStruct->partyMon = gSpecialVar_0x8004;
+ SetVBlankCallback(VBlankCB_LearnMove);
- SetVBlankCallback(sub_8160624);
- sub_81607EC();
- sub_81D2824(0);
+ sub_81607EC();
+ sub_81D2824(0);
- //gUnknown_0203BC38 ?
- gUnknown_0203BC38[0] = 0;
- gUnknown_0203BC38[2] = 0;
- gUnknown_0203BC38[4] = 0;
+ gUnknown_0203BC38.listOffset = 0;
+ gUnknown_0203BC38.listRow = 0;
+ gUnknown_0203BC38.showContestInfo = 0;
- sub_8161280();
+ sub_8161280();
- LoadSpriteSheet(&gUnknown_085CEBB0);
- LoadSpritePalette(&gUnknown_085CEBB8);
- sub_81610B8();
+ LoadSpriteSheet(&gUnknown_085CEBB0);
+ LoadSpritePalette(&gUnknown_085CEBB8);
+ sub_81610B8();
- gUnknown_0203BC34[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]);
- FillPalette(0, 0, 2);
- SetMainCallback2(sub_816082C);
+ sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38.listOffset, gUnknown_0203BC38.listRow);
+ FillPalette(RGB_BLACK, 0, 2);
+ SetMainCallback2(sub_816082C);
}
-// Doesn't match
void sub_8160740(void)
{
- ResetSpriteData();
- FreeAllSpritePalettes();
- ResetTasks();
- clear_scheduled_bg_copies_to_vram();
-
- gUnknown_0203BC34 = AllocZeroed(0x118); //gUnknown_0203BC34 ?
- gUnknown_0203BC34[68] = gSpecialVar_0x8004;
- gUnknown_0203BC34[69] = gSpecialVar_0x8005;
-
- SetVBlankCallback(sub_8160624);
- sub_81607EC();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ clear_scheduled_bg_copies_to_vram();
+ sLearnMoveStruct = AllocZeroed(sizeof(struct LearnMoveStruct));
+ sLearnMoveStruct->state = 28;
+ sLearnMoveStruct->partyMon = gSpecialVar_0x8004;
+ sLearnMoveStruct->unk045 = gSpecialVar_0x8005;
+ SetVBlankCallback(VBlankCB_LearnMove);
- //gUnknown_0203BC38 ?
- sub_81D2824(gUnknown_0203BC38[4]);
- sub_8161280();
+ sub_81607EC();
+ sub_81D2824(gUnknown_0203BC38.showContestInfo);
+ sub_8161280();
- LoadSpriteSheet(&gUnknown_085CEBB0);
- LoadSpritePalette(&gUnknown_085CEBB8);
+ LoadSpriteSheet(&gUnknown_085CEBB0);
+ LoadSpritePalette(&gUnknown_085CEBB8);
+ sub_81610B8();
- gUnknown_0203BC34[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]);
- FillPalette(0, 0, 2);
- SetMainCallback2(sub_816082C);
+ sLearnMoveStruct->listMenuTask = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38.listOffset, gUnknown_0203BC38.listRow);
+ FillPalette(RGB_BLACK, 0, 2);
+ SetMainCallback2(sub_816082C);
}
void sub_81607EC(void)
{
- ResetVramOamAndBgCntRegs();
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, &gUnknown_085CEC28, 2);
- ResetAllBgsCoordinates();
- SetGpuReg(0, 0x1040);
- ShowBg(0);
- ShowBg(1);
- SetGpuReg(0x50, 0);
+ ResetVramOamAndBgCntRegs();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085CEC28, 2);
+ ResetAllBgsCoordinates();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
+ DISPCNT_OBJ_1D_MAP |
+ DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
void sub_816082C(void)
{
- sub_8160868();
- RunTasks();
- AnimateSprites();
- BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
- UpdatePaletteFade();
+ sub_8160868();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+void sub_816084C(const u8 *src)
+{
+ StringExpandPlaceholders(gStringVar4, src);
+ sub_81D2BF4(gStringVar4);
+}
+
+void sub_81611AC(void);
+void sub_8160F50(u8);
+void sub_8161074(u8);
+s32 sub_8161054(void);
+void sub_8160EA0(void);
+void sub_8161234(void);
+void render_previous_quest_text(bool8);
+
+void sub_8160868(void)
+{
+ switch (sLearnMoveStruct->state)
+ {
+ case 0:
+ sLearnMoveStruct->state++;
+ render_previous_quest_text(FALSE);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ sLearnMoveStruct->state = 4;
+ }
+ break;
+ case 2:
+ sLearnMoveStruct->state++;
+ break;
+ case 3:
+ render_previous_quest_text(FALSE);
+ sLearnMoveStruct->state++;
+ sub_81611AC();
+ break;
+ case 4:
+ sub_8160F50(0);
+ return;
+ case 5:
+ sub_8161074(0);
+ sLearnMoveStruct->state++;
+ sub_81611AC();
+ break;
+ case 6:
+ sub_8160F50(1);
+ break;
+ case 8:
+ if (!sub_81D2C3C())
+ {
+ sub_81D2C50();
+ sLearnMoveStruct->state++;
+ }
+ break;
+ case 9:
+ {
+ s8 selection = Menu_ProcessInputNoWrap_();
+
+ if (selection == 0)
+ {
+ if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sub_8161054()) != 0xFFFF)
+ {
+ sub_816084C(gText_PkmnLearnedMove4);
+ gSpecialVar_0x8004 = 1;
+ sLearnMoveStruct->state = 31;
+ }
+ else
+ {
+ sLearnMoveStruct->state = 16;
+ }
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ if (gUnknown_0203BC38.showContestInfo == FALSE)
+ {
+ sLearnMoveStruct->state = 3;
+ }
+ else if (gUnknown_0203BC38.showContestInfo == TRUE)
+ {
+ sLearnMoveStruct->state = 5;
+ }
+ }
+ }
+ break;
+ case 12:
+ if (!sub_81D2C3C())
+ {
+ sub_81D2C50();
+ sLearnMoveStruct->state++;
+ }
+ break;
+ case 13:
+ {
+ s8 selection = Menu_ProcessInputNoWrap_();
+
+ if (selection == 0)
+ {
+ gSpecialVar_0x8004 = selection;
+ sLearnMoveStruct->state = 14;
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ if (gUnknown_0203BC38.showContestInfo == FALSE)
+ {
+ sLearnMoveStruct->state = 3;
+ }
+ else if (gUnknown_0203BC38.showContestInfo == TRUE)
+ {
+ sLearnMoveStruct->state = 5;
+ }
+ }
+ }
+ break;
+ case 16:
+ sub_816084C(gText_PkmnTryingToLearnMove);
+ sLearnMoveStruct->state++;
+ break;
+ case 17:
+ if (!sub_81D2C3C())
+ {
+ sub_81D2C50();
+ sLearnMoveStruct->state = 18;
+ }
+ break;
+ case 18:
+ {
+ s8 var = Menu_ProcessInputNoWrap_();
+
+ if (var == 0)
+ {
+ sub_816084C(gText_WhichMoveToForget2);
+ sLearnMoveStruct->state = 19;
+ }
+ else if (var == -1 || var == 1)
+ {
+ sLearnMoveStruct->state = 24;
+ }
+ }
+ break;
+ case 24:
+ StringCopy(gStringVar2, gMoveNames[sub_8161054()]);
+ sub_816084C(gText_StopTryingToTeachMove);
+ sLearnMoveStruct->state++;
+ break;
+ case 25:
+ if (!sub_81D2C3C())
+ {
+ sub_81D2C50();
+ sLearnMoveStruct->state++;
+ }
+ break;
+ case 26:
+ {
+ s8 var = Menu_ProcessInputNoWrap_();
+
+ if (var == 0)
+ {
+ sLearnMoveStruct->state = 27;
+ }
+ else if (var == -1 || var == 1)
+ {
+ // What's the point? It gets set to 16, anyway.
+ if (gUnknown_0203BC38.showContestInfo == FALSE)
+ {
+ sLearnMoveStruct->state = 3;
+ }
+ else if (gUnknown_0203BC38.showContestInfo == TRUE)
+ {
+ sLearnMoveStruct->state = 5;
+ }
+ sLearnMoveStruct->state = 16;
+ }
+ }
+ break;
+ case 27:
+ if (!sub_81D2C3C())
+ {
+ FillWindowPixelBuffer(3, 0x11);
+ if (gUnknown_0203BC38.showContestInfo == FALSE)
+ {
+ sLearnMoveStruct->state = 3;
+ }
+ else if (gUnknown_0203BC38.showContestInfo == TRUE)
+ {
+ sLearnMoveStruct->state = 5;
+ }
+ }
+ break;
+ case 19:
+ if (!sub_81D2C3C())
+ {
+ sLearnMoveStruct->state = 20;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ }
+ break;
+ case 20:
+ if (!gPaletteFade.active)
+ {
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_8160740, sub_8161054());
+ sub_8160EA0();
+ }
+ break;
+ case 21:
+ if (!sub_81D2C3C())
+ {
+ sLearnMoveStruct->state = 14;
+ }
+ break;
+ case 22:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ break;
+ case 14:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sLearnMoveStruct->state++;
+ break;
+ case 15:
+ if (!gPaletteFade.active)
+ {
+ sub_8160EA0();
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ case 28:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sLearnMoveStruct->state++;
+ if (gUnknown_0203BC38.showContestInfo == FALSE)
+ {
+ render_previous_quest_text(TRUE);
+ }
+ else if (gUnknown_0203BC38.showContestInfo == TRUE)
+ {
+ sub_8161074(1);
+ }
+ sub_8161234();
+ CopyWindowToVram(3, 2);
+ break;
+ case 29:
+ if (!gPaletteFade.active)
+ {
+ if (sLearnMoveStruct->unk045 == 4)
+ {
+ sLearnMoveStruct->state = 24;
+ }
+ else
+ {
+ u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk045);
+
+ StringCopy(gStringVar3, gMoveNames[moveId]);
+ RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk045);
+ SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sub_8161054(), sLearnMoveStruct->unk045);
+ StringCopy(gStringVar2, gMoveNames[sub_8161054()]);
+ sub_816084C(gText_12AndPoof);
+ sLearnMoveStruct->state = 30;
+ gSpecialVar_0x8004 = 1;
+ }
+ }
+ break;
+ case 30:
+ if (!sub_81D2C3C())
+ {
+ sub_816084C(gText_PkmnForgotMoveAndLearnedNew);
+ sLearnMoveStruct->state = 31;
+ PlayFanfare(MUS_FANFA1);
+ }
+ break;
+ case 31:
+ if (!sub_81D2C3C())
+ {
+ PlayFanfare(MUS_FANFA1);
+ sLearnMoveStruct->state = 32;
+ }
+ break;
+ case 32:
+ if (IsFanfareTaskInactive())
+ {
+ sLearnMoveStruct->state = 33;
+ }
+ break;
+ case 33:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 14;
+ }
+ break;
+ }
+}
+
+void sub_8160EA0(void)
+{
+ sub_8161234();
+ DestroyListMenuTask(sLearnMoveStruct->listMenuTask, &gUnknown_0203BC38.listOffset, &gUnknown_0203BC38.listRow);
+ FreeAllWindowBuffers();
+ FREE_AND_SET_NULL(sLearnMoveStruct);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+}
+
+void render_previous_quest_text(bool8 a)
+{
+ s32 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE;
+ }
+
+ if (!a)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn);
+ FillWindowPixelBuffer(3, 0x11);
+ PrintTextOnWindow(3, 1, gStringVar4, 0, 1, 0, NULL);
+ }
+}
+
+void sub_816137C(s32);
+
+void sub_8160F50(u8 a0)
+{
+ s32 itemId = ListMenuHandleInputGetItemId(sLearnMoveStruct->listMenuTask);
+ ListMenuGetScrollAndRow(sLearnMoveStruct->listMenuTask, &gUnknown_0203BC38.listOffset, &gUnknown_0203BC38.listRow);
+
+ switch (itemId)
+ {
+ case LIST_NOTHING_CHOSEN:
+ if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysState())
+ {
+ break;
+ }
+
+ PlaySE(SE_SELECT);
+
+ if (a0 == 0)
+ {
+ PutWindowTilemap(1);
+ sLearnMoveStruct->state = 5;
+ gUnknown_0203BC38.showContestInfo = TRUE;
+ }
+ else
+ {
+ PutWindowTilemap(0);
+ sLearnMoveStruct->state = 3;
+ gUnknown_0203BC38.showContestInfo = FALSE;
+ }
+
+ schedule_bg_copy_tilemap_to_vram(1);
+ sub_816137C(sub_8161054());
+ break;
+ case LIST_B_PRESSED:
+ PlaySE(SE_SELECT);
+ sub_8161234();
+ sLearnMoveStruct->state = 12;
+ StringExpandPlaceholders(gStringVar4, gText_GiveUpTeachingNewMove);
+ sub_81D2BF4(gStringVar4);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sub_8161234();
+ sLearnMoveStruct->state = 8;
+ StringCopy(gStringVar2, gMoveNames[itemId]);
+ StringExpandPlaceholders(gStringVar4, gText_TeachX);
+ sub_81D2BF4(gStringVar4);
+ break;
+ }
+}
+
+s32 sub_8161054(void)
+{
+ return sLearnMoveStruct->menuItems[gUnknown_0203BC38.listRow + gUnknown_0203BC38.listOffset].id;
+}
+
+void sub_8161074(u8 a0)
+{
+ if (!a0)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn);
+ FillWindowPixelBuffer(3, 0x11);
+ PrintTextOnWindow(3, 1, gStringVar4, 0, 1, 0, NULL);
+ }
+}
+
+void sub_81610B8(void)
+{
+ int i;
+
+ sLearnMoveStruct->unk114 = 0xFF;
+ sLearnMoveStruct->unk113 = -1;
+ sub_81611AC();
+
+ for (i = 0; i < 8; i++)
+ {
+ sLearnMoveStruct->spriteIds[i] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 36, 0);
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ sLearnMoveStruct->spriteIds[i + 8] = CreateSprite(&gUnknown_085CEC10, (i - (i / 4) * 4) * 8 + 104, (i / 4) * 8 + 52, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i + 8]], 2);
+ }
+
+ for (i = 0; i < 16; i++)
+ {
+ gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE;
+ }
+}
+
+void sub_81611AC(void)
+{
+ if (sLearnMoveStruct->unk114 == 0xFF)
+ {
+ sLearnMoveStruct->unk114 = AddScrollIndicatorArrowPair(&gUnknown_085CEBC0, &sLearnMoveStruct->unk116);
+ }
+
+ if (sLearnMoveStruct->unk113 == 0xFF)
+ {
+ gTempScrollArrowTemplate = gUnknown_085CEBD0;
+ gTempScrollArrowTemplate.fullyDownThreshold = sLearnMoveStruct->numMenuChoices - sLearnMoveStruct->unk111;
+ sLearnMoveStruct->unk113 = AddScrollIndicatorArrowPair(&gTempScrollArrowTemplate, &gUnknown_0203BC38.listOffset);
+ }
+}
+
+void sub_8161234(void)
+{
+ if (sLearnMoveStruct->unk114 != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sLearnMoveStruct->unk114);
+ sLearnMoveStruct->unk114 = 0xFF;
+ }
+
+ if (sLearnMoveStruct->unk113 != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sLearnMoveStruct->unk113);
+ sLearnMoveStruct->unk113 = 0xFF;
+ }
+}
+
+void sub_8161280(void)
+{
+ s32 i;
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+
+ sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn);
+
+ for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++)
+ {
+ sLearnMoveStruct->menuItems[i].name = gMoveNames[sLearnMoveStruct->movesToLearn[i]];
+ sLearnMoveStruct->menuItems[i].id = sLearnMoveStruct->movesToLearn[i];
+ }
+
+ GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar1, nickname);
+ sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].name = gText_Cancel;
+ sLearnMoveStruct->menuItems[sLearnMoveStruct->numMenuChoices].id = LIST_B_PRESSED;
+ sLearnMoveStruct->numMenuChoices++;
+ sLearnMoveStruct->unk111 = sub_81D28C8(sLearnMoveStruct->menuItems, sLearnMoveStruct->numMenuChoices);
+}
+
+void sub_816137C(s32 item)
+{
+ u16 i;
+
+ if (!gUnknown_0203BC38.showContestInfo || item == LIST_NOTHING_CHOSEN)
+ {
+ for (i = 0; i < 16; i++)
+ {
+ gSprites[sLearnMoveStruct->spriteIds[i]].invisible = TRUE;
+ }
+ }
+ else
+ {
+ u8 temp1 = gContestEffects[gContestMoves[item].effect].appeal / 10;
+
+ if (temp1 == 0xFF)
+ {
+ temp1 = 0;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ if (i < temp1)
+ {
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 1);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 0);
+ }
+ gSprites[sLearnMoveStruct->spriteIds[i]].invisible = FALSE;
+ }
+
+ temp1 = gContestEffects[gContestMoves[item].effect].jam / 10;
+
+ if (temp1 == 0xFF)
+ {
+ temp1 = 0;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ if (i < temp1)
+ {
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 3);
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIds[i]], 2);
+ }
+ gSprites[sLearnMoveStruct->spriteIds[i]].invisible = FALSE;
+ }
+ }
}
diff --git a/src/main_menu.c b/src/main_menu.c
index 3afe1abe5..052035e34 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -1362,7 +1362,7 @@ void task_new_game_prof_birch_speech_part2_3(u8 taskId)
void task_new_game_prof_birch_speech_part2_4(u8 taskId)
{
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0:
PlaySE(SE_SELECT);
@@ -1802,7 +1802,7 @@ void sub_8031D74(void)
s8 sub_8031DB4(void)
{
- return ProcessMenuInputNoWrapAround();
+ return Menu_ProcessInputNoWrapAround();
}
void set_default_player_name(u8 nameId)
diff --git a/src/menu.c b/src/menu.c
index f4ffec023..eda9513ba 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -986,7 +986,7 @@ s8 ProcessMenuInput(void)
return MENU_NOTHING_CHOSEN;
}
-s8 ProcessMenuInputNoWrapAround(void)
+s8 Menu_ProcessInputNoWrapAround(void)
{
u8 oldPos = gUnknown_0203CD90.cursorPos;
@@ -1044,7 +1044,7 @@ s8 ProcessMenuInput_other(void)
return MENU_NOTHING_CHOSEN;
}
-s8 ProcessMenuInputNoWrapAround_other(void)
+s8 Menu_ProcessInputNoWrapAround_other(void)
{
u8 oldPos = gUnknown_0203CD90.cursorPos;
@@ -1187,9 +1187,9 @@ void sub_8198C34(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum
sub_8198AF8(window, fontId, 0, 1, baseTileNum, paletteNum, 0);
}
-s8 ProcessMenuInputNoWrap_(void)
+s8 Menu_ProcessInputNoWrap_(void)
{
- s8 result = ProcessMenuInputNoWrapAround();
+ s8 result = Menu_ProcessInputNoWrapAround();
if (result != MENU_NOTHING_CHOSEN)
sub_8198C78();
return result;
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 178fbb5fa..217fdabae 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -169,7 +169,7 @@ void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *templa
static void Task_CallYesOrNoCallback(u8 taskId)
{
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0:
PlaySE(SE_SELECT);
diff --git a/src/player_pc.c b/src/player_pc.c
index ba18b45ab..ef00e2e06 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -272,7 +272,7 @@ static void PlayerPCProcessMenuInput(u8 taskId)
if(gPcItemMenuOptionsNum > 3)
inputOptionId = ProcessMenuInput();
else
- inputOptionId = ProcessMenuInputNoWrapAround();
+ inputOptionId = Menu_ProcessInputNoWrapAround();
switch(inputOptionId)
{
@@ -686,7 +686,7 @@ static void Mailbox_DrawYesNoBeforeMove(u8 taskId)
static void Mailbox_MoveToBagYesNoPrompt(u8 taskId)
{
- switch(ProcessMenuInputNoWrap_())
+ switch(Menu_ProcessInputNoWrap_())
{
case 0:
Mailbox_DoMailMoveToBag(taskId);
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 7dd20b237..e615693b9 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -1042,7 +1042,7 @@ static void Task_HandlePokeblockOptionsInput(u8 taskId)
if (sub_81221EC() == TRUE)
return;
- itemId = ProcessMenuInputNoWrapAround();
+ itemId = Menu_ProcessInputNoWrapAround();
if (itemId == MENU_NOTHING_CHOSEN)
{
return;
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 728b887f8..55600b3c4 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -384,7 +384,7 @@ void sub_81BF8EC(u8 a, void *b, u8 c, u8 d, void *e)
SetMainCallback2(sub_81BFAE4);
}
-void sub_81BFA38(void *a, u8 b, u8 c, void *d, u16 e)
+void ShowSelectMovePokemonSummaryScreen(void *a, u8 b, u8 c, void *d, u16 e)
{
sub_81BF8EC(3, a, b, c, d);
gUnknown_0203CF1C->unk40C4 = e;
diff --git a/src/secret_base.c b/src/secret_base.c
index c71f7ed23..b75163200 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -997,7 +997,7 @@ void sub_80E9FB0(u8 taskId)
{
s8 input;
- input = ProcessMenuInputNoWrapAround();
+ input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case -1:
diff --git a/src/start_menu.c b/src/start_menu.c
index 7591d3b57..60271317a 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -985,7 +985,7 @@ static u8 SaveYesNoCallback(void)
static u8 SaveConfirmInputCallback(void)
{
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0: // Yes
switch (gSaveFileStatus)
@@ -1045,7 +1045,7 @@ static u8 SaveConfirmOverwriteCallback(void)
static u8 SaveOverwriteInputCallback(void)
{
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0: // Yes
sSaveDialogCallback = SaveSavingMessageCallback;
@@ -1169,7 +1169,7 @@ static u8 BattlePyramidRetireYesNoCallback(void)
static u8 BattlePyramidRetireInputCallback(void)
{
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0: // Yes
return SAVE_CANCELED;
diff --git a/src/starter_choose.c b/src/starter_choose.c
index b55b0fbc5..36e2b121a 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -258,7 +258,7 @@ static void Task_StarterChoose5(u8 taskId)
{
u8 spriteId;
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0: // YES
// Return the starter choice and exit.
diff --git a/src/wallclock.c b/src/wallclock.c
index 3d95d75ac..5be20d5c9 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -763,7 +763,7 @@ static void Task_SetClock3(u8 taskId)
static void Task_SetClock4(u8 taskId)
{
- switch (ProcessMenuInputNoWrap_())
+ switch (Menu_ProcessInputNoWrap_())
{
case 0:
PlaySE(SE_SELECT);