summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/mevent_server.s247
-rw-r--r--src/mevent_server.c115
2 files changed, 113 insertions, 249 deletions
diff --git a/asm/mevent_server.s b/asm/mevent_server.s
index d41ad7af4..7c5042b15 100644
--- a/asm/mevent_server.s
+++ b/asm/mevent_server.s
@@ -5,253 +5,6 @@
.text
- thumb_func_start sub_8144AEC
-sub_8144AEC: @ 8144AEC
- push {r4,lr}
- ldr r4, _08144B08 @ =gUnknown_203F3C0
- movs r0, 0x4C
- bl AllocZeroed
- str r0, [r4]
- movs r1, 0x1
- movs r2, 0
- bl mevent_srv_ish_init
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08144B08: .4byte gUnknown_203F3C0
- thumb_func_end sub_8144AEC
-
- thumb_func_start sub_8144B0C
-sub_8144B0C: @ 8144B0C
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r4, _08144B1C @ =gUnknown_203F3C0
- ldr r0, [r4]
- cmp r0, 0
- bne _08144B20
- movs r0, 0x6
- b _08144B40
- .align 2, 0
-_08144B1C: .4byte gUnknown_203F3C0
-_08144B20:
- bl mevent_srv_ish_exec
- adds r5, r0, 0
- cmp r5, 0x6
- bne _08144B3E
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- strh r1, [r6]
- bl sub_8144BC0
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_08144B3E:
- adds r0, r5, 0
-_08144B40:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8144B0C
-
- thumb_func_start sub_8144B48
-sub_8144B48: @ 8144B48
- ldr r0, _08144B54 @ =gUnknown_203F3C0
- ldr r1, [r0]
- ldr r0, [r1, 0xC]
- adds r0, 0x1
- str r0, [r1, 0xC]
- bx lr
- .align 2, 0
-_08144B54: .4byte gUnknown_203F3C0
- thumb_func_end sub_8144B48
-
- thumb_func_start sub_8144B58
-sub_8144B58: @ 8144B58
- ldr r0, _08144B60 @ =gUnknown_203F3C0
- ldr r0, [r0]
- ldr r0, [r0, 0x20]
- bx lr
- .align 2, 0
-_08144B60: .4byte gUnknown_203F3C0
- thumb_func_end sub_8144B58
-
- thumb_func_start sub_8144B64
-sub_8144B64: @ 8144B64
- ldr r1, _08144B6C @ =gUnknown_203F3C0
- ldr r1, [r1]
- str r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_08144B6C: .4byte gUnknown_203F3C0
- thumb_func_end sub_8144B64
-
- thumb_func_start mevent_srv_ish_init
-mevent_srv_ish_init: @ 8144B70
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r6, r1, 0
- mov r8, r2
- movs r0, 0
- str r0, [r4]
- str r0, [r4, 0x8]
- str r0, [r4, 0xC]
- movs r5, 0x80
- lsls r5, 3
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x14]
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x18]
- adds r0, r5, 0
- bl AllocZeroed
- str r0, [r4, 0x1C]
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r4, 0x20]
- adds r4, 0x24
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, r8
- bl sub_814485C
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end mevent_srv_ish_init
-
- thumb_func_start sub_8144BC0
-sub_8144BC0: @ 8144BC0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x14]
- bl Free
- ldr r0, [r4, 0x18]
- bl Free
- ldr r0, [r4, 0x1C]
- bl Free
- ldr r0, [r4, 0x20]
- bl Free
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8144BC0
-
- thumb_func_start sub_8144BE4
-sub_8144BE4: @ 8144BE4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- ldr r1, [r4, 0x18]
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r0, 0
- str r0, [r4, 0x10]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8144BE4
-
- thumb_func_start sub_8144C00
-sub_8144C00: @ 8144C00
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r0, 0
- str r0, [sp]
- ldr r1, [r4, 0x14]
- ldr r2, _08144C30 @ =0x05000100
- mov r0, sp
- bl CpuSet
- ldr r2, [r4, 0x14]
- str r5, [r2]
- adds r4, 0x24
- adds r0, r4, 0
- adds r1, r6, 0
- movs r3, 0x4
- bl sub_8144888
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08144C30: .4byte 0x05000100
- thumb_func_end sub_8144C00
-
- thumb_func_start sub_8144C34
-sub_8144C34: @ 8144C34
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x1C]
- ldr r1, _08144C58 @ =gUnknown_84687E0
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r1, 0
- str r1, [r4, 0x10]
- movs r0, 0x4
- str r0, [r4, 0x8]
- str r1, [r4, 0xC]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08144C58: .4byte gUnknown_84687E0
- thumb_func_end sub_8144C34
-
- thumb_func_start sub_8144C5C
-sub_8144C5C: @ 8144C5C
- movs r0, 0x6
- bx lr
- thumb_func_end sub_8144C5C
-
- thumb_func_start sub_8144C60
-sub_8144C60: @ 8144C60
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x24
- bl sub_8144844
- cmp r0, 0
- beq _08144C76
- movs r0, 0x4
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_08144C76:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144C60
-
- thumb_func_start sub_8144C80
-sub_8144C80: @ 8144C80
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x24
- bl sub_8144850
- cmp r0, 0
- beq _08144C96
- movs r0, 0x4
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_08144C96:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8144C80
-
thumb_func_start sub_8144CA0
sub_8144CA0: @ 8144CA0
push {r4,lr}
diff --git a/src/mevent_server.c b/src/mevent_server.c
index 8c68a9350..a94d8a0a1 100644
--- a/src/mevent_server.c
+++ b/src/mevent_server.c
@@ -51,6 +51,11 @@ EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL;
u32 sub_814490C(struct mevent_srv_sub *);
u32 sub_81449E0(struct mevent_srv_sub *);
+void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32);
+u32 mevent_srv_ish_exec(struct mevent_srv_ish *);
+void sub_8144BC0(struct mevent_srv_ish *);
+
+extern u8 gUnknown_84687E0[0x400];
u32 sub_8144844(struct mevent_srv_sub * srv)
{
@@ -62,7 +67,7 @@ u32 sub_8144850(struct mevent_srv_sub * srv)
return srv->unk_24(srv);
}
-void sub_814485C(struct mevent_srv_sub * srv, u8 a1, u8 a2)
+void sub_814485C(struct mevent_srv_sub * srv, u32 a1, u32 a2)
{
srv->unk_04 = a1;
srv->unk_05 = a2;
@@ -79,7 +84,7 @@ void sub_814485C(struct mevent_srv_sub * srv, u8 a1, u8 a2)
srv->unk_20 = sub_814490C;
}
-void sub_8144888(struct mevent_srv_sub * srv, u16 a1, void * a2, u32 a3)
+void sub_8144888(struct mevent_srv_sub * srv, u32 a1, void * a2, u32 a3)
{
srv->unk_00 = 0;
srv->unk_0E = a1;
@@ -247,3 +252,109 @@ bool32 sub_81449E0(struct mevent_srv_sub * srv)
return FALSE;
}
+
+void sub_8144AEC(void)
+{
+ gUnknown_203F3C0 = AllocZeroed(sizeof(struct mevent_srv_ish));
+ mevent_srv_ish_init(gUnknown_203F3C0, 1, 0);
+}
+
+u32 sub_8144B0C(u16 * a0)
+{
+ u32 result;
+ if (gUnknown_203F3C0 == NULL)
+ return 6;
+ result = mevent_srv_ish_exec(gUnknown_203F3C0);
+ if (result == 6)
+ {
+ *a0 = gUnknown_203F3C0->unk_04;
+ sub_8144BC0(gUnknown_203F3C0);
+ Free(gUnknown_203F3C0);
+ gUnknown_203F3C0 = NULL;
+ }
+ return result;
+}
+
+void sub_8144B48(void)
+{
+ gUnknown_203F3C0->unk_0C++;
+}
+
+void * sub_8144B58(void)
+{
+ return gUnknown_203F3C0->unk_20;
+}
+
+void sub_8144B64(u32 a0)
+{
+ gUnknown_203F3C0->unk_04 = a0;
+}
+
+void mevent_srv_ish_init(struct mevent_srv_ish * srv, u32 a1, u32 a2)
+{
+ srv->unk_00 = 0;
+ srv->unk_08 = 0;
+ srv->unk_0C = 0;
+ srv->unk_14 = AllocZeroed(0x400);
+ srv->unk_18 = AllocZeroed(0x400);
+ srv->unk_1C = AllocZeroed(0x400);
+ srv->unk_20 = AllocZeroed(0x40);
+ sub_814485C(&srv->unk_24, a1, a2);
+}
+
+void sub_8144BC0(struct mevent_srv_ish * srv)
+{
+ Free(srv->unk_14);
+ Free(srv->unk_18);
+ Free(srv->unk_1C);
+ Free(srv->unk_20);
+}
+
+void sub_8144BE4(struct mevent_srv_ish * srv)
+{
+ memcpy(srv->unk_1C, srv->unk_18, 0x400);
+ srv->unk_10 = 0;
+}
+
+void sub_8144C00(struct mevent_srv_ish * srv, u32 a1, u32 a2)
+{
+ CpuFill32(0, srv->unk_14, 0x400);
+ *(u32 *)srv->unk_14 = a2;
+ sub_8144888(&srv->unk_24, a1, srv->unk_14, 4);
+}
+
+// funcs in array gUnknown_8466F60
+
+u32 sub_8144C34(struct mevent_srv_ish * srv)
+{
+ memcpy(srv->unk_1C, gUnknown_84687E0, sizeof(gUnknown_84687E0));
+ srv->unk_10 = 0;
+ srv->unk_08 = 4;
+ srv->unk_0C = 0;
+ return 0;
+}
+
+u32 sub_8144C5C(struct mevent_srv_ish * srv)
+{
+ return 6;
+}
+
+u32 sub_8144C60(struct mevent_srv_ish * srv)
+{
+ if (sub_8144844(&srv->unk_24))
+ {
+ srv->unk_08 = 4;
+ srv->unk_0C = 0;
+ }
+ return 1;
+}
+
+u32 sub_8144C80(struct mevent_srv_ish * srv)
+{
+ if (sub_8144850(&srv->unk_24))
+ {
+ srv->unk_08 = 4;
+ srv->unk_0C = 0;
+ }
+ return 1;
+}