summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-07-02 20:19:37 -0400
committerluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-07-02 20:19:37 -0400
commit9453c154d70e22f806a057aef4584bed8ca7986a (patch)
tree79c5f0ff5898dec9271fb744018c5d538f4fbd54
parentd9d3ac1c5dec158f2358e43bd39087ca4e5edc5a (diff)
pokemon_summary_screen.c, part 8.
-rw-r--r--asm/pokemon_summary_screen.s317
-rw-r--r--include/strings.h2
-rw-r--r--src/pokemon_summary_screen.c103
3 files changed, 102 insertions, 320 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index a66b1ecb5..3288d63cf 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5,323 +5,6 @@
.text
- thumb_func_start sub_8137944
-sub_8137944: @ 8137944
- push {lr}
- ldr r0, _08137960 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08137964 @ =0x00003290
- adds r0, r1
- bl sub_813847C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08137968
- bl sub_8137578
- b _0813796C
- .align 2, 0
-_08137960: .4byte gMonSummaryScreen
-_08137964: .4byte 0x00003290
-_08137968:
- bl sub_8137724
-_0813796C:
- pop {r0}
- bx r0
- thumb_func_end sub_8137944
-
- thumb_func_start sub_8137970
-sub_8137970: @ 8137970
- push {r4-r7,lr}
- sub sp, 0x14
- movs r5, 0
- ldr r7, _081379C4 @ =gMonSummaryScreen
- ldr r0, [r7]
- ldr r6, _081379C8 @ =0x00003290
- adds r0, r6
- movs r1, 0x23
- bl GetMonData
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, [r7]
- ldr r1, _081379CC @ =0x000032f4
- adds r0, r2, r1
- ldr r1, [r0]
- ldr r0, _081379D0 @ =gEnemyParty
- cmp r1, r0
- beq _081379E4
- cmp r4, 0xFF
- beq _081379F4
- adds r0, r2, r6
- movs r1, 0x50
- bl GetMonData
- cmp r0, 0x1
- beq _081379F4
- ldr r0, [r7]
- adds r0, r6
- movs r1, 0x25
- bl GetMonData
- lsls r0, 24
- movs r2, 0xFC
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x1
- bls _081379D4
- movs r5, 0x1
- b _081379DE
- .align 2, 0
-_081379C4: .4byte gMonSummaryScreen
-_081379C8: .4byte 0x00003290
-_081379CC: .4byte 0x000032f4
-_081379D0: .4byte gEnemyParty
-_081379D4:
- cmp r4, 0xFD
- bne _081379DA
- movs r5, 0x2
-_081379DA:
- cmp r5, 0
- beq _08137A1E
-_081379DE:
- cmp r5, 0x2
- bne _08137A36
- b _08137A1E
-_081379E4:
- cmp r4, 0xFF
- beq _081379F4
- adds r0, r2, r6
- movs r1, 0x50
- bl GetMonData
- cmp r0, 0x1
- bne _081379F8
-_081379F4:
- movs r5, 0x4
- b _08137A36
-_081379F8:
- ldr r0, [r7]
- adds r0, r6
- movs r1, 0x25
- bl GetMonData
- lsls r0, 24
- movs r2, 0xFC
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x1
- bls _08137A18
- cmp r4, 0xFD
- bne _08137A1E
- movs r5, 0x5
- b _08137A1E
-_08137A18:
- cmp r4, 0xFD
- bne _08137A1E
- movs r5, 0x2
-_08137A1E:
- ldr r0, _08137A78 @ =gMonSummaryScreen
- ldr r0, [r0]
- ldr r1, _08137A7C @ =0x00003290
- adds r0, r1
- bl sub_813847C
- lsls r0, 24
- cmp r0, 0
- bne _08137A36
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_08137A36:
- ldr r0, _08137A78 @ =gMonSummaryScreen
- ldr r1, [r0]
- ldr r2, _08137A80 @ =0x00003204
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _08137A46
- movs r5, 0
-_08137A46:
- ldr r2, _08137A84 @ =0x00003004
- adds r0, r1, r2
- ldrb r0, [r0]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r1, _08137A88 @ =gUnknown_8463FA4
- str r1, [sp, 0x8]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp, 0xC]
- ldr r2, _08137A8C @ =gUnknown_8463ED4
- lsls r1, r5, 2
- adds r1, r2
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x3
- bl AddTextPrinterParameterized4
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08137A78: .4byte gMonSummaryScreen
-_08137A7C: .4byte 0x00003290
-_08137A80: .4byte 0x00003204
-_08137A84: .4byte 0x00003004
-_08137A88: .4byte gUnknown_8463FA4
-_08137A8C: .4byte gUnknown_8463ED4
- thumb_func_end sub_8137970
-
- thumb_func_start sub_8137A90
-sub_8137A90: @ 8137A90
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- ldr r0, _08137AE4 @ =gMonSummaryScreen
- mov r8, r0
- ldr r0, [r0]
- ldr r6, _08137AE8 @ =0x00003004
- adds r0, r6
- ldrb r0, [r0]
- ldr r5, _08137AEC @ =gUnknown_8463FA4
- str r5, [sp]
- movs r4, 0x1
- negs r4, r4
- str r4, [sp, 0x4]
- ldr r1, _08137AF0 @ =gUnknown_8419C4D
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x1A
- movs r3, 0x7
- bl AddTextPrinterParameterized3
- mov r1, r8
- ldr r0, [r1]
- adds r0, r6
- ldrb r0, [r0]
- str r5, [sp]
- str r4, [sp, 0x4]
- ldr r1, _08137AF4 @ =gUnknown_8419C59
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x1A
- movs r3, 0x14
- bl AddTextPrinterParameterized3
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08137AE4: .4byte gMonSummaryScreen
-_08137AE8: .4byte 0x00003004
-_08137AEC: .4byte gUnknown_8463FA4
-_08137AF0: .4byte gUnknown_8419C4D
-_08137AF4: .4byte gUnknown_8419C59
- thumb_func_end sub_8137A90
-
- thumb_func_start sub_8137AF8
-sub_8137AF8: @ 8137AF8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- ldr r0, _08137BAC @ =gUnknown_203B16D
- mov r8, r0
- ldrb r1, [r0]
- cmp r1, 0x4
- bhi _08137B9E
- ldr r7, _08137BB0 @ =gMonSummaryScreen
- ldr r3, [r7]
- ldr r2, _08137BB4 @ =0x00003208
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08137B1C
- cmp r1, 0x4
- beq _08137B9E
-_08137B1C:
- ldr r4, _08137BB8 @ =0x00003004
- adds r0, r3, r4
- ldrb r0, [r0]
- ldr r6, _08137BBC @ =gUnknown_8463FA4
- str r6, [sp]
- movs r5, 0x1
- negs r5, r5
- str r5, [sp, 0x4]
- mov r1, r8
- ldrb r2, [r1]
- lsls r1, r2, 2
- adds r1, r2
- ldr r2, _08137BC0 @ =0x0000316c
- adds r1, r2
- adds r1, r3, r1
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x39
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- ldr r3, [r7]
- adds r0, r3, r4
- ldrb r0, [r0]
- str r6, [sp]
- str r5, [sp, 0x4]
- mov r1, r8
- ldrb r2, [r1]
- lsls r1, r2, 2
- adds r1, r2
- ldr r2, _08137BC4 @ =0x00003188
- adds r1, r2
- adds r3, r1
- str r3, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x39
- movs r3, 0xF
- bl AddTextPrinterParameterized3
- ldr r2, [r7]
- adds r4, r2, r4
- ldrb r0, [r4]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- str r5, [sp, 0xC]
- ldr r3, _08137BC8 @ =gMoveDescriptionPointers
- mov r4, r8
- ldrb r1, [r4]
- lsls r1, 1
- ldr r4, _08137BCC @ =0x00003258
- adds r2, r4
- adds r2, r1
- ldrh r1, [r2]
- subs r1, 0x1
- lsls r1, 2
- adds r1, r3
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0x7
- movs r3, 0x2A
- bl AddTextPrinterParameterized4
-_08137B9E:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08137BAC: .4byte gUnknown_203B16D
-_08137BB0: .4byte gMonSummaryScreen
-_08137BB4: .4byte 0x00003208
-_08137BB8: .4byte 0x00003004
-_08137BBC: .4byte gUnknown_8463FA4
-_08137BC0: .4byte 0x0000316c
-_08137BC4: .4byte 0x00003188
-_08137BC8: .4byte gMoveDescriptionPointers
-_08137BCC: .4byte 0x00003258
- thumb_func_end sub_8137AF8
-
thumb_func_start sub_8137BD0
sub_8137BD0: @ 8137BD0
push {lr}
diff --git a/include/strings.h b/include/strings.h
index fbd91e98c..51cf79f8b 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1495,5 +1495,7 @@ extern const u8 gUnknown_84199F4[];
extern const u8 gUnknown_84199AB[];
extern const u8 gUnknown_8419860[];
extern const u8 gUnknown_841988A[];
+extern const u8 gUnknown_8419C4D[];
+extern const u8 gUnknown_8419C59[];
#endif //GUARD_STRINGS_H
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 1059b2024..ad93ccab7 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -98,15 +98,16 @@ extern void sub_81370EC(void);
extern void sub_8137270(void);
extern void sub_81372E4(u8 i);
extern void sub_8137554(void);
-extern void sub_8137A90(void);
+void sub_8137A90(void);
extern void sub_8137AF8(void);
-extern void sub_8137944(void);
-extern void sub_8137970(void);
+void sub_8137944(void);
+void sub_8137970(void);
extern bool32 sub_813B838(u8 metLocation);
extern bool32 sub_8138B4C(void);
extern bool32 sub_813B7E0(u8 nature);
void sub_8137724(void);
extern bool32 sub_813B7F8(void);
+extern u8 sub_813847C(struct Pokemon * mon);
struct PokemonSummaryScreenData {
u16 unk0[0x800];
@@ -291,6 +292,7 @@ extern const u8 gUnknown_8463FA4[][3];
extern const u8 gUnknown_8463EF0[][3];
extern const u8 * const gUnknown_8463EC4[];
+extern const u8 * const gUnknown_8463ED4[];
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u8 mode)
{
@@ -2090,3 +2092,98 @@ void sub_8137724(void)
AddTextPrinterParameterized4(gMonSummaryScreen->unk3000[4], 2, 0, 3, 0, 0, gUnknown_8463FA4[0], TEXT_SPEED_FF, natureMetOrHatchedAtLevelStr);
}
+
+void sub_8137944(void)
+{
+ if (sub_813847C(&gMonSummaryScreen->currentMon) == TRUE)
+ sub_8137578();
+ else
+ sub_8137724();
+}
+
+void sub_8137970(void)
+{
+ u8 metLocation;
+ u8 version;
+ u8 chosenStrIndex = 0;
+
+ metLocation = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MET_LOCATION);
+
+ if (gMonSummaryScreen->monList.mons != gEnemyParty)
+ {
+ if (metLocation == METLOC_FATEFUL_ENCOUNTER || GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_OBEDIENCE) == 1)
+ chosenStrIndex = 4;
+ else
+ {
+ version = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MET_GAME);
+
+ if (version != VERSION_LEAF_GREEN && version != VERSION_FIRE_RED)
+ chosenStrIndex = 1;
+ else if (metLocation == METLOC_SPECIAL_EGG)
+ chosenStrIndex = 2;
+
+ if (chosenStrIndex == 0 || chosenStrIndex == 2)
+ if (sub_813847C(&gMonSummaryScreen->currentMon) == FALSE)
+ chosenStrIndex++;
+ }
+ }
+ else
+ {
+ if (metLocation == METLOC_FATEFUL_ENCOUNTER || GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_OBEDIENCE) == 1)
+ chosenStrIndex = 4;
+ else
+ {
+ version = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MET_GAME);
+
+ if (version != VERSION_LEAF_GREEN && version != VERSION_FIRE_RED)
+ {
+ if (metLocation == METLOC_SPECIAL_EGG)
+ chosenStrIndex = 5;
+ }
+ else if (metLocation == METLOC_SPECIAL_EGG)
+ chosenStrIndex = 2;
+
+ if (sub_813847C(&gMonSummaryScreen->currentMon) == FALSE)
+ chosenStrIndex++;
+ }
+ }
+
+ if (gMonSummaryScreen->isBadEgg)
+ chosenStrIndex = 0;
+
+ AddTextPrinterParameterized4(gMonSummaryScreen->unk3000[4], 2, 0, 3, 0, 0, gUnknown_8463FA4[0], TEXT_SPEED_FF, gUnknown_8463ED4[chosenStrIndex]);
+}
+
+void sub_8137A90(void)
+{
+ AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[4], 2,
+ 26, 7, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ gUnknown_8419C4D);
+
+ AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[4], 2,
+ 26, 20, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ gUnknown_8419C59);
+}
+
+void sub_8137AF8(void)
+{
+ if (gUnknown_203B16D < 5)
+ {
+ if (gMonSummaryScreen->mode != PSS_MODE_SELECT_MOVE && gUnknown_203B16D == 4)
+ return;
+
+ AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[4], 2,
+ 57, 1, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ gMonSummaryScreen->summary.unk316C[gUnknown_203B16D]);
+
+ AddTextPrinterParameterized3(gMonSummaryScreen->unk3000[4], 2,
+ 57, 15, gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ gMonSummaryScreen->summary.unk3188[gUnknown_203B16D]);
+
+ AddTextPrinterParameterized4(gMonSummaryScreen->unk3000[4], 2,
+ 7, 42,
+ 0, 0,
+ gUnknown_8463FA4[0], TEXT_SPEED_FF,
+ gMoveDescriptionPointers[gMonSummaryScreen->unk325A[gUnknown_203B16D] - 1]);
+ }
+}