summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/party_menu.s103
-rw-r--r--asm/pokenav.s2
-rw-r--r--include/party_menu.h2
-rw-r--r--include/pokemon.h4
-rw-r--r--src/battle_interface.c2
-rw-r--r--src/choose_party.c6
-rw-r--r--src/party_menu.c39
-rw-r--r--src/pokemon_3.c8
8 files changed, 53 insertions, 113 deletions
diff --git a/asm/party_menu.s b/asm/party_menu.s
index e615435f3..094587b18 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -6769,7 +6769,7 @@ _0806E324:
adds r0, r7, 0
adds r1, r6, 0
adds r2, r5, 0
- bl PartyMenuPutNicknameTilemap
+ bl PartyMenuPrintGenderIcon
_0806E32E:
pop {r4-r7}
pop {r0}
@@ -6800,105 +6800,4 @@ _0806E33C:
_0806E358: .4byte gPlayerParty
thumb_func_end PartyMenuPrintMonsLevelOrStatus
- thumb_func_start PartyMenuDoPutNicknameTilemap
-PartyMenuDoPutNicknameTilemap: @ 806E35C
- push {r4-r7,lr}
- ldr r4, [sp, 0x14]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r6, r3, 24
- adds r1, r4, 0
- bl sub_8040D8C
- cmp r0, 0
- bne _0806E3BA
- ldr r2, _0806E3A4 @ =gUnknown_08376738
- lsls r1, r6, 2
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 3
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x3
- lsls r0, 24
- lsrs r3, r0, 24
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r7, 0
- beq _0806E3A8
- cmp r7, 0xFE
- beq _0806E3B2
- b _0806E3BA
- .align 2, 0
-_0806E3A4: .4byte gUnknown_08376738
-_0806E3A8:
- movs r0, 0x42
- adds r1, r3, 0
- bl PartyMenuWriteTilemap
- b _0806E3BA
-_0806E3B2:
- movs r0, 0x44
- adds r1, r3, 0
- bl PartyMenuWriteTilemap
-_0806E3BA:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PartyMenuDoPutNicknameTilemap
-
- thumb_func_start PartyMenuPutNicknameTilemap
-PartyMenuPutNicknameTilemap: @ 806E3C0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r8, r0
- adds r6, r1, 0
- adds r5, r2, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _0806E41C @ =gStringVar1
- mov r9, r0
- adds r0, r5, 0
- mov r1, r9
- bl GetMonNickname
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl GetMonGender
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r9
- str r0, [sp]
- adds r0, r4, 0
- adds r2, r6, 0
- mov r3, r8
- bl PartyMenuDoPutNicknameTilemap
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806E41C: .4byte gStringVar1
- thumb_func_end PartyMenuPutNicknameTilemap
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 1062abc48..47a1f69b5 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -21564,7 +21564,7 @@ _080F65EA:
lsrs r4, r0, 24
mov r0, r9
mov r1, r10
- bl sub_8040D8C
+ bl ShouldHideGenderIcon
cmp r0, 0
beq _080F65FC
movs r4, 0xFF
diff --git a/include/party_menu.h b/include/party_menu.h
index 853f9b2e1..2c19dc0a2 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -109,6 +109,8 @@ void PartyMenuClearLevelStatusTilemap();
void PartyMenuPrintMonLevelOrStatus();
void PartyMenuPrintMonsLevelOrStatus(void);
void PartyMenuPrintMonsLevelOrStatus(void);
+void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 c, u8 monIndex, u8 *nickname);
+void PartyMenuPrintGenderIcon(u8 monIndex, u8 b, struct Pokemon *pokemon);
void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP);
void PartyMenuTryPrintMonsHP(void);
void nullsub_13(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index 29fd763db..2266c2ea4 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -598,8 +598,10 @@ bool8 IsOtherTrainer(u32, u8 *);
void sub_8040B8C(void);
void SetWildMonHeldItem(void);
u8 *sub_8040D08();
-bool32 sub_8040D3C(u16 species, u8 *name, u8 language);
+bool32 ShouldHideGenderIconForLanguage(u16 species, u8 *name, u8 language);
+bool32 ShouldHideGenderIcon(u16 species, u8 *name);
s8 sub_8040A54(struct Pokemon *, u8);
u16 GetMonEVCount(struct Pokemon *);
+
#endif // GUARD_POKEMON_H
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 95f8f73c0..7c9253852 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -2388,7 +2388,7 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn)
gender = GetMonGender(pkmn);
species = GetMonData(pkmn, MON_DATA_SPECIES);
language = GetMonData(pkmn, MON_DATA_LANGUAGE);
- if (sub_8040D3C(species, nickname, language))
+ if (ShouldHideGenderIconForLanguage(species, nickname, language))
gender = 100;
switch (gender)
{
diff --git a/src/choose_party.c b/src/choose_party.c
index 55ce3583d..c666cc68f 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -70,13 +70,11 @@ extern u8 GetMonStatusAndPokerus();
extern void PartyMenuPrintHP();
extern void PartyMenuPutStatusTilemap(u8, int, u8);
extern void PartyMenuPrintLevel();
-extern void PartyMenuPutNicknameTilemap();
extern void PrintPartyMenuMonNickname();
extern bool8 sub_80F9344(void);
extern void sub_806D4AC();
extern void sub_806D3B4();
extern void PartyMenuDoPrintLevel(u8, u8, u8);
-extern void PartyMenuDoPutNicknameTilemap(u16, u8, u8, u8, const u8 *);
extern void box_print(u8, int, const u8 *);
extern void sub_806BCE8(void);
@@ -647,7 +645,7 @@ static void sub_81229B8(void)
PartyMenuPutStatusTilemap(i, 3, status - 1);
else
PartyMenuPrintLevel(i, 3, &gPlayerParty[i]);
- PartyMenuPutNicknameTilemap(i, 3, &gPlayerParty[i]);
+ PartyMenuPrintGenderIcon(i, 3, &gPlayerParty[i]);
PrintPartyMenuMonNickname(i, 3, &gPlayerParty[i]);
PartyMenuDrawHPBar(i, 3, &gPlayerParty[i]);
}
@@ -697,7 +695,7 @@ static void sub_8122B10(u8 taskId)
PartyMenuPutStatusTilemap(i + 3, 3, r2 - 1);
else
PartyMenuDoPrintLevel(i + 3, 3, gUnknown_02023A00[i].level);
- PartyMenuDoPutNicknameTilemap(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname);
+ PartyMenuDoPrintGenderIcon(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname);
StringCopy(gStringVar1, gUnknown_02023A00[i].nickname);
StringGetEnd10(gStringVar1);
SanitizeNameString(gStringVar1);
diff --git a/src/party_menu.c b/src/party_menu.c
index bd20ce5ed..38a01345e 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -60,6 +60,12 @@ struct UnknownStruct5
u16 *unk4;
};
+struct GenderIconCoords
+{
+ u8 x;
+ u8 y;
+};
+
#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000))
#define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000))
@@ -72,6 +78,7 @@ extern u8 gPlayerPartyCount;
extern s32 gBattleMoveDamage;
extern u16 gMoveToLearn;
+extern struct GenderIconCoords const gUnknown_08376738[12][6];
//extern const u16 gUnknown_083769A8[][6];
//extern const u8 gUnknown_083769A8[][12];
extern u16 *const gUnknown_08376858[][6];
@@ -84,6 +91,8 @@ extern const struct UnknownStruct5 gUnknown_08376BB4[][6];
extern u8 gUnknown_02039460[];
extern u8 gTileBuffer[];
+extern void PartyMenuWriteTilemap(u8, u8 b, u8 c);
+
static void sub_806E884(u8 taskId);
static void sub_8070D90(u8 taskId);
@@ -112,6 +121,36 @@ void sub_806AEDC(void)
#endif
+void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 c, u8 monIndex, u8 *nickname)
+{
+ if (!ShouldHideGenderIcon(species, nickname))
+ {
+ u8 x = gUnknown_08376738[c][monIndex].x + 3;
+ u8 y = gUnknown_08376738[c][monIndex].y + 1;
+
+ switch (gender)
+ {
+ case MON_MALE:
+ PartyMenuWriteTilemap(0x42, x, y);
+ break;
+ case MON_FEMALE:
+ PartyMenuWriteTilemap(0x44, x, y);
+ break;
+ }
+ }
+}
+
+void PartyMenuPrintGenderIcon(u8 monIndex, u8 b, struct Pokemon *pokemon)
+{
+ u16 species2;
+ u8 gender;
+
+ GetMonNickname(pokemon, gStringVar1);
+ species2 = GetMonData(pokemon, MON_DATA_SPECIES2);
+ gender = GetMonGender(pokemon);
+ PartyMenuDoPrintGenderIcon(species2, gender, b, monIndex, gStringVar1);
+}
+
void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP)
{
u32 *var;
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index e51d3187b..263b8b746 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -1337,7 +1337,7 @@ u8 *sub_8040D08(void)
return gLinkPlayers[sub_803FC34(gLinkPlayers[id].lp_field_18 ^ 2)].name;
}
-bool32 sub_8040D3C(u16 species, u8 *name, u8 language)
+bool32 ShouldHideGenderIconForLanguage(u16 species, u8 *name, u8 language)
{
bool32 retVal = FALSE;
if (species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F)
@@ -1362,12 +1362,12 @@ bool32 sub_8040D3C(u16 species, u8 *name, u8 language)
return retVal;
}
-bool32 sub_8040D8C(u16 species, u8 *name)
+bool32 ShouldHideGenderIcon(u16 species, u8 *name)
{
u8 language = GAME_LANGUAGE;
if (name[0] == 0xFC && name[1] == 21)
language = LANGUAGE_JAPANESE;
- return sub_8040D3C(species, name, language);
+ return ShouldHideGenderIconForLanguage(species, name, language);
}
bool32 unref_sub_8040DAC(struct Pokemon *mon)
@@ -1376,5 +1376,5 @@ bool32 unref_sub_8040DAC(struct Pokemon *mon)
u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
u8 language = GetMonData(mon, MON_DATA_LANGUAGE, 0);
GetMonData(mon, MON_DATA_NICKNAME, name);
- return sub_8040D3C(species, name, language);
+ return ShouldHideGenderIconForLanguage(species, name, language);
}