summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-12-02 10:02:39 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-12-02 10:02:39 -0500
commit884f1934e8bf34813701f745140f1d8429e8beaf (patch)
treebc8b2767605709561d8d33321c5474a7cf494c96
parent2fbe528d5e2db723db338cb2d1635f0fa76ac905 (diff)
start decompiling mevent_8145654
-rw-r--r--asm/mevent_8145654.s108
-rw-r--r--data/data_8466FB8.s133
-rw-r--r--include/global.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/mevent_8145654.c52
5 files changed, 182 insertions, 115 deletions
diff --git a/asm/mevent_8145654.s b/asm/mevent_8145654.s
index ccb86ba64..51e90677a 100644
--- a/asm/mevent_8145654.s
+++ b/asm/mevent_8145654.s
@@ -5,114 +5,6 @@
.text
- thumb_func_start sub_8145654
-sub_8145654: @ 8145654
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- cmp r5, 0
- beq _08145670
- cmp r6, 0
- beq _08145670
- ldr r7, _08145674 @ =gUnknown_203F3C8
- ldr r0, _08145678 @ =0x0000145c
- bl AllocZeroed
- str r0, [r7]
- cmp r0, 0
- bne _0814567C
-_08145670:
- movs r0, 0
- b _081456E6
- .align 2, 0
-_08145674: .4byte gUnknown_203F3C8
-_08145678: .4byte 0x0000145c
-_0814567C:
- movs r4, 0xA6
- lsls r4, 1
- adds r1, r5, 0
- adds r2, r4, 0
- bl memcpy
- ldr r1, [r7]
- adds r1, r4
- adds r0, r6, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r2, [r7]
- ldrb r1, [r2, 0x8]
- lsls r0, r1, 26
- lsrs r0, 28
- cmp r0, 0x7
- bls _081456AE
- movs r0, 0x3D
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x8]
-_081456AE:
- ldr r2, [r7]
- ldrb r1, [r2, 0x8]
- lsls r0, r1, 30
- lsrs r0, 30
- cmp r0, 0x2
- bls _081456C2
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x8]
-_081456C2:
- ldr r1, [r7]
- ldrb r0, [r1, 0x9]
- cmp r0, 0x7
- bls _081456CE
- movs r0, 0
- strb r0, [r1, 0x9]
-_081456CE:
- ldr r0, [r7]
- movs r1, 0xB8
- lsls r1, 1
- adds r2, r0, r1
- ldrb r0, [r0, 0x8]
- lsls r0, 26
- lsrs r0, 28
- lsls r0, 4
- ldr r1, _081456EC @ =gUnknown_8467FB8
- adds r0, r1
- str r0, [r2]
- movs r0, 0x1
-_081456E6:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081456EC: .4byte gUnknown_8467FB8
- thumb_func_end sub_8145654
-
- thumb_func_start sub_81456F0
-sub_81456F0: @ 81456F0
- push {r4,lr}
- ldr r4, _08145714 @ =gUnknown_203F3C8
- ldr r0, [r4]
- cmp r0, 0
- beq _0814570C
- ldr r2, _08145718 @ =0x0000145c
- movs r1, 0
- bl memset
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_0814570C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08145714: .4byte gUnknown_203F3C8
-_08145718: .4byte 0x0000145c
- thumb_func_end sub_81456F0
-
thumb_func_start sub_814571C
sub_814571C: @ 814571C
push {r4-r6,lr}
diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s
index ee830ca04..6883ab138 100644
--- a/data/data_8466FB8.s
+++ b/data/data_8466FB8.s
@@ -5,13 +5,78 @@
.align 2
gUnknown_8467068:: @ 8467068
- .incbin "baserom.gba", 0x467068, 0x8
+ .byte 0x00, 0x02, 0x03
+ .byte 0x00, 0x01, 0x02
+ .align 2
gUnknown_8467070:: @ 8467070
- .incbin "baserom.gba", 0x467070, 0x4
+ .byte 0x07, 0x04, 0x07
+ .align 2
gUnknown_8467074:: @ 8467074
- .incbin "baserom.gba", 0x467074, 0xEE4
+ @ {0x01, 0x01, 0x01, 0x19, 0x04, 0x0f, 0x029c},
+ @ {0x01, 0x01, 0x06, 0x1c, 0x08, 0x0f, 0x01bc},
+ @ {0x01, 0x01, 0x0e, 0x1c, 0x05, 0x0f, 0x0130}
+ .byte 0x01, 0x01, 0x01, 0x19, 0x04, 0x0f
+ .2byte 0x029c
+ .byte 0x01, 0x01, 0x06, 0x1c, 0x08, 0x0f
+ .2byte 0x01bc
+ .byte 0x01, 0x01, 0x0e, 0x1c, 0x05, 0x0f
+ .2byte 0x0130
+
+gUnknown_846708C::
+ .incbin "baserom.gba", 0x46708c, 0x20
+
+gUnknown_84670AC::
+ .incbin "baserom.gba", 0x4670ac, 0x20
+
+gUnknown_84670CC::
+ .incbin "baserom.gba", 0x4670cc, 0x20
+
+gUnknown_84670EC::
+ .incbin "baserom.gba", 0x4670ec, 0x20
+
+gUnknown_846710C::
+ .incbin "baserom.gba", 0x46710c, 0x20
+
+gUnknown_846712C::
+ .incbin "baserom.gba", 0x46712c, 0x20
+
+gUnknown_846714C::
+ .incbin "baserom.gba", 0x46714c, 0x20
+
+gUnknown_846716C::
+ .incbin "baserom.gba", 0x46716c, 0x20
+
+gUnknown_846718C::
+ .incbin "baserom.gba", 0x46718c, 0xFC
+
+gUnknown_8467288::
+ .incbin "baserom.gba", 0x467288, 0xF4
+
+gUnknown_846737C::
+ .incbin "baserom.gba", 0x46737c, 0xF4
+
+gUnknown_8467470::
+ .incbin "baserom.gba", 0x467470, 0xE8
+
+gUnknown_8467558::
+ .incbin "baserom.gba", 0x467558, 0xD4
+
+gUnknown_846762C::
+ .incbin "baserom.gba", 0x46762c, 0xD4
+
+gUnknown_8467700::
+ .incbin "baserom.gba", 0x467700, 0x234
+
+gUnknown_8467934::
+ .incbin "baserom.gba", 0x467934, 0x148
+
+gUnknown_8467A7C::
+ .incbin "baserom.gba", 0x467a7c, 0x230
+
+gUnknown_8467CAC::
+ .incbin "baserom.gba", 0x467cac, 0x2AC
gUnknown_8467F58:: @ 8467F58
.incbin "baserom.gba", 0x467F58, 0x8
@@ -23,7 +88,14 @@ gUnknown_8467FA0:: @ 8467FA0
.incbin "baserom.gba", 0x467FA0, 0x18
gUnknown_8467FB8:: @ 8467FB8
- .incbin "baserom.gba", 0x467FB8, 0x80
+ .4byte 0x0001, gUnknown_846718C, gUnknown_8467288, gUnknown_846708C
+ .4byte 0x1001, gUnknown_846737C, gUnknown_8467470, gUnknown_84670AC
+ .4byte 0x2001, gUnknown_8467558, gUnknown_846762C, gUnknown_84670CC
+ .4byte 0x3001, gUnknown_8467558, gUnknown_846762C, gUnknown_84670EC
+ .4byte 0x4001, gUnknown_8467558, gUnknown_846762C, gUnknown_846710C
+ .4byte 0x5001, gUnknown_8467558, gUnknown_846762C, gUnknown_846712C
+ .4byte 0x6001, gUnknown_8467700, gUnknown_8467934, gUnknown_846714C
+ .4byte 0x7001, gUnknown_8467A7C, gUnknown_8467CAC, gUnknown_846716C
gUnknown_8468038:: @ 8468038
.incbin "baserom.gba", 0x468038, 0x8
@@ -32,10 +104,59 @@ gUnknown_8468040:: @ 8468040
.incbin "baserom.gba", 0x468040, 0x10
gUnknown_8468050:: @ 8468050
- .incbin "baserom.gba", 0x468050, 0x6D0
+ .incbin "baserom.gba", 0x468050, 0x10
+
+gUnknown_8468060::
+ .incbin "baserom.gba", 0x468060, 0x20
+
+gUnknown_8468080::
+ .incbin "baserom.gba", 0x468080, 0x20
+
+gUnknown_84680A0::
+ .incbin "baserom.gba", 0x4680A0, 0x20
+
+gUnknown_84680C0::
+ .incbin "baserom.gba", 0x4680C0, 0x80
+
+gUnknown_8468140::
+ .incbin "baserom.gba", 0x468140, 0xdc
+
+gUnknown_846821C::
+ .incbin "baserom.gba", 0x46821C, 0x30
+
+gUnknown_846824C::
+ .incbin "baserom.gba", 0x46824C, 0xc0
+
+gUnknown_846830C::
+ .incbin "baserom.gba", 0x46830C, 0x70
+
+gUnknown_846837C::
+ .incbin "baserom.gba", 0x46837C, 0xcc
+
+gUnknown_8468448::
+ .incbin "baserom.gba", 0x468448, 0x90
+
+gUnknown_84684D8::
+ .incbin "baserom.gba", 0x4684D8, 0xdc
+
+gUnknown_84685B4::
+ .incbin "baserom.gba", 0x4685B4, 0x90
+
+gUnknown_8468644::
+ .incbin "baserom.gba", 0x468644, 0xdc
gUnknown_8468720:: @ 8468720
- .incbin "baserom.gba", 0x468720, 0xC0
+ .4byte 1, gUnknown_84680C0, gUnknown_8468140, gUnknown_8468060
+ .4byte 1, gUnknown_846821C, gUnknown_846824C, gUnknown_84670AC
+ .4byte 1, gUnknown_846830C, gUnknown_846837C, gUnknown_84670CC
+ .4byte 1, gUnknown_846830C, gUnknown_846837C, gUnknown_84670EC
+ .4byte 1, gUnknown_846830C, gUnknown_846837C, gUnknown_846710C
+ .4byte 1, gUnknown_846830C, gUnknown_846837C, gUnknown_846712C
+ .4byte 1, gUnknown_8468448, gUnknown_84684D8, gUnknown_8468080
+ .4byte 1, gUnknown_84685B4, gUnknown_8468644, gUnknown_84680A0
+
+gUnknown_84687A0::
+ .incbin "baserom.gba", 0x4687a0, 0x40
.include "data/mevent/script_ish.inc"
.include "data/mevent/script_common.inc"
diff --git a/include/global.h b/include/global.h
index 5b07796cc..7c663a813 100644
--- a/include/global.h
+++ b/include/global.h
@@ -599,7 +599,7 @@ struct MEventBuffer_3120_Sub
{
u16 unk_00;
u8 unk_02;
- u16 filler_04[220];
+ u8 filler_04[440];
};
struct MEventBuffer_3120
diff --git a/ld_script.txt b/ld_script.txt
index 87d5fd323..8d88929cf 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -246,6 +246,7 @@ SECTIONS {
src/mevent.o(.text);
src/mevent_server_helpers.o(.text);
src/mevent_server.o(.text);
+ src/mevent_8145654.o(.text);
asm/mevent_8145654.o(.text);
src/menews_jisan.o(.text);
asm/seagallop.o(.text);
@@ -382,6 +383,7 @@ SECTIONS {
src/mevent.o(.rodata);
src/mevent_server_helpers.o(.rodata);
src/mevent_server.o(.rodata);
+ src/mevent_8145654.o(.rodata);
data/data_8466FB8.o(.rodata);
src/menews_jisan.o(.rodata);
src/menews_jisan.o(.rodata.str1.4);
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
new file mode 100644
index 000000000..9c26a21a1
--- /dev/null
+++ b/src/mevent_8145654.c
@@ -0,0 +1,52 @@
+#include "global.h"
+#include "malloc.h"
+#include "mevent.h"
+
+struct UnkStruct_8467FB8
+{
+ u16 ident;
+ const void * unk_04;
+ const void * unk_08;
+ const void * unk_0C;
+};
+
+struct UnkStruct_203F3C8
+{
+ /*0000*/ struct MEventBuffer_32E0_Sub unk_0000;
+ /*014c*/ struct MEventBuffer_3430_Sub unk_014c;
+ /*0170*/ const struct UnkStruct_8467FB8 * unk_0170;
+ /*0174*/ u8 filler_0174[0x12E8];
+};
+
+EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL;
+
+extern const struct UnkStruct_8467FB8 gUnknown_8467FB8[8];
+
+bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
+{
+ if (r5 == NULL || r6 == NULL)
+ return FALSE;
+ gUnknown_203F3C8 = AllocZeroed(sizeof(struct UnkStruct_203F3C8));
+ if (gUnknown_203F3C8 == NULL)
+ return FALSE;
+ gUnknown_203F3C8->unk_0000 = *r5;
+ gUnknown_203F3C8->unk_014c = *r6;
+ if (gUnknown_203F3C8->unk_0000.unk_08_2 > 7)
+ gUnknown_203F3C8->unk_0000.unk_08_2 = 0;
+ if (gUnknown_203F3C8->unk_0000.unk_08_0 > 2)
+ gUnknown_203F3C8->unk_0000.unk_08_0 = 0;
+ if (gUnknown_203F3C8->unk_0000.unk_09 > 7)
+ gUnknown_203F3C8->unk_0000.unk_09 = 0;
+ gUnknown_203F3C8->unk_0170 = &gUnknown_8467FB8[gUnknown_203F3C8->unk_0000.unk_08_2];
+ return TRUE;
+}
+
+void sub_81456F0(void)
+{
+ if (gUnknown_203F3C8 != NULL)
+ {
+ *gUnknown_203F3C8 = (struct UnkStruct_203F3C8){};
+ Free(gUnknown_203F3C8);
+ gUnknown_203F3C8 = NULL;
+ }
+}