diff options
-rw-r--r-- | asm/mevent.s | 199 | ||||
-rw-r--r-- | src/mevent.c | 63 |
2 files changed, 63 insertions, 199 deletions
diff --git a/asm/mevent.s b/asm/mevent.s index d2f093a4b..3b5012fa7 100644 --- a/asm/mevent.s +++ b/asm/mevent.s @@ -5,205 +5,6 @@ .text - thumb_func_start sub_8143DC8 -sub_8143DC8: @ 8143DC8 - push {r4-r7,lr} - adds r7, r0, 0 - bl sub_8143E64 - cmp r0, 0 - beq _08143E14 - bl sub_8143E9C - ldr r4, _08143E08 @ =gSaveBlock1Ptr - ldr r0, [r4] - ldr r5, _08143E0C @ =0x00003124 - adds r0, r5 - movs r6, 0xDE - lsls r6, 1 - adds r1, r7, 0 - adds r2, r6, 0 - bl memcpy - ldr r0, [r4] - adds r0, r5 - adds r1, r6, 0 - bl CalcCRC16WithTable - ldr r1, [r4] - ldr r2, _08143E10 @ =0x00003120 - adds r1, r2 - lsls r0, 16 - lsrs r0, 16 - str r0, [r1] - movs r0, 0x1 - b _08143E16 - .align 2, 0 -_08143E08: .4byte gSaveBlock1Ptr -_08143E0C: .4byte 0x00003124 -_08143E10: .4byte 0x00003120 -_08143E14: - movs r0, 0 -_08143E16: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8143DC8 - - thumb_func_start sub_8143E1C -sub_8143E1C: @ 8143E1C - push {r4,lr} - ldr r4, _08143E50 @ =gSaveBlock1Ptr - ldr r0, [r4] - ldr r1, _08143E54 @ =0x00003124 - adds r0, r1 - movs r1, 0xDE - lsls r1, 1 - bl CalcCRC16WithTable - lsls r0, 16 - lsrs r0, 16 - ldr r4, [r4] - ldr r2, _08143E58 @ =0x00003120 - adds r1, r4, r2 - ldr r1, [r1] - cmp r0, r1 - bne _08143E5C - ldr r1, _08143E54 @ =0x00003124 - adds r0, r4, r1 - bl sub_8143E64 - cmp r0, 0 - beq _08143E5C - movs r0, 0x1 - b _08143E5E - .align 2, 0 -_08143E50: .4byte gSaveBlock1Ptr -_08143E54: .4byte 0x00003124 -_08143E58: .4byte 0x00003120 -_08143E5C: - movs r0, 0 -_08143E5E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8143E1C - - thumb_func_start sub_8143E64 -sub_8143E64: @ 8143E64 - push {lr} - ldrh r0, [r0] - cmp r0, 0 - beq _08143E70 - movs r0, 0x1 - b _08143E72 -_08143E70: - movs r0, 0 -_08143E72: - pop {r1} - bx r1 - thumb_func_end sub_8143E64 - - thumb_func_start sub_8143E78 -sub_8143E78: @ 8143E78 - push {lr} - ldr r0, _08143E8C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143E90 @ =0x00003124 - adds r0, r1 - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _08143E94 - movs r0, 0x1 - b _08143E96 - .align 2, 0 -_08143E8C: .4byte gSaveBlock1Ptr -_08143E90: .4byte 0x00003124 -_08143E94: - movs r0, 0 -_08143E96: - pop {r1} - bx r1 - thumb_func_end sub_8143E78 - - thumb_func_start sub_8143E9C -sub_8143E9C: @ 8143E9C - push {r4,lr} - sub sp, 0x4 - movs r4, 0 - str r4, [sp] - bl sub_8143D58 - adds r1, r0, 0 - ldr r2, _08143EC4 @ =0x0500006f - mov r0, sp - bl CpuSet - ldr r0, _08143EC8 @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143ECC @ =0x00003120 - adds r0, r1 - str r4, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08143EC4: .4byte 0x0500006f -_08143EC8: .4byte gSaveBlock1Ptr -_08143ECC: .4byte 0x00003120 - thumb_func_end sub_8143E9C - - thumb_func_start sub_8143ED0 -sub_8143ED0: @ 8143ED0 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_8143D94 - adds r1, r0, 0 - ldr r2, _08143EF0 @ =0x05000001 - mov r0, sp - bl CpuSet - bl sub_8146C88 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08143EF0: .4byte 0x05000001 - thumb_func_end sub_8143ED0 - - thumb_func_start sub_8143EF4 -sub_8143EF4: @ 8143EF4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _08143F0C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08143F10 @ =0x00003124 - adds r4, r0, r1 - bl sub_8143E1C - cmp r0, 0 - bne _08143F14 -_08143F08: - movs r0, 0 - b _08143F2C - .align 2, 0 -_08143F0C: .4byte gSaveBlock1Ptr -_08143F10: .4byte 0x00003124 -_08143F14: - movs r2, 0 - ldr r3, _08143F34 @ =0x000001bb -_08143F18: - adds r0, r4, r2 - adds r1, r5, r2 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bne _08143F08 - adds r2, 0x1 - cmp r2, r3 - bls _08143F18 - movs r0, 0x1 -_08143F2C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08143F34: .4byte 0x000001bb - thumb_func_end sub_8143EF4 - thumb_func_start sub_8143F38 sub_8143F38: @ 8143F38 push {lr} diff --git a/src/mevent.c b/src/mevent.c index c2a05f3c6..dd2891de0 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -9,6 +9,8 @@ #include "link.h" #include "link_rfu_4.h" #include "unk_815c27c.h" +#include "util.h" +#include "menews_jisan.h" struct MEvent_Str_1 { @@ -39,6 +41,7 @@ struct MEventTaskData1 }; void sub_8143910(u8 taskId); +bool32 sub_8143E64(const u16 * src); u8 sub_815D6B4(u8 *); bool32 sub_815D794(u8 *); void sub_81422FC(void); @@ -492,3 +495,63 @@ void sub_8143DBC(void) { sub_8143E9C(); } + +bool32 sub_8143DC8(const u16 * src) +{ + if (!sub_8143E64(src)) + return FALSE; + sub_8143E9C(); + memcpy(gSaveBlock1Ptr->unk_3120.buffer_000.data, src, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); + gSaveBlock1Ptr->unk_3120.buffer_000.crc = CalcCRC16WithTable((void *)gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); + return TRUE; +} + +bool32 sub_8143E1C(void) +{ + if (CalcCRC16WithTable((void *)gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc) + return FALSE; + if (!sub_8143E64(gSaveBlock1Ptr->unk_3120.buffer_000.data)) + return FALSE; + return TRUE; +} + +bool32 sub_8143E64(const u16 * data) +{ + if (data[0] == 0) + return FALSE; + return TRUE; +} + +bool32 sub_8143E78(void) +{ + u16 * data = gSaveBlock1Ptr->unk_3120.buffer_000.data; + if (*(u8 *)&data[1] == 0) + return FALSE; + return TRUE; +} + +void sub_8143E9C(void) +{ + CpuFill32(0, sub_8143D58(), sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); + gSaveBlock1Ptr->unk_3120.buffer_000.crc = 0; +} + +void sub_8143ED0(void) +{ + CpuFill32(0, sub_8143D94(), sizeof(struct MysteryEventStruct)); + sub_8146C88(); +} + +bool32 sub_8143EF4(const u8 * src) +{ + const u8 * r5 = (const u8 *)gSaveBlock1Ptr->unk_3120.buffer_000.data; + u32 i; + if (!sub_8143E1C()) + return FALSE; + for (i = 0; i < sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data); i++) + { + if (r5[i] != src[i]) + return FALSE; + } + return TRUE; +} |