diff options
-rw-r--r-- | asm/mevent_server.s | 103 | ||||
-rw-r--r-- | data/data_8466FB8.s | 11 | ||||
-rw-r--r-- | include/mystery_event_script.h | 3 | ||||
-rw-r--r-- | src/mevent_server.c | 56 |
4 files changed, 59 insertions, 114 deletions
diff --git a/asm/mevent_server.s b/asm/mevent_server.s index 5f9ce9862..41c3ad7da 100644 --- a/asm/mevent_server.s +++ b/asm/mevent_server.s @@ -5,109 +5,6 @@ .text - thumb_func_start sub_8144E6C -sub_8144E6C: @ 8144E6C - push {lr} - adds r1, r0, 0 - ldr r0, [r1, 0xC] - cmp r0, 0 - beq _08144E7E - movs r0, 0x4 - str r0, [r1, 0x8] - movs r0, 0 - str r0, [r1, 0xC] -_08144E7E: - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8144E6C - - thumb_func_start sub_8144E84 -sub_8144E84: @ 8144E84 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0xC] - cmp r0, 0 - beq _08144E94 - cmp r0, 0x1 - beq _08144EA2 - b _08144EB4 -_08144E94: - ldr r0, [r4, 0x18] - bl sub_80DA89C - ldr r0, [r4, 0xC] - adds r0, 0x1 - str r0, [r4, 0xC] - b _08144EB4 -_08144EA2: - adds r0, r4, 0x4 - bl sub_80DA8B0 - adds r1, r0, 0 - cmp r1, 0 - bne _08144EB4 - movs r0, 0x4 - str r0, [r4, 0x8] - str r1, [r4, 0xC] -_08144EB4: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8144E84 - - thumb_func_start sub_8144EBC -sub_8144EBC: @ 8144EBC - push {r4,lr} - adds r4, r0, 0 - ldr r3, _08144EE4 @ =gDecompressionBuffer - adds r0, r4, 0x4 - ldr r1, _08144EE8 @ =gSaveBlock2Ptr - ldr r1, [r1] - ldr r2, _08144EEC @ =gSaveBlock1Ptr - ldr r2, [r2] - bl _call_via_r3 - cmp r0, 0x1 - bne _08144EDC - movs r0, 0x4 - str r0, [r4, 0x8] - movs r0, 0 - str r0, [r4, 0xC] -_08144EDC: - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08144EE4: .4byte gDecompressionBuffer -_08144EE8: .4byte gSaveBlock2Ptr -_08144EEC: .4byte gSaveBlock1Ptr - thumb_func_end sub_8144EBC - - thumb_func_start mevent_srv_ish_exec -mevent_srv_ish_exec: @ 8144EF0 - push {r4,r5,lr} - sub sp, 0x20 - mov r2, sp - ldr r1, _08144F18 @ =gUnknown_8466F60 - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3-r5} - stm r2!, {r3-r5} - ldm r1!, {r3,r4} - stm r2!, {r3,r4} - ldr r1, [r0, 0x8] - lsls r1, 2 - add r1, sp - ldr r1, [r1] - bl _call_via_r1 - add sp, 0x20 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08144F18: .4byte gUnknown_8466F60 - thumb_func_end mevent_srv_ish_exec - thumb_func_start sub_8144F1C sub_8144F1C: @ 8144F1C push {r4,lr} diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s index 21ee2e1df..bdfdaaa6b 100644 --- a/data/data_8466FB8.s +++ b/data/data_8466FB8.s @@ -1,17 +1,6 @@ .section .rodata .align 2 -gUnknown_8466F60:: @ 8466F60 - .4byte sub_8144C34 - .4byte sub_8144C5C - .4byte sub_8144C60 - .4byte sub_8144C80 - .4byte sub_8144CA0 - .4byte sub_8144E6C - .4byte sub_8144E84 - .4byte sub_8144EBC - - .align 2 gUnknown_8466F80:: @ 8466F80 .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c" diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index 1ba1464fa..8f90ccf53 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -7,4 +7,7 @@ u32 RunMysteryEventScript(u8 *); void SetMysteryEventScriptStatus(u32 val); u16 GetRecordMixingGift(void); +void sub_80DA89C(void *); +bool32 sub_80DA8B0(u32 *); + #endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/src/mevent_server.c b/src/mevent_server.c index 3297e2658..251764441 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -7,6 +7,7 @@ #include "overworld.h" #include "script.h" #include "battle_tower.h" +#include "mystery_event_script.h" #include "mevent.h" extern u16 gBlockRecvBuffer[][128]; @@ -467,3 +468,58 @@ u32 sub_8144CA0(struct mevent_srv_ish * srv) return 1; } + +u32 sub_8144E6C(struct mevent_srv_ish * srv) +{ + if (srv->unk_0C) + { + srv->unk_08 = 4; + srv->unk_0C = 0; + } + return 1; +} + +u32 sub_8144E84(struct mevent_srv_ish * srv) +{ + switch (srv->unk_0C) + { + case 0: + sub_80DA89C(srv->unk_18); + ++srv->unk_0C; + break; + case 1: + if (!sub_80DA8B0(&srv->unk_04)) + { + srv->unk_08 = 4; + srv->unk_0C = 0; + } + break; + } + return 1; +} + +u32 sub_8144EBC(struct mevent_srv_ish * srv) +{ + u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; + if (func(&srv->unk_04, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) + { + srv->unk_08 = 4; + srv->unk_0C = 0; + } + return 1; +} + +u32 mevent_srv_ish_exec(struct mevent_srv_ish * srv) +{ + u32 (*funcs[])(struct mevent_srv_ish *) = { + sub_8144C34, + sub_8144C5C, + sub_8144C60, + sub_8144C80, + sub_8144CA0, + sub_8144E6C, + sub_8144E84, + sub_8144EBC + }; + return funcs[srv->unk_08](srv); +} |