diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-09-21 20:40:14 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-09-21 20:40:14 -0700 |
commit | 18e88baffa65cc6a647f96441446238616df275c (patch) | |
tree | 33d4cbd7fe8e20741aec271aaa7d4581e00c3a72 | |
parent | f4941b3f8e6ed9a919256e5b437d9f88093dcd8d (diff) |
Decompile PartyMenuPrintGenderIcon funcs
-rw-r--r-- | asm/party_menu.s | 103 | ||||
-rw-r--r-- | asm/pokenav.s | 2 | ||||
-rw-r--r-- | include/party_menu.h | 2 | ||||
-rw-r--r-- | include/pokemon.h | 4 | ||||
-rw-r--r-- | src/battle_interface.c | 2 | ||||
-rw-r--r-- | src/choose_party.c | 6 | ||||
-rw-r--r-- | src/party_menu.c | 39 | ||||
-rw-r--r-- | src/pokemon_3.c | 8 |
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); } |