summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-11-23 13:47:44 -0800
committerMarcus Huderle <huderlem@gmail.com>2017-11-26 12:57:30 -0800
commit5a8cd94046983f15eaf6d414d5f431cb296abdc3 (patch)
tree7e4fd6745103d348d9cdf2faf2a5839f2913f1d3
parent34a49a726c6c42803950fc993394be8b96492c71 (diff)
Lots more pokemon_summary_screen decompilation
-rw-r--r--asm/contest.s4
-rw-r--r--asm/pokemon_summary_screen.s1947
-rw-r--r--data-de/text/contest_strings.inc2
-rw-r--r--data/text/contest_strings.inc2
-rw-r--r--include/learn_move.h15
-rw-r--r--include/party_menu.h1
-rw-r--r--include/pokemon.h2
-rw-r--r--src/pokemon/learn_move.c20
-rw-r--r--src/pokemon/pokemon_summary_screen.c1144
9 files changed, 1165 insertions, 1972 deletions
diff --git a/asm/contest.s b/asm/contest.s
index ad3b4fba9..2d24f5bb0 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -7157,7 +7157,7 @@ _080AEC34:
ldr r6, _080AEC78 @ =gContestMoves
lsls r5, r4, 3
ldr r7, _080AEC80 @ =gContestEffects
- ldr r0, _080AEC84 @ =gUnknown_083CADD4
+ ldr r0, _080AEC84 @ =gContestEffectStrings
mov r9, r0
ldr r4, _080AEC88 @ =0x0600c816
ldr r3, _080AEC8C @ =0x0600c7d6
@@ -7189,7 +7189,7 @@ _080AEC74: .4byte gUnknown_03004210
_080AEC78: .4byte gContestMoves
_080AEC7C: .4byte 0x00004040
_080AEC80: .4byte gContestEffects
-_080AEC84: .4byte gUnknown_083CADD4
+_080AEC84: .4byte gContestEffectStrings
_080AEC88: .4byte 0x0600c816
_080AEC8C: .4byte 0x0600c7d6
_080AEC90:
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 01bae4b3a..3eb3e2f83 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -1547,7 +1547,7 @@ sub_809E508: @ 809E508
_0809E50E:
adds r0, r5, 0
adds r1, r4, 0
- bl sub_809F760
+ bl GetMonMove
lsls r0, 16
cmp r0, 0
beq _0809E520
@@ -2078,7 +2078,7 @@ _0809E94E:
lsrs r1, r4, 24
ldr r0, _0809EA10 @ =gSharedMem + 0x18010
str r2, [sp, 0x4]
- bl sub_809F760
+ bl GetMonMove
lsls r0, 16
adds r5, r4, 0
ldr r2, [sp, 0x4]
@@ -3796,1947 +3796,4 @@ _0809F6AE:
bx r0
thumb_func_end sub_809F678
- thumb_func_start sub_809F6B4
-sub_809F6B4: @ 809F6B4
- push {r4-r7,lr}
- sub sp, 0xC
- adds r4, r0, 0
- adds r7, r1, 0
- ldrb r0, [r7]
- cmp r0, 0
- beq _0809F6D2
- cmp r0, 0x1
- beq _0809F718
- adds r0, r4, 0
- bl sub_80A1808
- lsls r0, 24
- lsrs r0, 24
- b _0809F756
-_0809F6D2:
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- lsls r0, r5, 3
- ldr r1, _0809F70C @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _0809F710 @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _0809F714 @ =gUnknown_081FAF4C
- ldr r4, [r4, 0x4]
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- b _0809F74E
- .align 2, 0
-_0809F70C: .4byte gMonFrontPicTable
-_0809F710: .4byte gMonFrontPicCoords
-_0809F714: .4byte gUnknown_081FAF4C
-_0809F718:
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r1, r0, 0
- adds r0, r5, 0
- adds r2, r6, 0
- bl GetMonSpritePalStructFromOtIdPersonality
- adds r4, r0, 0
- bl LoadCompressedObjectPalette
- ldrh r0, [r4, 0x4]
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
-_0809F74E:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- movs r0, 0xFF
-_0809F756:
- add sp, 0xC
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809F6B4
-
- thumb_func_start sub_809F760
-sub_809F760: @ 809F760
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _0809F780
- cmp r1, 0x1
- bgt _0809F776
- cmp r1, 0
- beq _0809F77C
- b _0809F788
-_0809F776:
- cmp r2, 0x2
- beq _0809F784
- b _0809F788
-_0809F77C:
- movs r1, 0xD
- b _0809F78A
-_0809F780:
- movs r1, 0xE
- b _0809F78A
-_0809F784:
- movs r1, 0xF
- b _0809F78A
-_0809F788:
- movs r1, 0x10
-_0809F78A:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_809F760
-
- thumb_func_start sub_809F798
-sub_809F798: @ 809F798
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _0809F7B8
- cmp r1, 0x1
- bgt _0809F7AE
- cmp r1, 0
- beq _0809F7B4
- b _0809F7C0
-_0809F7AE:
- cmp r2, 0x2
- beq _0809F7BC
- b _0809F7C0
-_0809F7B4:
- movs r1, 0x11
- b _0809F7C2
-_0809F7B8:
- movs r1, 0x12
- b _0809F7C2
-_0809F7BC:
- movs r1, 0x13
- b _0809F7C2
-_0809F7C0:
- movs r1, 0x14
-_0809F7C2:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_809F798
-
- thumb_func_start sub_809F7D0
-sub_809F7D0: @ 809F7D0
- push {r4,lr}
- sub sp, 0x64
- mov r0, sp
- bl sub_809F678
- ldr r4, _0809F804 @ =gSharedMem + 0x18000
- adds r0, r4, 0
- adds r0, 0x79
- ldrb r1, [r0]
- mov r0, sp
- bl sub_809F760
- lsls r0, 16
- lsrs r0, 16
- bl IsHMMove
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F808
- ldrb r0, [r4, 0x8]
- cmp r0, 0x3
- beq _0809F808
- movs r0, 0
- b _0809F80A
- .align 2, 0
-_0809F804: .4byte gSharedMem + 0x18000
-_0809F808:
- movs r0, 0x1
-_0809F80A:
- add sp, 0x64
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809F7D0
-
- thumb_func_start sub_809F814
-sub_809F814: @ 809F814
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r0, _0809F83C @ =gTasks + 0x8
- mov r8, r0
- adds r4, r6, r0
- ldrh r1, [r4, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- bgt _0809F840
- adds r0, r1, 0x1
- strh r0, [r4, 0x1C]
- b _0809F9C0
- .align 2, 0
-_0809F83C: .4byte gTasks + 0x8
-_0809F840:
- ldr r7, _0809F874 @ =gMain
- ldrh r1, [r7, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0809F880
- mov r0, r8
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0809F878 @ =sub_809E260
- str r1, [r0]
- movs r0, 0x4
- strh r0, [r4]
- movs r0, 0x1
- strh r0, [r4, 0x1A]
- ldr r2, _0809F87C @ =gSharedMem + 0x18000
- ldrh r0, [r4, 0x1E]
- adds r2, 0x79
- strb r0, [r2]
- movs r1, 0x1
- negs r1, r1
- adds r0, r5, 0
- bl sub_809E8F0
- b _0809F9C0
- .align 2, 0
-_0809F874: .4byte gMain
-_0809F878: .4byte sub_809E260
-_0809F87C: .4byte gSharedMem + 0x18000
-_0809F880:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0809F8B4
- mov r0, r8
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0809F8AC @ =sub_809E260
- str r1, [r0]
- movs r0, 0x4
- strh r0, [r4]
- movs r0, 0x1
- strh r0, [r4, 0x1A]
- ldr r2, _0809F8B0 @ =gSharedMem + 0x18000
- ldrh r0, [r4, 0x1E]
- adds r2, 0x79
- strb r0, [r2]
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_809E8F0
- b _0809F9C0
- .align 2, 0
-_0809F8AC: .4byte sub_809E260
-_0809F8B0: .4byte gSharedMem + 0x18000
-_0809F8B4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0809F8C8
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F918
-_0809F8C8:
- ldr r1, _0809F90C @ =gSharedMem + 0x18000
- ldrb r0, [r1, 0xB]
- cmp r0, 0x2
- beq _0809F9C0
- cmp r0, 0x3
- bne _0809F8F4
- adds r0, r1, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0809F8E8
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809F8F4
-_0809F8E8:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
-_0809F8F4:
- ldr r1, _0809F910 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809F914 @ =sub_809E260
- str r1, [r0]
- movs r1, 0x1
- negs r1, r1
- adds r0, r5, 0
- b _0809F972
- .align 2, 0
-_0809F90C: .4byte gSharedMem + 0x18000
-_0809F910: .4byte gTasks
-_0809F914: .4byte sub_809E260
-_0809F918:
- ldrh r1, [r7, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0809F92E
- bl sub_80F9284
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0809F994
-_0809F92E:
- ldr r1, _0809F988 @ =gSharedMem + 0x18000
- adds r2, r1, 0
- adds r2, 0x76
- ldrb r0, [r1, 0xB]
- ldrb r2, [r2]
- cmp r0, r2
- beq _0809F9C0
- cmp r0, 0x2
- bne _0809F960
- adds r0, r1, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0809F954
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809F960
-_0809F954:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x9
- movs r3, 0x12
- bl MenuZeroFillWindowRect
-_0809F960:
- ldr r1, _0809F98C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0809F990 @ =sub_809E260
- str r1, [r0]
- adds r0, r5, 0
- movs r1, 0x1
-_0809F972:
- bl SummaryScreenHandleLeftRightInput
- ldrb r1, [r4, 0x1E]
- movs r0, 0x1
- bl sub_80A1488
- ldrb r1, [r4, 0x1E]
- movs r0, 0x1
- bl sub_80A1654
- b _0809F9C0
- .align 2, 0
-_0809F988: .4byte gSharedMem + 0x18000
-_0809F98C: .4byte gTasks
-_0809F990: .4byte sub_809E260
-_0809F994:
- ldrh r1, [r7, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0809F9A6
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809F9C0
-_0809F9A6:
- ldrb r1, [r4, 0x1E]
- movs r0, 0x2
- bl sub_80A1488
- ldrb r1, [r4, 0x1E]
- movs r0, 0x2
- bl sub_80A1654
- mov r0, r8
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0809F9CC @ =sub_809E260
- str r1, [r0]
-_0809F9C0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809F9CC: .4byte sub_809E260
- thumb_func_end sub_809F814
-
- thumb_func_start sub_809F9D0
-sub_809F9D0: @ 809F9D0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r6, _0809FA24 @ =gTasks + 0x8
- adds r2, r4, r6
- movs r0, 0
- strh r0, [r2, 0x1C]
- strh r1, [r2, 0x1E]
- movs r5, 0x2
- negs r5, r5
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_80A1488
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_80A1654
- movs r0, 0xB
- movs r1, 0xF
- movs r2, 0x1C
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- ldr r0, _0809FA28 @ =gOtherText_CantForgetHMs
- movs r1, 0xB
- movs r2, 0xF
- bl MenuPrint
- subs r6, 0x8
- adds r4, r6
- ldr r0, _0809FA2C @ =sub_809F814
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FA24: .4byte gTasks + 0x8
-_0809FA28: .4byte gOtherText_CantForgetHMs
-_0809FA2C: .4byte sub_809F814
- thumb_func_end sub_809F9D0
-
- thumb_func_start sub_809FA30
-sub_809FA30: @ 809FA30
- ldr r0, _0809FA38 @ =gSharedMem + 0x18000
- adds r0, 0x7A
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0809FA38: .4byte gSharedMem + 0x18000
- thumb_func_end sub_809FA30
-
- thumb_func_start GetStringCenterAlignXOffsetWithLetterSpacing
-GetStringCenterAlignXOffsetWithLetterSpacing: @ 809FA3C
- push {r4,lr}
- lsls r0, 24
- lsls r1, 24
- lsls r2, 24
- lsls r3, 24
- lsrs r2, 23
- lsrs r3, 18
- ldr r4, _0809FA70 @ =0x0600f000
- adds r3, r4
- adds r2, r3
- lsrs r1, 12
- lsrs r0, 23
- movs r4, 0x80
- lsls r4, 2
- adds r3, r4, 0
- adds r0, r3
- adds r1, r0
- adds r0, r1, 0
- adds r0, 0x80
- strh r0, [r2]
- adds r2, 0x40
- adds r1, 0x81
- strh r1, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FA70: .4byte 0x0600f000
- thumb_func_end GetStringCenterAlignXOffsetWithLetterSpacing
-
- thumb_func_start GetStringCenterAlignXOffset
-GetStringCenterAlignXOffset: @ 809FA74
- push {r4,lr}
- adds r4, r1, 0
- adds r3, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0xF
- adds r2, r4, 0
- bl GetStringCenterAlignXOffsetWithLetterSpacing
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end GetStringCenterAlignXOffset
-
- thumb_func_start sub_809FA94
-sub_809FA94: @ 809FA94
- push {lr}
- bl IsShiny
- lsls r0, 24
- cmp r0, 0
- beq _0809FAB4
- ldr r0, _0809FAB0 @ =gUnknown_083C157E
- movs r1, 0x4
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x1
- b _0809FAC0
- .align 2, 0
-_0809FAB0: .4byte gUnknown_083C157E
-_0809FAB4:
- ldr r0, _0809FAC4 @ =gUnknown_083C157C
- movs r1, 0x4
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0
-_0809FAC0:
- pop {r1}
- bx r1
- .align 2, 0
-_0809FAC4: .4byte gUnknown_083C157C
- thumb_func_end sub_809FA94
-
- thumb_func_start sub_809FAC8
-sub_809FAC8: @ 809FAC8
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _0809FB28
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x4
- movs r3, 0x3
- bl MenuZeroFillWindowRect
- movs r0, 0x3
- movs r1, 0x10
- movs r2, 0x9
- movs r3, 0x11
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0xC
- movs r2, 0xB
- movs r3, 0xF
- bl MenuZeroFillWindowRect
- ldr r4, _0809FB20 @ =gStringVar1
- adds r0, r5, 0
- adds r1, r4, 0
- bl GetMonNickname
- adds r0, r4, 0
- movs r1, 0xD
- movs r2, 0x3
- movs r3, 0x10
- bl sub_80A1FF8
- ldr r0, _0809FB24 @ =gUnknown_083C157C
- movs r1, 0x4
- movs r2, 0x2
- bl LoadPalette
- b _0809FBD6
- .align 2, 0
-_0809FB20: .4byte gStringVar1
-_0809FB24: .4byte gUnknown_083C157C
-_0809FB28:
- adds r0, r5, 0
- bl sub_809FA94
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl SpeciesToPokedexNum
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _0809FB6C @ =0x0000ffff
- cmp r4, r0
- beq _0809FB96
- cmp r6, 0
- bne _0809FB70
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x2
- bl GetStringCenterAlignXOffset
- movs r0, 0x11
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0xD
- b _0809FB8C
- .align 2, 0
-_0809FB6C: .4byte 0x0000ffff
-_0809FB70:
- movs r0, 0x2
- movs r1, 0x8
- movs r2, 0x1
- movs r3, 0x2
- bl GetStringCenterAlignXOffsetWithLetterSpacing
- movs r0, 0x11
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x8
-_0809FB8C:
- movs r2, 0x3
- movs r3, 0x2
- bl sub_80A1F98
- b _0809FBA2
-_0809FB96:
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x4
- movs r3, 0x3
- bl MenuZeroFillWindowRect
-_0809FBA2:
- ldr r1, _0809FBE0 @ =gStringVar1
- adds r0, r1, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r1, r0, 0
- adds r0, r5, 0
- bl GetMonNickname
- adds r1, r0, 0
- movs r0, 0xFC
- strb r0, [r1]
- movs r0, 0x13
- strb r0, [r1, 0x1]
- movs r0, 0x3C
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r0, _0809FBE0 @ =gStringVar1
- movs r1, 0x1
- movs r2, 0xC
- bl MenuPrint
- adds r0, r5, 0
- bl sub_80A0958
-_0809FBD6:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FBE0: .4byte gStringVar1
- thumb_func_end sub_809FAC8
-
- thumb_func_start sub_809FBE4
-sub_809FBE4: @ 809FBE4
- push {r4,lr}
- movs r4, 0
-_0809FBE8:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A1918
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1B
- bls _0809FBE8
- movs r0, 0xB
- movs r1, 0x4
- movs r2, 0x1D
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809FBE4
-
- thumb_func_start sub_809FC0C
-sub_809FC0C: @ 809FC0C
- push {lr}
- ldr r0, _0809FC30 @ =gOtherText_Type2
- movs r1, 0xB
- movs r2, 0x6
- bl MenuPrint
- movs r0, 0
- movs r1, 0x16
- movs r2, 0x4
- bl GetStringCenterAlignXOffset
- movs r0, 0x2
- movs r1, 0x17
- movs r2, 0x4
- bl GetStringCenterAlignXOffset
- pop {r0}
- bx r0
- .align 2, 0
-_0809FC30: .4byte gOtherText_Type2
- thumb_func_end sub_809FC0C
-
- thumb_func_start sub_809FC34
-sub_809FC34: @ 809FC34
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- movs r4, 0
-_0809FC3C:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A1918
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _0809FC3C
- movs r0, 0xB
- movs r1, 0x9
- movs r2, 0x1C
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r6, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _0809FD1C
- ldr r5, _0809FCD0 @ =gStringVar1
- adds r0, r5, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r5, r0, 0
- ldr r1, _0809FCD4 @ =gOtherText_OriginalTrainer
- bl StringCopy
- adds r5, r0, 0
- ldr r4, _0809FCD8 @ =gOtherText_FiveQuestionsAndSlash
- adds r1, r4, 0
- bl StringCopy
- adds r5, r0, 0
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x13
- strb r0, [r5, 0x1]
- movs r0, 0x4E
- strb r0, [r5, 0x2]
- movs r0, 0xFF
- strb r0, [r5, 0x3]
- ldr r0, _0809FCD0 @ =gStringVar1
- movs r1, 0xB
- movs r2, 0x4
- bl MenuPrint
- movs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0xD
- movs r2, 0xC1
- movs r3, 0x20
- bl sub_80A1EF8
- movs r0, 0x9
- movs r1, 0x78
- movs r2, 0x30
- movs r3, 0
- bl sub_80A198C
- adds r0, r6, 0
- movs r1, 0x20
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x5
- bhi _0809FCE0
- ldr r0, _0809FCDC @ =gOtherText_EggAbout
- b _0809FCF2
- .align 2, 0
-_0809FCD0: .4byte gStringVar1
-_0809FCD4: .4byte gOtherText_OriginalTrainer
-_0809FCD8: .4byte gOtherText_FiveQuestionsAndSlash
-_0809FCDC: .4byte gOtherText_EggAbout
-_0809FCE0:
- cmp r0, 0xA
- bhi _0809FCEC
- ldr r0, _0809FCE8 @ =gOtherText_EggSoon
- b _0809FCF2
- .align 2, 0
-_0809FCE8: .4byte gOtherText_EggSoon
-_0809FCEC:
- cmp r1, 0x28
- bhi _0809FD00
- ldr r0, _0809FCFC @ =gOtherText_EggSomeTime
-_0809FCF2:
- movs r1, 0xB
- movs r2, 0x9
- bl MenuPrint
- b _0809FD0A
- .align 2, 0
-_0809FCFC: .4byte gOtherText_EggSomeTime
-_0809FD00:
- ldr r0, _0809FD18 @ =gOtherText_EggLongTime
- movs r1, 0xB
- movs r2, 0x9
- bl MenuPrint
-_0809FD0A:
- adds r0, r6, 0
- movs r1, 0xB
- movs r2, 0xE
- bl PokemonSummaryScreen_PrintEggTrainerMemo
- b _0809FE4C
- .align 2, 0
-_0809FD18: .4byte gOtherText_EggLongTime
-_0809FD1C:
- ldr r4, _0809FD64 @ =gStringVar2
- adds r0, r6, 0
- movs r1, 0x7
- adds r2, r4, 0
- bl GetMonData
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r5, _0809FD68 @ =gStringVar1
- adds r0, r5, 0
- movs r1, 0xD
- bl sub_80A1E58
- adds r5, r0, 0
- ldr r1, _0809FD6C @ =gOtherText_OriginalTrainer
- bl StringCopy
- adds r5, r0, 0
- adds r0, r6, 0
- movs r1, 0x31
- bl GetMonData
- cmp r0, 0
- bne _0809FD70
- adds r0, r5, 0
- movs r1, 0x9
- b _0809FD74
- .align 2, 0
-_0809FD64: .4byte gStringVar2
-_0809FD68: .4byte gStringVar1
-_0809FD6C: .4byte gOtherText_OriginalTrainer
-_0809FD70:
- adds r0, r5, 0
- movs r1, 0xA
-_0809FD74:
- bl sub_80A1E58
- adds r5, r0, 0
- ldr r1, _0809FE54 @ =gStringVar2
- adds r0, r5, 0
- bl StringCopy
- adds r5, r0, 0
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x13
- strb r0, [r5, 0x1]
- movs r0, 0x4E
- strb r0, [r5, 0x2]
- movs r0, 0xFF
- strb r0, [r5, 0x3]
- ldr r0, _0809FE58 @ =gStringVar1
- movs r1, 0xB
- movs r2, 0x4
- bl MenuPrint
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonData
- ldr r1, _0809FE5C @ =0x0000ffff
- ands r1, r0
- movs r0, 0xC1
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0xD
- movs r2, 0x5
- movs r3, 0x2
- bl sub_80A1F98
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _0809FE60 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r5, r1, r2
- ldrb r4, [r5, 0x6]
- adds r0, r4, 0
- movs r1, 0x78
- movs r2, 0x30
- movs r3, 0
- bl sub_80A198C
- ldrb r0, [r5, 0x7]
- cmp r4, r0
- beq _0809FDF8
- ldrb r0, [r5, 0x7]
- movs r1, 0xA0
- movs r2, 0x30
- movs r3, 0x1
- bl sub_80A198C
-_0809FDF8:
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- movs r1, 0x2E
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl GetAbilityBySpecies
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xD
- muls r0, r4
- ldr r1, _0809FE64 @ =gAbilityNames
- adds r0, r1
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0x9
- bl sub_80A1FF8
- ldr r0, _0809FE68 @ =gAbilityDescriptions
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0xB
- movs r2, 0xB
- bl MenuPrint
- adds r0, r6, 0
- movs r1, 0xB
- movs r2, 0xE
- bl PokemonSummaryScreen_PrintTrainerMemo
-_0809FE4C:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FE54: .4byte gStringVar2
-_0809FE58: .4byte gStringVar1
-_0809FE5C: .4byte 0x0000ffff
-_0809FE60: .4byte gBaseStats
-_0809FE64: .4byte gAbilityNames
-_0809FE68: .4byte gAbilityDescriptions
- thumb_func_end sub_809FC34
-
- thumb_func_start sub_809FE6C
-sub_809FE6C: @ 809FE6C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_809FC0C
- adds r0, r4, 0
- bl sub_809FC34
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809FE6C
-
- thumb_func_start sub_809FE80
-sub_809FE80: @ 809FE80
- push {lr}
- movs r0, 0xE
- movs r1, 0x4
- movs r2, 0x12
- movs r3, 0x5
- bl MenuZeroFillWindowRect
- movs r0, 0x19
- movs r1, 0x4
- movs r2, 0x1E
- movs r3, 0x5
- bl MenuZeroFillWindowRect
- movs r0, 0xB
- movs r1, 0x9
- movs r2, 0x1C
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- movs r0, 0xB
- movs r1, 0xE
- movs r2, 0x1C
- movs r3, 0x11
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- thumb_func_end sub_809FE80
-
- thumb_func_start sub_809FEB8
-sub_809FEB8: @ 809FEB8
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0809FF40 @ =gOtherText_ExpPoints
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0xE
- bl sub_80A1FF8
- ldr r0, _0809FF44 @ =gOtherText_NextLv
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0x10
- bl sub_80A1FF8
- ldr r0, _0809FF48 @ =gOtherText_Terminator18
- movs r1, 0x15
- movs r2, 0x10
- bl MenuPrint
- ldr r0, _0809FF4C @ =gOtherText_HP
- movs r4, 0x2A
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0x7
- bl sub_80A1F48
- ldr r0, _0809FF50 @ =gOtherText_Attack
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0x9
- bl sub_80A1F48
- ldr r0, _0809FF54 @ =gOtherText_Defense
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0xB
- movs r3, 0xB
- bl sub_80A1F48
- ldr r0, _0809FF58 @ =gOtherText_SpAtk
- movs r4, 0x24
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0x16
- movs r3, 0x7
- bl sub_80A1F48
- ldr r0, _0809FF5C @ =gOtherText_SpDef
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0x16
- movs r3, 0x9
- bl sub_80A1F48
- ldr r0, _0809FF60 @ =gOtherText_Speed
- str r4, [sp]
- movs r1, 0xD
- movs r2, 0x16
- movs r3, 0xB
- bl sub_80A1F48
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809FF40: .4byte gOtherText_ExpPoints
-_0809FF44: .4byte gOtherText_NextLv
-_0809FF48: .4byte gOtherText_Terminator18
-_0809FF4C: .4byte gOtherText_HP
-_0809FF50: .4byte gOtherText_Attack
-_0809FF54: .4byte gOtherText_Defense
-_0809FF58: .4byte gOtherText_SpAtk
-_0809FF5C: .4byte gOtherText_SpDef
-_0809FF60: .4byte gOtherText_Speed
- thumb_func_end sub_809FEB8
-
- thumb_func_start sub_809FF64
-sub_809FF64: @ 809FF64
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0
-_0809FF6A:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80A1918
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _0809FF6A
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB
- movs r2, 0x4
- bl PrintHeldItemName
- adds r0, r5, 0
- bl PrintNumRibbons
- ldr r4, _080A008C @ =gStringVar1
- adds r0, r5, 0
- movs r1, 0x19
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x1D
- movs r2, 0xE
- bl MenuPrint_RightAligned
- adds r0, r5, 0
- movs r1, 0x17
- movs r2, 0x10
- bl DrawExperienceProgressBar
- adds r0, r5, 0
- movs r1, 0x3B
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x9
- movs r3, 0x32
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x3C
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0xB
- movs r3, 0x32
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x3E
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x1B
- movs r2, 0x7
- movs r3, 0x12
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x3F
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x1B
- movs r2, 0x9
- movs r3, 0x12
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x3D
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl ConvertIntToDecimalString
- adds r0, r4, 0
- movs r1, 0x1B
- movs r2, 0xB
- movs r3, 0x12
- bl sub_8072BD8
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x18
- movs r3, 0x1
- bl sub_8072C14
- adds r4, r0, 0
- movs r0, 0xBA
- strb r0, [r4]
- adds r4, 0x1
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x30
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A008C @ =gStringVar1
- movs r1, 0x7E
- movs r2, 0x38
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A008C: .4byte gStringVar1
- thumb_func_end sub_809FF64
-
- thumb_func_start sub_80A0090
-sub_80A0090: @ 80A0090
- push {r4,lr}
- adds r4, r0, 0
- bl sub_809FEB8
- adds r0, r4, 0
- bl sub_809FF64
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0090
-
- thumb_func_start sub_80A00A4
-sub_80A00A4: @ 80A00A4
- push {lr}
- movs r0, 0xB
- movs r1, 0x4
- movs r2, 0x13
- movs r3, 0x5
- bl MenuZeroFillWindowRect
- movs r0, 0x10
- movs r1, 0x7
- movs r2, 0x15
- movs r3, 0x8
- bl MenuZeroFillWindowRect
- movs r0, 0x11
- movs r1, 0x9
- movs r2, 0x15
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- movs r0, 0x1B
- movs r1, 0x7
- movs r2, 0x1D
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- movs r0, 0x16
- movs r1, 0xE
- movs r2, 0x1C
- movs r3, 0xF
- bl MenuZeroFillWindowRect
- movs r0, 0x17
- movs r1, 0x10
- movs r2, 0x1C
- movs r3, 0x11
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- thumb_func_end sub_80A00A4
-
- thumb_func_start sub_80A00F4
-sub_80A00F4: @ 80A00F4
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, _080A012C @ =gSharedMem + 0x18000
- adds r0, r2, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- bne _080A010A
- cmp r1, 0x4
- beq _080A0150
-_080A010A:
- ldrb r0, [r2, 0xB]
- cmp r0, 0x2
- bne _080A0138
- ldr r0, _080A0130 @ =gOtherText_Power2
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0xF
- bl sub_80A1FF8
- ldr r0, _080A0134 @ =gOtherText_Accuracy2
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x11
- bl sub_80A1FF8
- b _080A0150
- .align 2, 0
-_080A012C: .4byte gSharedMem + 0x18000
-_080A0130: .4byte gOtherText_Power2
-_080A0134: .4byte gOtherText_Accuracy2
-_080A0138:
- ldr r0, _080A0154 @ =gOtherText_Appeal2
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0xF
- bl sub_80A1FF8
- ldr r0, _080A0158 @ =gOtherText_Jam2
- movs r1, 0xD
- movs r2, 0x1
- movs r3, 0x11
- bl sub_80A1FF8
-_080A0150:
- pop {r0}
- bx r0
- .align 2, 0
-_080A0154: .4byte gOtherText_Appeal2
-_080A0158: .4byte gOtherText_Jam2
- thumb_func_end sub_80A00F4
-
- thumb_func_start sub_80A015C
-sub_80A015C: @ 80A015C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- movs r7, 0
-_080A0168:
- mov r0, r8
- adds r1, r7, 0
- bl sub_809F760
- lsls r0, 16
- lsrs r6, r0, 16
- mov r0, r8
- adds r1, r7, 0
- bl sub_809F798
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r6, 0
- bne _080A01B8
- adds r0, r7, 0
- movs r1, 0x1
- bl sub_80A1918
- lsls r4, r7, 25
- movs r0, 0x80
- lsls r0, 19
- adds r4, r0
- lsrs r4, 24
- ldr r0, _080A01B0 @ =gOtherText_OneDash
- movs r1, 0xD
- movs r2, 0xF
- adds r3, r4, 0
- bl sub_80A1FF8
- ldr r0, _080A01B4 @ =gOtherText_TwoDashes
- movs r1, 0x1A
- adds r2, r4, 0
- bl MenuPrint
- b _080A0276
- .align 2, 0
-_080A01B0: .4byte gOtherText_OneDash
-_080A01B4: .4byte gOtherText_TwoDashes
-_080A01B8:
- ldr r0, _080A01E0 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A01E8
- ldr r1, _080A01E4 @ =gBattleMoves
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsls r4, r7, 1
- adds r2, r4, 0x4
- lsls r2, 27
- lsrs r2, 24
- movs r1, 0x57
- adds r3, r7, 0
- bl sub_80A198C
- b _080A020C
- .align 2, 0
-_080A01E0: .4byte gSharedMem + 0x18000
-_080A01E4: .4byte gBattleMoves
-_080A01E8:
- ldr r1, _080A0290 @ =gContestMoves
- lsls r0, r6, 3
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 5
- movs r1, 0x90
- lsls r1, 21
- adds r0, r1
- lsrs r0, 24
- lsls r4, r7, 1
- adds r2, r4, 0x4
- lsls r2, 27
- lsrs r2, 24
- movs r1, 0x57
- adds r3, r7, 0
- bl sub_80A198C
-_080A020C:
- movs r0, 0xD
- muls r0, r6
- ldr r1, _080A0294 @ =gMoveNames
- adds r0, r1
- adds r5, r4, 0x4
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0xD
- movs r2, 0xF
- adds r3, r5, 0
- bl sub_80A1FF8
- movs r0, 0x1
- movs r1, 0x18
- adds r2, r5, 0
- bl GetStringCenterAlignXOffset
- mov r0, r8
- movs r1, 0x15
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- adds r2, r7, 0
- bl CalculatePPWithBonus
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080A0298 @ =gStringVar1
- adds r0, r1, 0
- mov r1, r9
- movs r2, 0xE
- movs r3, 0x1
- bl sub_8072C14
- adds r1, r0, 0
- movs r0, 0xBA
- strb r0, [r1]
- adds r1, 0x1
- adds r0, r1, 0
- adds r1, r4, 0
- movs r2, 0x20
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A0298 @ =gStringVar1
- movs r1, 0x19
- adds r2, r5, 0
- bl MenuPrint
-_080A0276:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bhi _080A0282
- b _080A0168
-_080A0282:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0290: .4byte gContestMoves
-_080A0294: .4byte gMoveNames
-_080A0298: .4byte gStringVar1
- thumb_func_end sub_80A015C
-
- thumb_func_start sub_80A029C
-sub_80A029C: @ 80A029C
- push {r4,r5,lr}
- ldr r1, _080A02B8 @ =gSharedMem + 0x18000
- adds r4, r1, 0
- adds r4, 0x7C
- ldrh r0, [r4]
- cmp r0, 0
- bne _080A02C0
- ldr r0, _080A02BC @ =gOtherText_CancelNoTerminator
- movs r1, 0xD
- movs r2, 0xF
- movs r3, 0xC
- bl sub_80A1FF8
- b _080A037E
- .align 2, 0
-_080A02B8: .4byte gSharedMem + 0x18000
-_080A02BC: .4byte gOtherText_CancelNoTerminator
-_080A02C0:
- ldrh r5, [r4]
- ldrb r0, [r1, 0xB]
- cmp r0, 0x2
- bne _080A02E4
- ldr r1, _080A02E0 @ =gBattleMoves
- lsls r4, r5, 1
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- movs r1, 0x57
- movs r2, 0x60
- movs r3, 0x4
- bl sub_80A198C
- b _080A0304
- .align 2, 0
-_080A02E0: .4byte gBattleMoves
-_080A02E4:
- ldr r1, _080A0320 @ =gContestMoves
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 5
- movs r1, 0x90
- lsls r1, 21
- adds r0, r1
- lsrs r0, 24
- movs r1, 0x57
- movs r2, 0x60
- movs r3, 0x4
- bl sub_80A198C
- lsls r4, r5, 1
-_080A0304:
- ldr r0, _080A0324 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A032C
- movs r0, 0xD
- muls r0, r5
- ldr r1, _080A0328 @ =gMoveNames
- adds r0, r1
- movs r1, 0xA
- movs r2, 0xF
- movs r3, 0xC
- bl sub_80A1FF8
- b _080A033E
- .align 2, 0
-_080A0320: .4byte gContestMoves
-_080A0324: .4byte gSharedMem + 0x18000
-_080A0328: .4byte gMoveNames
-_080A032C:
- movs r0, 0xD
- muls r0, r5
- ldr r1, _080A0384 @ =gMoveNames
- adds r0, r1
- movs r1, 0x9
- movs r2, 0xF
- movs r3, 0xC
- bl sub_80A1FF8
-_080A033E:
- movs r0, 0x1
- movs r1, 0x18
- movs r2, 0xC
- bl GetStringCenterAlignXOffset
- ldr r2, _080A0388 @ =gStringVar1
- ldr r1, _080A038C @ =gBattleMoves
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x4]
- adds r0, r2, 0
- adds r1, r4, 0
- movs r2, 0xE
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- movs r0, 0xBA
- strb r0, [r2]
- adds r2, 0x1
- adds r0, r2, 0
- adds r1, r4, 0
- movs r2, 0x20
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A0388 @ =gStringVar1
- movs r1, 0x19
- movs r2, 0xC
- bl MenuPrint
-_080A037E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0384: .4byte gMoveNames
-_080A0388: .4byte gStringVar1
-_080A038C: .4byte gBattleMoves
- thumb_func_end sub_80A029C
-
- thumb_func_start sub_80A0390
-sub_80A0390: @ 80A0390
- push {r4,lr}
- movs r4, 0
-_080A0394:
- lsls r3, r4, 1
- adds r1, r3, 0x4
- lsls r1, 24
- lsrs r1, 24
- adds r3, 0x5
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0xF
- movs r2, 0x1C
- bl MenuZeroFillWindowRect
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080A0394
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0390
-
- thumb_func_start sub_80A03BC
-sub_80A03BC: @ 80A03BC
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x4
- beq _080A03D0
- bl sub_809F760
- lsls r0, 16
- lsrs r1, r0, 16
- b _080A03E0
-_080A03D0:
- ldr r0, _080A03E8 @ =gSharedMem + 0x18000
- adds r2, r0, 0
- adds r2, 0x7C
- ldrh r0, [r2]
- ldr r1, _080A03EC @ =0x0000ffff
- cmp r0, 0
- beq _080A03E0
- adds r1, r0, 0
-_080A03E0:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080A03E8: .4byte gSharedMem + 0x18000
-_080A03EC: .4byte 0x0000ffff
- thumb_func_end sub_80A03BC
-
- thumb_func_start sub_80A03F0
-sub_80A03F0: @ 80A03F0
- push {lr}
- ldrb r1, [r1]
- bl sub_80A03BC
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080A0414 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A041C
- adds r0, r1, 0
- bl sub_80A04CC
- ldr r0, _080A0418 @ =0x0000ffff
- bl sub_80A057C
- b _080A0422
- .align 2, 0
-_080A0414: .4byte gSharedMem + 0x18000
-_080A0418: .4byte 0x0000ffff
-_080A041C:
- adds r0, r1, 0
- bl sub_80A057C
-_080A0422:
- pop {r0}
- bx r0
- thumb_func_end sub_80A03F0
-
- thumb_func_start sub_80A0428
-sub_80A0428: @ 80A0428
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldrb r1, [r6]
- bl sub_80A03BC
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0xB
- movs r1, 0xF
- movs r2, 0x1C
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- ldr r0, _080A0454 @ =gSharedMem + 0x18000
- ldrb r0, [r0, 0xB]
- cmp r0, 0x2
- bne _080A0458
- adds r0, r4, 0
- bl sub_80A046C
- b _080A045E
- .align 2, 0
-_080A0454: .4byte gSharedMem + 0x18000
-_080A0458:
- adds r0, r4, 0
- bl sub_80A0498
-_080A045E:
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80A03F0
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0428
-
- thumb_func_start sub_80A046C
-sub_80A046C: @ 80A046C
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080A0490 @ =0x0000ffff
- cmp r1, r0
- beq _080A048A
- ldr r0, _080A0494 @ =gMoveDescriptions
- subs r1, 0x1
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- movs r1, 0xB
- movs r2, 0xF
- bl MenuPrint
-_080A048A:
- pop {r0}
- bx r0
- .align 2, 0
-_080A0490: .4byte 0x0000ffff
-_080A0494: .4byte gMoveDescriptions
- thumb_func_end sub_80A046C
-
- thumb_func_start sub_80A0498
-sub_80A0498: @ 80A0498
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, _080A04C0 @ =0x0000ffff
- cmp r3, r0
- beq _080A04BC
- ldr r2, _080A04C4 @ =gUnknown_083CADD4
- ldr r1, _080A04C8 @ =gContestMoves
- lsls r0, r3, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0xB
- movs r2, 0xF
- bl MenuPrint
-_080A04BC:
- pop {r0}
- bx r0
- .align 2, 0
-_080A04C0: .4byte 0x0000ffff
-_080A04C4: .4byte gUnknown_083CADD4
-_080A04C8: .4byte gContestMoves
- thumb_func_end sub_80A0498
-
- thumb_func_start sub_80A04CC
-sub_80A04CC: @ 80A04CC
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _080A0504 @ =0x0000ffff
- cmp r4, r0
- beq _080A0572
- ldr r2, _080A0508 @ =gBattleMoves
- lsls r1, r4, 1
- adds r0, r1, r4
- lsls r0, 2
- adds r2, r0, r2
- ldrb r0, [r2, 0x1]
- adds r5, r1, 0
- cmp r0, 0x1
- bhi _080A0514
- ldr r0, _080A050C @ =gStringVar1
- ldr r1, _080A0510 @ =gOtherText_ThreeDashes2
- movs r2, 0x15
- movs r3, 0x1
- bl sub_8072C74
- ldr r0, _080A050C @ =gStringVar1
- movs r1, 0x7
- movs r2, 0xF
- bl MenuPrint
- b _080A052A
- .align 2, 0
-_080A0504: .4byte 0x0000ffff
-_080A0508: .4byte gBattleMoves
-_080A050C: .4byte gStringVar1
-_080A0510: .4byte gOtherText_ThreeDashes2
-_080A0514:
- ldr r0, _080A0550 @ =gStringVar1
- ldrb r1, [r2, 0x1]
- movs r2, 0x15
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A0550 @ =gStringVar1
- movs r1, 0x7
- movs r2, 0xF
- bl MenuPrint
-_080A052A:
- ldr r0, _080A0554 @ =gBattleMoves
- adds r1, r5, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- bne _080A055C
- ldr r0, _080A0550 @ =gStringVar1
- ldr r1, _080A0558 @ =gOtherText_ThreeDashes2
- movs r2, 0x15
- movs r3, 0x1
- bl sub_8072C74
- ldr r0, _080A0550 @ =gStringVar1
- movs r1, 0x7
- movs r2, 0x11
- bl MenuPrint
- b _080A0572
- .align 2, 0
-_080A0550: .4byte gStringVar1
-_080A0554: .4byte gBattleMoves
-_080A0558: .4byte gOtherText_ThreeDashes2
-_080A055C:
- ldr r0, _080A0578 @ =gStringVar1
- ldrb r1, [r1, 0x3]
- movs r2, 0x15
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _080A0578 @ =gStringVar1
- movs r1, 0x7
- movs r2, 0x11
- bl MenuPrint
-_080A0572:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0578: .4byte gStringVar1
- thumb_func_end sub_80A04CC
-
- thumb_func_start sub_80A057C
-sub_80A057C: @ 80A057C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _080A0648 @ =0x06006800
- mov r8, r0
- ldr r0, _080A064C @ =0x0000ffff
- cmp r5, r0
- beq _080A063A
- ldr r1, _080A0650 @ =gContestEffects
- ldr r2, _080A0654 @ =gContestMoves
- lsls r3, r5, 3
- adds r0, r3, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x1]
- mov r10, r2
- mov r9, r3
- cmp r4, 0xFF
- beq _080A05B8
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r4, r0, 24
-_080A05B8:
- movs r2, 0
- movs r7, 0x3
- movs r6, 0xF3
- lsls r6, 2
-_080A05C0:
- ldr r3, _080A0658 @ =0x00001039
- cmp r4, 0xFF
- beq _080A05CC
- cmp r2, r4
- bcs _080A05CC
- adds r3, 0x1
-_080A05CC:
- lsrs r0, r2, 2
- lsls r0, 5
- adds r1, r2, 0
- ands r1, r7
- adds r1, r0
- lsls r1, 1
- add r1, r8
- adds r1, r6
- strh r3, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _080A05C0
- ldr r0, _080A064C @ =0x0000ffff
- cmp r5, r0
- beq _080A063A
- mov r0, r9
- add r0, r10
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _080A0650 @ =gContestEffects
- adds r0, r1
- ldrb r4, [r0, 0x2]
- cmp r4, 0xFF
- beq _080A060C
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r4, r0, 24
-_080A060C:
- movs r2, 0
- movs r6, 0x3
- ldr r5, _080A065C @ =0x0000044c
-_080A0612:
- ldr r3, _080A0660 @ =0x0000103d
- cmp r4, 0xFF
- beq _080A061E
- cmp r2, r4
- bcs _080A061E
- subs r3, 0x1
-_080A061E:
- lsrs r0, r2, 2
- lsls r0, 5
- adds r1, r2, 0
- ands r1, r6
- adds r1, r0
- lsls r1, 1
- add r1, r8
- adds r1, r5
- strh r3, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _080A0612
-_080A063A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0648: .4byte 0x06006800
-_080A064C: .4byte 0x0000ffff
-_080A0650: .4byte gContestEffects
-_080A0654: .4byte gContestMoves
-_080A0658: .4byte 0x00001039
-_080A065C: .4byte 0x0000044c
-_080A0660: .4byte 0x0000103d
- thumb_func_end sub_80A057C
-
.align 2, 0 @ Don't pad with nop.
diff --git a/data-de/text/contest_strings.inc b/data-de/text/contest_strings.inc
index fd7c00e5c..19cfe330f 100644
--- a/data-de/text/contest_strings.inc
+++ b/data-de/text/contest_strings.inc
@@ -148,7 +148,7 @@ ContestString_DescStopExcitement: @ 83CADA1
.string "terung des Publikums.$"
.align 2
-gUnknown_083CADD4:: @ 83CADD4
+gContestEffectStrings:: @ 83CADD4
.4byte ContestString_DescHighlyAppealing
.4byte ContestString_DescStartled1
.4byte ContestString_DescGreatLock
diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc
index 4c4f37fc4..94366cc41 100644
--- a/data/text/contest_strings.inc
+++ b/data/text/contest_strings.inc
@@ -96,7 +96,7 @@ ContestString_DescStopExcitement:
.string "Temporarily stops the\ncrowd from growing excited.$"
.align 2
-gUnknown_083CADD4:: @ 83CADD4
+gContestEffectStrings:: @ 83CADD4
.4byte ContestString_DescHighlyAppealing
.4byte ContestString_DescStartled1
.4byte ContestString_DescGreatLock
diff --git a/include/learn_move.h b/include/learn_move.h
index 85fbf046e..7a05ea60b 100644
--- a/include/learn_move.h
+++ b/include/learn_move.h
@@ -1,6 +1,21 @@
#ifndef GUARD_LEARN_MOVE_H
#define GUARD_LEARN_MOVE_H
+struct ContestMove
+{
+ u8 effect;
+ u8 contestCategory:3;
+ u8 comboStarterId;
+ u8 comboMoves[4];
+};
+
+struct ContestEffect
+{
+ u8 effectType;
+ u8 appeal;
+ u8 jam;
+};
+
void sub_8132670(void);
#endif // GUARD_LEARN_MOVE_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 304389e78..3998054da 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -216,5 +216,6 @@ void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func);
void sub_806D668(u8 monIndex);
void TaughtMove(u8 taskId);
void StopTryingToTeachMove_806F588(u8 taskId);
+bool8 IsHMMove(u16 move);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 20a2d6d43..a1c30f1f3 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -578,6 +578,7 @@ void MonRestorePP(struct Pokemon *);
u8 *sub_803F378(u16 itemId);
+u16 SpeciesToPokedexNum(u16 species);
u16 NationalPokedexNumToSpecies(u16 nationalNum);
u16 NationalToHoennOrder(u16);
u16 SpeciesToNationalPokedexNum(u16);
@@ -611,6 +612,7 @@ const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *);
bool8 IsPokeSpriteNotFlipped(u16);
u8 GetLevelUpMovesBySpecies(u16, u16 *);
u8 TryIncrementMonLevel(struct Pokemon *);
+bool8 IsShiny(struct Pokemon *mon);
struct Sprite *sub_80F7920(u16, u16, const u16 *);
diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c
index 55aac840f..2ba708a97 100644
--- a/src/pokemon/learn_move.c
+++ b/src/pokemon/learn_move.c
@@ -4,6 +4,7 @@
#include "main.h"
#include "menu.h"
#include "menu_cursor.h"
+#include "learn_move.h"
#include "palette.h"
#include "pokemon.h"
#include "overworld.h"
@@ -22,26 +23,11 @@ extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
extern u8 gTileBuffer[];
-struct ContestMove
-{
- u8 effect;
- u8 contestCategory:3;
- u8 comboStarterId;
- u8 comboMoves[4];
-};
-
-struct ContestEffect
-{
- u8 effectType;
- u8 appeal;
- u8 jam;
-};
-
extern const struct ContestMove gContestMoves[];
extern const struct ContestEffect gContestEffects[];
extern const struct WindowConfig gWindowConfig_81E6CE4;
extern const struct WindowConfig gWindowConfig_81E7240;
-extern const u8 *const gUnknown_083CADD4[];
+extern const u8 *const gContestEffectStrings[];
extern const u8 *const gMoveDescriptions[];
extern const u8 gTypeNames[][7];
extern const u8 *const gUnknown_083CAF70[];
@@ -1039,7 +1025,7 @@ void sub_8133AEC(bool8 contestInfo, int unused)
gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE;
for (i = 0; i < 3; i++)
PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]);
- sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1);
+ sub_8072AB0(gContestEffectStrings[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1);
}
else
{
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c
index 8402bcf16..edbd2998b 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon/pokemon_summary_screen.c
@@ -1,10 +1,14 @@
#include "global.h"
+#include "battle.h"
#include "pokemon_summary_screen.h"
#include "data2.h"
+#include "decompress.h"
#include "ewram.h"
#include "item.h"
#include "items.h"
+#include "learn_move.h"
#include "link.h"
+#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
#include "overworld.h"
@@ -24,7 +28,8 @@
struct SummaryScreenStruct
{
- /*0x00*/ u8 filler0[9];
+ /*0x00*/ u8 filler0[8];
+ /*0x08*/ u8 unk8;
/*0x09*/ u8 unk9;
/*0x0A*/ u8 fillerA;
/*0x0B*/ u8 unkB;
@@ -38,26 +43,66 @@ struct SummaryScreenStruct
/*0x77*/ u8 filler77[0x2];
/*0x79*/ u8 unk79;
/*0x7A*/ u8 unk7A;
- /*0x7B*/ u8 filler7B[0x3];
+ /*0x7B*/ u8 filler7B;
+ /*0x7C*/ u16 unk7C;
/*0x7E*/ u8 unk7E;
/*0x7F*/ u8 unk7F;
};
#define ewramSS (*(struct SummaryScreenStruct *)(gSharedMem + 0x18000))
+extern u8 sub_80A1808(struct Pokemon *);
+extern void sub_80A1F98(s32, u8, u8, u8, u8, u16, s32);
+static void sub_80A0958(struct Pokemon *);
+static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *, u8, u8);
+static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *, u8, u8);
+static void sub_80A1EF8(const u8 *, u8, u8, u16, s32);
+static void sub_80A1F48(const u8 *, u8, u8, u8, u16);
+static void PrintHeldItemName(u16, u8, u8);
+static void PrintNumRibbons(struct Pokemon *);
+static void DrawExperienceProgressBar(struct Pokemon *, u8, u8);
+
+extern void SummaryScreenHandleLeftRightInput(u8, s8);
+extern void sub_809E8F0(u8, s8);
+extern void sub_809E260(u8);
+extern void sub_809F814(u8);
+extern void sub_80A1654(s8, u8);
+extern void sub_80A1488(s8, u8);
+extern void GetStringCenterAlignXOffsetWithLetterSpacing(u8, u8, u8, u8);
+extern bool8 sub_809FA94(struct Pokemon *);
+extern void sub_809FC34(struct Pokemon *);
+extern void sub_809FC0C(void);
+extern void sub_809FF64(struct Pokemon *);
+extern void sub_809FEB8(void);
+extern void sub_80A1918(u8, u8);
+extern void sub_80A198C(u8, u8, u8, u8);
+extern u16 GetMonMove(struct Pokemon *, u8);
+extern void sub_80A04CC(u16);
+extern void sub_80A057C(u16);
+extern void sub_80A0498(u16);
+extern void sub_80A046C(u16);
+extern void sub_80A03F0(struct Pokemon *, u8 *);
+extern u16 sub_80A03BC(struct Pokemon *, u8);
extern void sub_80A20A8(u8);
extern u8 ball_number_to_ball_processing_index(u16);
extern void sub_809F678(struct Pokemon *);
extern void sub_80A1BC0(struct Sprite *sprite);
extern void sub_80A1888(struct Sprite *);
-extern void sub_80A00F4(s16);
-extern void sub_80A0428(struct Pokemon *, s16*);
+extern void sub_80A0428(struct Pokemon *, u8 *);
extern void sub_80A18E4(u8);
extern void GetStringCenterAlignXOffset(u8, u8, u8);
extern u8 *sub_80A1E58(u8 *, u8);
static void sub_80A0A2C(struct Pokemon *, u8, u8);
extern void sub_80A1FF8(const u8 *, u8, u8, u8);
+extern const u16 gUnknown_083C157E[];
+extern const u16 gUnknown_083C157C[];
+extern const u8 gAbilityNames[][13];
+extern const u8 * const gAbilityDescriptions[];
+extern const u8 * const gMoveDescriptions[];
+extern const u8 * const gContestEffectStrings[];
+extern const struct ContestMove gContestMoves[];
+extern const struct ContestEffect gContestEffects[];
extern TaskFunc gUnknown_03005CF0;
extern const u8 gUnknown_083C15BC[];
extern struct Sprite *gUnknown_020384F4;
@@ -75,6 +120,1093 @@ extern const u8 gUnknown_083C15AE[];
extern const u8 gUnknown_083C15B4[];
extern const u8 *const gUnknown_083C1068[];
+
+u8 sub_809F6B4(struct Pokemon *mon, u8 *b)
+{
+ u16 species;
+ u32 personality;
+ u32 otId;
+ const struct CompressedSpritePalette *palette;
+
+ switch (*b)
+ {
+ default:
+ return sub_80A1808(mon);
+ case 0:
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
+
+ HandleLoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].coords,
+ gMonFrontPicCoords[species].y_offset,
+ ewram_addr,
+ gUnknown_081FAF4C[1],
+ species,
+ personality);
+ *b += 1;
+ return 0xFF;
+ case 1:
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
+ otId = GetMonData(mon, MON_DATA_OT_ID);
+
+ palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
+ LoadCompressedObjectPalette(palette);
+ GetMonSpriteTemplate_803C56C(palette->tag, 1);
+ *b += 1;
+ return 0xFF;
+ }
+}
+
+u16 GetMonMove(struct Pokemon *mon, u8 moveId)
+{
+ switch (moveId)
+ {
+ case 0:
+ return GetMonData(mon, MON_DATA_MOVE1);
+ case 1:
+ return GetMonData(mon, MON_DATA_MOVE2);
+ case 2:
+ return GetMonData(mon, MON_DATA_MOVE3);
+ default:
+ return GetMonData(mon, MON_DATA_MOVE4);
+ }
+}
+
+static u16 GetMonMovePP(struct Pokemon *mon, u8 moveId)
+{
+ switch (moveId)
+ {
+ case 0:
+ return GetMonData(mon, MON_DATA_PP1);
+ case 1:
+ return GetMonData(mon, MON_DATA_PP2);
+ case 2:
+ return GetMonData(mon, MON_DATA_PP3);
+ default:
+ return GetMonData(mon, MON_DATA_PP4);
+ }
+}
+
+bool8 sub_809F7D0()
+{
+ struct Pokemon mon;
+ u16 move;
+
+ sub_809F678(&mon);
+ move = GetMonMove(&mon, ewramSS.unk79);
+ if (IsHMMove(move) == TRUE && ewramSS.unk8 != 3)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+#ifdef NONMATCHING // The two "ewramSS.unk79 = taskData[15];" lines have small register differences.
+void sub_809F814(u8 taskId)
+{
+ u16 var1;
+
+ s16 *taskData = gTasks[taskId].data;
+
+ var1 = taskData[14];
+ if (taskData[14] < 4)
+ {
+ taskData[14] = var1 + 1;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ gTasks[taskId].func = sub_809E260;
+ taskData[0] = 4;
+ taskData[13] = 1;
+ ewramSS.unk79 = taskData[15];
+ sub_809E8F0(taskId, -1);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ gTasks[taskId].func = sub_809E260;
+ taskData[0] = 4;
+ taskData[13] = 1;
+ ewramSS.unk79 = taskData[15];
+ sub_809E8F0(taskId, 1);
+ }
+ else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1)
+ {
+ if (ewramSS.unkB != 2)
+ {
+ if (ewramSS.unkB == 3 && (ewramSS.unk79 != 4 || ewramSS.unk7C != 0))
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 18);
+ }
+
+ gTasks[taskId].func = sub_809E260;
+
+ SummaryScreenHandleLeftRightInput(taskId, -1);
+ sub_80A1488(1, taskData[15]);
+ sub_80A1654(1, taskData[15]);
+ }
+ }
+ else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2)
+ {
+ if (ewramSS.unkB != ewramSS.unk76)
+ {
+ if (ewramSS.unkB == 2 && (ewramSS.unk79 != 4 || ewramSS.unk7C != 0))
+ {
+ MenuZeroFillWindowRect(0, 14, 9, 18);
+ }
+
+ gTasks[taskId].func = sub_809E260;
+
+ SummaryScreenHandleLeftRightInput(taskId, 1);
+ sub_80A1488(1, taskData[15]);
+ sub_80A1654(1, taskData[15]);
+ }
+ }
+ else if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ {
+ sub_80A1488(2, taskData[15]);
+ sub_80A1654(2, taskData[15]);
+
+ gTasks[taskId].func = sub_809E260;
+ }
+}
+#else
+__attribute__((naked))
+void sub_809F814(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r6, r0, 3\n\
+ ldr r0, _0809F83C @ =gTasks + 0x8\n\
+ mov r8, r0\n\
+ adds r4, r6, r0\n\
+ ldrh r1, [r4, 0x1C]\n\
+ movs r2, 0x1C\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0x3\n\
+ bgt _0809F840\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r4, 0x1C]\n\
+ b _0809F9C0\n\
+ .align 2, 0\n\
+_0809F83C: .4byte gTasks + 0x8\n\
+_0809F840:\n\
+ ldr r7, _0809F874 @ =gMain\n\
+ ldrh r1, [r7, 0x2E]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0809F880\n\
+ mov r0, r8\n\
+ subs r0, 0x8\n\
+ adds r0, r6, r0\n\
+ ldr r1, _0809F878 @ =sub_809E260\n\
+ str r1, [r0]\n\
+ movs r0, 0x4\n\
+ strh r0, [r4]\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x1A]\n\
+ ldr r2, _0809F87C @ =gSharedMem + 0x18000\n\
+ ldrh r0, [r4, 0x1E]\n\
+ adds r2, 0x79\n\
+ strb r0, [r2]\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ adds r0, r5, 0\n\
+ bl sub_809E8F0\n\
+ b _0809F9C0\n\
+ .align 2, 0\n\
+_0809F874: .4byte gMain\n\
+_0809F878: .4byte sub_809E260\n\
+_0809F87C: .4byte gSharedMem + 0x18000\n\
+_0809F880:\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0809F8B4\n\
+ mov r0, r8\n\
+ subs r0, 0x8\n\
+ adds r0, r6, r0\n\
+ ldr r1, _0809F8AC @ =sub_809E260\n\
+ str r1, [r0]\n\
+ movs r0, 0x4\n\
+ strh r0, [r4]\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x1A]\n\
+ ldr r2, _0809F8B0 @ =gSharedMem + 0x18000\n\
+ ldrh r0, [r4, 0x1E]\n\
+ adds r2, 0x79\n\
+ strb r0, [r2]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x1\n\
+ bl sub_809E8F0\n\
+ b _0809F9C0\n\
+ .align 2, 0\n\
+_0809F8AC: .4byte sub_809E260\n\
+_0809F8B0: .4byte gSharedMem + 0x18000\n\
+_0809F8B4:\n\
+ movs r0, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0809F8C8\n\
+ bl sub_80F9284\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0809F918\n\
+_0809F8C8:\n\
+ ldr r1, _0809F90C @ =gSharedMem + 0x18000\n\
+ ldrb r0, [r1, 0xB]\n\
+ cmp r0, 0x2\n\
+ beq _0809F9C0\n\
+ cmp r0, 0x3\n\
+ bne _0809F8F4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x79\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bne _0809F8E8\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x7C\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0809F8F4\n\
+_0809F8E8:\n\
+ movs r0, 0\n\
+ movs r1, 0xE\n\
+ movs r2, 0x9\n\
+ movs r3, 0x12\n\
+ bl MenuZeroFillWindowRect\n\
+_0809F8F4:\n\
+ ldr r1, _0809F910 @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldr r1, _0809F914 @ =sub_809E260\n\
+ str r1, [r0]\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ adds r0, r5, 0\n\
+ b _0809F972\n\
+ .align 2, 0\n\
+_0809F90C: .4byte gSharedMem + 0x18000\n\
+_0809F910: .4byte gTasks\n\
+_0809F914: .4byte sub_809E260\n\
+_0809F918:\n\
+ ldrh r1, [r7, 0x2E]\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0809F92E\n\
+ bl sub_80F9284\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0809F994\n\
+_0809F92E:\n\
+ ldr r1, _0809F988 @ =gSharedMem + 0x18000\n\
+ adds r2, r1, 0\n\
+ adds r2, 0x76\n\
+ ldrb r0, [r1, 0xB]\n\
+ ldrb r2, [r2]\n\
+ cmp r0, r2\n\
+ beq _0809F9C0\n\
+ cmp r0, 0x2\n\
+ bne _0809F960\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x79\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x4\n\
+ bne _0809F954\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x7C\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0809F960\n\
+_0809F954:\n\
+ movs r0, 0\n\
+ movs r1, 0xE\n\
+ movs r2, 0x9\n\
+ movs r3, 0x12\n\
+ bl MenuZeroFillWindowRect\n\
+_0809F960:\n\
+ ldr r1, _0809F98C @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldr r1, _0809F990 @ =sub_809E260\n\
+ str r1, [r0]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x1\n\
+_0809F972:\n\
+ bl SummaryScreenHandleLeftRightInput\n\
+ ldrb r1, [r4, 0x1E]\n\
+ movs r0, 0x1\n\
+ bl sub_80A1488\n\
+ ldrb r1, [r4, 0x1E]\n\
+ movs r0, 0x1\n\
+ bl sub_80A1654\n\
+ b _0809F9C0\n\
+ .align 2, 0\n\
+_0809F988: .4byte gSharedMem + 0x18000\n\
+_0809F98C: .4byte gTasks\n\
+_0809F990: .4byte sub_809E260\n\
+_0809F994:\n\
+ ldrh r1, [r7, 0x2E]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0809F9A6\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0809F9C0\n\
+_0809F9A6:\n\
+ ldrb r1, [r4, 0x1E]\n\
+ movs r0, 0x2\n\
+ bl sub_80A1488\n\
+ ldrb r1, [r4, 0x1E]\n\
+ movs r0, 0x2\n\
+ bl sub_80A1654\n\
+ mov r0, r8\n\
+ subs r0, 0x8\n\
+ adds r0, r6, r0\n\
+ ldr r1, _0809F9CC @ =sub_809E260\n\
+ str r1, [r0]\n\
+_0809F9C0:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0809F9CC: .4byte sub_809E260\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_809F9D0(u8 taskId, u8 b)
+{
+ s16 *taskData = gTasks[taskId].data;
+ taskData[14] = 0;
+ taskData[15] = b;
+
+ sub_80A1488(-2, 4);
+ sub_80A1654(-2, 4);
+ MenuZeroFillWindowRect(11, 15, 28, 18);
+ MenuPrint(gOtherText_CantForgetHMs, 11, 15);
+
+ gTasks[taskId].func = sub_809F814;
+}
+
+u8 sub_809FA30(void)
+{
+ return ewramSS.unk7A;
+}
+
+// void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d)
+// {
+// u16 *vramAddr = (u16 *)(VRAM + 0xF000);
+
+// vramAddr[(d * 32) + c] = (b * 0x1000) + (a * 2) + 0x200 + 0x80;
+// vramAddr[(d * 32) + c + 32] = (b * 0x1000) + (a * 2) + 0x200 + 0x81;
+// }
+__attribute__((naked))
+void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ lsls r0, 24\n\
+ lsls r1, 24\n\
+ lsls r2, 24\n\
+ lsls r3, 24\n\
+ lsrs r2, 23\n\
+ lsrs r3, 18\n\
+ ldr r4, _0809FA70 @ =0x0600f000\n\
+ adds r3, r4\n\
+ adds r2, r3\n\
+ lsrs r1, 12\n\
+ lsrs r0, 23\n\
+ movs r4, 0x80\n\
+ lsls r4, 2\n\
+ adds r3, r4, 0\n\
+ adds r0, r3\n\
+ adds r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x80\n\
+ strh r0, [r2]\n\
+ adds r2, 0x40\n\
+ adds r1, 0x81\n\
+ strh r1, [r2]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0809FA70: .4byte 0x0600f000\n\
+ .syntax divided\n");
+}
+
+void GetStringCenterAlignXOffset(u8 a, u8 b, u8 c)
+{
+ GetStringCenterAlignXOffsetWithLetterSpacing(a, 15, b, c);
+}
+
+bool8 sub_809FA94(struct Pokemon *mon)
+{
+ if (!IsShiny(mon))
+ {
+ LoadPalette(gUnknown_083C157C, 4, 2);
+ return FALSE;
+ }
+ else
+ {
+ LoadPalette(gUnknown_083C157E, 4, 2);
+ return TRUE;
+ }
+}
+
+void sub_809FAC8(struct Pokemon *mon)
+{
+ bool8 shinyDexNum;
+ u16 dexNum;
+ u8 *buffer;
+
+ if (GetMonData(mon, MON_DATA_IS_EGG))
+ {
+ MenuZeroFillWindowRect(1, 2, 4, 3);
+ MenuZeroFillWindowRect(3, 16, 9, 17);
+ MenuZeroFillWindowRect(0, 12, 11, 15);
+ GetMonNickname(mon, gStringVar1);
+ sub_80A1FF8(gStringVar1, 13, 3, 16);
+ LoadPalette(gUnknown_083C157C, 4, 2);
+ }
+ else
+ {
+ shinyDexNum = sub_809FA94(mon);
+ dexNum = SpeciesToPokedexNum(GetMonData(mon, MON_DATA_SPECIES));
+ if (dexNum != 0xFFFF)
+ {
+ if (!shinyDexNum)
+ {
+ GetStringCenterAlignXOffset(2, 1, 2);
+ sub_80A1F98(dexNum, 13, 3, 2, 17, 16, 1);
+ }
+ else
+ {
+ GetStringCenterAlignXOffsetWithLetterSpacing(2, 8, 1, 2);
+ sub_80A1F98(dexNum, 8, 3, 2, 17, 16, 1);
+ }
+ }
+ else
+ {
+ MenuZeroFillWindowRect(1, 2, 4, 3);
+ }
+
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = GetMonNickname(mon, buffer);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x3C;
+ buffer[3] = EOS;
+ MenuPrint(gStringVar1, 1, 12);
+
+ sub_80A0958(mon);
+ }
+}
+
+void sub_809FBE4()
+{
+ u8 i;
+
+ for (i = 0; i < 28; i++)
+ {
+ sub_80A1918(i, 1);
+ }
+
+ MenuZeroFillWindowRect(11, 4, 29, 18);
+}
+
+void sub_809FC0C(void)
+{
+ MenuPrint(gOtherText_Type2, 11, 6);
+ GetStringCenterAlignXOffset(0, 22, 4);
+ GetStringCenterAlignXOffset(2, 23, 4);
+}
+
+void sub_809FC34(struct Pokemon *mon)
+{
+ u8 i;
+ u8 *buffer;
+ u16 friendship;
+ u8 language;
+ u16 species;
+ u8 ability;
+
+ for (i = 0; i < 5; i++)
+ {
+ sub_80A1918(i, 1);
+ }
+
+ MenuZeroFillWindowRect(11, 9, 28, 12);
+ if (GetMonData(mon, MON_DATA_IS_EGG))
+ {
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = StringCopy(buffer, gOtherText_OriginalTrainer);
+ buffer = StringCopy(buffer, gOtherText_FiveQuestionsAndSlash);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x4E;
+ buffer[3] = EOS;
+ MenuPrint(gStringVar1, 11, 4);
+
+ sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1);
+ sub_80A198C(9, 120, 48, 0);
+
+ friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
+ if (friendship < 6)
+ {
+ MenuPrint(gOtherText_EggAbout, 11, 9);
+ }
+ else if (friendship < 11)
+ {
+ MenuPrint(gOtherText_EggSoon, 11, 9);
+ }
+ else if (friendship < 41)
+ {
+ MenuPrint(gOtherText_EggSomeTime, 11, 9);
+ }
+ else
+ {
+ MenuPrint(gOtherText_EggLongTime, 11, 9);
+ }
+
+ PokemonSummaryScreen_PrintEggTrainerMemo(mon, 11, 14);
+ }
+ else
+ {
+ GetMonData(mon, MON_DATA_OT_NAME, gStringVar2);
+ language = GetMonData(mon, MON_DATA_LANGUAGE);
+ ConvertInternationalString(gStringVar2, language);
+
+ buffer = gStringVar1;
+ buffer = sub_80A1E58(buffer, 13);
+ buffer = StringCopy(buffer, gOtherText_OriginalTrainer);
+
+ if (GetMonData(mon, MON_DATA_OT_GENDER) == MALE)
+ {
+ buffer = sub_80A1E58(buffer, 9);
+ }
+ else
+ {
+ buffer = sub_80A1E58(buffer, 10);
+ }
+
+ buffer = StringCopy(buffer, gStringVar2);
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x13;
+ buffer[2] = 0x4E;
+ buffer[3] = EOS;
+ MenuPrint(gStringVar1, 11, 4);
+
+ sub_80A1F98(GetMonData(mon, MON_DATA_OT_ID) & 0xFFFF, 13, 5, 2, 193, 32, 1);
+
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ sub_80A198C(gBaseStats[species].type1, 120, 48, 0);
+ if (gBaseStats[species].type1 != gBaseStats[species].type2)
+ {
+ sub_80A198C(gBaseStats[species].type2, 160, 48, 1);
+ }
+
+ ability = GetAbilityBySpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_ALT_ABILITY));
+ sub_80A1FF8(gAbilityNames[ability], 13, 11, 9);
+ MenuPrint(gAbilityDescriptions[ability], 11, 11);
+
+ PokemonSummaryScreen_PrintTrainerMemo(mon, 11, 14);
+ }
+}
+
+void sub_809FE6C(struct Pokemon *mon)
+{
+ sub_809FC0C();
+ sub_809FC34(mon);
+}
+
+void sub_809FE80(void)
+{
+ MenuZeroFillWindowRect(14, 4, 18, 5);
+ MenuZeroFillWindowRect(25, 4, 30, 5);
+ MenuZeroFillWindowRect(11, 9, 28, 12);
+ MenuZeroFillWindowRect(11, 14, 28, 17);
+}
+
+void sub_809FEB8(void)
+{
+ sub_80A1FF8(gOtherText_ExpPoints, 13, 11, 14);
+ sub_80A1FF8(gOtherText_NextLv, 13, 11, 16);
+ MenuPrint(gOtherText_Terminator18, 21, 16);
+
+ sub_80A1F48(gOtherText_HP, 13, 11, 7, 42);
+ sub_80A1F48(gOtherText_Attack, 13, 11, 9, 42);
+ sub_80A1F48(gOtherText_Defense, 13, 11, 11, 42);
+ sub_80A1F48(gOtherText_SpAtk, 13, 22, 7, 36);
+ sub_80A1F48(gOtherText_SpDef, 13, 22, 9, 36);
+ sub_80A1F48(gOtherText_Speed, 13, 22, 11, 36);
+}
+
+void sub_809FF64(struct Pokemon *mon)
+{
+ u8 i;
+ u16 heldItem;
+ u8 *buffer;
+
+ for (i = 0; i < 5; i++)
+ {
+ sub_80A1918(i, 1);
+ }
+
+ heldItem = GetMonData(mon, MON_DATA_HELD_ITEM);
+ PrintHeldItemName(heldItem, 11, 4);
+ PrintNumRibbons(mon);
+
+ buffer = gStringVar1;
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_EXP));
+ MenuPrint_RightAligned(buffer, 29, 14);
+ DrawExperienceProgressBar(mon, 23, 16);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_ATK));
+ sub_8072BD8(buffer, 16, 9, 50);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_DEF));
+ sub_8072BD8(buffer, 16, 11, 50);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPATK));
+ sub_8072BD8(buffer, 27, 7, 18);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPDEF));
+ sub_8072BD8(buffer, 27, 9, 18);
+
+ ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPEED));
+ sub_8072BD8(buffer, 27, 11, 18);
+
+ buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_HP), 24, 1);
+ *buffer++ = CHAR_SLASH;
+ buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1);
+
+ MenuPrint_PixelCoords(gStringVar1, 126, 56, 1);
+}
+
+void sub_80A0090(struct Pokemon *mon)
+{
+ sub_809FEB8();
+ sub_809FF64(mon);
+}
+
+void sub_80A00A4(void)
+{
+ MenuZeroFillWindowRect(11, 4, 19, 5);
+ MenuZeroFillWindowRect(16, 7, 21, 8);
+ MenuZeroFillWindowRect(17, 9, 21, 12);
+ MenuZeroFillWindowRect(27, 7, 29, 12);
+ MenuZeroFillWindowRect(22, 14, 28, 15);
+ MenuZeroFillWindowRect(23, 16, 28, 17);
+}
+
+void sub_80A00F4(u8 a)
+{
+ if (ewramSS.unk7C != 0 || a != 4)
+ {
+ if (ewramSS.unkB == 2)
+ {
+ sub_80A1FF8(gOtherText_Power2, 13, 1, 15);
+ sub_80A1FF8(gOtherText_Accuracy2, 13, 1, 17);
+ }
+ else
+ {
+ sub_80A1FF8(gOtherText_Appeal2, 13, 1, 15);
+ sub_80A1FF8(gOtherText_Jam2, 13, 1, 17);
+ }
+ }
+}
+
+void sub_80A015C(struct Pokemon *mon)
+{
+ u8 i;
+ u16 move;
+ u16 curPP;
+ u8 ppBonuses;
+ u8 maxPP;
+ u8 *buffer;
+
+ for (i = 0; i < 4; i++)
+ {
+ move = GetMonMove(mon, i);
+ curPP = GetMonMovePP(mon, i);
+
+ if (move == 0)
+ {
+ sub_80A1918(i, 1);
+ sub_80A1FF8(gOtherText_OneDash, 13, 15, (2 * i) + 4);
+ MenuPrint(gOtherText_TwoDashes, 26, (2 * i) + 4);
+ }
+ else
+ {
+ if (ewramSS.unkB == 2)
+ {
+ sub_80A198C(gBattleMoves[move].type, 87, ((2 * i) + 4) * 8, i);
+ }
+ else
+ {
+ sub_80A198C(gContestMoves[move].contestCategory + 18, 87, ((2 * i) + 4) * 8, i);
+ }
+
+ sub_80A1FF8(gMoveNames[move], 13, 15, (2 * i) + 4);
+ GetStringCenterAlignXOffset(1, 24, (2 * i) + 4);
+
+ ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
+ maxPP = CalculatePPWithBonus(move, ppBonuses, i);
+
+ buffer = gStringVar1;
+ buffer = sub_8072C14(buffer, curPP, 14, 1);
+ *buffer++ = CHAR_SLASH;
+ sub_8072C14(buffer, maxPP, 32, 1);
+ MenuPrint(gStringVar1, 25, (2 * i) + 4);
+ }
+ }
+}
+
+void sub_80A029C(void)
+{
+ u8 *buffer;
+ u16 move;
+ u8 pp;
+
+ if (ewramSS.unk7C == 0)
+ {
+ sub_80A1FF8(gOtherText_CancelNoTerminator, 13, 15, 12);
+ return;
+ }
+
+ move = ewramSS.unk7C;
+
+ if (ewramSS.unkB == 2)
+ sub_80A198C(gBattleMoves[move].type, 87, 96, 4);
+ else
+ sub_80A198C(gContestMoves[move].contestCategory + 18, 87, 96, 4);
+
+ if (ewramSS.unkB == 2)
+ sub_80A1FF8(gMoveNames[move], 10, 15, 12);
+ else
+ sub_80A1FF8(gMoveNames[move], 9, 15, 12);
+
+ GetStringCenterAlignXOffset(1, 24, 12);
+
+ buffer = gStringVar1;
+ pp = gBattleMoves[move].pp;
+ buffer = sub_8072C14(buffer, pp, 14, 1);
+ *buffer++ = CHAR_SLASH;
+ buffer = sub_8072C14(buffer, pp, 32, 1);
+ MenuPrint(gStringVar1, 25, 12);
+}
+
+void sub_80A0390(void)
+{
+ u8 i;
+
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ MenuZeroFillWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5);
+ }
+}
+
+u16 sub_80A03BC(struct Pokemon *mon, u8 selectedMoveIndex)
+{
+ u16 move;
+
+ if (selectedMoveIndex != MAX_MON_MOVES)
+ {
+ move = GetMonMove(mon, selectedMoveIndex);
+ }
+ else
+ {
+ if (ewramSS.unk7C != 0)
+ {
+ move = ewramSS.unk7C;
+ }
+ else
+ {
+ move = 0xFFFF;
+ }
+ }
+
+ return move;
+}
+
+void sub_80A03F0(struct Pokemon *mon, u8 *selectedMoveIndex)
+{
+ u16 move = sub_80A03BC(mon, *selectedMoveIndex);
+
+ if (ewramSS.unkB == 2)
+ {
+ sub_80A04CC(move);
+ sub_80A057C(0xFFFF);
+ }
+ else
+ {
+ sub_80A057C(move);
+ }
+}
+
+void sub_80A0428(struct Pokemon *mon, u8 *selectedMoveIndex)
+{
+ u16 move = sub_80A03BC(mon, *selectedMoveIndex);
+ MenuZeroFillWindowRect(11, 15, 28, 18);
+
+ if (ewramSS.unkB == 2)
+ {
+ sub_80A046C(move);
+ }
+ else
+ {
+ sub_80A0498(move);
+ }
+
+ sub_80A03F0(mon, selectedMoveIndex);
+}
+
+void sub_80A046C(u16 move)
+{
+ if (move == 0xFFFF) return;
+
+ MenuPrint(gMoveDescriptions[move - 1], 11, 15);
+}
+
+void sub_80A0498(u16 move)
+{
+ if (move == 0xFFFF) return;
+
+ MenuPrint(gContestEffectStrings[gContestMoves[move].effect], 11, 15);
+}
+
+void sub_80A04CC(u16 move)
+{
+ u8 *buffer;
+
+ if (move == 0xFFFF) return;
+
+ if (gBattleMoves[move].power <= 1)
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
+ MenuPrint(gStringVar1, 7, 15);
+ }
+ else
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1);
+ MenuPrint(gStringVar1, 7, 15);
+ }
+
+ if (gBattleMoves[move].accuracy == 0)
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
+ MenuPrint(gStringVar1, 7, 17);
+ }
+ else
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1);
+ MenuPrint(gStringVar1, 7, 17);
+ }
+}
+
+#ifdef NONMATCHING // The two vramAddr lines are non-matching.
+void sub_80A057C(u16 move)
+{
+ u8 appeal;
+ u8 jam;
+ u8 i;
+ u16 *vramAddr = (u16 *)(VRAM + 0x6800);
+
+ if (move == 0xFFFF) return;
+
+ appeal = gContestEffects[gContestMoves[move].effect].appeal;
+ if (appeal != 0xFF)
+ {
+ appeal = appeal / 10;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ u16 tile = 0x1039;
+ int and = 3;
+ int offset = 0x3CC / 2;
+ if (appeal != 0xFF && i < appeal)
+ {
+ tile = 0x103A;
+ }
+
+ *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile;
+ }
+
+ if (move == 0xFFFF) return;
+
+ jam = gContestEffects[gContestMoves[move].effect].jam;
+ if (jam != 0xFF)
+ {
+ jam = jam / 10;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ u16 tile = 0x103D;
+ int and = 3;
+ int offset = 0x226;
+ if (jam != 0xFF && i < jam)
+ {
+ tile = 0x103C;
+ }
+
+ *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile;
+ }
+}
+#else
+__attribute__((naked))
+void sub_80A057C(u16 move)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldr r0, _080A0648 @ =0x06006800\n\
+ mov r8, r0\n\
+ ldr r0, _080A064C @ =0x0000ffff\n\
+ cmp r5, r0\n\
+ beq _080A063A\n\
+ ldr r1, _080A0650 @ =gContestEffects\n\
+ ldr r2, _080A0654 @ =gContestMoves\n\
+ lsls r3, r5, 3\n\
+ adds r0, r3, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r4, [r0, 0x1]\n\
+ mov r10, r2\n\
+ mov r9, r3\n\
+ cmp r4, 0xFF\n\
+ beq _080A05B8\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ bl __udivsi3\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+_080A05B8:\n\
+ movs r2, 0\n\
+ movs r7, 0x3\n\
+ movs r6, 0xF3\n\
+ lsls r6, 2\n\
+_080A05C0:\n\
+ ldr r3, _080A0658 @ =0x00001039\n\
+ cmp r4, 0xFF\n\
+ beq _080A05CC\n\
+ cmp r2, r4\n\
+ bcs _080A05CC\n\
+ adds r3, 0x1\n\
+_080A05CC:\n\
+ lsrs r0, r2, 2\n\
+ lsls r0, 5\n\
+ adds r1, r2, 0\n\
+ ands r1, r7\n\
+ adds r1, r0\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ adds r1, r6\n\
+ strh r3, [r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r2, 0x7\n\
+ bls _080A05C0\n\
+ ldr r0, _080A064C @ =0x0000ffff\n\
+ cmp r5, r0\n\
+ beq _080A063A\n\
+ mov r0, r9\n\
+ add r0, r10\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ ldr r1, _080A0650 @ =gContestEffects\n\
+ adds r0, r1\n\
+ ldrb r4, [r0, 0x2]\n\
+ cmp r4, 0xFF\n\
+ beq _080A060C\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xA\n\
+ bl __udivsi3\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+_080A060C:\n\
+ movs r2, 0\n\
+ movs r6, 0x3\n\
+ ldr r5, _080A065C @ =0x0000044c\n\
+_080A0612:\n\
+ ldr r3, _080A0660 @ =0x0000103d\n\
+ cmp r4, 0xFF\n\
+ beq _080A061E\n\
+ cmp r2, r4\n\
+ bcs _080A061E\n\
+ subs r3, 0x1\n\
+_080A061E:\n\
+ lsrs r0, r2, 2\n\
+ lsls r0, 5\n\
+ adds r1, r2, 0\n\
+ ands r1, r6\n\
+ adds r1, r0\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ adds r1, r5\n\
+ strh r3, [r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r2, 0x7\n\
+ bls _080A0612\n\
+_080A063A:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080A0648: .4byte 0x06006800\n\
+_080A064C: .4byte 0x0000ffff\n\
+_080A0650: .4byte gContestEffects\n\
+_080A0654: .4byte gContestMoves\n\
+_080A0658: .4byte 0x00001039\n\
+_080A065C: .4byte 0x0000044c\n\
+_080A0660: .4byte 0x0000103d\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon)
{
u32 trainerId;
@@ -1355,7 +2487,7 @@ _080A1484: .4byte gOtherText_Status\n\
// Related to re-drawing the summary area underneath the pokemon's picture
// in all of the summary screen tabs.
-void sub_80A1488(u8 a, u8 b)
+void sub_80A1488(s8 a, u8 b)
{
u8 taskId;
@@ -1557,7 +2689,7 @@ _080A1650: .4byte gOtherText_Status\n\
.syntax divided\n");
}
-void sub_80A1654(u8 a, u8 b)
+void sub_80A1654(s8 a, u8 b)
{
u8 taskId;