diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-30 12:16:42 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-30 12:16:42 -0500 |
commit | 7c2517611b83ac9d490a99ec32cf1a4412c05ce0 (patch) | |
tree | e1b525010ba237a637b4cf419a29766844702dbd | |
parent | de6cf9f0de562bfc3085ffc2e07825b4487b4b9e (diff) |
sub_8144CA0
-rw-r--r-- | asm/mevent_server.s | 218 | ||||
-rw-r--r-- | include/battle_tower.h | 1 | ||||
-rw-r--r-- | include/mevent.h | 5 | ||||
-rw-r--r-- | include/script.h | 1 | ||||
-rw-r--r-- | src/mevent_server.c | 111 |
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; +} |