diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-12-02 10:02:39 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-12-02 10:02:39 -0500 |
commit | 884f1934e8bf34813701f745140f1d8429e8beaf (patch) | |
tree | bc8b2767605709561d8d33321c5474a7cf494c96 | |
parent | 2fbe528d5e2db723db338cb2d1635f0fa76ac905 (diff) |
start decompiling mevent_8145654
-rw-r--r-- | asm/mevent_8145654.s | 108 | ||||
-rw-r--r-- | data/data_8466FB8.s | 133 | ||||
-rw-r--r-- | include/global.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/mevent_8145654.c | 52 |
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; + } +} |