Match SetEnigmaBerry

This commit is contained in:
PikalaxALT
2021-03-19 15:45:29 -04:00
parent 45f75213c0
commit b5d9fb3c7e
+17 -78
View File
@@ -3,10 +3,6 @@
#include "text.h"
#include "constants/items.h"
#if !defined(NONMATCHING) && MODERN
#define static
#endif
static const u8 sBerryDescriptionPart1_Cheri[] = _("とても かわいい はなが さく.");
static const u8 sBerryDescriptionPart2_Cheri[] = _("まっかな みは とても からい.");
static const u8 sBerryDescriptionPart1_Chesto[] = _("そとの かわの ぶぶんも なかみも すべてが");
@@ -943,90 +939,33 @@ void sub_809C794(void)
sub_809C718();
}
#ifdef NONMATCHING
struct ReceivedEnigmaBerry
{
struct Berry2 berry;
u8 unk_001C[0x4FA];
u8 itemEffect[18];
u8 holdEffect;
u8 holdEffectParam;
};
void SetEnigmaBerry(u8 * berry)
{
struct EnigmaBerry * enigmaBerry;
struct ReceivedEnigmaBerry * src2;
s32 i;
sub_809C794();
{
const struct Berry2 * src = (const struct Berry2 *)berry;
struct Berry2 * dest = &gSaveBlock1Ptr->enigmaBerry.berry;
*dest = *src;
}
src2 = (struct ReceivedEnigmaBerry *)berry;
enigmaBerry = &gSaveBlock1Ptr->enigmaBerry;
{
s32 i = 0;
u8 * dest = gSaveBlock1Ptr->enigmaBerry.itemEffect;
const u8 * src = berry + 0x516;
for (i = 0; i < 18; i++) dest[i] = src[i];
}
enigmaBerry->holdEffect = berry[0x528];
enigmaBerry->holdEffectParam = berry[0x529];
enigmaBerry->berry = src2->berry;
for (i = 0; i < 18; i++)
enigmaBerry->itemEffect[i] = src2->itemEffect[i];
enigmaBerry->holdEffect = src2->holdEffect;
enigmaBerry->holdEffectParam = src2->holdEffectParam;
enigmaBerry->checksum = GetEnigmaBerryChecksum(enigmaBerry);
}
#else
NAKED
void SetEnigmaBerry(u8 * berry)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tadds r4, r0, 0\n"
"\tbl sub_809C794\n"
"\tadds r5, r4, 0\n"
"\tldr r0, _0809C824 @ =gSaveBlock1Ptr\n"
"\tldr r2, [r0]\n"
"\tldr r0, _0809C828 @ =0x000030ec\n"
"\tadds r4, r2, r0\n"
"\tadds r1, r4, 0\n"
"\tadds r0, r5, 0\n"
"\tldm r0!, {r3,r6,r7}\n"
"\tstm r1!, {r3,r6,r7}\n"
"\tldm r0!, {r3,r6,r7}\n"
"\tstm r1!, {r3,r6,r7}\n"
"\tldr r0, [r0]\n"
"\tstr r0, [r1]\n"
"\tmovs r3, 0\n"
"\tldr r0, _0809C82C @ =0x00003108\n"
"\tadds r6, r2, r0\n"
"\tldr r1, _0809C830 @ =0x00000516\n"
"\tadds r2, r5, r1\n"
"_0809C7F0:\n"
"\tadds r0, r6, r3\n"
"\tadds r1, r2, r3\n"
"\tldrb r1, [r1]\n"
"\tstrb r1, [r0]\n"
"\tadds r3, 0x1\n"
"\tcmp r3, 0x11\n"
"\tble _0809C7F0\n"
"\tmovs r3, 0xA5\n"
"\tlsls r3, 3\n"
"\tadds r0, r5, r3\n"
"\tldrb r0, [r0]\n"
"\tadds r1, r4, 0\n"
"\tadds r1, 0x2E\n"
"\tstrb r0, [r1]\n"
"\tldr r6, _0809C834 @ =0x00000529\n"
"\tadds r0, r5, r6\n"
"\tldrb r0, [r0]\n"
"\tadds r1, 0x1\n"
"\tstrb r0, [r1]\n"
"\tadds r0, r4, 0\n"
"\tbl GetEnigmaBerryChecksum\n"
"\tstr r0, [r4, 0x30]\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_0809C824: .4byte gSaveBlock1Ptr\n"
"_0809C828: .4byte 0x000030ec\n"
"_0809C82C: .4byte 0x00003108\n"
"_0809C830: .4byte 0x00000516\n"
"_0809C834: .4byte 0x00000529");
}
#endif
u32 GetEnigmaBerryChecksum(struct EnigmaBerry * enigmaBerry)
{