summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokenav.s228
-rw-r--r--src/pokenav.c101
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;
+}