summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-03-19 15:45:29 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-03-19 15:45:29 -0400
commitb5d9fb3c7ecf13f37bb0bbb8cf3a4f8bb8995c4a (patch)
treebeaf4064dff1f85ffb527ec2a079d772685d3a66 /src
parent45f75213c0599405ccaee8c9a453392a00fa470b (diff)
Match SetEnigmaBerry
Diffstat (limited to 'src')
-rw-r--r--src/berry.c97
1 files changed, 18 insertions, 79 deletions
diff --git a/src/berry.c b/src/berry.c
index d4ea0dae3..5a9264f54 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -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)
{