diff options
-rw-r--r-- | asm/mevent.s | 259 | ||||
-rw-r--r-- | data/data_845FD54.s | 86 | ||||
-rw-r--r-- | data/data_8466FB8.s | 76 | ||||
-rw-r--r-- | include/global.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/mevent.c | 135 |
6 files changed, 215 insertions, 347 deletions
diff --git a/asm/mevent.s b/asm/mevent.s index 0e02d5b2b..819179c2b 100644 --- a/asm/mevent.s +++ b/asm/mevent.s @@ -5,265 +5,6 @@ .text - thumb_func_start sub_81444B0 -sub_81444B0: @ 81444B0 - push {lr} - adds r2, r0, 0 - cmp r1, 0x4 - bhi _081444FC - lsls r0, r1, 2 - ldr r1, _081444C4 @ =_081444C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081444C4: .4byte _081444C8 - .align 2, 0 -_081444C8: - .4byte _081444DC - .4byte _081444E0 - .4byte _081444E4 - .4byte _081444E8 - .4byte _081444F4 -_081444DC: - ldrh r0, [r2, 0x20] - b _0814450A -_081444E0: - ldrh r0, [r2, 0x22] - b _0814450A -_081444E4: - ldrh r0, [r2, 0x24] - b _0814450A -_081444E8: - adds r0, r2, 0 - bl sub_814449C - lsls r0, 16 - lsrs r0, 16 - b _0814450A -_081444F4: - adds r0, r2, 0 - adds r0, 0x44 - ldrb r0, [r0] - b _0814450A -_081444FC: - ldr r0, _08144510 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - ldr r1, _08144514 @ =0x00000339 - ldr r2, _08144518 @ =gUnknown_8466F5C "0" - movs r3, 0x1 - bl AGBAssert - movs r0, 0 -_0814450A: - pop {r1} - bx r1 - .align 2, 0 -_08144510: .4byte gUnknown_8466F28 -_08144514: .4byte 0x00000339 -_08144518: .4byte gUnknown_8466F5C - thumb_func_end sub_81444B0 - - thumb_func_start sub_814451C -sub_814451C: @ 814451C - push {r4,lr} - adds r4, r0, 0 - ldr r2, _08144544 @ =gSaveBlock1Ptr - ldr r0, [r2] - ldr r1, _08144548 @ =0x000032e4 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - adds r3, r2, 0 - cmp r0, 0x2 - bne _081445B6 - movs r2, 0 - cmp r4, 0x4 - bhi _08144582 - lsls r0, r4, 2 - ldr r1, _0814454C @ =_08144550 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08144544: .4byte gSaveBlock1Ptr -_08144548: .4byte 0x000032e4 -_0814454C: .4byte _08144550 - .align 2, 0 -_08144550: - .4byte _08144564 - .4byte _08144570 - .4byte _0814457C - .4byte _08144582 - .4byte _08144582 -_08144564: - ldr r0, [r3] - ldr r1, _0814456C @ =0x00003434 - b _08144580 - .align 2, 0 -_0814456C: .4byte 0x00003434 -_08144570: - ldr r0, [r3] - ldr r1, _08144578 @ =0x00003436 - b _08144580 - .align 2, 0 -_08144578: .4byte 0x00003436 -_0814457C: - ldr r0, [r3] - ldr r1, _08144598 @ =0x00003438 -_08144580: - adds r2, r0, r1 -_08144582: - cmp r2, 0 - bne _081445A4 - ldr r0, _0814459C @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - movs r1, 0xD9 - lsls r1, 2 - ldr r2, _081445A0 @ =gUnknown_8466F5C "0" - movs r3, 0x1 - bl AGBAssert - b _081445B6 - .align 2, 0 -_08144598: .4byte 0x00003438 -_0814459C: .4byte gUnknown_8466F28 -_081445A0: .4byte gUnknown_8466F5C -_081445A4: - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _081445BC @ =0x000003e7 - cmp r0, r1 - bls _081445B6 - strh r1, [r2] -_081445B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081445BC: .4byte 0x000003e7 - thumb_func_end sub_814451C - - thumb_func_start sub_81445C0 -sub_81445C0: @ 81445C0 - push {lr} - cmp r0, 0x4 - bhi _081446A4 - lsls r0, 2 - ldr r1, _081445D0 @ =_081445D4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081445D0: .4byte _081445D4 - .align 2, 0 -_081445D4: - .4byte _081445E8 - .4byte _08144610 - .4byte _08144638 - .4byte _08144660 - .4byte _08144684 -_081445E8: - ldr r0, _08144604 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _08144608 @ =0x000032e4 - adds r0, r2, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _081446A4 - ldr r1, _0814460C @ =0x00003434 - adds r0, r2, r1 - ldrh r0, [r0] - b _081446B2 - .align 2, 0 -_08144604: .4byte gSaveBlock1Ptr -_08144608: .4byte 0x000032e4 -_0814460C: .4byte 0x00003434 -_08144610: - ldr r0, _0814462C @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _08144630 @ =0x000032e4 - adds r0, r2, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _081446A4 - ldr r1, _08144634 @ =0x00003434 - adds r0, r2, r1 - ldrh r0, [r0, 0x2] - b _081446B2 - .align 2, 0 -_0814462C: .4byte gSaveBlock1Ptr -_08144630: .4byte 0x000032e4 -_08144634: .4byte 0x00003434 -_08144638: - ldr r0, _08144654 @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _08144658 @ =0x000032e4 - adds r0, r2, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _081446A4 - ldr r1, _0814465C @ =0x00003434 - adds r0, r2, r1 - ldrh r0, [r0, 0x4] - b _081446B2 - .align 2, 0 -_08144654: .4byte gSaveBlock1Ptr -_08144658: .4byte 0x000032e4 -_0814465C: .4byte 0x00003434 -_08144660: - ldr r0, _0814467C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _08144680 @ =0x000032e4 - adds r0, r1 - ldrb r1, [r0, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _081446A4 - bl sub_8144218 - lsls r0, 16 - lsrs r0, 16 - b _081446B2 - .align 2, 0 -_0814467C: .4byte gSaveBlock1Ptr -_08144680: .4byte 0x000032e4 -_08144684: - ldr r0, _0814469C @ =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, _081446A0 @ =0x000032e4 - adds r2, r0, r1 - ldrb r1, [r2, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _081446A4 - ldrb r0, [r2, 0x9] - b _081446B2 - .align 2, 0 -_0814469C: .4byte gSaveBlock1Ptr -_081446A0: .4byte 0x000032e4 -_081446A4: - ldr r0, _081446B8 @ =gUnknown_8466F28 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - ldr r1, _081446BC @ =0x00000391 - ldr r2, _081446C0 @ =gUnknown_8466F5C "0" - movs r3, 0x1 - bl AGBAssert - movs r0, 0 -_081446B2: - pop {r1} - bx r1 - .align 2, 0 -_081446B8: .4byte gUnknown_8466F28 -_081446BC: .4byte 0x00000391 -_081446C0: .4byte gUnknown_8466F5C - thumb_func_end sub_81445C0 - thumb_func_start sub_81446C4 sub_81446C4: @ 81446C4 ldr r1, _081446CC @ =gUnknown_203F3BC diff --git a/data/data_845FD54.s b/data/data_845FD54.s index d2b52192d..d05e14570 100644 --- a/data/data_845FD54.s +++ b/data/data_845FD54.s @@ -598,89 +598,3 @@ gUnknown_8466EE8:: @ 8466EE8 gUnknown_8466EF0:: @ 8466EF0 .incbin "baserom.gba", 0x466EF0, 0x10 - -gUnknown_8466F00:: @ 8466F00 - .incbin "baserom.gba", 0x466F00, 0x28 - - .align 2 -gUnknown_8466F28:: @ 8466F28 - .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c" - - .align 2 -gUnknown_8466F5C:: @ 8466F5C - .asciz "0" - - .align 2 -gUnknown_8466F60:: @ 8466F60 - .incbin "baserom.gba", 0x466F60, 0x20 - - .align 2 -gUnknown_8466F80:: @ 8466F80 - .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - - .align 2 -gUnknown_8466FB8:: @ 8466FB8 - .asciz "size <= ME_SEND_BUF_SIZE" - - .align 2 -gUnknown_8466FD4:: @ 8466FD4 - .asciz "cmd->parameter == NULL" - - .align 2 -gUnknown_8466FEC:: @ 8466FEC - .asciz "cmd->flag == FALSE" - - .align 2 -gUnknown_8467000:: @ 8467000 - .asciz "cmd->flag == FALSE && cmd->parameter == NULL" - - .align 2 -gUnknown_8467030:: @ 8467030 - .incbin "baserom.gba", 0x467030, 0x14 - - .align 2 -gUnknown_8467044:: @ 8467044 - .asciz "svr->mainseqno < NELEMS(func_tbl)" - - .align 2 -gUnknown_8467068:: @ 8467068 - .incbin "baserom.gba", 0x467068, 0x8 - -gUnknown_8467070:: @ 8467070 - .incbin "baserom.gba", 0x467070, 0x4 - -gUnknown_8467074:: @ 8467074 - .incbin "baserom.gba", 0x467074, 0xEE4 - -gUnknown_8467F58:: @ 8467F58 - .incbin "baserom.gba", 0x467F58, 0x8 - -gUnknown_8467F60:: @ 8467F60 - .incbin "baserom.gba", 0x467F60, 0x40 - -gUnknown_8467FA0:: @ 8467FA0 - .incbin "baserom.gba", 0x467FA0, 0x18 - -gUnknown_8467FB8:: @ 8467FB8 - .incbin "baserom.gba", 0x467FB8, 0x80 - -gUnknown_8468038:: @ 8468038 - .incbin "baserom.gba", 0x468038, 0x8 - -gUnknown_8468040:: @ 8468040 - .incbin "baserom.gba", 0x468040, 0x10 - -gUnknown_8468050:: @ 8468050 - .incbin "baserom.gba", 0x468050, 0x6D0 - -gUnknown_8468720:: @ 8468720 - .incbin "baserom.gba", 0x468720, 0xC0 - -gUnknown_84687E0:: @ 84687E0 - .incbin "baserom.gba", 0x4687E0, 0x38C - -gUnknown_8468B6C:: @ 8468B6C - .incbin "baserom.gba", 0x468B6C, 0x60 - -gUnknown_8468BCC:: @ 8468BCC - .incbin "baserom.gba", 0x468BCC, 0x90 diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s new file mode 100644 index 000000000..3f4fd49cd --- /dev/null +++ b/data/data_8466FB8.s @@ -0,0 +1,76 @@ + .section .rodata + + .align 2 +gUnknown_8466F60:: @ 8466F60 + .incbin "baserom.gba", 0x466F60, 0x20 + + .align 2 +gUnknown_8466F80:: @ 8466F80 + .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" + + .align 2 +gUnknown_8466FB8:: @ 8466FB8 + .asciz "size <= ME_SEND_BUF_SIZE" + + .align 2 +gUnknown_8466FD4:: @ 8466FD4 + .asciz "cmd->parameter == NULL" + + .align 2 +gUnknown_8466FEC:: @ 8466FEC + .asciz "cmd->flag == FALSE" + + .align 2 +gUnknown_8467000:: @ 8467000 + .asciz "cmd->flag == FALSE && cmd->parameter == NULL" + + .align 2 +gUnknown_8467030:: @ 8467030 + .incbin "baserom.gba", 0x467030, 0x14 + + .align 2 +gUnknown_8467044:: @ 8467044 + .asciz "svr->mainseqno < NELEMS(func_tbl)" + + .align 2 +gUnknown_8467068:: @ 8467068 + .incbin "baserom.gba", 0x467068, 0x8 + +gUnknown_8467070:: @ 8467070 + .incbin "baserom.gba", 0x467070, 0x4 + +gUnknown_8467074:: @ 8467074 + .incbin "baserom.gba", 0x467074, 0xEE4 + +gUnknown_8467F58:: @ 8467F58 + .incbin "baserom.gba", 0x467F58, 0x8 + +gUnknown_8467F60:: @ 8467F60 + .incbin "baserom.gba", 0x467F60, 0x40 + +gUnknown_8467FA0:: @ 8467FA0 + .incbin "baserom.gba", 0x467FA0, 0x18 + +gUnknown_8467FB8:: @ 8467FB8 + .incbin "baserom.gba", 0x467FB8, 0x80 + +gUnknown_8468038:: @ 8468038 + .incbin "baserom.gba", 0x468038, 0x8 + +gUnknown_8468040:: @ 8468040 + .incbin "baserom.gba", 0x468040, 0x10 + +gUnknown_8468050:: @ 8468050 + .incbin "baserom.gba", 0x468050, 0x6D0 + +gUnknown_8468720:: @ 8468720 + .incbin "baserom.gba", 0x468720, 0xC0 + +gUnknown_84687E0:: @ 84687E0 + .incbin "baserom.gba", 0x4687E0, 0x38C + +gUnknown_8468B6C:: @ 8468B6C + .incbin "baserom.gba", 0x468B6C, 0x60 + +gUnknown_8468BCC:: @ 8468BCC + .incbin "baserom.gba", 0x468BCC, 0x90 diff --git a/include/global.h b/include/global.h index 04f89802c..92e6b7da1 100644 --- a/include/global.h +++ b/include/global.h @@ -626,7 +626,9 @@ struct MEventBuffer_32E0 struct MEventBuffer_3430_Sub { - u8 filler_00[6]; + u16 unk_00; + u16 unk_02; + u16 unk_04; u16 unk_06; u16 unk_08[2][7]; }; diff --git a/ld_script.txt b/ld_script.txt index bef37772a..91bd070af 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -379,6 +379,8 @@ SECTIONS { data/data_83FECCC.o(.rodata.8456C74); src/fame_checker.o(.rodata); data/data_845FD54.o(.rodata); + src/mevent.o(.rodata); + data/data_8466FB8.o(.rodata); src/menews_jisan.o(.rodata); src/menews_jisan.o(.rodata.str1.4); data/data_8468C98.o(.rodata); diff --git a/src/mevent.c b/src/mevent.c index d24219f49..bf2d2c1a5 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -76,7 +76,28 @@ extern const u8 gUnknown_841DE9C[]; extern const u8 gUnknownSerialData_Start[]; extern const u8 gUnknownSerialData_End[]; -extern const u16 gUnknown_8466F00[]; +const u16 gUnknown_8466F00[] = { + 0x02a7, + 0x02a8, + 0x02a9, + 0x02aa, + 0x02ab, + 0x02ac, + 0x02ad, + 0x02ae, + 0x02af, + 0x02b0, + 0x02b1, + 0x02b2, + 0x02b3, + 0x02b4, + 0x02b5, + 0x02b6, + 0x02b7, + 0x02b8, + 0x02b9, + 0x02ba +}; struct MEvent_Str_1 gUnknown_3005ED0; @@ -817,3 +838,115 @@ s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0) { return sub_8144184(&a0->unk_20, a0->unk_44); } + +//TODO: Remove these later +const char ALIGNED(4) gUnknown_8466F28[] = "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"; +const char ALIGNED(4) gUnknown_8466F5C[] = "0"; + +u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command) +{ + switch (command) + { + case 0: + return a0->unk_20.unk_00; + case 1: + return a0->unk_20.unk_02; + case 2: + return a0->unk_20.unk_04; + case 3: + return sub_814449C(a0); + case 4: + return a0->unk_44; + default: + AGBAssert(gUnknown_8466F28, 825, gUnknown_8466F5C, 1); + // AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 825); + return 0; + } +} + +void sub_814451C(u32 command) +{ + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + u16 * dest = NULL; + switch (command) + { + case 0: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_00; + break; + case 1: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_02; + break; + case 2: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_04; + break; + case 3: + break; + case 4: + break; + } + if (dest == NULL) + { + AGBAssert(gUnknown_8466F28, 868, gUnknown_8466F5C, 1); + // AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 868); + } + else if (++(*dest) > 999) + { + *dest = 999; + } + } +} + +u16 sub_81445C0(u32 command) +{ + switch (command) + { + case 0: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_00; + } + break; + } + case 1: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_02; + } + break; + } + case 2: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_04; + } + break; + } + case 3: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 1) + return sub_8144218(); + break; + } + case 4: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 1) + return data->unk_09; + break; + } + } + AGBAssert(gUnknown_8466F28, 913, gUnknown_8466F5C, 1); + return 0; +} |