diff options
-rw-r--r-- | asm/pokemon_summary_screen.s | 317 | ||||
-rw-r--r-- | include/strings.h | 2 | ||||
-rw-r--r-- | src/pokemon_summary_screen.c | 103 |
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]); + } +} |