summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/mevent.s245
-rw-r--r--include/global.h2
-rw-r--r--src/mevent.c86
3 files changed, 88 insertions, 245 deletions
diff --git a/asm/mevent.s b/asm/mevent.s
index 53b7226de..19c6248ae 100644
--- a/asm/mevent.s
+++ b/asm/mevent.s
@@ -5,251 +5,8 @@
.text
- thumb_func_start sub_81440B4
-sub_81440B4: @ 81440B4
- push {r4,lr}
- sub sp, 0x4
- movs r4, 0
- str r4, [sp]
- bl sav1_get_mevent_buffer_2
- adds r1, r0, 0
- ldr r2, _081440DC @ =0x05000009
- mov r0, sp
- bl CpuSet
- ldr r0, _081440E0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _081440E4 @ =0x00003430
- adds r0, r1
- str r4, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081440DC: .4byte 0x05000009
-_081440E0: .4byte gSaveBlock1Ptr
-_081440E4: .4byte 0x00003430
- thumb_func_end sub_81440B4
-
- thumb_func_start sub_81440E8
-sub_81440E8: @ 81440E8
- push {lr}
- bl sub_8143FC8
- cmp r0, 0
- bne _081440F6
- movs r0, 0
- b _08144100
-_081440F6:
- ldr r0, _08144104 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08144108 @ =0x000032e4
- adds r0, r1
- ldrh r0, [r0]
-_08144100:
- pop {r1}
- bx r1
- .align 2, 0
-_08144104: .4byte gSaveBlock1Ptr
-_08144108: .4byte 0x000032e4
- thumb_func_end sub_81440E8
-
- thumb_func_start sub_814410C
-sub_814410C: @ 814410C
- push {lr}
- adds r2, r0, 0
- ldrb r1, [r2, 0x8]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0x40
- bne _08144120
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x8]
-_08144120:
- pop {r0}
- bx r0
- thumb_func_end sub_814410C
-
- thumb_func_start sub_8144124
-sub_8144124: @ 8144124
- push {lr}
- lsls r0, 16
- ldr r1, _08144138 @ =0xfc180000
- adds r0, r1
- lsrs r0, 16
- cmp r0, 0x13
- bls _0814413C
- movs r0, 0
- b _0814413E
- .align 2, 0
-_08144138: .4byte 0xfc180000
-_0814413C:
- movs r0, 0x1
-_0814413E:
- pop {r1}
- bx r1
- thumb_func_end sub_8144124
-
- thumb_func_start sub_8144144
-sub_8144144: @ 8144144
- push {r4,lr}
- bl sub_81440E8
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_8144124
- cmp r0, 0
- beq _0814417C
- ldr r1, _08144174 @ =gUnknown_8466F00
- ldr r2, _08144178 @ =0xfffffc18
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0814417C
- movs r0, 0x1
- b _0814417E
- .align 2, 0
-_08144174: .4byte gUnknown_8466F00
-_08144178: .4byte 0xfffffc18
-_0814417C:
- movs r0, 0
-_0814417E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144144
-
- thumb_func_start sub_8144184
-sub_8144184: @ 8144184
- push {lr}
- movs r3, 0
- cmp r3, r1
- bge _081441A6
- adds r2, r0, 0
- adds r2, 0x8
-_08144190:
- ldrh r0, [r2, 0xE]
- cmp r0, 0
- beq _0814419E
- ldrh r0, [r2]
- cmp r0, 0
- beq _0814419E
- adds r3, 0x1
-_0814419E:
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _08144190
-_081441A6:
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8144184
-
- thumb_func_start sub_81441AC
-sub_81441AC: @ 81441AC
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r1, 0
- cmp r1, r2
- bge _081441E6
- ldrh r6, [r4, 0x2]
- movs r0, 0x16
- adds r0, r5
- mov r12, r0
-_081441C0:
- lsls r3, r1, 1
- mov r7, r12
- ldrh r0, [r7]
- cmp r0, r6
- beq _081441D8
- adds r0, r5, 0
- adds r0, 0x8
- adds r0, r3
- ldrh r0, [r0]
- ldrh r3, [r4]
- cmp r0, r3
- bne _081441DC
-_081441D8:
- movs r0, 0x1
- b _081441E8
-_081441DC:
- movs r7, 0x2
- add r12, r7
- adds r1, 0x1
- cmp r1, r2
- blt _081441C0
-_081441E6:
- movs r0, 0
-_081441E8:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81441AC
-
- thumb_func_start sub_81441F0
-sub_81441F0: @ 81441F0
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- beq _08144210
- ldrh r1, [r1]
- cmp r1, 0
- beq _08144210
- ldr r0, _0814420C @ =0x0000019b
- cmp r1, r0
- bhi _08144210
- movs r0, 0x1
- b _08144212
- .align 2, 0
-_0814420C: .4byte 0x0000019b
-_08144210:
- movs r0, 0
-_08144212:
- pop {r1}
- bx r1
- thumb_func_end sub_81441F0
-
- thumb_func_start sub_8144218
-sub_8144218: @ 8144218
- push {lr}
- bl sub_8143FC8
- cmp r0, 0
- beq _0814424C
- ldr r0, _08144240 @ =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r0, _08144244 @ =0x000032e4
- adds r2, r3, r0
- ldrb r1, [r2, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0814424C
- ldr r1, _08144248 @ =0x00003434
- adds r0, r3, r1
- ldrb r1, [r2, 0x9]
- bl sub_8144184
- b _0814424E
- .align 2, 0
-_08144240: .4byte gSaveBlock1Ptr
-_08144244: .4byte 0x000032e4
-_08144248: .4byte 0x00003434
-_0814424C:
- movs r0, 0
-_0814424E:
- pop {r1}
- bx r1
- thumb_func_end sub_8144218
-
thumb_func_start sub_8144254
-sub_8144254: @ 8144254
+sub_8144254: @ 8144254sub_81441F0
push {r4-r6,lr}
adds r5, r0, 0
ldr r6, _08144280 @ =gSaveBlock1Ptr
diff --git a/include/global.h b/include/global.h
index df2926d0b..04f89802c 100644
--- a/include/global.h
+++ b/include/global.h
@@ -628,7 +628,7 @@ struct MEventBuffer_3430_Sub
{
u8 filler_00[6];
u16 unk_06;
- u8 filler_08[28];
+ u16 unk_08[2][7];
};
struct MEventBuffer_3430
diff --git a/src/mevent.c b/src/mevent.c
index f61f7b7a2..5d45a0243 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "constants/songs.h"
+#include "constants/species.h"
#include "malloc.h"
#include "sound.h"
#include "easy_chat.h"
@@ -72,6 +73,8 @@ extern const u8 gUnknown_841DE9C[];
extern const u8 gUnknownSerialData_Start[];
extern const u8 gUnknownSerialData_End[];
+extern const u16 gUnknown_8466F00[];
+
struct MEvent_Str_1 gUnknown_3005ED0;
void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2)
@@ -628,3 +631,86 @@ void sub_814407C(void)
CpuFill32(0, &gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = 0;
}
+
+void sub_81440B4(void)
+{
+ CpuFill32(0, sav1_get_mevent_buffer_2(), 18 * sizeof(u16));
+ gSaveBlock1Ptr->unk_3120.buffer_310.crc = 0;
+}
+
+u16 sub_81440E8(void)
+{
+ if (sub_8143FC8())
+ return gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00;
+ return 0;
+}
+
+void sub_814410C(struct MEventBuffer_32E0_Sub * buffer)
+{
+ if (buffer->unk_08_6 == 1)
+ buffer->unk_08_6 = 0;
+}
+
+bool32 sub_8144124(u16 a0)
+{
+ if (a0 >= 1000 && a0 < 1020)
+ return TRUE;
+ return FALSE;
+}
+
+bool32 sub_8144144(void)
+{
+ u16 value = sub_81440E8();
+ if (!sub_8144124(value))
+ return FALSE;
+ if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE)
+ return FALSE;
+ return TRUE;
+}
+
+s32 sub_8144184(const struct MEventBuffer_3430_Sub * data, s32 size)
+{
+ s32 r3 = 0;
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ if (data->unk_08[1][i] && data->unk_08[0][i])
+ r3++;
+ }
+ return r3;
+}
+
+bool32 sub_81441AC(const struct MEventBuffer_3430_Sub * data1, const u16 * data2, s32 size)
+{
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ if (data1->unk_08[1][i] == data2[1])
+ return TRUE;
+ if (data1->unk_08[0][i] == data2[0])
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_81441F0(const u16 * data)
+{
+ if (data[1] == 0)
+ return FALSE;
+ if (data[0] == 0)
+ return FALSE;
+ if (data[0] >= NUM_SPECIES)
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_8144218(void)
+{
+ struct MEventBuffer_32E0_Sub * data;
+ if (!sub_8143FC8())
+ return FALSE;
+ data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ if (data->unk_08_0 != 1)
+ return FALSE;
+ return sub_8144184(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data->unk_09);
+}