diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-07-26 08:51:15 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-07-26 09:52:22 -0500 |
commit | 016e0e6da31b8a8f7d2f30a48127721ed6187b19 (patch) | |
tree | 779b836a7c9353167a205d186be2cfcdf649264d /src | |
parent | 7f9c6df3744d40ab1a10ea7a1558ef56dc9d1ae1 (diff) |
Fix nonmatching DaycareMonReceivedMail_()
Diffstat (limited to 'src')
-rw-r--r-- | src/egg_hatch.c | 96 | ||||
-rw-r--r-- | src/record_mixing.c | 18 |
2 files changed, 28 insertions, 86 deletions
diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 580ec6886..6dc55ef28 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -7,6 +7,7 @@ #include "constants/items.h" #include "main.h" #include "menu.h" +#include "name_string_util.h" #include "naming_screen.h" #include "overworld.h" #include "palette.h" @@ -310,88 +311,29 @@ void ScriptHatchMon(void) AddHatchedMonToParty(gSpecialVar_0x8004); } -#ifdef NONMATCHING -static bool8 sub_8042ABC(void* a, u8 b) +static bool8 DaycareMonReceivedMail_(struct DayCare *daycare, u8 slot) { + u8 monNickname[32]; + GetBoxMonNick(&daycare->mons[slot], monNickname); + if (daycare->misc.mail[slot].message.itemId != ITEM_NONE) + { + if (StringCompareWithoutExtCtrlCodes(monNickname, daycare->misc.mail[slot].names + 8) + || StringCompareWithoutExtCtrlCodes(gSaveBlock2.playerName, daycare->misc.mail[slot].names)) + { + StringCopy(gStringVar1, monNickname); + StringCopy(gStringVar2, daycare->misc.mail[slot].names); + StringCopy(gStringVar3, daycare->misc.mail[slot].names + 8); + SanitizeNameString(gStringVar2); + return TRUE; + } + } + return FALSE; } -#else -NAKED -static bool8 sub_8042ABC(void* a, u8 b) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x20\n\ - adds r5, r0, 0\n\ - lsls r4, r1, 24\n\ - lsrs r4, 24\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 4\n\ - adds r0, r5, r0\n\ - mov r1, sp\n\ - bl GetBoxMonNick\n\ - lsls r0, r4, 3\n\ - subs r0, r4\n\ - lsls r1, r0, 3\n\ - adds r0, r5, r1\n\ - adds r0, 0xC0\n\ - ldrh r0, [r0]\n\ - cmp r0, 0\n\ - beq _08042B40\n\ - adds r0, r1, 0\n\ - adds r0, 0xA0\n\ - adds r5, r0\n\ - adds r6, r5, 0\n\ - adds r6, 0x2C\n\ - mov r0, sp\n\ - adds r1, r6, 0\n\ - bl StringCompareWithoutExtCtrlCodes\n\ - cmp r0, 0\n\ - bne _08042B08\n\ - ldr r0, _08042B30 @ =gSaveBlock2\n\ - adds r1, r5, 0\n\ - adds r1, 0x24\n\ - bl StringCompareWithoutExtCtrlCodes\n\ - cmp r0, 0\n\ - beq _08042B40\n\ -_08042B08:\n\ - ldr r0, _08042B34 @ =gStringVar1\n\ - mov r1, sp\n\ - bl StringCopy\n\ - ldr r4, _08042B38 @ =gStringVar2\n\ - adds r1, r5, 0\n\ - adds r1, 0x24\n\ - adds r0, r4, 0\n\ - bl StringCopy\n\ - ldr r0, _08042B3C @ =gStringVar3\n\ - adds r1, r6, 0\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - bl SanitizeNameString\n\ - movs r0, 0x1\n\ - b _08042B42\n\ - .align 2, 0\n\ -_08042B30: .4byte gSaveBlock2\n\ -_08042B34: .4byte gStringVar1\n\ -_08042B38: .4byte gStringVar2\n\ -_08042B3C: .4byte gStringVar3\n\ -_08042B40:\n\ - movs r0, 0\n\ -_08042B42:\n\ - add sp, 0x20\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided"); -} - -#endif // NONMATCHING - -bool8 sub_8042B4C(void) +bool8 DaycareMonReceivedMail(void) { - return sub_8042ABC(&gSaveBlock1.daycare, gSpecialVar_0x8004); + return DaycareMonReceivedMail_(&gSaveBlock1.daycare, gSpecialVar_0x8004); } static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID) diff --git a/src/record_mixing.c b/src/record_mixing.c index 0eb13899e..69a4984b2 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -26,7 +26,7 @@ #include "tv.h" #include "ewram.h" -EWRAM_DATA struct RecordMixingDayCareMail gUnknown_02038738 = {0}; +EWRAM_DATA struct RecordMixingDayCareMail gDayCareMailRecord = {0}; extern u16 gSpecialVar_0x8005; u32 gUnknown_03005D2C; @@ -39,8 +39,8 @@ void *recordMixingTvShows = &gSaveBlock1.tvShows; void *gUnknown_083D0274 = &gSaveBlock1.pokeNews; void *gUnknown_083D0278 = &gSaveBlock1.mauvilleMan; void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs; -struct RecordMixingDayCareMail *gUnknown_083D0280 = &gUnknown_02038738; -void *gBattleTowerPlayerRecord = &gSaveBlock2.battleTower.playerRecord; +struct RecordMixingDayCareMail *gDayCareMailPlayerRecord = &gDayCareMailRecord; +struct BattleTowerRecord *gBattleTowerPlayerRecord = &gSaveBlock2.battleTower.playerRecord; #define BUFFER_CHUNK_SIZE 200 @@ -56,7 +56,7 @@ struct PlayerRecords u8 filler1004[0x40]; u8 filler1044[0x40]; struct EasyChatPair easyChatPairs[5]; - struct RecordMixingDayCareMail filler10AC; + struct RecordMixingDayCareMail daycareMailRecord; struct BattleTowerRecord battleTowerRecord; u16 filler11C8[0x34]; }; @@ -71,10 +71,10 @@ void RecordMixing_PrepareExchangePacket(void) memcpy(ewram_2018000.filler1004, gUnknown_083D0274, sizeof(ewram_2008000.filler1004)); memcpy(ewram_2018000.filler1044, gUnknown_083D0278, sizeof(ewram_2008000.filler1044)); memcpy(ewram_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(ewram_2018000.easyChatPairs)); - gUnknown_02038738.mail[0] = gSaveBlock1.daycare.misc.mail[0]; - gUnknown_02038738.mail[1] = gSaveBlock1.daycare.misc.mail[1]; - InitDaycareMailRecordMixing(gSaveBlock1.daycare.mons, &gUnknown_02038738); - memcpy(&ewram_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail)); + gDayCareMailRecord.mail[0] = gSaveBlock1.daycare.misc.mail[0]; + gDayCareMailRecord.mail[1] = gSaveBlock1.daycare.misc.mail[1]; + InitDaycareMailRecordMixing(gSaveBlock1.daycare.mons, &gDayCareMailRecord); + memcpy(&ewram_2018000.daycareMailRecord, gDayCareMailPlayerRecord, sizeof(struct RecordMixingDayCareMail)); memcpy(&ewram_2018000.battleTowerRecord, gBattleTowerPlayerRecord, sizeof(struct BattleTowerRecord)); if (GetMultiplayerId() == 0) @@ -88,7 +88,7 @@ void RecordMixing_ReceiveExchangePacket(u32 a) sub_80C0514(ewram_2008000.filler1004, sizeof(struct PlayerRecords), a); sub_80B9B1C(ewram_2008000.filler1044, sizeof(struct PlayerRecords), a); sub_80FA4E4(ewram_2008000.easyChatPairs, sizeof(struct PlayerRecords), a); - sub_80B9C6C((u8 *)&ewram_2008000.filler10AC, sizeof(struct PlayerRecords), a, ewram_2008000.tvShows); + sub_80B9C6C((u8 *)&ewram_2008000.daycareMailRecord, sizeof(struct PlayerRecords), a, ewram_2008000.tvShows); sub_80B9B70(&ewram_2008000.battleTowerRecord, sizeof(struct PlayerRecords), a); sub_80B9F3C(ewram_2008000.filler11C8, a); } |