diff options
-rw-r--r-- | asm/pokenav.s | 228 | ||||
-rw-r--r-- | src/pokenav.c | 101 |
2 files changed, 100 insertions, 229 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index 7afd4ea87..fe5e2dc99 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,234 +5,6 @@ .text - thumb_func_start sub_80F6514 -sub_80F6514: @ 80F6514 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r10, r0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x4] - mov r5, r10 - ldr r0, _080F65A4 @ =gPokenavStructPtr - ldr r0, [r0] - lsls r1, 2 - adds r0, r1 - ldr r2, _080F65A8 @ =0x0000893d - adds r1, r0, r2 - ldrb r6, [r1] - mov r8, r6 - ldr r1, _080F65AC @ =0x0000893e - adds r0, r1 - ldrb r0, [r0] - lsls r0, 27 - lsrs r4, r0, 27 - adds r7, r4, 0 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x2D - movs r3, 0 - bl sub_80F44B0 - cmp r0, 0 - beq _080F655E - b _080F66CA -_080F655E: - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x2 - adds r3, r5, 0 - bl sub_80F44B0 - adds r0, r5, 0 - bl StringGetEnd10 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0xB - movs r3, 0 - bl sub_80F44B0 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r6, 0xE - bne _080F65B4 - movs r0, 0x64 - muls r4, r0 - ldr r0, _080F65B0 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - adds r0, r4, 0 - bl GetMonGender - b _080F65EA - .align 2, 0 -_080F65A4: .4byte gPokenavStructPtr -_080F65A8: .4byte 0x0000893d -_080F65AC: .4byte 0x0000893e -_080F65B0: .4byte gPlayerParty -_080F65B4: - mov r2, r8 - lsls r1, r2, 2 - add r1, r8 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 4 - ldr r2, _080F6620 @ =gPokemonStorage + 0x4 - adds r1, r2 - adds r0, r1 - bl GetLevelFromBoxMonExp - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - mov r0, r8 - adds r1, r7, 0 - movs r2, 0 - movs r3, 0 - bl sub_80F44B0 - adds r1, r0, 0 - mov r0, r9 - bl GetGenderFromSpeciesAndPersonality -_080F65EA: - lsls r0, 24 - lsrs r4, r0, 24 - mov r0, r9 - mov r1, r10 - bl ShouldHideGenderIcon - cmp r0, 0 - beq _080F65FC - movs r4, 0xFF -_080F65FC: - adds r0, r5, 0 - bl StringLength - lsls r0, 16 - lsrs r0, 16 - adds r5, r0 - movs r1, 0xFC - strb r1, [r5] - movs r0, 0x13 - strb r0, [r5, 0x1] - movs r0, 0x3F - strb r0, [r5, 0x2] - adds r5, 0x3 - cmp r4, 0 - beq _080F6624 - cmp r4, 0xFE - beq _080F663C - b _080F6656 - .align 2, 0 -_080F6620: .4byte gPokemonStorage + 0x4 -_080F6624: - strb r1, [r5] - movs r0, 0x1 - strb r0, [r5, 0x1] - movs r0, 0xC - strb r0, [r5, 0x2] - strb r1, [r5, 0x3] - movs r0, 0x3 - strb r0, [r5, 0x4] - movs r0, 0xD - strb r0, [r5, 0x5] - movs r0, 0xB5 - b _080F6652 -_080F663C: - strb r1, [r5] - movs r0, 0x1 - strb r0, [r5, 0x1] - movs r0, 0xA - strb r0, [r5, 0x2] - strb r1, [r5, 0x3] - movs r0, 0x3 - strb r0, [r5, 0x4] - movs r0, 0xB - strb r0, [r5, 0x5] - movs r0, 0xB6 -_080F6652: - strb r0, [r5, 0x6] - adds r5, 0x7 -_080F6656: - movs r4, 0xFC - strb r4, [r5] - movs r1, 0x1 - strb r1, [r5, 0x1] - strb r1, [r5, 0x2] - strb r4, [r5, 0x3] - movs r0, 0x3 - strb r0, [r5, 0x4] - movs r0, 0x5 - strb r0, [r5, 0x5] - adds r5, 0x6 - strb r4, [r5] - movs r6, 0x13 - strb r6, [r5, 0x1] - movs r0, 0x46 - strb r0, [r5, 0x2] - adds r5, 0x3 - movs r0, 0xBA - strb r0, [r5] - strb r4, [r5, 0x1] - movs r0, 0x11 - strb r0, [r5, 0x2] - strb r1, [r5, 0x3] - movs r0, 0x34 - strb r0, [r5, 0x4] - adds r5, 0x5 - adds r0, r5, 0 - ldr r1, [sp, 0x8] - bl ConvertIntToDecimalString - adds r5, r0, 0 - ldr r0, [sp, 0x4] - cmp r0, 0x1 - bne _080F66C0 - ldr r0, _080F66B8 @ =gPokenavStructPtr - ldr r0, [r0] - ldr r2, [sp] - lsls r1, r2, 2 - adds r0, r1 - ldr r1, _080F66BC @ =0x0000893c - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - movs r2, 0x80 - movs r3, 0x1 - bl AlignInt1InMenuWindow - adds r5, r0, 0 - b _080F66CE - .align 2, 0 -_080F66B8: .4byte gPokenavStructPtr -_080F66BC: .4byte 0x0000893c -_080F66C0: - strb r4, [r5] - strb r6, [r5, 0x1] - movs r0, 0x67 - strb r0, [r5, 0x2] - adds r5, 0x3 -_080F66CA: - movs r0, 0xFF - strb r0, [r5] -_080F66CE: - adds r0, r5, 0 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F6514 - thumb_func_start sub_80F66E0 sub_80F66E0: @ 80F66E0 push {r4-r7,lr} diff --git a/src/pokenav.c b/src/pokenav.c index 21a2ecf2d..b995903dc 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -4523,7 +4523,7 @@ u8 *sub_80F445C(u8 *arg0, u16 arg1) return buffer; } -u32 sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text) +u32 sub_80F44B0(u16 box, u16 monIndex, int monDataField, u8 *text) { if (box == 14) { @@ -5974,3 +5974,102 @@ bool8 sub_80F63D0(void) } return TRUE; } + +u8 * sub_80F6514(u8 * r10, u16 sp0, u8 sp4) +{ + u8 * dest = r10; + u8 box = gPokenavStructPtr->unk893c[sp0].unk1; + u8 monNo = gPokenavStructPtr->unk893c[sp0].partyIdx; + u16 species; + u16 level; + u8 gender; + + if (!sub_80F44B0(box, monNo, MON_DATA_IS_EGG, NULL)) + { + sub_80F44B0(box, monNo, MON_DATA_NICKNAME, dest); + StringGetEnd10(dest); + species = sub_80F44B0(box, monNo, MON_DATA_SPECIES, NULL); + if (box == 14) + { + level = GetMonData(&gPlayerParty[monNo], MON_DATA_LEVEL); + gender = GetMonGender(&gPlayerParty[monNo]); + } + else + { + level = GetLevelFromBoxMonExp(&gPokemonStorage.boxes[box][monNo]); + gender = GetGenderFromSpeciesAndPersonality(species, sub_80F44B0(box, monNo, MON_DATA_PERSONALITY, NULL)); + } + if (ShouldHideGenderIcon(species, r10)) + { + gender = MON_GENDERLESS; + } + dest += StringLength(dest); + + dest[0] = 0xFC; + dest[1] = 0x13; + dest[2] = 0x3F; + dest += 3; + + switch (gender) + { + case MON_MALE: + dest[0] = 0xFC; + dest[1] = 0x01; + dest[2] = 0x0C; + dest[3] = 0xFC; + dest[4] = 0x03; + dest[5] = 0x0D; + dest[6] = 0xB5; + dest += 7; + break; + case MON_FEMALE: + dest[0] = 0xFC; + dest[1] = 0x01; + dest[2] = 0x0A; + dest[3] = 0xFC; + dest[4] = 0x03; + dest[5] = 0x0B; + dest[6] = 0xB6; + dest += 7; + break; + } + dest[0] = 0xFC; + dest[1] = 0x01; + dest[2] = 0x01; + dest[3] = 0xFC; + dest[4] = 0x03; + dest[5] = 0x05; + dest += 6; + + dest[0] = 0xFC; + dest[1] = 0x13; + dest[2] = 0x46; + dest += 3; + + dest[0] = 0xBA; + dest[1] = 0xFC; + dest[2] = 0x11; + dest[3] = 0x01; + dest[4] = 0x34; + dest += 5; + + dest = ConvertIntToDecimalString(dest, level); + if (sp4 == 1) + { + dest = AlignInt1InMenuWindow(dest, gPokenavStructPtr->unk893c[sp0].unk0, 0x80, 0x01); + } + else + { + dest[0] = 0xFC; + dest[1] = 0x13; + dest[2] = 0x67; + dest += 3; + *dest = EOS; + } + } + else + { + *dest = EOS; + } + return dest; +} |