Match SetEnigmaBerry
This commit is contained in:
+17
-78
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user