summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-11-30 12:16:42 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-11-30 12:16:42 -0500
commit7c2517611b83ac9d490a99ec32cf1a4412c05ce0 (patch)
treee1b525010ba237a637b4cf419a29766844702dbd
parentde6cf9f0de562bfc3085ffc2e07825b4487b4b9e (diff)
sub_8144CA0
-rw-r--r--asm/mevent_server.s218
-rw-r--r--include/battle_tower.h1
-rw-r--r--include/mevent.h5
-rw-r--r--include/script.h1
-rw-r--r--src/mevent_server.c111
5 files changed, 117 insertions, 219 deletions
diff --git a/asm/mevent_server.s b/asm/mevent_server.s
index 7c5042b15..5f9ce9862 100644
--- a/asm/mevent_server.s
+++ b/asm/mevent_server.s
@@ -5,224 +5,6 @@
.text
- thumb_func_start sub_8144CA0
-sub_8144CA0: @ 8144CA0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x10]
- lsls r2, r0, 3
- ldr r1, [r4, 0x1C]
- adds r2, r1, r2
- adds r0, 0x1
- str r0, [r4, 0x10]
- ldr r0, [r2]
- cmp r0, 0x15
- bls _08144CB8
- b _08144E60
-_08144CB8:
- lsls r0, 2
- ldr r1, _08144CC4 @ =_08144CC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08144CC4: .4byte _08144CC8
- .align 2, 0
-_08144CC8:
- .4byte _08144E60
- .4byte _08144D20
- .4byte _08144D28
- .4byte _08144D38
- .4byte _08144D70
- .4byte _08144D78
- .4byte _08144D62
- .4byte _08144D6A
- .4byte _08144DC6
- .4byte _08144DF0
- .4byte _08144DE8
- .4byte _08144D8E
- .4byte _08144DA4
- .4byte _08144DBA
- .4byte _08144DDC
- .4byte _08144E18
- .4byte _08144E1C
- .4byte _08144E24
- .4byte _08144E30
- .4byte _08144D4E
- .4byte _08144D3C
- .4byte _08144E4C
-_08144D20:
- ldr r0, [r2, 0x4]
- str r0, [r4, 0x4]
- movs r0, 0x1
- b _08144E5A
-_08144D28:
- adds r0, r4, 0
- adds r0, 0x24
- ldr r1, [r2, 0x4]
- ldr r2, [r4, 0x18]
- bl sub_81448AC
- movs r0, 0x2
- b _08144E5A
-_08144D38:
- movs r0, 0x3
- b _08144E5A
-_08144D3C:
- adds r0, r4, 0
- adds r0, 0x24
- ldr r2, [r4, 0x14]
- movs r1, 0x14
- movs r3, 0
- bl sub_8144888
- movs r0, 0x3
- b _08144E5A
-_08144D4E:
- ldrb r0, [r2, 0x4]
- bl GetGameStat
- adds r2, r0, 0
- adds r0, r4, 0
- movs r1, 0x12
- bl sub_8144C00
- movs r0, 0x3
- b _08144E5A
-_08144D62:
- ldr r0, [r4, 0x4]
- cmp r0, 0
- bne _08144E60
- b _08144D70
-_08144D6A:
- ldr r0, [r4, 0x4]
- cmp r0, 0x1
- bne _08144E60
-_08144D70:
- adds r0, r4, 0
- bl sub_8144BE4
- b _08144E60
-_08144D78:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x2
- b _08144E62
-_08144D8E:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x3
- b _08144E62
-_08144DA4:
- ldr r0, [r4, 0x20]
- ldr r1, [r4, 0x18]
- movs r2, 0x40
- bl memcpy
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x5
- b _08144E62
-_08144DBA:
- movs r0, 0x5
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
- movs r0, 0x4
- b _08144E62
-_08144DC6:
- ldr r0, [r4, 0x14]
- bl sub_81442CC
- adds r0, r4, 0
- adds r0, 0x24
- ldr r2, [r4, 0x14]
- movs r1, 0x11
- movs r3, 0x64
- bl sub_8144888
- b _08144E60
-_08144DDC:
- ldr r2, [r4, 0x4]
- adds r0, r4, 0
- movs r1, 0x13
- bl sub_8144C00
- b _08144E60
-_08144DE8:
- ldr r0, [r4, 0x18]
- bl sub_8143F68
- b _08144E60
-_08144DF0:
- ldr r0, [r4, 0x18]
- bl sub_8143EF4
- cmp r0, 0
- bne _08144E0C
- ldr r0, [r4, 0x18]
- bl sub_8143DC8
- adds r0, r4, 0
- movs r1, 0x13
- movs r2, 0
- bl sub_8144C00
- b _08144E60
-_08144E0C:
- adds r0, r4, 0
- movs r1, 0x13
- movs r2, 0x1
- bl sub_8144C00
- b _08144E60
-_08144E18:
- movs r0, 0x6
- b _08144E5A
-_08144E1C:
- ldr r0, [r4, 0x18]
- bl sub_8144254
- b _08144E60
-_08144E24:
- ldr r0, [r4, 0x18]
- movs r1, 0xFA
- lsls r1, 2
- bl sub_8069EA4
- b _08144E60
-_08144E30:
- ldr r0, _08144E48 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0x94
- lsls r1, 3
- adds r0, r1
- ldr r1, [r4, 0x18]
- movs r2, 0xBC
- bl memcpy
- bl sub_80E7490
- b _08144E60
- .align 2, 0
-_08144E48: .4byte gSaveBlock2Ptr
-_08144E4C:
- ldr r0, _08144E68 @ =gDecompressionBuffer
- ldr r1, [r4, 0x18]
- movs r2, 0x80
- lsls r2, 3
- bl memcpy
- movs r0, 0x7
-_08144E5A:
- str r0, [r4, 0x8]
- movs r0, 0
- str r0, [r4, 0xC]
-_08144E60:
- movs r0, 0x1
-_08144E62:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08144E68: .4byte gDecompressionBuffer
- thumb_func_end sub_8144CA0
-
thumb_func_start sub_8144E6C
sub_8144E6C: @ 8144E6C
push {lr}
diff --git a/include/battle_tower.h b/include/battle_tower.h
index 36d5eb1f7..0782725b6 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -5,5 +5,6 @@
u16 sub_8164FCC(u8, u8);
void sub_80E7524(u32 *);
+void sub_80E7490(void);
#endif //GUARD_BATTLE_TOWER_H
diff --git a/include/mevent.h b/include/mevent.h
index 31e1041fe..1744bb524 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -34,6 +34,11 @@ struct MEvent_Str_2
};
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);
+bool32 sub_8144254(const u16 * data);
+void sub_81442CC(struct MEventStruct_Unk1442CC * data);
#endif //GUARD_MEVENT_H
diff --git a/include/script.h b/include/script.h
index 6ed2e8f49..b718af4c1 100644
--- a/include/script.h
+++ b/include/script.h
@@ -63,5 +63,6 @@ bool32 sub_80991F8(void);
u8 *sub_8099244(void);
void sub_80992A0(u8 *script, u16 scriptSize);
bool32 sub_8069DFC(void);
+void sub_8069EA4(u8 * script, u16 scriptSize);
#endif // GUARD_SCRIPT_H
diff --git a/src/mevent_server.c b/src/mevent_server.c
index a94d8a0a1..3297e2658 100644
--- a/src/mevent_server.c
+++ b/src/mevent_server.c
@@ -1,8 +1,12 @@
#include "global.h"
#include "malloc.h"
+#include "decompress.h"
#include "util.h"
#include "link.h"
#include "link_rfu.h"
+#include "overworld.h"
+#include "script.h"
+#include "battle_tower.h"
#include "mevent.h"
extern u16 gBlockRecvBuffer[][128];
@@ -97,7 +101,7 @@ void sub_8144888(struct mevent_srv_sub * srv, u32 a1, void * a2, u32 a3)
srv->unk_1C = a2;
}
-void sub_81448AC(struct mevent_srv_sub * srv, u16 a1, void * a2)
+void sub_81448AC(struct mevent_srv_sub * srv, u32 a1, void * a2)
{
srv->unk_00 = 0;
srv->unk_06 = a1;
@@ -358,3 +362,108 @@ u32 sub_8144C80(struct mevent_srv_ish * srv)
}
return 1;
}
+
+u32 sub_8144CA0(struct mevent_srv_ish * srv)
+{
+ u32 * r2 = (u32 *)srv->unk_1C + 2 * srv->unk_10;
+ ++srv->unk_10;
+ switch (r2[0])
+ {
+ case 0:
+ break;
+ case 1:
+ srv->unk_04 = r2[1];
+ srv->unk_08 = 1;
+ srv->unk_0C = 0;
+ break;
+ case 2:
+ sub_81448AC(&srv->unk_24, r2[1], srv->unk_18);
+ srv->unk_08 = 2;
+ srv->unk_0C = 0;
+ break;
+ case 3:
+ srv->unk_08 = 3;
+ srv->unk_0C = 0;
+ break;
+ case 20:
+ sub_8144888(&srv->unk_24, 0x14, srv->unk_14, 0);
+ srv->unk_08 = 3;
+ srv->unk_0C = 0;
+ break;
+ case 19:
+ sub_8144C00(srv, 0x12, GetGameStat(r2[1]));
+ srv->unk_08 = 3;
+ srv->unk_0C = 0;
+ break;
+ case 6:
+ if (srv->unk_04 == 0)
+ sub_8144BE4(srv);
+ break;
+ case 7:
+ if (srv->unk_04 == 1)
+ sub_8144BE4(srv);
+ break;
+ case 4:
+ sub_8144BE4(srv);
+ break;
+ case 5:
+ memcpy(srv->unk_20, srv->unk_18, 0x40);
+ srv->unk_08 = 5;
+ srv->unk_0C = 0;
+ return 2;
+ case 11:
+ memcpy(srv->unk_20, srv->unk_18, 0x40);
+ srv->unk_08 = 5;
+ srv->unk_0C = 0;
+ return 3;
+ case 12:
+ memcpy(srv->unk_20, srv->unk_18, 0x40);
+ srv->unk_08 = 5;
+ srv->unk_0C = 0;
+ return 5;
+ case 13:
+ srv->unk_08 = 5;
+ srv->unk_0C = 0;
+ return 4;
+ case 8:
+ sub_81442CC(srv->unk_14);
+ sub_8144888(&srv->unk_24, 0x11, srv->unk_14, 0x64);
+ break;
+ case 14:
+ sub_8144C00(srv, 0x13, srv->unk_04);
+ break;
+ case 10:
+ sub_8143F68(srv->unk_18);
+ break;
+ case 9:
+ if (!sub_8143EF4(srv->unk_18))
+ {
+ sub_8143DC8(srv->unk_18);
+ sub_8144C00(srv, 0x13, 0);
+ }
+ else
+ sub_8144C00(srv, 0x13, 1);
+ break;
+ case 15:
+ srv->unk_08 = 6;
+ srv->unk_0C = 0;
+ break;
+ case 16:
+ sub_8144254(srv->unk_18);
+ break;
+ case 17:
+ sub_8069EA4(srv->unk_18, 1000);
+ break;
+ case 18:
+ memcpy(gSaveBlock2Ptr->unk_4A0, srv->unk_18, 0xbc);
+ sub_80E7490();
+ break;
+ case 21:
+ memcpy(gDecompressionBuffer, srv->unk_18, 0x400);
+ srv->unk_08 = 7;
+ srv->unk_0C = 0;
+ break;
+ }
+
+ return 1;
+}