summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/mevent_8145654.s134
-rw-r--r--src/mevent_8145654.c50
2 files changed, 47 insertions, 137 deletions
diff --git a/asm/mevent_8145654.s b/asm/mevent_8145654.s
index 8e3357763..c76fd8260 100644
--- a/asm/mevent_8145654.s
+++ b/asm/mevent_8145654.s
@@ -5,140 +5,6 @@
.text
- thumb_func_start sub_8146884
-sub_8146884: @ 8146884
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r3, r4, 0
- ldr r2, =gUnknown_203F3CC
- ldr r0, [r2]
- mov r12, r0
- movs r0, 0xE1
- lsls r0, 1
- add r0, r12
- ldrb r1, [r0]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- adds r6, r2, 0
- cmp r0, 0
- beq _081468B4
- bl sub_8146B58
-_081468AA:
- movs r0, 0xFF
- b _0814697A
- .pool
-_081468B4:
- cmp r4, 0x2
- beq _081468D0
- cmp r4, 0x2
- bgt _081468C2
- cmp r4, 0x1
- beq _081468CC
- b _081468AA
-_081468C2:
- cmp r3, 0x40
- beq _081468D4
- cmp r3, 0x80
- beq _08146904
- b _081468AA
-_081468CC:
- movs r0, 0
- b _0814697A
-_081468D0:
- movs r0, 0x1
- b _0814697A
-_081468D4:
- movs r0, 0xE3
- lsls r0, 1
- add r0, r12
- ldrh r0, [r0]
- cmp r0, 0
- beq _081468AA
- movs r0, 0xE0
- lsls r0, 1
- add r0, r12
- ldrb r1, [r0]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _081468AA
- ldr r2, =0x000001c3
- add r2, r12
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- b _08146932
- .pool
-_08146904:
- movs r0, 0xE3
- lsls r0, 1
- add r0, r12
- movs r1, 0xE2
- lsls r1, 1
- add r1, r12
- ldrh r0, [r0]
- ldrh r1, [r1]
- cmp r0, r1
- beq _081468AA
- movs r0, 0xE0
- lsls r0, 1
- add r0, r12
- ldrb r1, [r0]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _081468AA
- ldr r2, =0x000001c3
- add r2, r12
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
-_08146932:
- strb r0, [r2]
- ldr r2, [r6]
- movs r4, 0xE1
- lsls r4, 1
- adds r2, r4
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r3, [r6]
- adds r3, r4
- ldrb r1, [r3]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldr r1, [r6]
- adds r4, 0x1
- adds r1, r4
- ldrb r3, [r1]
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, r4
- ldrb r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _08146978
- movs r0, 0x3
- b _0814697A
- .pool
-_08146978:
- movs r0, 0x2
-_0814697A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8146884
-
thumb_func_start sub_8146980
sub_8146980: @ 8146980
push {r4-r6,lr}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index 04fac680e..443aa0b76 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -456,9 +456,13 @@ struct UnkStruct_203F3CC
/*0000*/ struct MEventBuffer_3120_Sub unk_0000;
/*01bc*/ const struct UnkStruct_8468720 * unk_01BC;
/*01c0*/ u8 unk_01C0_0:1;
- /*01c0*/ u8 unk_01C0_1:7;
+ u8 unk_01C0_1:7;
/*01c1*/ u8 unk_01C1;
- /*01c2*/ u8 filler_01C2[4];
+ /*01c2*/ u8 unk_01C2_0:1;
+ u8 unk_01C2_1:7;
+ /*01c3*/ u8 unk_01C3_0:1;
+ u8 unk_01C3_1:7;
+ /*01c4*/ u16 unk_01C4;
/*01c6*/ u16 unk_01C6;
/*01c8*/ u16 unk_01C8[2];
/*01cc*/ u8 filler_01CC[0x1C8];
@@ -470,6 +474,7 @@ EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL;
void sub_8146980(void);
void sub_8146A30(void);
+void sub_8146B58(void);
extern const struct TextColor gUnknown_8468038[2];
extern const struct WindowTemplate gUnknown_8468040[2];
@@ -657,4 +662,43 @@ void sub_8146834(void)
gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6);
gUnknown_203F3CC->unk_01C0_0 = FALSE;
}
-} \ No newline at end of file
+}
+
+u8 sub_8146884(u16 input)
+{
+ if (gUnknown_203F3CC->unk_01C2_0)
+ {
+ sub_8146B58();
+ return 0xFF;
+ }
+ switch (input)
+ {
+ case A_BUTTON:
+ return 0;
+ case B_BUTTON:
+ return 1;
+ case DPAD_UP:
+ if (gUnknown_203F3CC->unk_01C6 == 0)
+ return 0xFF;
+ if (gUnknown_203F3CC->unk_01C0_0)
+ return 0xFF;
+ gUnknown_203F3CC->unk_01C3_0 = FALSE;
+ break;
+ case DPAD_DOWN:
+ if (gUnknown_203F3CC->unk_01C6 == gUnknown_203F3CC->unk_01C4)
+ return 0xFF;
+ if (gUnknown_203F3CC->unk_01C0_0)
+ return 0xFF;
+ gUnknown_203F3CC->unk_01C3_0 = TRUE;
+ break;
+ default:
+ return 0xFF;
+ }
+ gUnknown_203F3CC->unk_01C2_0 = TRUE;
+ gUnknown_203F3CC->unk_01C2_1 = 2;
+ gUnknown_203F3CC->unk_01C3_1 = 0;
+ if (gUnknown_203F3CC->unk_01C3_0 == FALSE)
+ return 2;
+ else
+ return 3;
+}