From dc34cf1711d661d7de6ab23ac91702c16c2c2b57 Mon Sep 17 00:00:00 2001 From: PokeCodec <67983839+PokeCodec@users.noreply.github.com> Date: Wed, 9 Sep 2020 15:09:40 -0400 Subject: Mail Time --- src/record_mixing.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/record_mixing.c') diff --git a/src/record_mixing.c b/src/record_mixing.c index 6c0a02d8c..88c49c016 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -713,17 +713,18 @@ static u8 sub_80E7A9C(struct DayCareMail *rmMail) return rmMail->message.itemId; } -static void sub_80E7AA4(struct RecordMixingDayCareMail *src, size_t recordSize, u8 (*idxs)[2], u8 which0, u8 which1) +static void ExchangeMail(struct RecordMixingDayCareMail *src, size_t recordSize, u8 (*idxs)[2], u8 which0, u8 which1) { struct DayCareMail buffer; struct RecordMixingDayCareMail *mail1; struct RecordMixingDayCareMail *mail2; mail1 = (void *)src + recordSize * idxs[which0][0]; - memcpy(&buffer, &mail1->mail[idxs[which0][1]], sizeof(struct DayCareMail)); + buffer = mail1->mail[idxs[which0][1]]; + mail2 = (void *)src + recordSize * idxs[which1][0]; - memcpy(&mail1->mail[idxs[which0][1]], &mail2->mail[idxs[which1][1]], sizeof(struct DayCareMail)); - memcpy(&mail2->mail[idxs[which1][1]], &buffer, sizeof(struct DayCareMail)); + mail1->mail[idxs[which0][1]] = mail2->mail[idxs[which1][1]]; + mail2->mail[idxs[which1][1]] = buffer; } static void sub_80E7B2C(const u8 *src) @@ -901,21 +902,21 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r switch (sp34) { case 2: - sub_80E7AA4(src, recordSize, sp24, 0, 1); + ExchangeMail(src, recordSize, sp24, 0, 1); break; case 3: which0 = gUnknown_0858CFB8[tableId][0]; which1 = gUnknown_0858CFB8[tableId][1]; - sub_80E7AA4(src, recordSize, sp24, which0, which1); + ExchangeMail(src, recordSize, sp24, which0, which1); break; case 4: ptr = sp24; which0 = gUnknown_0858CFBE[tableId][0]; which1 = gUnknown_0858CFBE[tableId][1]; - sub_80E7AA4(src, recordSize, ptr, which0, which1); + ExchangeMail(src, recordSize, ptr, which0, which1); which0 = gUnknown_0858CFBE[tableId][2]; which1 = gUnknown_0858CFBE[tableId][3]; - sub_80E7AA4(src, recordSize, ptr, which0, which1); + ExchangeMail(src, recordSize, ptr, which0, which1); break; } -- cgit v1.2.3 From 84a92279c9133dfba085af05a0f2b6cce461d765 Mon Sep 17 00:00:00 2001 From: PokeCodec <67983839+PokeCodec@users.noreply.github.com> Date: Wed, 9 Sep 2020 15:23:52 -0400 Subject: Record mixing fakematch fixed! --- src/record_mixing.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) (limited to 'src/record_mixing.c') diff --git a/src/record_mixing.c b/src/record_mixing.c index 88c49c016..b12b71697 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -866,27 +866,22 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r } else if (sp1c[i][0] == TRUE && sp1c[i][1] == TRUE) { - u32 var1, var2; + u8 mail1, mail2; sp24[j][0] = i; - var1 = sub_80E7A9C(&_src->mail[0]); - var2 = sub_80E7A9C(&_src->mail[1]); - if (!var1 && var2) + mail1 = sub_80E7A9C(&_src->mail[0]); + mail2 = sub_80E7A9C(&_src->mail[1]); + if (!(mail1 || mail2) || (mail1 && mail2)) //Logical (not bitwise) XOR. Should be ((mail1 || mail2) && !(mail1 && mail2)), but that doesn't match. { - #ifndef NONMATCHING - register u8 one asm("r0") = 1; // boo, a fakematch - sp24[j][1] = one; - #else - sp24[j][1] = 1; - #endif + sp24[j][1] = Random2() % 2; } - else if ((var1 && var2) || (!var1 && !var2)) + else if (mail1 && !mail2) { - sp24[j][1] = Random2() % 2; + sp24[j][1] = 0; } - else if (var1 && !var2) + else if (!mail1 && mail2) { - sp24[j][1] = 0; + sp24[j][1] = 1; } j++; } @@ -921,8 +916,8 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r } _src = (void *)src + which * recordSize; - memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &_src->mail[0], sizeof(struct DayCareMail)); - memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &_src->mail[1], sizeof(struct DayCareMail)); + gSaveBlock1Ptr->daycare.mons[0].mail = _src->mail[0]; + gSaveBlock1Ptr->daycare.mons[1].mail = _src->mail[1]; SeedRng(oldSeed); } -- cgit v1.2.3 From 7dc95a0103af08c95c9093b6efa6c77af77a2538 Mon Sep 17 00:00:00 2001 From: aaaaaa123456789 Date: Sun, 13 Sep 2020 04:22:50 -0300 Subject: Undo PokeCodec's PRs This commit undoes most of PokeCodec's PRs after the debate in chat. Some harmless or completely superseded PRs have been left alone, as there is not much benefit in attempting to undo them. Reverts #1104, #1108, #1115, #1118, #1119, #1124, #1126, #1127, #1132, #1136, #1137, #1139, #1140, #1144, #1148, #1149, #1150, #1153, #1155, #1177, #1179, #1180, #1181, #1182 and #1183. --- src/record_mixing.c | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) (limited to 'src/record_mixing.c') diff --git a/src/record_mixing.c b/src/record_mixing.c index b12b71697..6c0a02d8c 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -713,18 +713,17 @@ static u8 sub_80E7A9C(struct DayCareMail *rmMail) return rmMail->message.itemId; } -static void ExchangeMail(struct RecordMixingDayCareMail *src, size_t recordSize, u8 (*idxs)[2], u8 which0, u8 which1) +static void sub_80E7AA4(struct RecordMixingDayCareMail *src, size_t recordSize, u8 (*idxs)[2], u8 which0, u8 which1) { struct DayCareMail buffer; struct RecordMixingDayCareMail *mail1; struct RecordMixingDayCareMail *mail2; mail1 = (void *)src + recordSize * idxs[which0][0]; - buffer = mail1->mail[idxs[which0][1]]; - + memcpy(&buffer, &mail1->mail[idxs[which0][1]], sizeof(struct DayCareMail)); mail2 = (void *)src + recordSize * idxs[which1][0]; - mail1->mail[idxs[which0][1]] = mail2->mail[idxs[which1][1]]; - mail2->mail[idxs[which1][1]] = buffer; + memcpy(&mail1->mail[idxs[which0][1]], &mail2->mail[idxs[which1][1]], sizeof(struct DayCareMail)); + memcpy(&mail2->mail[idxs[which1][1]], &buffer, sizeof(struct DayCareMail)); } static void sub_80E7B2C(const u8 *src) @@ -866,22 +865,27 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r } else if (sp1c[i][0] == TRUE && sp1c[i][1] == TRUE) { - u8 mail1, mail2; + u32 var1, var2; sp24[j][0] = i; - mail1 = sub_80E7A9C(&_src->mail[0]); - mail2 = sub_80E7A9C(&_src->mail[1]); - if (!(mail1 || mail2) || (mail1 && mail2)) //Logical (not bitwise) XOR. Should be ((mail1 || mail2) && !(mail1 && mail2)), but that doesn't match. + var1 = sub_80E7A9C(&_src->mail[0]); + var2 = sub_80E7A9C(&_src->mail[1]); + if (!var1 && var2) { - sp24[j][1] = Random2() % 2; + #ifndef NONMATCHING + register u8 one asm("r0") = 1; // boo, a fakematch + sp24[j][1] = one; + #else + sp24[j][1] = 1; + #endif } - else if (mail1 && !mail2) + else if ((var1 && var2) || (!var1 && !var2)) { - sp24[j][1] = 0; + sp24[j][1] = Random2() % 2; } - else if (!mail1 && mail2) + else if (var1 && !var2) { - sp24[j][1] = 1; + sp24[j][1] = 0; } j++; } @@ -897,27 +901,27 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r switch (sp34) { case 2: - ExchangeMail(src, recordSize, sp24, 0, 1); + sub_80E7AA4(src, recordSize, sp24, 0, 1); break; case 3: which0 = gUnknown_0858CFB8[tableId][0]; which1 = gUnknown_0858CFB8[tableId][1]; - ExchangeMail(src, recordSize, sp24, which0, which1); + sub_80E7AA4(src, recordSize, sp24, which0, which1); break; case 4: ptr = sp24; which0 = gUnknown_0858CFBE[tableId][0]; which1 = gUnknown_0858CFBE[tableId][1]; - ExchangeMail(src, recordSize, ptr, which0, which1); + sub_80E7AA4(src, recordSize, ptr, which0, which1); which0 = gUnknown_0858CFBE[tableId][2]; which1 = gUnknown_0858CFBE[tableId][3]; - ExchangeMail(src, recordSize, ptr, which0, which1); + sub_80E7AA4(src, recordSize, ptr, which0, which1); break; } _src = (void *)src + which * recordSize; - gSaveBlock1Ptr->daycare.mons[0].mail = _src->mail[0]; - gSaveBlock1Ptr->daycare.mons[1].mail = _src->mail[1]; + memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &_src->mail[0], sizeof(struct DayCareMail)); + memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &_src->mail[1], sizeof(struct DayCareMail)); SeedRng(oldSeed); } -- cgit v1.2.3 From 52598983250fd8ad7b66ff2b9d77046859f169c8 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 1 Oct 2020 17:20:38 -0400 Subject: Replace POKEMON_SLOTS_NUMBER --- src/record_mixing.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/record_mixing.c') diff --git a/src/record_mixing.c b/src/record_mixing.c index b12b71697..344c535a4 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -5,7 +5,6 @@ #include "text.h" #include "item.h" #include "task.h" -#include "constants/species.h" #include "save.h" #include "load_save.h" #include "pokemon.h" -- cgit v1.2.3 From af0a1cb7bf71b8d27cc33db4ddca040ad1e8eb35 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Mon, 26 Oct 2020 00:10:30 -0400 Subject: port ReceiveDaycareMailData fakematch fix --- src/record_mixing.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'src/record_mixing.c') diff --git a/src/record_mixing.c b/src/record_mixing.c index 6c0a02d8c..7bb3df807 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -870,23 +870,18 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r sp24[j][0] = i; var1 = sub_80E7A9C(&_src->mail[0]); var2 = sub_80E7A9C(&_src->mail[1]); - if (!var1 && var2) + if (!(var1 || var2) || (var1 && var2)) { - #ifndef NONMATCHING - register u8 one asm("r0") = 1; // boo, a fakematch - sp24[j][1] = one; - #else - sp24[j][1] = 1; - #endif - } - else if ((var1 && var2) || (!var1 && !var2)) - { - sp24[j][1] = Random2() % 2; + sp24[j][1] = Random2() % 2; } else if (var1 && !var2) { sp24[j][1] = 0; } + else if (!var1 && var2) + { + sp24[j][1] = 1; + } j++; } } -- cgit v1.2.3