diff options
-rw-r--r-- | asm/mevent_server.s | 740 | ||||
-rw-r--r-- | data/data_8466FB8.s | 12 | ||||
-rw-r--r-- | include/mevent.h | 9 | ||||
-rw-r--r-- | include/script.h | 1 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/mevent.c | 4 | ||||
-rw-r--r-- | src/mevent_server.c | 241 | ||||
-rw-r--r-- | src/mevent_server_ish.c | 43 |
8 files changed, 257 insertions, 794 deletions
diff --git a/asm/mevent_server.s b/asm/mevent_server.s deleted file mode 100644 index 1bcc5deed..000000000 --- a/asm/mevent_server.s +++ /dev/null @@ -1,740 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_814505C -sub_814505C: @ 814505C - push {lr} - cmp r0, 0 - bne _08145064 - adds r0, r1, 0 -_08145064: - pop {r1} - bx r1 - thumb_func_end sub_814505C - - thumb_func_start sub_8145068 -sub_8145068: @ 8145068 - push {lr} - cmp r1, r0 - bcs _08145072 - movs r0, 0 - b _0814507C -_08145072: - cmp r1, r0 - beq _0814507A - movs r0, 0x2 - b _0814507C -_0814507A: - movs r0, 0x1 -_0814507C: - pop {r1} - bx r1 - thumb_func_end sub_8145068 - - thumb_func_start sub_8145080 -sub_8145080: @ 8145080 - movs r1, 0x4 - str r1, [r0, 0x8] - movs r0, 0 - bx lr - thumb_func_end sub_8145080 - - thumb_func_start sub_8145088 -sub_8145088: @ 8145088 - movs r0, 0x3 - bx lr - thumb_func_end sub_8145088 - - thumb_func_start sub_814508C -sub_814508C: @ 814508C - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x38 - bl sub_8144844 - cmp r0, 0 - beq _0814509E - movs r0, 0x4 - str r0, [r4, 0x8] -_0814509E: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_814508C - - thumb_func_start sub_81450A8 -sub_81450A8: @ 81450A8 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x38 - bl sub_8144850 - cmp r0, 0 - beq _081450BA - movs r0, 0x4 - str r0, [r4, 0x8] -_081450BA: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81450A8 - - thumb_func_start sub_81450C4 -sub_81450C4: @ 81450C4 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, [r5, 0xC] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, [r5, 0x10] - adds r4, r2, r1 - adds r0, 0x1 - str r0, [r5, 0xC] - ldr r0, [r4] - cmp r0, 0x1D - bls _081450E0 - b _081455F8 -_081450E0: - lsls r0, 2 - ldr r1, _081450EC @ =_081450F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081450EC: .4byte _081450F0 - .align 2, 0 -_081450F0: - .4byte _08145168 - .4byte _08145190 - .4byte _08145196 - .4byte _081451C4 - .4byte _08145268 - .4byte _081451E4 - .4byte _08145228 - .4byte _0814527C - .4byte _081452AC - .4byte _081452EC - .4byte _08145320 - .4byte _08145350 - .4byte _08145378 - .4byte _081453D8 - .4byte _081453A4 - .4byte _08145440 - .4byte _0814540C - .4byte _081454AA - .4byte _08145458 - .4byte _08145470 - .4byte _0814549C - .4byte _08145510 - .4byte _081454B8 - .4byte _081454E4 - .4byte _08145538 - .4byte _08145542 - .4byte _0814554C - .4byte _08145588 - .4byte _081455C0 - .4byte _081455EC -_08145168: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _0814517C - ldr r0, _08145188 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xB1 - lsls r1, 1 - ldr r2, _0814518C @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_0814517C: - movs r0, 0x1 - str r0, [r5, 0x8] - ldr r0, [r4, 0x4] - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145188: .4byte gUnknown_8466F80 -_0814518C: .4byte gUnknown_8466FD4 -_08145190: - movs r0, 0x3 - str r0, [r5, 0x8] - b _081455F8 -_08145196: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _081451AA - ldr r0, _081451BC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xB6 - lsls r1, 1 - ldr r2, _081451C0 @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_081451AA: - adds r0, r5, 0 - adds r0, 0x38 - ldr r1, [r4, 0x4] - ldr r2, [r5, 0x14] - bl sub_81448AC - movs r0, 0x2 - str r0, [r5, 0x8] - b _081455F8 - .align 2, 0 -_081451BC: .4byte gUnknown_8466F80 -_081451C0: .4byte gUnknown_8466FD4 -_081451C4: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145272 - ldr r0, _081451DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xB9 - lsls r1, 1 - ldr r2, _081451E0 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert - b _08145272 - .align 2, 0 -_081451DC: .4byte gUnknown_8466F80 -_081451E0: .4byte gUnknown_8466FEC -_081451E4: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081451F8 - ldr r0, _08145218 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xBC - lsls r1, 1 - ldr r2, _0814521C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081451F8: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _0814520A - ldr r0, _08145218 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145220 @ =0x00000179 - ldr r2, _08145224 @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_0814520A: - ldr r0, [r5, 0x20] - ldr r1, [r5, 0x14] - movs r2, 0x64 - bl memcpy - b _081455F8 - .align 2, 0 -_08145218: .4byte gUnknown_8466F80 -_0814521C: .4byte gUnknown_8466FEC -_08145220: .4byte 0x00000179 -_08145224: .4byte gUnknown_8466FD4 -_08145228: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _0814523C - ldr r0, _08145258 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xBF - lsls r1, 1 - ldr r2, _0814525C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_0814523C: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _0814524E - ldr r0, _08145258 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145260 @ =0x0000017f - ldr r2, _08145264 @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_0814524E: - ldr r0, [r5, 0x20] - bl sub_81443D4 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145258: .4byte gUnknown_8466F80 -_0814525C: .4byte gUnknown_8466FEC -_08145260: .4byte 0x0000017f -_08145264: .4byte gUnknown_8466FD4 -_08145268: - ldr r1, [r5, 0x4] - ldr r0, [r4, 0x4] - cmp r1, r0 - beq _08145272 - b _081455F8 -_08145272: - movs r0, 0 - str r0, [r5, 0xC] - ldr r0, [r4, 0x8] - str r0, [r5, 0x10] - b _081455F8 -_0814527C: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145290 - ldr r0, _081452A4 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xC6 - lsls r1, 1 - ldr r2, _081452A8 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145290: - ldr r0, [r4, 0x8] - ldr r1, [r5, 0x18] - bl sub_814505C - adds r2, r0, 0 - ldr r1, [r5, 0x20] - bl sub_8144418 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_081452A4: .4byte gUnknown_8466F80 -_081452A8: .4byte gUnknown_8466FEC -_081452AC: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081452C0 - ldr r0, _081452DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xC9 - lsls r1, 1 - ldr r2, _081452E0 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081452C0: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _081452D2 - ldr r0, _081452DC @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _081452E4 @ =0x00000193 - ldr r2, _081452E8 @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_081452D2: - ldr r0, [r5, 0x14] - ldr r0, [r0] - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_081452DC: .4byte gUnknown_8466F80 -_081452E0: .4byte gUnknown_8466FEC -_081452E4: .4byte 0x00000193 -_081452E8: .4byte gUnknown_8466FD4 -_081452EC: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145300 - ldr r0, _08145318 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xCC - lsls r1, 1 - ldr r2, _0814531C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145300: - ldr r0, [r4, 0x8] - adds r1, r5, 0 - adds r1, 0x34 - bl sub_814505C - adds r2, r0, 0 - ldr r1, [r5, 0x20] - bl sub_8144434 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145318: .4byte gUnknown_8466F80 -_0814531C: .4byte gUnknown_8466FEC -_08145320: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _08145332 - ldr r0, _08145344 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145348 @ =0x0000019f - ldr r2, _0814534C @ =gUnknown_8466FD4 "cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_08145332: - ldr r0, [r5, 0x20] - ldr r1, [r4, 0x4] - bl sub_81444B0 - lsls r0, 16 - lsrs r0, 16 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145344: .4byte gUnknown_8466F80 -_08145348: .4byte 0x0000019f -_0814534C: .4byte gUnknown_8466FD4 -_08145350: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145364 - ldr r0, _08145370 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xD2 - lsls r1, 1 - ldr r2, _08145374 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145364: - ldr r0, [r5, 0x20] - ldr r1, [r4, 0x8] - bl sub_8144474 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_08145370: .4byte gUnknown_8466F80 -_08145374: .4byte gUnknown_8466FEC -_08145378: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _0814538C - ldr r0, _0814539C @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xD5 - lsls r1, 1 - ldr r2, _081453A0 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_0814538C: - ldr r0, [r4, 0x8] - ldr r1, [r5, 0x14] - ldr r1, [r1] - bl sub_8145068 - str r0, [r5, 0x4] - b _081455F8 - .align 2, 0 -_0814539C: .4byte gUnknown_8466F80 -_081453A0: .4byte gUnknown_8466FEC -_081453A4: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081453B8 - ldr r0, _081453D0 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xD8 - lsls r1, 1 - ldr r2, _081453D4 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081453B8: - ldr r0, [r4, 0x8] - ldr r1, [r5, 0x1C] - bl sub_814505C - adds r2, r0, 0 - movs r3, 0xDE - lsls r3, 1 - adds r0, r5, 0 - movs r1, 0x17 - bl sub_814501C - b _081455F8 - .align 2, 0 -_081453D0: .4byte gUnknown_8466F80 -_081453D4: .4byte gUnknown_8466FEC -_081453D8: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081453EC - ldr r0, _08145404 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xDB - lsls r1, 1 - ldr r2, _08145408 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081453EC: - ldr r0, [r4, 0x8] - ldr r1, [r5, 0x18] - bl sub_814505C - adds r2, r0, 0 - movs r3, 0xA6 - lsls r3, 1 - adds r0, r5, 0 - movs r1, 0x16 - bl sub_814501C - b _081455F8 - .align 2, 0 -_08145404: .4byte gUnknown_8466F80 -_08145408: .4byte gUnknown_8466FEC -_0814540C: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145420 - ldr r0, _08145438 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xDE - lsls r1, 1 - ldr r2, _0814543C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145420: - ldr r0, [r4, 0x8] - adds r1, r5, 0 - adds r1, 0x34 - bl sub_814505C - adds r2, r0, 0 - adds r0, r5, 0 - movs r1, 0x18 - movs r3, 0x4 - bl sub_814501C - b _081455F8 - .align 2, 0 -_08145438: .4byte gUnknown_8466F80 -_0814543C: .4byte gUnknown_8466FEC -_08145440: - ldr r2, [r4, 0x8] - cmp r2, 0 - bne _0814544C - ldr r2, [r5, 0x24] - ldr r3, [r5, 0x28] - b _0814544E -_0814544C: - ldr r3, [r4, 0x4] -_0814544E: - adds r0, r5, 0 - movs r1, 0x19 - bl sub_814501C - b _081455F8 -_08145458: - ldr r2, [r4, 0x8] - cmp r2, 0 - bne _08145464 - ldr r2, [r5, 0x2C] - ldr r3, [r5, 0x30] - b _08145466 -_08145464: - ldr r3, [r4, 0x4] -_08145466: - adds r0, r5, 0 - movs r1, 0x10 - bl sub_814501C - b _081455F8 -_08145470: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145484 - ldr r0, _08145494 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xE9 - lsls r1, 1 - ldr r2, _08145498 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145484: - ldr r2, [r4, 0x8] - adds r0, r5, 0 - movs r1, 0x1A - movs r3, 0xBC - bl sub_814501C - b _081455F8 - .align 2, 0 -_08145494: .4byte gUnknown_8466F80 -_08145498: .4byte gUnknown_8466FEC -_0814549C: - ldr r2, [r4, 0x8] - ldr r3, [r4, 0x4] - adds r0, r5, 0 - movs r1, 0x15 - bl sub_814501C - b _081455F8 -_081454AA: - ldr r2, [r4, 0x8] - ldr r3, [r4, 0x4] - adds r0, r5, 0 - movs r1, 0x1C - bl sub_814501C - b _081455F8 -_081454B8: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081454CA - ldr r0, _081454D8 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _081454DC @ =0x000001e1 - ldr r2, _081454E0 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081454CA: - ldr r0, [r5, 0x18] - ldr r1, [r4, 0x8] - movs r2, 0xA6 - lsls r2, 1 - bl memcpy - b _081455F8 - .align 2, 0 -_081454D8: .4byte gUnknown_8466F80 -_081454DC: .4byte 0x000001e1 -_081454E0: .4byte gUnknown_8466FEC -_081454E4: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _081454F8 - ldr r0, _08145508 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xF3 - lsls r1, 1 - ldr r2, _0814550C @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_081454F8: - ldr r0, [r5, 0x1C] - ldr r1, [r4, 0x8] - movs r2, 0xDE - lsls r2, 1 - bl memcpy - b _081455F8 - .align 2, 0 -_08145508: .4byte gUnknown_8466F80 -_0814550C: .4byte gUnknown_8466FEC -_08145510: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08145522 - ldr r0, _0814552C @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145530 @ =0x000001eb - ldr r2, _08145534 @ =gUnknown_8466FEC "cmd->flag == FALSE" - movs r3, 0x1 - bl AGBAssert -_08145522: - ldr r0, [r4, 0x8] - ldr r0, [r0] - str r0, [r5, 0x34] - b _081455F8 - .align 2, 0 -_0814552C: .4byte gUnknown_8466F80 -_08145530: .4byte 0x000001eb -_08145534: .4byte gUnknown_8466FEC -_08145538: - ldr r0, [r4, 0x8] - str r0, [r5, 0x24] - ldr r0, [r4, 0x4] - str r0, [r5, 0x28] - b _081455F8 -_08145542: - ldr r0, [r4, 0x8] - str r0, [r5, 0x2C] - ldr r0, [r4, 0x4] - str r0, [r5, 0x30] - b _081455F8 -_0814554C: - ldr r0, [r4, 0x4] - cmp r0, 0 - bne _08145558 - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _08145566 -_08145558: - ldr r0, _08145580 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0xFD - lsls r1, 1 - ldr r2, _08145584 @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_08145566: - ldr r4, [r5, 0x18] - bl sav1_get_mevent_buffer_1 - adds r1, r0, 0 - movs r2, 0xA6 - lsls r2, 1 - adds r0, r4, 0 - bl memcpy - ldr r0, [r5, 0x18] - bl sub_814410C - b _081455F8 - .align 2, 0 -_08145580: .4byte gUnknown_8466F80 -_08145584: .4byte gUnknown_8467000 -_08145588: - ldr r0, [r4, 0x4] - cmp r0, 0 - bne _08145594 - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _081455A2 -_08145594: - ldr r0, _081455B8 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0x80 - lsls r1, 2 - ldr r2, _081455BC @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_081455A2: - ldr r4, [r5, 0x1C] - bl sub_8143D58 - adds r1, r0, 0 - movs r2, 0xDE - lsls r2, 1 - adds r0, r4, 0 - bl memcpy - b _081455F8 - .align 2, 0 -_081455B8: .4byte gUnknown_8466F80 -_081455BC: .4byte gUnknown_8467000 -_081455C0: - ldr r0, [r4, 0x4] - cmp r0, 0 - bne _081455CC - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _081455D8 -_081455CC: - ldr r0, _081455E0 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _081455E4 @ =0x00000205 - ldr r2, _081455E8 @ =gUnknown_8467000 "cmd->flag == FALSE && cmd->parameter == NULL" - movs r3, 0x1 - bl AGBAssert -_081455D8: - bl sub_8069E48 - str r0, [r5, 0x24] - b _081455F8 - .align 2, 0 -_081455E0: .4byte gUnknown_8466F80 -_081455E4: .4byte 0x00000205 -_081455E8: .4byte gUnknown_8467000 -_081455EC: - ldr r2, [r4, 0x8] - ldr r3, [r4, 0x4] - adds r0, r5, 0 - movs r1, 0x1B - bl sub_814501C -_081455F8: - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81450C4 - - thumb_func_start sub_8145600 -sub_8145600: @ 8145600 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - cmp r0, 0x4 - bls _08145616 - ldr r0, _08145644 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - ldr r1, _08145648 @ =0x00000222 - ldr r2, _0814564C @ =gUnknown_8467044 "svr->mainseqno < NELEMS(func_tbl)" - movs r3, 0x1 - bl AGBAssert -_08145616: - ldr r1, _08145650 @ =func_tbl - ldr r0, [r4, 0x8] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - adds r5, r0, 0 - ldr r0, [r4, 0x8] - cmp r0, 0x4 - bls _0814563C - ldr r0, _08145644 @ =gUnknown_8466F80 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" - movs r1, 0x89 - lsls r1, 2 - ldr r2, _0814564C @ =gUnknown_8467044 "svr->mainseqno < NELEMS(func_tbl)" - movs r3, 0x1 - bl AGBAssert -_0814563C: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08145644: .4byte gUnknown_8466F80 -_08145648: .4byte 0x00000222 -_0814564C: .4byte gUnknown_8467044 -_08145650: .4byte func_tbl - thumb_func_end sub_8145600 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s index c34887d86..0ca0bcbf3 100644 --- a/data/data_8466FB8.s +++ b/data/data_8466FB8.s @@ -1,18 +1,6 @@ .section .rodata .align 2 -func_tbl:: @ 8467030 - .4byte sub_8145080 - .4byte sub_8145088 - .4byte sub_814508C - .4byte sub_81450A8 - .4byte sub_81450C4 - - .align 2 -gUnknown_8467044:: @ 8467044 - .asciz "svr->mainseqno < NELEMS(func_tbl)" - - .align 2 gUnknown_8467068:: @ 8467068 .incbin "baserom.gba", 0x467068, 0x8 diff --git a/include/mevent.h b/include/mevent.h index 1744bb524..d940b212c 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -33,12 +33,21 @@ struct MEvent_Str_2 u8 fill_00[0x40]; }; +struct MEventBuffer_3120_Sub * sub_8143D58(void); +struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void); +struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void); struct MysteryEventStruct * sub_8143D94(void); bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src); bool32 sub_8143E1C(void); bool32 sub_8143EF4(const u8 * src); bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data); +void sub_814410C(struct MEventBuffer_32E0_Sub * buffer); bool32 sub_8144254(const u16 * data); void sub_81442CC(struct MEventStruct_Unk1442CC * data); +bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data); +u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused); +u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused); +bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1); +u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command); #endif //GUARD_MEVENT_H diff --git a/include/script.h b/include/script.h index b718af4c1..ebb4caa86 100644 --- a/include/script.h +++ b/include/script.h @@ -64,5 +64,6 @@ u8 *sub_8099244(void); void sub_80992A0(u8 *script, u16 scriptSize); bool32 sub_8069DFC(void); void sub_8069EA4(u8 * script, u16 scriptSize); +u8 * sub_8069E48(void); #endif // GUARD_SCRIPT_H diff --git a/ld_script.txt b/ld_script.txt index 19d8a5862..04be16a01 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -247,7 +247,6 @@ SECTIONS { src/mevent_server_sub.o(.text); src/mevent_server_ish.o(.text); src/mevent_server.o(.text); - asm/mevent_server.o(.text); asm/mevent_8145654.o(.text); src/menews_jisan.o(.text); asm/seagallop.o(.text); diff --git a/src/mevent.c b/src/mevent.c index 9638e0327..7a7fcc399 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -792,7 +792,7 @@ bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data) return TRUE; } -u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1) +u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused) { if (a1->unk_14 == 0) return 0; @@ -801,7 +801,7 @@ u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1) return 2; } -u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1) +u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused) { s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44); if (r4 == 0) diff --git a/src/mevent_server.c b/src/mevent_server.c index 027a7e994..2242dabce 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -13,18 +13,29 @@ extern u16 gBlockRecvBuffer[][128]; +struct mevent_cmd +{ + u32 instr; + bool32 flag; + void * parameter; +}; + struct mevent_srv_common { u32 unk_00; u32 unk_04; u32 mainseqno; - u32 unk_0C; - const void * unk_10; + u32 cmdidx; + const struct mevent_cmd * cmdBuffer; void * unk_14; - void * unk_18; - void * unk_1C; - void * unk_20; - u8 filler_24[0x14]; + struct MEventBuffer_32E0_Sub * unk_18; + struct MEventBuffer_3120_Sub * unk_1C; + struct MEventStruct_Unk1442CC * unk_20; + void * unk_24; + u32 unk_28; + void * unk_2C; + u32 unk_30; + void * unk_34; struct mevent_srv_sub unk_38; }; @@ -73,8 +84,8 @@ void mevent_srv_init_common(struct mevent_srv_common * svr, const void * a1, u32 svr->unk_1C = AllocZeroed(444); svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); svr->unk_20 = AllocZeroed(100); - svr->unk_10 = a1; - svr->unk_0C = 0; + svr->cmdBuffer = a1; + svr->cmdidx = 0; sub_814485C(&svr->unk_38, a2, a3); } @@ -86,15 +97,213 @@ void mevent_srv_free_resources(struct mevent_srv_common * svr) Free(svr->unk_20); } -const char gUnknown_8466F80[] = "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"; -const char gUnknown_8466FB8[] = "size <= ME_SEND_BUF_SIZE"; -const char gUnknown_8466FD4[] = "cmd->parameter == NULL"; -const char gUnknown_8466FEC[] = "cmd->flag == FALSE"; -const char gUnknown_8467000[] = "cmd->flag == FALSE && cmd->parameter == NULL"; - void sub_814501C(struct mevent_srv_common * svr, u32 a1, void * a2, u32 size) { - // AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); - size <= ME_SEND_BUF_SIZE ? NULL : AGBAssert(gUnknown_8466F80, 257, gUnknown_8466FB8, 1); + AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); sub_8144888(&svr->unk_38, a1, a2, size); } + +void * sub_814505C(void * a0, void * a1) +{ + if (a0 != NULL) + return a0; + else + return a1; +} + +u32 sub_8145068(void * a0, void * a1) +{ + if (a1 < a0) + return 0; + else if (a1 == a0) + return 1; + else + return 2; +} + +u32 sub_8145080(struct mevent_srv_common * svr) +{ + svr->mainseqno = 4; + return 0; +} + +u32 sub_8145088(struct mevent_srv_common * svr) +{ + return 3; +} + +u32 sub_814508C(struct mevent_srv_common * svr) +{ + if (sub_8144844(&svr->unk_38)) + svr->mainseqno = 4; + return 1; +} + +u32 sub_81450A8(struct mevent_srv_common * svr) +{ + if (sub_8144850(&svr->unk_38)) + svr->mainseqno = 4; + return 1; +} + +u32 sub_81450C4(struct mevent_srv_common * svr) +{ + const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx]; + void * ptr; + svr->cmdidx++; + + switch (cmd->instr) + { + case 0: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 354); + svr->mainseqno = 1; + svr->unk_04 = cmd->flag; + break; + case 1: + svr->mainseqno = 3; + break; + case 2: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 364); + sub_81448AC(&svr->unk_38, cmd->flag, svr->unk_14); + svr->mainseqno = 2; + break; + case 3: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 370); + svr->cmdidx = 0; + svr->cmdBuffer = cmd->parameter; + break; + case 5: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 376); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 377); + memcpy(svr->unk_20, svr->unk_14, 100); + break; + case 6: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 382); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 383); + svr->unk_04 = sub_81443D4(svr->unk_20); + break; + case 4: + if (svr->unk_04 == cmd->flag) + { + svr->cmdidx = 0; + svr->cmdBuffer = cmd->parameter; + } + break; + case 7: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 396); + ptr = sub_814505C(cmd->parameter, svr->unk_18); + svr->unk_04 = sub_8144418(ptr, svr->unk_20, ptr); + break; + case 8: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 402); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 403); + svr->unk_04 = *(u32 *)svr->unk_14; + break; + case 9: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 408); + ptr = sub_814505C(cmd->parameter, &svr->unk_34); + svr->unk_04 = sub_8144434(ptr, svr->unk_20, ptr); + break; + case 10: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 415); + svr->unk_04 = sub_81444B0(svr->unk_20, cmd->flag); + break; + case 11: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 420); + svr->unk_04 = sub_8144474(svr->unk_20, cmd->parameter); + break; + case 12: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 426); + svr->unk_04 = sub_8145068(cmd->parameter, *(void **)svr->unk_14); + break; + case 14: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 432); + sub_814501C(svr, 0x17, sub_814505C(cmd->parameter, svr->unk_1C), 444); + break; + case 13: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 438); + sub_814501C(svr, 0x16, sub_814505C(cmd->parameter, svr->unk_18), 332); + break; + case 16: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 444); + sub_814501C(svr, 0x18, sub_814505C(cmd->parameter, &svr->unk_34), 4); + break; + case 15: + if (cmd->parameter == NULL) + sub_814501C(svr, 0x19, svr->unk_24, svr->unk_28); + else + sub_814501C(svr, 0x19, cmd->parameter, cmd->flag); + break; + case 18: + if (cmd->parameter == NULL) + sub_814501C(svr, 0x10, svr->unk_2C, svr->unk_30); + else + sub_814501C(svr, 0x10, cmd->parameter, cmd->flag); + break; + case 19: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 466); + sub_814501C(svr, 0x1a, cmd->parameter, 188); + break; + case 20: + sub_814501C(svr, 0x15, cmd->parameter, cmd->flag); + break; + case 17: + sub_814501C(svr, 0x1c, cmd->parameter, cmd->flag); + break; + case 22: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 481); + memcpy(svr->unk_18, cmd->parameter, 332); + break; + case 23: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 486); + memcpy(svr->unk_1C, cmd->parameter, 444); + break; + case 21: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 491); + svr->unk_34 = *(void **)cmd->parameter; + break; + case 24: + svr->unk_24 = cmd->parameter; + svr->unk_28 = cmd->flag; + break; + case 25: + svr->unk_2C = cmd->parameter; + svr->unk_30 = cmd->flag; + break; + case 26: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506); + memcpy(svr->unk_18, sav1_get_mevent_buffer_1(), 332); + sub_814410C(svr->unk_18); + break; + case 27: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512); + memcpy(svr->unk_1C, sub_8143D58(), 444); + break; + case 28: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517); + svr->unk_24 = sub_8069E48(); + break; + case 29: + sub_814501C(svr, 0x1b, cmd->parameter, cmd->flag); + break; + } + + return 1; +} + +static u32 (*const func_tbl[])(struct mevent_srv_common *) = { + sub_8145080, + sub_8145088, + sub_814508C, + sub_81450A8, + sub_81450C4 +}; + +u32 sub_8145600(struct mevent_srv_common * svr) +{ + u32 response; + AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 546); + response = func_tbl[svr->mainseqno](svr); + AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 548); + return response; +} diff --git a/src/mevent_server_ish.c b/src/mevent_server_ish.c index 7e9639303..e544c0f42 100644 --- a/src/mevent_server_ish.c +++ b/src/mevent_server_ish.c @@ -13,27 +13,26 @@ extern u16 gBlockRecvBuffer[][128]; +struct mevent_cmd +{ + u32 instr; + u32 parameter; +}; + struct mevent_srv_ish { u32 unk_00; u32 unk_04; u32 mainseqno; u32 unk_0C; - u32 unk_10; + u32 cmdidx; void * unk_14; void * unk_18; - void * unk_1C; + struct mevent_cmd * cmdBuffer; void * unk_20; struct mevent_srv_sub unk_24; }; -struct mevent_cmd -{ - u32 instr; - bool32 flag; - u32 parameter; -}; - EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); @@ -85,7 +84,7 @@ void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 a1, u32 a2) svr->unk_0C = 0; svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); svr->unk_18 = AllocZeroed(ME_SEND_BUF_SIZE); - svr->unk_1C = AllocZeroed(ME_SEND_BUF_SIZE); + svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE); svr->unk_20 = AllocZeroed(0x40); sub_814485C(&svr->unk_24, a1, a2); } @@ -94,14 +93,14 @@ void sub_8144BC0(struct mevent_srv_ish * svr) { Free(svr->unk_14); Free(svr->unk_18); - Free(svr->unk_1C); + Free(svr->cmdBuffer); Free(svr->unk_20); } void sub_8144BE4(struct mevent_srv_ish * svr) { - memcpy(svr->unk_1C, svr->unk_18, ME_SEND_BUF_SIZE); - svr->unk_10 = 0; + memcpy(svr->cmdBuffer, svr->unk_18, ME_SEND_BUF_SIZE); + svr->cmdidx = 0; } void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2) @@ -111,12 +110,10 @@ void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2) sub_8144888(&svr->unk_24, a1, svr->unk_14, 4); } -// funcs in array gUnknown_8466F60 - u32 sub_8144C34(struct mevent_srv_ish * svr) { - memcpy(svr->unk_1C, gUnknown_84687E0, ME_SEND_BUF_SIZE); - svr->unk_10 = 0; + memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE); + svr->cmdidx = 0; svr->mainseqno = 4; svr->unk_0C = 0; return 0; @@ -149,19 +146,19 @@ u32 sub_8144C80(struct mevent_srv_ish * svr) u32 sub_8144CA0(struct mevent_srv_ish * svr) { - u32 * r2 = (u32 *)svr->unk_1C + 2 * svr->unk_10; - ++svr->unk_10; - switch (r2[0]) + struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx]; + ++svr->cmdidx; + switch (cmd->instr) { case 0: break; case 1: - svr->unk_04 = r2[1]; + svr->unk_04 = cmd->parameter; svr->mainseqno = 1; svr->unk_0C = 0; break; case 2: - sub_81448AC(&svr->unk_24, r2[1], svr->unk_18); + sub_81448AC(&svr->unk_24, cmd->parameter, svr->unk_18); svr->mainseqno = 2; svr->unk_0C = 0; break; @@ -175,7 +172,7 @@ u32 sub_8144CA0(struct mevent_srv_ish * svr) svr->unk_0C = 0; break; case 19: - sub_8144C00(svr, 0x12, GetGameStat(r2[1])); + sub_8144C00(svr, 0x12, GetGameStat(cmd->parameter)); svr->mainseqno = 3; svr->unk_0C = 0; break; |