summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/mevent_server.s103
-rw-r--r--data/data_8466FB8.s11
-rw-r--r--include/mystery_event_script.h3
-rw-r--r--src/mevent_server.c56
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);
+}