summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-12-02 13:33:03 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-12-02 13:33:03 -0500
commitcd42b22d6b450b1fc1d79b046fe7cd1a0fdcf543 (patch)
tree0bd975b28cd332fdacc7efd19fd6d8870a981f5f
parent2fb1404613d12e5384c7650ef9d46d2678865544 (diff)
sub_8145A98
-rw-r--r--asm/mevent_8145654.s309
-rw-r--r--include/global.h8
-rw-r--r--src/mevent_8145654.c86
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;
+ }
+ }
+ }
+ }
+}