diff options
author | luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> | 2020-06-23 22:06:21 -0400 |
---|---|---|
committer | luckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com> | 2020-06-23 22:06:21 -0400 |
commit | a04106a011429db1a474fedd1fd30d892309e4dd (patch) | |
tree | e0d2291199adb85bd092a75d84c581fc94fed4bb | |
parent | d096f37d75138eba940f55bd7e1ec8bacc092935 (diff) |
pokemon_summary_screen.c, part 4.
-rw-r--r-- | asm/pokemon_summary_screen.s | 874 | ||||
-rw-r--r-- | include/constants/global.h | 1 | ||||
-rw-r--r-- | include/pokemon_summary_screen.h | 9 | ||||
-rw-r--r-- | include/strings.h | 2 | ||||
-rw-r--r-- | include/trade.h | 1 | ||||
-rw-r--r-- | src/pokemon_summary_screen.c | 180 |
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); +} + |