pokemon_summary_screen.c, part 4.

This commit is contained in:
luckytyphlosion
2020-06-23 22:06:21 -04:00
parent d096f37d75
commit a04106a011
6 changed files with 192 additions and 875 deletions
-874
View File
@@ -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}
+1
View File
@@ -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
+9
View File
@@ -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);
+2
View File
@@ -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
+1
View File
@@ -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
+179 -1
View File
@@ -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);
}