summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-07-26 08:51:15 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-07-26 09:52:22 -0500
commit016e0e6da31b8a8f7d2f30a48127721ed6187b19 (patch)
tree779b836a7c9353167a205d186be2cfcdf649264d /src
parent7f9c6df3744d40ab1a10ea7a1558ef56dc9d1ae1 (diff)
Fix nonmatching DaycareMonReceivedMail_()
Diffstat (limited to 'src')
-rw-r--r--src/egg_hatch.c96
-rw-r--r--src/record_mixing.c18
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);
}