summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-06-23 22:06:21 -0400
committerluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-06-23 22:06:21 -0400
commita04106a011429db1a474fedd1fd30d892309e4dd (patch)
treee0d2291199adb85bd092a75d84c581fc94fed4bb
parentd096f37d75138eba940f55bd7e1ec8bacc092935 (diff)
pokemon_summary_screen.c, part 4.
-rw-r--r--asm/pokemon_summary_screen.s874
-rw-r--r--include/constants/global.h1
-rw-r--r--include/pokemon_summary_screen.h9
-rw-r--r--include/strings.h2
-rw-r--r--include/trade.h1
-rw-r--r--src/pokemon_summary_screen.c180
6 files changed, 192 insertions, 875 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index d47c7e91c..c5e8ad801 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5,880 +5,6 @@
.text
- thumb_func_start sub_8136350
-sub_8136350: @ 8136350
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- ldr r6, _081364F8 @ =gMonSummaryScreen
- ldr r0, [r6]
- ldr r7, _081364FC @ =0x00003290
- adds r0, r7
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [r6]
- ldr r4, _08136500 @ =0x00003090
- adds r0, r4
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _08136504 @ =gText_Slash
- bl StringAppend
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, sp
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- mov r1, sp
- bl StringAppend
- ldr r0, [r6]
- adds r0, r4
- bl StringLength
- ldr r1, _08136508 @ =gUnknown_203B144
- mov r8, r1
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- movs r0, 0x3F
- subs r0, r1
- strh r0, [r2, 0x2]
- ldr r2, [r6]
- ldr r1, _0813650C @ =0x000032f8
- adds r0, r2, r1
- ldr r1, [r0]
- ldr r0, _08136510 @ =CB2_ReturnToTradeMenuFromSummary
- cmp r1, r0
- beq _081363DA
- b _08136518
-_081363DA:
- ldr r1, _08136514 @ =0x00003024
- adds r0, r2, r1
- ldr r0, [r0]
- cmp r0, 0x1
- beq _081363E6
- b _08136518
-_081363E6:
- adds r0, r2, r7
- movs r1, 0x54
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r6]
- adds r4, 0xC
- adds r0, r4
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- movs r5, 0x1B
- subs r1, r5, r1
- strh r1, [r2, 0x4]
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x55
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r6]
- adds r4, 0x5
- adds r0, r4
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r1, r5, r1
- strh r1, [r2, 0x6]
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x57
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r6]
- adds r4, 0x5
- adds r0, r4
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r1, r5, r1
- strh r1, [r2, 0x8]
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x58
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r6]
- adds r4, 0x5
- adds r0, r4
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r1, r5, r1
- strh r1, [r2, 0xA]
- ldr r0, [r6]
- adds r0, r7
- movs r1, 0x56
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r6]
- adds r4, 0x5
- adds r0, r4
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r5, r1
- strh r5, [r2, 0xC]
- b _08136630
- .align 2, 0
-_081364F8: .4byte gMonSummaryScreen
-_081364FC: .4byte 0x00003290
-_08136500: .4byte 0x00003090
-_08136504: .4byte gText_Slash
-_08136508: .4byte gUnknown_203B144
-_0813650C: .4byte 0x000032f8
-_08136510: .4byte CB2_ReturnToTradeMenuFromSummary
-_08136514: .4byte 0x00003024
-_08136518:
- ldr r4, _0813677C @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r2, _08136780 @ =0x00003290
- mov r9, r2
- add r0, r9
- movs r1, 0x3B
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r4]
- ldr r5, _08136784 @ =0x0000309c
- adds r0, r5
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r4]
- adds r0, r5
- bl StringLength
- ldr r1, _08136788 @ =gUnknown_203B144
- mov r8, r1
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- movs r6, 0x1B
- subs r1, r6, r1
- strh r1, [r2, 0x4]
- ldr r0, [r4]
- add r0, r9
- movs r1, 0x3C
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r4]
- adds r5, 0x5
- adds r0, r5
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r4]
- adds r0, r5
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r1, r6, r1
- strh r1, [r2, 0x6]
- ldr r0, [r4]
- add r0, r9
- movs r1, 0x3E
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r4]
- adds r5, 0x5
- adds r0, r5
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r4]
- adds r0, r5
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r1, r6, r1
- strh r1, [r2, 0x8]
- ldr r0, [r4]
- add r0, r9
- movs r1, 0x3F
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r4]
- adds r5, 0x5
- adds r0, r5
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r4]
- adds r0, r5
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r1, r6, r1
- strh r1, [r2, 0xA]
- ldr r0, [r4]
- add r0, r9
- movs r1, 0x3D
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, [r4]
- adds r5, 0x5
- adds r0, r5
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r4]
- adds r0, r5
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r6, r1
- strh r6, [r2, 0xC]
-_08136630:
- ldr r6, _0813677C @ =gMonSummaryScreen
- ldr r0, [r6]
- ldr r2, _08136780 @ =0x00003290
- mov r8, r2
- add r0, r8
- movs r1, 0x19
- bl GetMonData
- adds r7, r0, 0
- ldr r0, [r6]
- ldr r4, _0813678C @ =0x000031a4
- adds r0, r4
- adds r1, r7, 0
- movs r2, 0
- movs r3, 0x7
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- bl StringLength
- ldr r1, _08136788 @ =gUnknown_203B144
- mov r10, r1
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- movs r0, 0x3F
- mov r9, r0
- mov r0, r9
- subs r1, r0, r1
- strh r1, [r2, 0xE]
- ldr r0, [r6]
- add r0, r8
- movs r1, 0x38
- bl GetMonData
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0
- cmp r5, 0x63
- bhi _081366B8
- ldr r0, [r6]
- ldr r1, _08136780 @ =0x00003290
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _08136790 @ =gExperienceTables
- adds r2, r5, 0x1
- lsls r2, 2
- ldr r3, _08136794 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r1, [r1, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r1
- adds r2, r0
- adds r2, r4
- ldr r0, [r2]
- subs r1, r0, r7
-_081366B8:
- ldr r0, [r6]
- ldr r4, _08136798 @ =0x000031b0
- adds r0, r4
- movs r2, 0
- movs r3, 0x7
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, r4
- bl StringLength
- mov r1, r10
- ldr r2, [r1]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- mov r0, r9
- subs r1, r0, r1
- strh r1, [r2, 0x10]
- ldr r0, [r6]
- add r0, r8
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, [r6]
- add r0, r8
- 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
- ldr r0, [r6]
- ldr r1, _0813679C @ =0x000031bc
- adds r0, r1
- movs r1, 0xD
- muls r1, r4
- ldr r2, _081367A0 @ =gAbilityNames
- adds r1, r2
- bl StringCopy
- ldr r0, [r6]
- ldr r2, _081367A4 @ =0x000031cc
- adds r0, r2
- ldr r1, _081367A8 @ =gAbilityDescriptionPointers
- lsls r4, 2
- adds r4, r1
- ldr r1, [r4]
- bl StringCopy
- ldr r0, [r6]
- add r0, r8
- movs r1, 0x37
- bl GetMonData
- bl sub_8138C5C
- ldr r1, [r6]
- ldr r4, _081367AC @ =0x0000326c
- adds r1, r4
- strb r0, [r1]
- ldr r1, [r6]
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0813676A
- mov r2, r8
- adds r0, r1, r2
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- beq _0813676A
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0x6
- strb r1, [r0]
-_0813676A:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813677C: .4byte gMonSummaryScreen
-_08136780: .4byte 0x00003290
-_08136784: .4byte 0x0000309c
-_08136788: .4byte gUnknown_203B144
-_0813678C: .4byte 0x000031a4
-_08136790: .4byte gExperienceTables
-_08136794: .4byte gBaseStats
-_08136798: .4byte 0x000031b0
-_0813679C: .4byte 0x000031bc
-_081367A0: .4byte gAbilityNames
-_081367A4: .4byte 0x000031cc
-_081367A8: .4byte gAbilityDescriptionPointers
-_081367AC: .4byte 0x0000326c
- thumb_func_end sub_8136350
-
- thumb_func_start sub_81367B0
-sub_81367B0: @ 81367B0
- push {r4,lr}
- movs r4, 0
-_081367B4:
- adds r0, r4, 0
- bl sub_81367E8
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081367B4
- ldr r0, _081367E0 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _081367E4 @ =0x00003208
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _081367D8
- movs r0, 0x4
- bl sub_81367E8
-_081367D8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081367E0: .4byte gMonSummaryScreen
-_081367E4: .4byte 0x00003208
- thumb_func_end sub_81367B0
-
- thumb_func_start sub_81367E8
-sub_81367E8: @ 81367E8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3
- bhi _08136812
- ldr r4, _08136884 @ =gMonSummaryScreen
- ldr r0, [r4]
- ldr r1, _08136888 @ =0x00003290
- adds r0, r1
- adds r1, r7, 0
- bl sub_8138BEC
- ldr r1, [r4]
- lsls r2, r7, 1
- ldr r3, _0813688C @ =0x00003258
- adds r1, r3
- adds r1, r2
- strh r0, [r1]
-_08136812:
- ldr r6, _08136884 @ =gMonSummaryScreen
- ldr r2, [r6]
- lsls r0, r7, 1
- ldr r4, _0813688C @ =0x00003258
- mov r8, r4
- adds r1, r2, r4
- adds r1, r0
- ldrh r1, [r1]
- mov r9, r0
- cmp r1, 0
- bne _081368B0
- movs r0, 0xD
- muls r0, r7
- ldr r1, _08136890 @ =0x00003128
- adds r0, r1
- adds r0, r2, r0
- ldr r1, _08136894 @ =gUnknown_841620E
- bl StringCopy
- movs r0, 0xB
- adds r1, r7, 0
- muls r1, r0
- ldr r2, _08136898 @ =0x000030b8
- adds r1, r2
- ldr r0, [r6]
- adds r0, r1
- ldr r1, _0813689C @ =gUnknown_8416210
- bl StringCopy
- lsls r4, r7, 2
- adds r4, r7
- ldr r3, _081368A0 @ =0x0000316c
- adds r1, r4, r3
- ldr r0, [r6]
- adds r0, r1
- ldr r5, _081368A4 @ =gText_ThreeHyphens
- adds r1, r5, 0
- bl StringCopy
- ldr r0, _081368A8 @ =0x00003188
- adds r4, r0
- ldr r0, [r6]
- adds r0, r4
- adds r1, r5, 0
- bl StringCopy
- ldr r0, _081368AC @ =gUnknown_203B144
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x12
- add r0, r9
- movs r2, 0xFF
- strh r2, [r0]
- adds r1, 0x1C
- add r1, r9
- strh r2, [r1]
- b _08136ADA
- .align 2, 0
-_08136884: .4byte gMonSummaryScreen
-_08136888: .4byte 0x00003290
-_0813688C: .4byte 0x00003258
-_08136890: .4byte 0x00003128
-_08136894: .4byte gUnknown_841620E
-_08136898: .4byte 0x000030b8
-_0813689C: .4byte gUnknown_8416210
-_081368A0: .4byte 0x0000316c
-_081368A4: .4byte gText_ThreeHyphens
-_081368A8: .4byte 0x00003188
-_081368AC: .4byte gUnknown_203B144
-_081368B0:
- ldr r3, _08136948 @ =0x00003264
- adds r1, r2, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r6]
- ldr r1, _0813694C @ =0x0000324e
- adds r4, r0, r1
- add r4, r9
- ldr r5, _08136950 @ =gBattleMoves
- ldr r2, _08136954 @ =0x00003258
- adds r3, r0, r2
- add r3, r9
- ldrh r2, [r3]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- ldrb r1, [r1, 0x2]
- strh r1, [r4]
- movs r2, 0xD
- adds r1, r7, 0
- muls r1, r2
- ldr r4, _08136958 @ =0x00003128
- adds r1, r4
- adds r0, r1
- ldrh r1, [r3]
- muls r1, r2
- ldr r2, _0813695C @ =gMoveNames
- adds r1, r2
- bl StringCopy
- cmp r7, 0x3
- bls _0813696C
- ldr r1, [r6]
- ldr r2, _08136960 @ =0x00003208
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0813696C
- movs r0, 0xB
- adds r4, r7, 0
- muls r4, r0
- ldr r3, _08136964 @ =0x000030b8
- adds r0, r4, r3
- adds r0, r1, r0
- add r1, r8
- add r1, r9
- ldrh r2, [r1]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- ldrb r1, [r1, 0x4]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, _08136968 @ =0x000030f0
- adds r4, r0
- ldr r0, [r6]
- adds r4, r0, r4
- add r0, r8
- add r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x4]
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- b _081369D0
- .align 2, 0
-_08136948: .4byte 0x00003264
-_0813694C: .4byte 0x0000324e
-_08136950: .4byte gBattleMoves
-_08136954: .4byte 0x00003258
-_08136958: .4byte 0x00003128
-_0813695C: .4byte gMoveNames
-_08136960: .4byte 0x00003208
-_08136964: .4byte 0x000030b8
-_08136968: .4byte 0x000030f0
-_0813696C:
- ldr r1, _08136A4C @ =gMonSummaryScreen
- mov r8, r1
- movs r0, 0xB
- adds r5, r7, 0
- muls r5, r0
- ldr r2, _08136A50 @ =0x000030b8
- adds r4, r5, r2
- ldr r0, [r1]
- adds r4, r0, r4
- ldr r6, _08136A54 @ =0x00003290
- adds r0, r6
- adds r1, r7, 0
- bl sub_8138C24
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r3, _08136A58 @ =0x000030f0
- adds r5, r3
- mov r4, r8
- ldr r0, [r4]
- adds r5, r0, r5
- ldr r2, _08136A5C @ =0x00003258
- adds r1, r0, r2
- add r1, r9
- ldrh r4, [r1]
- adds r0, r6
- movs r1, 0x15
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- adds r2, r7, 0
- bl CalculatePPWithBonus
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
-_081369D0:
- ldr r6, _08136A4C @ =gMonSummaryScreen
- movs r0, 0xB
- adds r5, r7, 0
- muls r5, r0
- ldr r3, _08136A50 @ =0x000030b8
- adds r1, r5, r3
- ldr r0, [r6]
- adds r0, r1
- bl StringLength
- ldr r4, _08136A60 @ =gUnknown_203B144
- mov r8, r4
- ldr r2, [r4]
- adds r2, 0x12
- add r2, r9
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- movs r4, 0xC
- subs r1, r4, r1
- strh r1, [r2]
- ldr r0, _08136A58 @ =0x000030f0
- adds r5, r0
- ldr r0, [r6]
- adds r0, r5
- bl StringLength
- mov r1, r8
- ldr r2, [r1]
- adds r2, 0x1C
- add r2, r9
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- subs r4, r1
- strh r4, [r2]
- ldr r2, _08136A64 @ =gBattleMoves
- ldr r6, [r6]
- ldr r3, _08136A5C @ =0x00003258
- adds r0, r6, r3
- add r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrb r0, [r1, 0x1]
- cmp r0, 0x1
- bhi _08136A70
- lsls r4, r7, 2
- adds r0, r4, r7
- ldr r1, _08136A68 @ =0x0000316c
- adds r0, r1
- adds r0, r6, r0
- ldr r1, _08136A6C @ =gText_ThreeHyphens
- bl StringCopy
- b _08136A84
- .align 2, 0
-_08136A4C: .4byte gMonSummaryScreen
-_08136A50: .4byte 0x000030b8
-_08136A54: .4byte 0x00003290
-_08136A58: .4byte 0x000030f0
-_08136A5C: .4byte 0x00003258
-_08136A60: .4byte gUnknown_203B144
-_08136A64: .4byte gBattleMoves
-_08136A68: .4byte 0x0000316c
-_08136A6C: .4byte gText_ThreeHyphens
-_08136A70:
- lsls r4, r7, 2
- adds r0, r4, r7
- ldr r2, _08136AB0 @ =0x0000316c
- adds r0, r2
- adds r0, r6, r0
- ldrb r1, [r1, 0x1]
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
-_08136A84:
- ldr r2, _08136AB4 @ =gBattleMoves
- ldr r0, _08136AB8 @ =gMonSummaryScreen
- ldr r3, [r0]
- ldr r1, _08136ABC @ =0x00003258
- adds r0, r3, r1
- add r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- bne _08136AC8
- adds r0, r4, r7
- ldr r2, _08136AC0 @ =0x00003188
- adds r0, r2
- adds r0, r3, r0
- ldr r1, _08136AC4 @ =gText_ThreeHyphens
- bl StringCopy
- b _08136ADA
- .align 2, 0
-_08136AB0: .4byte 0x0000316c
-_08136AB4: .4byte gBattleMoves
-_08136AB8: .4byte gMonSummaryScreen
-_08136ABC: .4byte 0x00003258
-_08136AC0: .4byte 0x00003188
-_08136AC4: .4byte gText_ThreeHyphens
-_08136AC8:
- adds r0, r4, r7
- ldr r4, _08136AE8 @ =0x00003188
- adds r0, r4
- adds r0, r3, r0
- ldrb r1, [r1, 0x3]
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
-_08136ADA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08136AE8: .4byte 0x00003188
- thumb_func_end sub_81367E8
-
thumb_func_start sub_8136AEC
sub_8136AEC: @ 8136AEC
push {lr}
diff --git a/include/constants/global.h b/include/constants/global.h
index f8cfaa4b0..6a05d169e 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -6,6 +6,7 @@
#define ITEM_NAME_LENGTH 14
#define POKEMON_NAME_LENGTH 10
#define OT_NAME_LENGTH 7
+#define MOVE_NAME_LENGTH 12
#define VERSION_SAPPHIRE 1
#define VERSION_RUBY 2
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 9c9c1e351..0c1a2f221 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -45,6 +45,15 @@ enum PokemonSummaryScreenState3270
PSS_STATE3270_6
};
+enum PokemonSummaryScreenStat
+{
+ PSS_STAT_ATK,
+ PSS_STAT_DEF,
+ PSS_STAT_SPA,
+ PSS_STAT_SPD,
+ PSS_STAT_SPE
+};
+
s32 GetLastViewedMonIndex(void);
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
void sub_8138B38(u8);
diff --git a/include/strings.h b/include/strings.h
index 6c12d38f5..9f86bf6ef 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1476,5 +1476,7 @@ extern const u8 gUnknown_8419C45[];
extern const u8 gUnknown_8419C82[];
extern const u8 gUnknown_8416202[];
extern const u8 gUnknown_84161EF[];
+extern const u8 gUnknown_841620E[];
+extern const u8 gUnknown_8416210[];
#endif //GUARD_STRINGS_H
diff --git a/include/trade.h b/include/trade.h
index 196a46587..44d883f66 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -17,5 +17,6 @@ void CB2_ReturnFromLinkTrade(void);
s32 Trade_CalcLinkPlayerCompatibilityParam(void);
s32 CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet);
s32 GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGnameSub rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet);
+void CB2_ReturnToTradeMenuFromSummary(void);
#endif //GUARD_TRADE_H
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index af0320be5..e566fe6fc 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -15,6 +15,9 @@
#include "constants/items.h"
#include "data.h"
#include "item.h"
+#include "constants/party_menu.h"
+#include "trade.h"
+#include "battle_main.h"
extern void sub_8138B8C(struct Pokemon * mon);
void sub_8135C34(void);
@@ -69,6 +72,10 @@ extern void sub_8136D54(void);
extern void sub_81360D4(void);
extern void sub_8136350(void);
extern void sub_81367B0(void);
+extern u8 sub_8138C5C(u32 status);
+void sub_81367E8(u8);
+extern u16 sub_8138BEC(struct Pokemon * mon, u8 i);
+extern u16 sub_8138C24(struct Pokemon * mon, u8 i);
struct PokemonSummaryScreenData {
u16 unk0[0x800];
@@ -108,8 +115,21 @@ struct PokemonSummaryScreenData {
u8 ALIGNED(4) unk3084[3];
u8 ALIGNED(4) unk3088[7];
+ u8 ALIGNED(4) unk3090[9];
+ u8 ALIGNED(4) unk309C[5][5];
- u8 ALIGNED(4) pad3090[0x170];
+ u8 ALIGNED(4) unk30B8[5][11];
+ u8 ALIGNED(4) unk30F0[5][11];
+ u8 ALIGNED(4) unk3128[5][MOVE_NAME_LENGTH + 1];
+ u8 ALIGNED(4) unk316C[5][5];
+ u8 ALIGNED(4) unk3188[5][5];
+
+ u8 ALIGNED(4) unk31A4[9];
+ u8 ALIGNED(4) unk31B0[9];
+
+ u8 ALIGNED(4) unk31BC[13];
+ u8 ALIGNED(4) unk31CC[20];
+ u8 ALIGNED(4) pad31E0[0x20];
// u8 ALIGNED(4) unk3090[9];
// u8 ALIGNED(4) unk309C[5][5];
@@ -1405,3 +1425,161 @@ void sub_81360D4(void)
else
CopyItemName(heldItem, gMonSummaryScreen->summary.unk3074);
}
+
+#define MACRO_8136350_0(x) (63 - StringLength((x)) * 6)
+#define MACRO_8136350_1(x) (27 - StringLength((x)) * 6)
+
+void sub_8136350(void)
+{
+ u8 tempStr[20];
+ u8 level;
+ u16 type;
+ u16 species;
+ u16 hp;
+ u16 statValue;
+ u32 exp;
+ u32 expToNextLevel;
+
+ hp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_HP);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk3090, hp, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(gMonSummaryScreen->summary.unk3090, gText_Slash);
+
+ hp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MAX_HP);
+ ConvertIntToDecimalStringN(tempStr, hp, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(gMonSummaryScreen->summary.unk3090, tempStr);
+
+ gUnknown_203B144->unk02 = MACRO_8136350_0(gMonSummaryScreen->summary.unk3090);
+
+ if (gMonSummaryScreen->savedCallback == CB2_ReturnToTradeMenuFromSummary && gMonSummaryScreen->isEnemyParty == TRUE)
+ {
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_ATK2);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk04 = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_ATK]);
+
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_DEF2);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk06 = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_DEF]);
+
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPATK2);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk08 = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPA]);
+
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPDEF2);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPD], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk0A = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPD]);
+
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPEED2);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk0C = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPE]);
+ }
+ else
+ {
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_ATK);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_ATK], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk04 = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_ATK]);
+
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_DEF);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_DEF], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk06 = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_DEF]);
+
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPATK);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPA], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk08 = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPA]);
+
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPDEF);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPD], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk0A = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPD]);
+
+ statValue = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPEED);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPE], statValue, STR_CONV_MODE_LEFT_ALIGN, 3);
+ gUnknown_203B144->unk0C = MACRO_8136350_1(gMonSummaryScreen->summary.unk309C[PSS_STAT_SPE]);
+ }
+
+ exp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_EXP);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk31A4, exp, STR_CONV_MODE_LEFT_ALIGN, 7);
+ gUnknown_203B144->unk0E = MACRO_8136350_0(gMonSummaryScreen->summary.unk31A4);
+
+ level = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_LEVEL);
+ expToNextLevel = 0;
+ if (level < 100)
+ {
+ species = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES);
+ expToNextLevel = gExperienceTables[gBaseStats[species].growthRate][level + 1] - exp;
+ }
+
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk31B0, expToNextLevel, STR_CONV_MODE_LEFT_ALIGN, 7);
+ gUnknown_203B144->unk10 = MACRO_8136350_0(gMonSummaryScreen->summary.unk31B0);
+
+ type = GetAbilityBySpecies(GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES), GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_ABILITY_NUM));
+ StringCopy(gMonSummaryScreen->summary.unk31BC, gAbilityNames[type]);
+ StringCopy(gMonSummaryScreen->summary.unk31CC, gAbilityDescriptionPointers[type]);
+
+ gMonSummaryScreen->unk326C = sub_8138C5C(GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_STATUS));
+ if (gMonSummaryScreen->unk326C == AILMENT_NONE)
+ if (CheckPartyPokerus(&gMonSummaryScreen->currentMon, 0))
+ gMonSummaryScreen->unk326C = AILMENT_PKRS;
+}
+
+void sub_81367B0(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ sub_81367E8(i);
+
+ if (gMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ sub_81367E8(4);
+}
+
+#define MACRO_81367E8_0(a, b) ((6 * (a)) - StringLength((b)) * 6)
+
+void sub_81367E8(u8 i)
+{
+ if (i < 4)
+ gMonSummaryScreen->unk325A[i] = sub_8138BEC(&gMonSummaryScreen->currentMon, i);
+
+ if (gMonSummaryScreen->unk325A[i] == 0)
+ {
+ StringCopy(gMonSummaryScreen->summary.unk3128[i], gUnknown_841620E);
+ StringCopy(gMonSummaryScreen->summary.unk30B8[i], gUnknown_8416210);
+ StringCopy(gMonSummaryScreen->summary.unk316C[i], gText_ThreeHyphens);
+ StringCopy(gMonSummaryScreen->summary.unk3188[i], gText_ThreeHyphens);
+ gUnknown_203B144->unk12[i] = 0xff;
+ gUnknown_203B144->unk1C[i] = 0xff;
+ return;
+ }
+
+ gMonSummaryScreen->unk3264++;
+ gMonSummaryScreen->unk3250[i] = gBattleMoves[gMonSummaryScreen->unk325A[i]].type;
+ StringCopy(gMonSummaryScreen->summary.unk3128[i], gMoveNames[gMonSummaryScreen->unk325A[i]]);
+
+ if (i >= 4 && gMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ {
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk30B8[i],
+ gBattleMoves[gMonSummaryScreen->unk325A[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk30F0[i],
+ gBattleMoves[gMonSummaryScreen->unk325A[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3);
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk30B8[i],
+ sub_8138C24(&gMonSummaryScreen->currentMon, i), STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk30F0[i],
+ CalculatePPWithBonus(gMonSummaryScreen->unk325A[i], GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_PP_BONUSES), i),
+ STR_CONV_MODE_LEFT_ALIGN, 3);
+ }
+
+ gUnknown_203B144->unk12[i] = MACRO_81367E8_0(2, gMonSummaryScreen->summary.unk30B8[i]);
+ gUnknown_203B144->unk1C[i] = MACRO_81367E8_0(2, gMonSummaryScreen->summary.unk30F0[i]);
+
+ if (gBattleMoves[gMonSummaryScreen->unk325A[i]].power <= 1)
+ StringCopy(gMonSummaryScreen->summary.unk316C[i], gText_ThreeHyphens);
+ else
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk316C[i], gBattleMoves[gMonSummaryScreen->unk325A[i]].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
+
+ if (gBattleMoves[gMonSummaryScreen->unk325A[i]].accuracy == 0)
+ StringCopy(gMonSummaryScreen->summary.unk3188[i], gText_ThreeHyphens);
+ else
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk3188[i], gBattleMoves[gMonSummaryScreen->unk325A[i]].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
+}
+