diff options
author | YamaArashi <shadow962@live.com> | 2017-05-08 18:12:23 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2017-05-08 18:12:38 -0700 |
commit | fdab157386bdd1ce02f660f0ece0c55d2218f6fc (patch) | |
tree | 34411e599afe22231a2ba8bf0431e564658d033b /src | |
parent | 6608d61fdb0213df2801bbe8ec38fe913bb36b3b (diff) |
decompile some of mail_data.s
Diffstat (limited to 'src')
-rw-r--r-- | src/mail_data.c | 94 | ||||
-rw-r--r-- | src/pokemon_1.c | 6 | ||||
-rw-r--r-- | src/pokemon_2.c | 8 |
3 files changed, 101 insertions, 7 deletions
diff --git a/src/mail_data.c b/src/mail_data.c new file mode 100644 index 000000000..0794d268d --- /dev/null +++ b/src/mail_data.c @@ -0,0 +1,94 @@ +#include "global.h" +#include "name_string_util.h" +#include "pokemon.h" +#include "species.h" +#include "text.h" + +void sub_80A2B40(struct MailStruct *); +u16 sub_80A2D44(u16, u32); +bool8 itemid_is_mail(u16); +u16 sub_809D474(u32); + +void sub_80A2B18(void) +{ + u8 i; + + for (i = 0; i < 16; i++) + sub_80A2B40(&gSaveBlock1.mail[i]); +} + +void sub_80A2B40(struct MailStruct *mail) +{ + int i; + + for (i = 0; i < 9; i++) + mail->words[i] = -1; + + for (i = 0; i < 8; i++) + mail->playerName[i] = -1; + + for (i = 0; i < 4; i++) + mail->trainerId[i] = 0; + + mail->species = 1; + mail->itemId = 0; +} + +bool8 sub_80A2B94(struct Pokemon *mon) +{ + u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM); + if (itemid_is_mail(heldItem) && GetMonData(mon, MON_DATA_MAIL) != 0xFF) + return TRUE; + else + return FALSE; +} + +u8 sub_80A2BC4(struct Pokemon *mon, u16 itemId) +{ + u16 _itemId; + u8 heldItem[2]; + u8 id; + u8 i; + u16 species; + u32 personality; + + _itemId = itemId; + heldItem[0] = _itemId; + heldItem[1] = _itemId >> 8; + id = 0; + + while (id < 6) + { + if (gSaveBlock1.mail[id].itemId == 0) + { + for (i = 0; i < 9; i++) + gSaveBlock1.mail[id].words[i] = -1; + + for (i = 0; i < 7; i++) + gSaveBlock1.mail[id].playerName[i] = gSaveBlock2.playerName[i]; + gSaveBlock1.mail[id].playerName[i] = EOS; + PadNameString(gSaveBlock1.mail[id].playerName, 0); + + for (i = 0; i < 4; i++) + gSaveBlock1.mail[id].trainerId[i] = gSaveBlock2.playerTrainerId[i]; + + species = GetBoxMonData(mon, MON_DATA_SPECIES); + personality = GetBoxMonData(mon, MON_DATA_PERSONALITY); + gSaveBlock1.mail[id].species = sub_80A2D44(species, personality); + gSaveBlock1.mail[id].itemId = _itemId; + SetMonData(mon, MON_DATA_MAIL, &id); + SetMonData(mon, MON_DATA_HELD_ITEM, heldItem); + return id; + } + id++; + } + + return -1; +} + +u16 sub_80A2D44(u16 species, u32 personality) +{ + if (species != SPECIES_UNOWN) + return species; + return ((sub_809D474(personality) << 16) + (30000 << 16)) >> 16; +} diff --git a/src/pokemon_1.c b/src/pokemon_1.c index 1c11449c3..204fa7b9a 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -51,7 +51,7 @@ void ZeroMonData(struct Pokemon *mon) SetMonData(mon, MON_DATA_SPATK, (u8 *)&arg); SetMonData(mon, MON_DATA_SPDEF, (u8 *)&arg); arg = 255; - SetMonData(mon, MON_DATA_64, (u8 *)&arg); + SetMonData(mon, MON_DATA_MAIL, (u8 *)&arg); } void ZeroPlayerPartyMons(void) @@ -75,7 +75,7 @@ void CreateMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFix CreateBoxMon(&mon->box, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId); SetMonData(mon, MON_DATA_LEVEL, &level); arg = 255; - SetMonData(mon, MON_DATA_64, (u8 *)&arg); + SetMonData(mon, MON_DATA_MAIL, (u8 *)&arg); CalculateMonStats(mon); } @@ -478,7 +478,7 @@ void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest) SetMonData(dest, MON_DATA_HP, (u8 *)&value); SetMonData(dest, MON_DATA_MAX_HP, (u8 *)&value); value = 255; - SetMonData(dest, MON_DATA_64, (u8 *)&value); + SetMonData(dest, MON_DATA_MAIL, (u8 *)&value); CalculateMonStats(dest); } diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 4711eda46..3be11f453 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -383,8 +383,8 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8 *data) return mon->spAttack; case MON_DATA_SPDEF: return mon->spDefense; - case MON_DATA_64: - return mon->pokerus; + case MON_DATA_MAIL: + return mon->mail; default: return GetBoxMonData(&mon->box, field, data); } @@ -761,8 +761,8 @@ void SetMonData(struct Pokemon *mon, s32 field, const u8 *data) case MON_DATA_SPDEF: SET16(mon->spDefense); break; - case MON_DATA_64: - SET8(mon->pokerus); + case MON_DATA_MAIL: + SET8(mon->mail); break; case MON_DATA_SPECIES2: break; |