From b86e8c883b520bcf7353cbfe47ab4b373fc3828a Mon Sep 17 00:00:00 2001 From: Ninjdai Date: Mon, 13 Nov 2023 20:53:25 +0100 Subject: [PATCH] Added DizzyEgg's colored natures to summary screen --- README.md | 1 + graphics/interface/ivs/a.png | Bin 0 -> 162 bytes graphics/interface/ivs/a_minus.png | Bin 0 -> 164 bytes graphics/interface/ivs/a_plus.png | Bin 0 -> 167 bytes graphics/interface/ivs/b.png | Bin 0 -> 162 bytes graphics/interface/ivs/b_minus.png | Bin 0 -> 164 bytes graphics/interface/ivs/b_plus.png | Bin 0 -> 168 bytes graphics/interface/ivs/c.png | Bin 0 -> 164 bytes graphics/interface/ivs/c_minus.png | Bin 0 -> 166 bytes graphics/interface/ivs/c_plus.png | Bin 0 -> 168 bytes graphics/interface/ivs/d.png | Bin 0 -> 159 bytes graphics/interface/ivs/d_minus.png | Bin 0 -> 163 bytes graphics/interface/ivs/d_plus.png | Bin 0 -> 165 bytes graphics/interface/ivs/e.png | Bin 0 -> 163 bytes graphics/interface/ivs/e_minus.png | Bin 0 -> 165 bytes graphics/interface/ivs/e_plus.png | Bin 0 -> 168 bytes graphics/interface/ivs/s.png | Bin 0 -> 164 bytes src/pokemon_summary_screen.c | 92 +++++++++++++++++++++++------ 18 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 graphics/interface/ivs/a.png create mode 100644 graphics/interface/ivs/a_minus.png create mode 100644 graphics/interface/ivs/a_plus.png create mode 100644 graphics/interface/ivs/b.png create mode 100644 graphics/interface/ivs/b_minus.png create mode 100644 graphics/interface/ivs/b_plus.png create mode 100644 graphics/interface/ivs/c.png create mode 100644 graphics/interface/ivs/c_minus.png create mode 100644 graphics/interface/ivs/c_plus.png create mode 100644 graphics/interface/ivs/d.png create mode 100644 graphics/interface/ivs/d_minus.png create mode 100644 graphics/interface/ivs/d_plus.png create mode 100644 graphics/interface/ivs/e.png create mode 100644 graphics/interface/ivs/e_minus.png create mode 100644 graphics/interface/ivs/e_plus.png create mode 100644 graphics/interface/ivs/s.png diff --git a/README.md b/README.md index f68ca05d4..701bc7cdf 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ If you have suggestions, found bugs, or just want to talk, feel free to DM me on - Ellabrella (Text speed changes) - Zeturic (X/Y-style wrapping summary screen) - Anon822 (Physical/Special split icons in battle) +- DizzyEgg (Colored natures) ### Tools used - Porymap diff --git a/graphics/interface/ivs/a.png b/graphics/interface/ivs/a.png new file mode 100644 index 0000000000000000000000000000000000000000..889f3515ebbd707b651352b048dc59527d77b16f GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}Nc2~QWt5RRG22@H(a7!(8#a49=E2kuZ{VlaHfv~pL~@y9?l44$rjF6*2U FngEaeHOT+~ literal 0 HcmV?d00001 diff --git a/graphics/interface/ivs/a_minus.png b/graphics/interface/ivs/a_minus.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2fe3eef0a9d5d46981ad981ec02e451b28b343 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcDNh&25RRG22@H(a7!(8#a49=EM>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcSx*Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}Nc2~QWt5RRG22@H*&m=ppJ@F|}<9k|mWk|Fdj%gm(5r+)#}FnGH9xvXCn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcDNh&25RRG22@H*&m=ppJ@F|}Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcIZqeI5RRG22@H*&m=ppJ@F{XhoH~8;w4%-i2@f%b>?f?>xy&230#!12 My85}Sb4q9e01-<#@&Et; literal 0 HcmV?d00001 diff --git a/graphics/interface/ivs/c.png b/graphics/interface/ivs/c.png new file mode 100644 index 0000000000000000000000000000000000000000..e8b67f5d34d38bba0e31cfe3b6d014aeb8069f82 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcDNh&25RRG22@H&CtO^Scuqa79U=i+NILX8yXvXlmOlR6kpehDWS3j3^ HP6Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}Nc8BZ6-5RRG22@H&CtO^Scuqa6!V3{m5m;)j6h7(8A5 KT-G@yGywohvo%iu literal 0 HcmV?d00001 diff --git a/graphics/interface/ivs/c_plus.png b/graphics/interface/ivs/c_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c28163c8857492465fd8bf00183f53557fd102 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcIZqeI5RRG22@H&CtO^ScuqZirG&Xv29tmyeXiQ-guVD0Fw7q*bP$h$> LtDnm{r-UW|+=n;9 literal 0 HcmV?d00001 diff --git a/graphics/interface/ivs/d.png b/graphics/interface/ivs/d.png new file mode 100644 index 0000000000000000000000000000000000000000..16b2a0183b9de41ad34ad5661d6f0cf7a5a7405c GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcQBN1g5RRG22@H*Qr5ld0<;k#kh%r>&V5>{tB(MdjfWgz%&t;ucLK6T4 C^)%)H literal 0 HcmV?d00001 diff --git a/graphics/interface/ivs/d_minus.png b/graphics/interface/ivs/d_minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d5022bd855cb41c16cbc22ee194cbcbb19cf9afd GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcNlzEY5RRG22@H*Qr5ld0<*^*xE8WRGiIt(vncanP-HYu&MGT&Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcX-^l&5RRG22@H*Qr5ld0<#B9e^eA}WwsFBGhB?k0OPr0itOY7#@O1Ta JS?83{1OS7ZIR^j$ literal 0 HcmV?d00001 diff --git a/graphics/interface/ivs/e.png b/graphics/interface/ivs/e.png new file mode 100644 index 0000000000000000000000000000000000000000..e726bd45e03707599577d9c39548654be11cb44d GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcNlzEY5RRG22@H)hjT?`!ut^veGiixya5Lo0Wj$9i_0toeA_h-aKbLh* G2~7aY(>4+S literal 0 HcmV?d00001 diff --git a/graphics/interface/ivs/e_minus.png b/graphics/interface/ivs/e_minus.png new file mode 100644 index 0000000000000000000000000000000000000000..ae53029c295a16998280926bcf0aab00fd1177ba GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcX-^l&5RRG22@H)hjT?`!ut^veGd=f7(F+h`C_Bbh5WV;PETA$5Pgg&e IbxsLQ08bbCn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcIZqeI5RRG22@H)hjT?`!uyGhRCO%_1H&fsm%M2Zcj$`Z-R01c@1*&B5 MboFyt=akR{01VqW&Hw-a literal 0 HcmV?d00001 diff --git a/graphics/interface/ivs/s.png b/graphics/interface/ivs/s.png new file mode 100644 index 0000000000000000000000000000000000000000..63f7d88f73bb94d8bd8685a1fe0056369660ab6c GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U41_3@HuGMpz-x)G|Yc~A9Md02u z!|Jm^bMD>Cn(}RlTX9z$N&HT8}zGI0`+nhctjR6Fz_7# zVaBQ2e9}NcDNh&25RRG22@H&VYzh|-Fe*KWVdI-2(ZS7NTfuBNS-|xSP!)rxtDnm{ Hr-UW|@w7D~ literal 0 HcmV?d00001 diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index b69138826..41df54ca4 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -315,6 +315,7 @@ static void DestroyMoveSelectorSprites(u8); static void SetMainMoveSelectorColor(u8); static void KeepMoveSelectorVisible(u8); static void SummaryScreen_DestroyAnimDelayTask(void); +static void BufferStat(u8 *dst, s8 natureMod, u32 stat, u32 strId, u32 n); // const rom data #include "data/text/move_descriptions.h" @@ -3459,21 +3460,17 @@ static void PrintRibbonCount(void) static void BufferLeftColumnStats(void) { - u8 *currentHPString = Alloc(8); - u8 *maxHPString = Alloc(8); - u8 *attackString = Alloc(8); - u8 *defenseString = Alloc(8); - - ConvertIntToDecimalStringN(currentHPString, sMonSummaryScreen->summary.currentHP, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(maxHPString, sMonSummaryScreen->summary.maxHP, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(attackString, sMonSummaryScreen->summary.atk, STR_CONV_MODE_RIGHT_ALIGN, 7); - ConvertIntToDecimalStringN(defenseString, sMonSummaryScreen->summary.def, STR_CONV_MODE_RIGHT_ALIGN, 7); + u8 *currentHPString = Alloc(20); + u8 *maxHPString = Alloc(20); + u8 *attackString = Alloc(20); + u8 *defenseString = Alloc(20); + const s8 *natureMod = gNatureStatTable[sMonSummaryScreen->summary.nature]; DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString); + BufferStat(currentHPString, 0, sMonSummaryScreen->summary.currentHP, 0, 3); + BufferStat(maxHPString, 0, sMonSummaryScreen->summary.maxHP, 1, 3); + BufferStat(attackString, natureMod[STAT_ATK - 1], sMonSummaryScreen->summary.atk, 2, 7); + BufferStat(defenseString, natureMod[STAT_DEF - 1], sMonSummaryScreen->summary.def, 3, 7); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsLeftColumnLayout); Free(currentHPString); @@ -3489,14 +3486,12 @@ static void PrintLeftColumnStats(void) static void BufferRightColumnStats(void) { - ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.spatk, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar2, sMonSummaryScreen->summary.spdef, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar3, sMonSummaryScreen->summary.speed, STR_CONV_MODE_RIGHT_ALIGN, 3); + const s8 *natureMod = gNatureStatTable[sMonSummaryScreen->summary.nature]; DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar3); + BufferStat(gStringVar1, natureMod[STAT_SPATK - 1], sMonSummaryScreen->summary.spatk, 0, 3); + BufferStat(gStringVar2, natureMod[STAT_SPDEF - 1], sMonSummaryScreen->summary.spdef, 1, 3); + BufferStat(gStringVar3, natureMod[STAT_SPEED - 1], sMonSummaryScreen->summary.speed, 2, 3); DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsRightColumnLayout); } @@ -4242,3 +4237,62 @@ static void KeepMoveSelectorVisible(u8 firstSpriteId) gSprites[spriteIds[i]].invisible = FALSE; } } + +static void BufferStat(u8 *dst, s8 natureMod, u32 stat, u32 strId, u32 n) +{ + static const u8 sTextNatureDown[] = _("{COLOR}{08}"); + static const u8 sTextNatureUp[] = _("{COLOR}{05}"); + static const u8 sTextNatureNeutral[] = _("{COLOR}{01}"); + u8 *txtPtr; + + if (natureMod == 0) + txtPtr = StringCopy(dst, sTextNatureNeutral); + else if (natureMod > 0) + txtPtr = StringCopy(dst, sTextNatureUp); + else + txtPtr = StringCopy(dst, sTextNatureDown); + + ConvertIntToDecimalStringN(txtPtr, stat, STR_CONV_MODE_RIGHT_ALIGN, n); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(strId, dst); +} + +/* +static const u16 sIVRankingsPal[] = INCBIN_U16( "graphics/interface/ivs/ivs.gbapal"); +static const u8 sIVRankings_E_Minus[] = INCBIN_U8( "graphics/interface/ivs/e_minus.4bpp"); +static const u8 sIVRankings_E[] = INCBIN_U8( "graphics/interface/ivs/e.4bpp"); +static const u8 sIVRankings_E_Plus[] = INCBIN_U8( "graphics/interface/ivs/e_plus.4bpp"); +static const u8 sIVRankings_D_Minus[] = INCBIN_U8( "graphics/interface/ivs/d_minus.4bpp"); +static const u8 sIVRankings_D[] = INCBIN_U8( "graphics/interface/ivs/d.4bpp"); +static const u8 sIVRankings_D_Plus[] = INCBIN_U8( "graphics/interface/ivs/d_plus.4bpp"); +static const u8 sIVRankings_C_Minus[] = INCBIN_U8( "graphics/interface/ivs/c_minus.4bpp"); +static const u8 sIVRankings_C[] = INCBIN_U8( "graphics/interface/ivs/c.4bpp"); +static const u8 sIVRankings_C_Plus[] = INCBIN_U8( "graphics/interface/ivs/c_plus.4bpp"); +static const u8 sIVRankings_B_Minus[] = INCBIN_U8( "graphics/interface/ivs/b_minus.4bpp"); +static const u8 sIVRankings_B[] = INCBIN_U8( "graphics/interface/ivs/b.4bpp"); +static const u8 sIVRankings_B_Plus[] = INCBIN_U8( "graphics/interface/ivs/b_plus.4bpp"); +static const u8 sIVRankings_A_Minus[] = INCBIN_U8( "graphics/interface/ivs/a_minus.4bpp"); +static const u8 sIVRankings_A[] = INCBIN_U8( "graphics/interface/ivs/a.4bpp"); +static const u8 sIVRankings_A_Plus[] = INCBIN_U8( "graphics/interface/ivs/a_plus.4bpp"); +static const u8 sIVRankings_S[] = INCBIN_U8( "graphics/interface/ivs/s.4bpp"); + +static const u8 * const sIVRankings_Images[] = +{ + [0 ... 2] = sIVRankings_E_Minus, + [3 ... 4] = sIVRankings_E, + [5 ... 6] = sIVRankings_E_Plus, + [7 ... 8] = sIVRankings_D_Minus, + [9 ... 10] = sIVRankings_D, + [11 ... 12] = sIVRankings_D_Plus, + [13 ... 14] = sIVRankings_C_Minus, + [15 ... 16] = sIVRankings_C, + [17 ... 18] = sIVRankings_C_Plus, + [19 ... 20] = sIVRankings_B_Minus, + [21 ... 22] = sIVRankings_B, + [23 ... 24] = sIVRankings_B_Plus, + [25 ... 26] = sIVRankings_A_Minus, + [27 ... 28] = sIVRankings_A, + [29 ... 30] = sIVRankings_A_Plus, + [31] = sIVRankings_S, +}; + +*/