diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-12-02 13:33:03 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-12-02 13:33:03 -0500 |
commit | cd42b22d6b450b1fc1d79b046fe7cd1a0fdcf543 (patch) | |
tree | 0bd975b28cd332fdacc7efd19fd6d8870a981f5f | |
parent | 2fb1404613d12e5384c7650ef9d46d2678865544 (diff) |
sub_8145A98
-rw-r--r-- | asm/mevent_8145654.s | 309 | ||||
-rw-r--r-- | include/global.h | 8 | ||||
-rw-r--r-- | src/mevent_8145654.c | 86 |
3 files changed, 93 insertions, 310 deletions
diff --git a/asm/mevent_8145654.s b/asm/mevent_8145654.s index b831c9e87..45465afb9 100644 --- a/asm/mevent_8145654.s +++ b/asm/mevent_8145654.s @@ -5,313 +5,6 @@ .text - thumb_func_start sub_8145A98 -sub_8145A98: @ 8145A98 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r5, 0 - mov r0, sp - movs r1, 0 - movs r2, 0x6 - bl memset - ldr r4, =gUnknown_203F3C8 - ldr r1, [r4] - ldr r2, =0x0000018b - adds r0, r1, r2 - adds r1, 0xA - movs r2, 0x28 - bl memcpy - ldr r0, [r4] - ldr r3, =0x000001b3 - adds r1, r0, r3 - movs r0, 0xFF - strb r0, [r1] - ldr r1, [r4] - movs r2, 0xDA - lsls r2, 1 - adds r0, r1, r2 - adds r1, 0x32 - movs r2, 0x28 - bl memcpy - ldr r0, [r4] - movs r3, 0xEE - lsls r3, 1 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - strb r1, [r0] - ldr r1, [r4] - ldr r0, [r1, 0x4] - ldr r2, =0x000f423f - cmp r0, r2 - bls _08145AF4 - str r2, [r1, 0x4] -_08145AF4: - ldr r1, [r4] - ldr r2, =0x000001dd - adds r0, r1, r2 - ldr r1, [r1, 0x4] - movs r2, 0 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - adds r6, r4, 0 -_08145B06: - ldr r2, [r6] - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r4, r1, r5 - adds r0, r4, r2 - movs r3, 0xF2 - lsls r3, 1 - adds r0, r3 - adds r1, r2 - adds r1, 0x5A - movs r2, 0x28 - bl memcpy - ldr r1, [r6] - movs r0, 0x83 - lsls r0, 2 - adds r1, r0 - adds r1, r4 - movs r2, 0x1 - negs r2, r2 - adds r7, r2, 0 - movs r0, 0xFF - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _08145B06 - ldr r6, =gUnknown_203F3C8 - ldr r1, [r6] - movs r3, 0xA2 - lsls r3, 2 - adds r0, r1, r3 - adds r1, 0xFA - movs r2, 0x28 - bl memcpy - ldr r0, [r6] - movs r4, 0xAC - lsls r4, 2 - adds r0, r4 - movs r1, 0x1 - negs r1, r1 - adds r4, r1, 0 - movs r1, 0xFF - strb r1, [r0] - ldr r1, [r6] - ldrb r0, [r1, 0x8] - lsls r0, 30 - lsrs r0, 30 - cmp r0, 0x1 - beq _08145BB8 - cmp r0, 0x1 - bgt _08145B90 - cmp r0, 0 - beq _08145B96 - b _08145D08 - .pool -_08145B90: - cmp r0, 0x2 - beq _08145BC8 - b _08145D08 -_08145B96: - ldr r2, =0x000002b1 - adds r0, r1, r2 - movs r3, 0x91 - lsls r3, 1 - adds r1, r3 - movs r2, 0x28 - bl memcpy - ldr r1, [r6] - ldr r0, =0x000002d9 - adds r1, r0 - b _08145BBC - .pool -_08145BB8: - ldr r2, =0x000002b1 - adds r1, r2 -_08145BBC: - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - b _08145D08 - .pool -_08145BC8: - ldr r3, =0x000002b1 - adds r0, r1, r3 - ldrb r1, [r0] - orrs r1, r7 - strb r1, [r0] - mov r3, sp - ldr r1, [r6] - movs r4, 0xA6 - lsls r4, 1 - adds r0, r1, r4 - ldrh r0, [r0] - ldr r2, =0x000003e7 - cmp r0, r2 - bls _08145BE6 - adds r0, r2, 0 -_08145BE6: - strh r0, [r3] - mov r3, sp - movs r4, 0xA7 - lsls r4, 1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, r2 - bls _08145BF8 - adds r0, r2, 0 -_08145BF8: - strh r0, [r3, 0x2] - mov r3, sp - movs r4, 0xA8 - lsls r4, 1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, r2 - bls _08145C0A - adds r0, r2, 0 -_08145C0A: - strh r0, [r3, 0x4] - movs r5, 0 -_08145C0E: - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 4 - movs r0, 0xB7 - lsls r0, 2 - adds r4, r0 - ldr r0, [r6] - adds r0, r4 - adds r0, 0x2A - movs r1, 0xFF - movs r2, 0x4 - bl memset - ldr r0, [r6] - adds r0, r4 - adds r0, 0x1 - movs r1, 0xFF - movs r2, 0x29 - bl memset - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _08145C0E - movs r5, 0 - movs r6, 0 - ldr r1, =gUnknown_203F3C8 - mov r8, r1 - movs r2, 0x91 - lsls r2, 1 - mov r10, r2 - ldr r7, =0x00000175 - movs r3, 0xB7 - lsls r3, 2 - mov r9, r3 -_08145C56: - mov r4, r8 - ldr r2, [r4] - mov r0, r10 - adds r1, r2, r0 - adds r0, r1, r5 - ldrb r3, [r0] - cmp r3, 0xF7 - beq _08145C98 - ldr r1, =0x00000175 - adds r0, r2, r1 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 4 - adds r0, r6, r0 - ldr r4, =0x000002dd - adds r1, r2, r4 - adds r1, r0 - strb r3, [r1] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - b _08145CFE - .pool -_08145C98: - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - cmp r3, 0x2 - bls _08145CA8 - adds r0, r5, 0x2 - lsls r0, 16 - b _08145CFC -_08145CA8: - adds r0, r2, r7 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 4 - add r0, r9 - adds r0, r2, r0 - adds r0, 0x2A - lsls r1, r3, 1 - add r1, sp - ldrh r1, [r1] - movs r2, 0x2 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - mov r0, r8 - ldr r1, [r0] - adds r0, r1, r7 - ldrb r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 4 - adds r0, r1, r0 - adds r4, r5, 0x2 - add r1, r10 - adds r1, r4 - ldrb r1, [r1] - add r0, r9 - strb r1, [r0] - mov r2, r8 - ldr r1, [r2] - adds r1, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r0, r7 - ldrb r0, [r0] - cmp r0, 0x7 - bhi _08145D08 - movs r6, 0 - lsls r0, r4, 16 -_08145CFC: - lsrs r5, r0, 16 -_08145CFE: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x27 - bls _08145C56 -_08145D08: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8145A98 - thumb_func_start sub_8145D18 sub_8145D18: @ 8145D18 push {r4-r7,lr} @@ -972,6 +665,8 @@ _08146274: .pool thumb_func_end sub_81461D8 + @ file boundary maybe + thumb_func_start sub_8146288 sub_8146288: @ 8146288 push {r4-r6,lr} diff --git a/include/global.h b/include/global.h index 7c663a813..783a2c375 100644 --- a/include/global.h +++ b/include/global.h @@ -612,12 +612,16 @@ struct MEventBuffer_32E0_Sub { u16 unk_00; u16 unk_02; - u8 filler_04[4]; + u32 unk_04; u8 unk_08_0:2; u8 unk_08_2:4; u8 unk_08_6:2; u8 unk_09; - u8 filler_0A[322]; + u8 unk_0A[40]; + u8 unk_32[40]; + u8 unk_5A[4][40]; + u8 unk_FA[40]; + u8 unk_122[40]; }; struct MEventBuffer_32E0 diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 6c51f9091..d3ec2e0ce 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -6,6 +6,7 @@ #include "menu.h" #include "pokemon_icon.h" #include "mystery_gift_menu.h" +#include "string_util.h" #include "mevent.h" struct UnkStruct_8467FB8 @@ -16,16 +17,31 @@ struct UnkStruct_8467FB8 const u16 * pal; }; +struct UnkStruct_203F3C8_02DC +{ + u8 unk_00; + u8 unk_01[41]; + u8 unk_42[4]; +}; + 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 unk_0174; + /*0175*/ u8 unk_0175; /*0176*/ u16 unk_0176; /*0178*/ u16 unk_0178; /*017A*/ u16 unk_017A; - /*017C*/ u8 filler_0178[0x2E0]; + /*017C*/ u8 filler_017C[15]; + /*018B*/ u8 unk_018B[41]; + /*01B4*/ u8 unk_01B4[41]; + /*01DD*/ u8 unk_01DD[7]; + /*01E4*/ u8 unk_01E4[4][41]; + /*0288*/ u8 unk_0288[41]; + /*02B1*/ u8 unk_02B1[41]; + /*02DC*/ struct UnkStruct_203F3C8_02DC unk_02DC[8]; /*045C*/ u8 buffer_045C[0x1000]; }; @@ -187,3 +203,71 @@ s32 sub_814593C(bool32 flag) ++gUnknown_203F3C8->unk_0174; return 0; } + +void sub_8145A98(void) +{ + u16 i = 0; + u16 r6; + u16 sp0[3] = {0, 0, 0}; + + memcpy(gUnknown_203F3C8->unk_018B, gUnknown_203F3C8->unk_0000.unk_0A, 40); + gUnknown_203F3C8->unk_018B[40] = EOS; + memcpy(gUnknown_203F3C8->unk_01B4, gUnknown_203F3C8->unk_0000.unk_32, 40); + gUnknown_203F3C8->unk_01B4[40] = EOS; + if (gUnknown_203F3C8->unk_0000.unk_04 > 999999) + gUnknown_203F3C8->unk_0000.unk_04 = 999999; + ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_01DD, gUnknown_203F3C8->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6); + for (i = 0; i < 4; i++) + { + memcpy(gUnknown_203F3C8->unk_01E4[i], gUnknown_203F3C8->unk_0000.unk_5A[i], 40); + gUnknown_203F3C8->unk_01E4[i][40] = EOS; + } + memcpy(gUnknown_203F3C8->unk_0288, gUnknown_203F3C8->unk_0000.unk_FA, 40); + gUnknown_203F3C8->unk_0288[40] = EOS; + switch (gUnknown_203F3C8->unk_0000.unk_08_0) + { + case 0: + memcpy(gUnknown_203F3C8->unk_02B1, gUnknown_203F3C8->unk_0000.unk_122, 40); + gUnknown_203F3C8->unk_02B1[40] = EOS; + break; + case 1: + gUnknown_203F3C8->unk_02B1[00] = EOS; + break; + case 2: + gUnknown_203F3C8->unk_02B1[00] = EOS; + sp0[0] = gUnknown_203F3C8->unk_014c.unk_00 < 999 ? gUnknown_203F3C8->unk_014c.unk_00 : 999; + sp0[1] = gUnknown_203F3C8->unk_014c.unk_02 < 999 ? gUnknown_203F3C8->unk_014c.unk_02 : 999; + sp0[2] = gUnknown_203F3C8->unk_014c.unk_04 < 999 ? gUnknown_203F3C8->unk_014c.unk_04 : 999; + for (i = 0; i < 8; i++) + { + memset(gUnknown_203F3C8->unk_02DC[i].unk_42, EOS, 4); + memset(gUnknown_203F3C8->unk_02DC[i].unk_01, EOS, 41); + } + for (i = 0, r6 = 0; i < 40; i++) + { + if (gUnknown_203F3C8->unk_0000.unk_122[i] != 0xF7) + { + gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_01[r6] = gUnknown_203F3C8->unk_0000.unk_122[i]; + r6++; + } + else + { + u8 r3 = gUnknown_203F3C8->unk_0000.unk_122[i + 1]; + if (r3 > 2) + { + i += 2; + } + else + { + ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3); + gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_00 = gUnknown_203F3C8->unk_0000.unk_122[i + 2]; + gUnknown_203F3C8->unk_0175++; + if (gUnknown_203F3C8->unk_0175 > 7) + break; + r6 = 0; + i += 2; + } + } + } + } +} |