From 8338e292791097b7e9e763ca42549ca6db4acdd2 Mon Sep 17 00:00:00 2001 From: Phlosioneer Date: Wed, 10 Apr 2019 12:18:44 -0400 Subject: [PATCH] Pokenav unk 1 almost done --- asm/pokenav_unk_1.s | 243 +------------------------------------------- src/pokenav_unk_1.c | 139 ++++++++++++++++++++++++- 2 files changed, 136 insertions(+), 246 deletions(-) diff --git a/asm/pokenav_unk_1.s b/asm/pokenav_unk_1.s index 459369a5b..627d1a884 100644 --- a/asm/pokenav_unk_1.s +++ b/asm/pokenav_unk_1.s @@ -3,248 +3,7 @@ .syntax unified - thumb_func_start sub_81C963C -sub_81C963C: @ 81C963C - push {r4-r6,lr} - adds r4, r0, 0 - bl sub_81C9814 - adds r3, r0, 0 - cmp r3, 0 - beq _081C964E - movs r0, 0x1 - b _081C96F6 -_081C964E: - ldr r2, =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - beq _081C96B8 - ldr r5, =gUnknown_0861FC59 - movs r1, 0x2 - ldrsh r0, [r4, r1] - ldrh r2, [r4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 1 - adds r0, r1 - adds r0, r5 - ldrb r0, [r0] - cmp r0, 0x6 - beq _081C968E - cmp r0, 0x6 - bgt _081C9688 - cmp r0, 0x5 - beq _081C96A4 - b _081C96B8 - .pool -_081C9688: - cmp r0, 0x7 - beq _081C96E4 - b _081C96B8 -_081C968E: - movs r0, 0x4 - strh r0, [r4] - strh r3, [r4, 0x2] - ldrb r0, [r5, 0x18] - strh r0, [r4, 0x4] - ldr r0, =sub_81C96FC - str r0, [r4, 0xC] - movs r0, 0x4 - b _081C96F6 - .pool -_081C96A4: - strh r3, [r4, 0x6] - ldr r1, =0x000186a7 - adds r0, r4, 0 - bl sub_81C97B0 - movs r0, 0x8 - b _081C96F6 - .pool -_081C96B8: - ldrh r1, [r6, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081C96F4 - movs r0, 0x2 - ldrsh r2, [r4, r0] - ldr r1, =gUnknown_0861FC54 - ldrh r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r2, r0 - beq _081C96E4 - strh r0, [r4, 0x2] - ldr r0, =sub_81C9798 - str r0, [r4, 0xC] - movs r0, 0x1 - b _081C96F6 - .pool -_081C96E4: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_81C97C0 - movs r0, 0x3 - b _081C96F6 -_081C96F4: - movs r0, 0 -_081C96F6: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_81C963C - - thumb_func_start sub_81C96FC -sub_81C96FC: @ 81C96FC - push {r4,lr} - adds r4, r0, 0 - bl sub_81C9814 - cmp r0, 0 - beq _081C970C - movs r0, 0x1 - b _081C9792 -_081C970C: - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081C9754 - ldr r3, =gUnknown_0861FC59 - movs r0, 0x2 - ldrsh r1, [r4, r0] - ldrh r2, [r4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 1 - adds r1, r0 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xD - beq _081C9780 - subs r0, 0x8 - bl sub_81C7694 - ldr r1, =0x000186a8 - adds r0, r4, 0 - bl sub_81C97B0 - movs r0, 0x3 - strh r0, [r4, 0x6] - movs r0, 0x8 - b _081C9792 - .pool -_081C9754: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081C9790 - movs r0, 0x2 - ldrsh r2, [r4, r0] - ldr r1, =gUnknown_0861FC54 - ldrh r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r2, r0 - beq _081C9780 - strh r0, [r4, 0x2] - ldr r0, =sub_81C97A4 - str r0, [r4, 0xC] - movs r0, 0x1 - b _081C9792 - .pool -_081C9780: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_81C97F8 - movs r0, 0x5 - b _081C9792 -_081C9790: - movs r0, 0 -_081C9792: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81C96FC - - thumb_func_start sub_81C9798 -sub_81C9798: @ 81C9798 - push {lr} - bl sub_81C97C0 - movs r0, 0x3 - pop {r1} - bx r1 - thumb_func_end sub_81C9798 - - thumb_func_start sub_81C97A4 -sub_81C97A4: @ 81C97A4 - push {lr} - bl sub_81C97F8 - movs r0, 0x5 - pop {r1} - bx r1 - thumb_func_end sub_81C97A4 - - thumb_func_start sub_81C97B0 -sub_81C97B0: @ 81C97B0 - str r1, [r0, 0x8] - ldr r1, =sub_81C97BC - str r1, [r0, 0xC] - bx lr - .pool - thumb_func_end sub_81C97B0 - - thumb_func_start sub_81C97BC -sub_81C97BC: @ 81C97BC - ldr r0, [r0, 0x8] - bx lr - thumb_func_end sub_81C97BC - - thumb_func_start sub_81C97C0 -sub_81C97C0: @ 81C97C0 - push {r4,lr} - adds r4, r0, 0 - bl sub_81C9268 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0x1 - strh r0, [r4, 0x2] - ldr r2, =gUnknown_0861FC59 - ldrh r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - adds r0, 0x1 - adds r0, r2 - ldrb r0, [r0] - strh r0, [r4, 0x4] - ldr r0, =sub_81C943C - str r0, [r4, 0xC] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_81C97C0 - - thumb_func_start sub_81C97F8 -sub_81C97F8: @ 81C97F8 - movs r1, 0x3 - strh r1, [r0] - movs r1, 0x1 - strh r1, [r0, 0x2] - ldr r1, =gUnknown_0861FC59 - ldrb r1, [r1, 0x13] - strh r1, [r0, 0x4] - ldr r1, =sub_81C963C - str r1, [r0, 0xC] - bx lr - .pool - thumb_func_end sub_81C97F8 - - thumb_func_start sub_81C9814 + thumb_func_start sub_81C9814 sub_81C9814: @ 81C9814 push {r4,r5,lr} adds r4, r0, 0 diff --git a/src/pokenav_unk_1.c b/src/pokenav_unk_1.c index da05657cb..9c8eda0a2 100644 --- a/src/pokenav_unk_1.c +++ b/src/pokenav_unk_1.c @@ -17,11 +17,17 @@ struct Pokenav1Struct extern u32 sub_81C76AC(void); -extern u32 sub_81C963C(struct Pokenav1Struct *a0); -extern u32 sub_81C96FC(struct Pokenav1Struct *a0); -extern u32 sub_81C9814(void); -extern void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1); +extern void sub_81C7694(u32 a0); +u32 sub_81C9814(void); +void sub_81C97F8(struct Pokenav1Struct *a0); +void sub_81C97C0(struct Pokenav1Struct *a0); +u32 sub_81C97BC(struct Pokenav1Struct *a0); +void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1); +u32 sub_81C97A4(struct Pokenav1Struct *a0); +u32 sub_81C9798(struct Pokenav1Struct *a0); +u32 sub_81C96FC(struct Pokenav1Struct *a0); +u32 sub_81C963C(struct Pokenav1Struct *a0); u32 sub_81C9600(struct Pokenav1Struct *a0); u32 sub_81C9588(struct Pokenav1Struct *a0); u32 sub_81C9520(struct Pokenav1Struct *a0); @@ -29,6 +35,7 @@ u32 sub_81C943C(struct Pokenav1Struct *a0); u32 (*sub_81C93EC(void))(struct Pokenav1Struct*); void sub_81C939C(struct Pokenav1Struct *state); +extern u8 gUnknown_0861FC54[]; extern u8 gUnknown_0861FC59[]; u8 sub_81C9268(void) @@ -293,4 +300,128 @@ u32 sub_81C9600(struct Pokenav1Struct *a0) } return 0; +} + +u32 sub_81C963C(struct Pokenav1Struct *a0) +{ + u32 v0 = sub_81C9814(); + if (v0) + return 1; + + if (gMain.newKeys & A_BUTTON) + { + switch (gUnknown_0861FC59[a0->unk2 + a0->unk0 * 6]) + { + case 6: + a0->unk0 = 4; + a0->unk2 = v0; + a0->unk4 = gUnknown_0861FC59[24]; + a0->unkC = sub_81C96FC; + return 4; + case 5: + a0->unk6 = v0; + sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 7); + return 8; + case 7: + PlaySE(SE_SELECT); + sub_81C97C0(a0); + return 3; + } + } + if (gMain.newKeys & B_BUTTON) + { + if (a0->unk2 != gUnknown_0861FC54[a0->unk0]) + { + a0->unk2 = gUnknown_0861FC54[a0->unk0]; + a0->unkC = sub_81C9798; + return 1; + } + else + { + PlaySE(SE_SELECT); + sub_81C97C0(a0); + return 3; + } + } + + return 0; +} + +u32 sub_81C96FC(struct Pokenav1Struct *a0) +{ + if (sub_81C9814()) + return 1; + + if (gMain.newKeys & A_BUTTON) + { + u8 v0 = gUnknown_0861FC59[a0->unk2 + a0->unk0 * 6]; + if (v0 != 13) + { + sub_81C7694(v0 - 8); + sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 8); + a0->unk6 = 3; + return 8; + } + else + { + PlaySE(SE_SELECT); + sub_81C97F8(a0); + return 5; + } + } + if (gMain.newKeys & B_BUTTON) + { + if (a0->unk2 != gUnknown_0861FC54[a0->unk0]) + { + a0->unk2 = gUnknown_0861FC54[a0->unk0]; + a0->unkC = sub_81C97A4; + return 1; + } + else + { + PlaySE(SE_SELECT); + sub_81C97F8(a0); + return 5; + } + } + return 0; +} + +u32 sub_81C9798(struct Pokenav1Struct *a0) +{ + sub_81C97C0(a0); + return 3; +} + +u32 sub_81C97A4(struct Pokenav1Struct *a0) +{ + sub_81C97F8(a0); + return 5; +} + +void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1) +{ + a0->unk8 = a1; + a0->unkC = sub_81C97BC; +} + +u32 sub_81C97BC(struct Pokenav1Struct *a0) +{ + return a0->unk8; +} + +void sub_81C97C0(struct Pokenav1Struct *a0) +{ + a0->unk0 = sub_81C9268(); + a0->unk2 = 1; + a0->unk4 = gUnknown_0861FC59[a0->unk2 + a0->unk0 * 6]; + a0->unkC = sub_81C943C; +} + +void sub_81C97F8(struct Pokenav1Struct *a0) +{ + a0->unk0 = 3; + a0->unk2 = 1; + a0->unk4 = gUnknown_0861FC59[19]; + a0->unkC = sub_81C963C; } \ No newline at end of file