diff options
-rw-r--r-- | asm/mevent.s | 245 | ||||
-rw-r--r-- | include/global.h | 2 | ||||
-rw-r--r-- | src/mevent.c | 86 |
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); +} |