diff options
-rw-r--r-- | asm/mevent_8145654.s | 134 | ||||
-rw-r--r-- | src/mevent_8145654.c | 50 |
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; +} |