diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-05 12:06:27 -0400 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-04-06 08:16:13 -0500 |
commit | 3783de2c4bc7a58ee53084490534f1aad91d33aa (patch) | |
tree | 528429984e75e2371e782180fd81a9dc370e925d | |
parent | 62b00311ff7a1fe5bbc3352b46f0d7173957b111 (diff) |
start what appears to be ruby's menu_specialized
-rw-r--r-- | asm/pokenav.s | 476 | ||||
-rw-r--r-- | include/pokenav.h | 28 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/menu_specialized.c | 374 | ||||
-rw-r--r-- | src/pokenav_before.c | 4 | ||||
-rw-r--r-- | src/use_pokeblock.c | 4 |
6 files changed, 401 insertions, 486 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index 9d9d2cc2f..e73eb0222 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,482 +5,6 @@ .text - thumb_func_start sub_80F5688 -sub_80F5688: @ 80F5688 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r6, r0, 0 - adds r5, r1, 0 - str r2, [sp] - ldr r7, [sp, 0x34] - lsls r3, 24 - lsrs r3, 24 - mov r9, r3 - movs r0, 0 - str r0, [sp, 0x8] - ldrh r0, [r5, 0x2] - ldrh r1, [r2, 0x2] - cmp r0, r1 - bcs _080F56D0 - adds r2, r0, 0 - str r2, [sp, 0x4] - ldr r3, [sp] - ldrh r0, [r3, 0x2] - ldrh r1, [r5] - lsls r4, r1, 10 - ldrh r2, [r3] - mov r10, r2 - ldr r3, [sp, 0x4] - subs r0, r3 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r0, 0 - beq _080F56FC - subs r0, r2, r1 - b _080F56F2 -_080F56D0: - ldrh r0, [r5, 0x2] - ldr r1, [sp] - ldrh r1, [r1, 0x2] - str r1, [sp, 0x4] - ldr r2, [sp] - ldrh r1, [r2] - lsls r4, r1, 10 - ldrh r3, [r5] - mov r10, r3 - ldr r2, [sp, 0x4] - subs r0, r2 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r0, 0 - beq _080F56FC - subs r0, r3, r1 -_080F56F2: - lsls r0, 10 - mov r1, r8 - bl __divsi3 - str r0, [sp, 0x8] -_080F56FC: - mov r0, r8 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r7, 0 - bne _080F5746 - ldr r0, [sp, 0x4] - subs r0, 0x38 - lsls r0, 2 - adds r6, r0 - movs r5, 0 - mov r3, r9 - lsls r3, 1 - mov r12, r3 - mov r0, r10 - add r0, r9 - str r0, [sp, 0xC] - cmp r7, r8 - bcs _080F57D4 - movs r7, 0x1 -_080F5726: - adds r2, r3, r6 - asrs r1, r4, 10 - asrs r0, r4, 9 - ands r0, r7 - adds r1, r0 - add r1, r9 - strh r1, [r2] - ldr r1, [sp, 0x8] - adds r4, r1 - adds r6, 0x4 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r8 - bcc _080F5726 - b _080F57D4 -_080F5746: - ldr r2, [sp, 0x8] - cmp r2, 0 - ble _080F57E4 - ldr r0, [sp, 0x4] - subs r0, 0x38 - lsls r0, 2 - adds r7, r0 - movs r5, 0 - mov r3, r9 - lsls r3, 1 - mov r12, r3 - mov r0, r10 - add r0, r9 - str r0, [sp, 0xC] - cmp r5, r8 - bcs _080F5798 - ldr r0, _080F57D8 @ =0x00026bff - cmp r4, r0 - bgt _080F5798 - mov r1, r12 - str r1, [sp, 0x10] - mov r10, r0 -_080F5772: - ldr r3, [sp, 0x10] - adds r2, r3, r7 - asrs r1, r4, 10 - asrs r0, r4, 9 - movs r3, 0x1 - ands r0, r3 - adds r1, r0 - add r1, r9 - strh r1, [r2] - ldr r0, [sp, 0x8] - adds r4, r0 - adds r7, 0x4 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r8 - bcs _080F5798 - cmp r4, r10 - ble _080F5772 -_080F5798: - ldr r1, _080F57DC @ =gPokenavStructPtr - ldr r0, [r1] - ldr r2, [sp, 0x4] - adds r1, r2, r5 - ldr r3, _080F57E0 @ =0x00009340 - adds r0, r3 - strh r1, [r0] - ldrh r0, [r0] - subs r0, 0x38 - lsls r0, 2 - adds r6, r0 - cmp r5, r8 - bcs _080F57D4 - mov r3, r12 - movs r7, 0x1 -_080F57B6: - adds r2, r3, r6 - asrs r1, r4, 10 - asrs r0, r4, 9 - ands r0, r7 - adds r1, r0 - add r1, r9 - strh r1, [r2] - ldr r0, [sp, 0x8] - adds r4, r0 - adds r6, 0x4 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r8 - bcc _080F57B6 -_080F57D4: - subs r0, r6, 0x4 - b _080F58C4 - .align 2, 0 -_080F57D8: .4byte 0x00026bff -_080F57DC: .4byte gPokenavStructPtr -_080F57E0: .4byte 0x00009340 -_080F57E4: - ldr r1, [sp, 0x8] - cmp r1, 0 - bge _080F5890 - ldr r0, [sp, 0x4] - subs r0, 0x38 - lsls r0, 2 - adds r6, r0 - movs r5, 0 - mov r2, r9 - lsls r2, 1 - mov r12, r2 - mov r3, r10 - add r3, r9 - str r3, [sp, 0xC] - cmp r5, r8 - bcs _080F5842 - adds r3, r2, r6 - asrs r1, r4, 10 - asrs r0, r4, 9 - movs r2, 0x1 - ands r0, r2 - adds r1, r0 - add r1, r9 - strh r1, [r3] - b _080F5838 -_080F5816: - ldr r0, [sp, 0x8] - adds r4, r0 - adds r6, 0x4 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r8 - bcs _080F5842 - mov r1, r12 - adds r3, r1, r6 - asrs r2, r4, 10 - asrs r0, r4, 9 - movs r1, 0x1 - ands r0, r1 - adds r2, r0 - add r2, r9 - strh r2, [r3] -_080F5838: - ldr r0, _080F5884 @ =0x00026bff - cmp r4, r0 - bgt _080F5816 - movs r0, 0x9B - strh r0, [r3] -_080F5842: - ldr r2, _080F5888 @ =gPokenavStructPtr - ldr r0, [r2] - ldr r3, [sp, 0x4] - adds r1, r3, r5 - ldr r2, _080F588C @ =0x00009340 - adds r0, r2 - strh r1, [r0] - ldrh r0, [r0] - subs r0, 0x38 - lsls r0, 2 - adds r7, r0 - cmp r5, r8 - bcs _080F587E - mov r3, r12 - movs r6, 0x1 -_080F5860: - adds r2, r3, r7 - asrs r1, r4, 10 - asrs r0, r4, 9 - ands r0, r6 - adds r1, r0 - add r1, r9 - strh r1, [r2] - ldr r0, [sp, 0x8] - adds r4, r0 - adds r7, 0x4 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, r8 - bcc _080F5860 -_080F587E: - subs r0, r7, 0x4 - b _080F58C4 - .align 2, 0 -_080F5884: .4byte 0x00026bff -_080F5888: .4byte gPokenavStructPtr -_080F588C: .4byte 0x00009340 -_080F5890: - ldr r0, _080F58BC @ =gPokenavStructPtr - ldr r0, [r0] - ldr r1, _080F58C0 @ =0x00009340 - adds r0, r1 - mov r2, sp - ldrh r2, [r2, 0x4] - strh r2, [r0] - ldr r0, [sp, 0x4] - subs r0, 0x38 - lsls r0, 2 - adds r6, r0 - adds r7, r0 - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r6, 0x2] - ldr r3, [sp] - ldrh r0, [r3] - strh r0, [r7] - movs r0, 0x9B - strh r0, [r7, 0x2] - b _080F58CC - .align 2, 0 -_080F58BC: .4byte gPokenavStructPtr -_080F58C0: .4byte 0x00009340 -_080F58C4: - add r0, r12 - mov r1, sp - ldrh r1, [r1, 0xC] - strh r1, [r0] -_080F58CC: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80F5688 - - thumb_func_start sub_80F58DC -sub_80F58DC: @ 80F58DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x2] - ldrh r1, [r5, 0x6] - cmp r0, r1 - bcs _080F5914 - adds r4, r0, 0 - mov r8, r4 - ldr r0, _080F590C @ =gPokenavStructPtr - ldr r0, [r0] - ldr r1, _080F5910 @ =0x00009130 - adds r0, r1 - adds r4, r5, 0x4 - movs r1, 0 - str r1, [sp] - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_80F5688 - b _080F5930 - .align 2, 0 -_080F590C: .4byte gPokenavStructPtr -_080F5910: .4byte 0x00009130 -_080F5914: - ldrh r4, [r5, 0x6] - mov r8, r4 - ldr r0, _080F5A08 @ =gPokenavStructPtr - ldr r0, [r0] - ldr r1, _080F5A0C @ =0x00009130 - adds r0, r1 - adds r4, r5, 0x4 - movs r1, 0 - str r1, [sp] - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl sub_80F5688 -_080F5930: - adds r1, r4, 0 - ldr r0, _080F5A08 @ =gPokenavStructPtr - ldr r6, [r0] - ldr r0, _080F5A0C @ =0x00009130 - adds r4, r6, r0 - adds r7, r5, 0 - adds r7, 0x8 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - adds r2, r7, 0 - movs r3, 0x1 - bl sub_80F5688 - movs r3, 0 - ldrh r0, [r5, 0xA] - ldrh r1, [r5, 0xE] - cmp r0, r1 - bhi _080F5958 - movs r3, 0x1 -_080F5958: - adds r2, r5, 0 - adds r2, 0xC - ldr r1, _080F5A10 @ =0x00009238 - adds r0, r6, r1 - str r0, [sp] - adds r0, r4, 0 - adds r1, r7, 0 - bl sub_80F5688 - movs r2, 0x38 - cmp r2, r8 - bcs _080F5990 - adds r7, r4, 0 - movs r3, 0 - ldr r0, _080F5A14 @ =0x00009132 - adds r4, r6, r0 -_080F5978: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 2 - adds r1, r7, r0 - strh r3, [r1] - adds r0, r4, r0 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r8 - bcc _080F5978 -_080F5990: - ldrh r2, [r5, 0x2] - ldr r0, _080F5A08 @ =gPokenavStructPtr - ldr r3, [r0] - ldr r4, _080F5A18 @ =0x00009340 - adds r1, r3, r4 - adds r6, r0, 0 - ldrh r0, [r1] - cmp r2, r0 - bhi _080F59BE - ldr r4, _080F5A0C @ =0x00009130 - adds r3, r4 - movs r4, 0x9B -_080F59A8: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 2 - adds r0, r3, r0 - strh r4, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r1] - cmp r2, r0 - bls _080F59A8 -_080F59BE: - ldr r4, [r6] - ldr r1, _080F5A18 @ =0x00009340 - adds r0, r4, r1 - ldrh r0, [r0] - ldrh r1, [r5, 0xA] - cmp r0, r1 - bcs _080F59CE - adds r0, r1, 0 -_080F59CE: - adds r0, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x79 - bhi _080F59FA - ldr r0, _080F5A0C @ =0x00009130 - adds r5, r4, r0 - movs r3, 0 - ldr r1, _080F5A14 @ =0x00009132 - adds r4, r1 -_080F59E2: - adds r0, r2, 0 - subs r0, 0x38 - lsls r0, 2 - adds r1, r5, r0 - strh r3, [r1] - adds r0, r4, r0 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x79 - bls _080F59E2 -_080F59FA: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F5A08: .4byte gPokenavStructPtr -_080F5A0C: .4byte 0x00009130 -_080F5A10: .4byte 0x00009238 -_080F5A14: .4byte 0x00009132 -_080F5A18: .4byte 0x00009340 - thumb_func_end sub_80F58DC - thumb_func_start sub_80F5A1C sub_80F5A1C: @ 80F5A1C push {r4-r7,lr} diff --git a/include/pokenav.h b/include/pokenav.h index b7c53ebe6..4004d0438 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -48,6 +48,19 @@ struct UnkPokenav11 { u16 unk2; }; +struct UnknownStruct_Pokenav_8FF0 { + /*0x000*/ u8 unk0[4][5]; + /*0x014*/ struct UnkPokenav11 unk14[4][5]; + /*0x064*/ struct UnkPokenav11 unk64[10][5]; + /*0x12C*/ struct UnkPokenav11 unk12C[5]; + /*0x140*/ u16 unk140[66][2]; + /*0x248*/ u16 unk248[66][2]; + /*0x350*/ u16 unk350; + /*0x352*/ u16 unk352; + /*0x354*/ u8 unk354; + /*0x355*/ u8 unk355; +}; + struct UnkPokenavStruct { /*0x0000*/ u16 unk0[6][0x40]; /*0x0300*/ u8 filler0300[0x6]; @@ -147,16 +160,19 @@ struct UnkPokenavStruct { /*0x8feb*/ s8 unk8FEB; /*0x8fec*/ s8 unk8FEC; /*0x8fee*/ u16 unk8FEE; + + // UnknownStruct_Pokenav_8FF0 /*0x8ff0*/ u8 unk8ff0[4][5]; - /*0x9004*/ struct UnkPokenav11 unk9004[3][5]; - /*0x9040*/ struct UnkPokenav11 unk9040[5]; - /*0x9054*/ struct UnkPokenav11 unk9054[9][5]; - /*0x9108*/ u8 unk9108[0x14]; + /*0x9004*/ struct UnkPokenav11 unk9004[4][5]; + /*0x9054*/ struct UnkPokenav11 unk9054[10][5]; /*0x911C*/ struct UnkPokenav11 unk911C[5]; - /*0x9130*/ u8 filler9130[0x212]; + /*0x9130*/ u16 unk9130[66][2]; + /*0x9238*/ u16 unk9238[66][2]; + /*0x9340*/ u16 unk9340; /*0x9342*/ u16 unk9342; /*0x9344*/ u8 unk9344; - /*0x9345*/ u8 filler9345[3]; + /*0x9345*/ u8 unk9345; + /*0x9348*/ struct Sprite *unk9348; /*0x934C*/ u16 unk934C[0x280]; /*0x984C*/ u8 unk984C[0xC][0x100]; diff --git a/ld_script.txt b/ld_script.txt index 2108d10c3..e3b366f30 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -296,6 +296,7 @@ SECTIONS { src/easy_chat_2.o(.text); src/pokenav_before.o(.text); src/pokenav.o(.text); + src/menu_specialized.o(.text); asm/pokenav.o(.text); src/trainers_eye.o(.text); src/mon_markings.o(.text); diff --git a/src/menu_specialized.c b/src/menu_specialized.c new file mode 100644 index 000000000..cef13b51d --- /dev/null +++ b/src/menu_specialized.c @@ -0,0 +1,374 @@ +#include "global.h" +#include "pokenav.h" + +/* TODO +// emerald: sub_81D2278 +void sub_80F5688(u16 * r6, u16 * r5, u16 * sp0, u8 r9, u16 * r7) +{ + u16 sp04; + u16 r0; + u16 r4; + u16 r10; + if (r5[1] < sp0[1]) + { + sp04 = r5[1]; + r4 = r5[0] << 10; + r0 = sp0[1]; + r10 = sp0[0]; + } +} +*/ + +NAKED +void sub_80F5688(u16 r6[66][2], struct UnkPokenav11 * r5, struct UnkPokenav11 * sp0, u8 r9, u16 r7[66][2]) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x14\n" + "\tadds r6, r0, 0\n" + "\tadds r5, r1, 0\n" + "\tstr r2, [sp]\n" + "\tldr r7, [sp, 0x34]\n" + "\tlsls r3, 24\n" + "\tlsrs r3, 24\n" + "\tmov r9, r3\n" + "\tmovs r0, 0\n" + "\tstr r0, [sp, 0x8]\n" + "\tldrh r0, [r5, 0x2]\n" + "\tldrh r1, [r2, 0x2]\n" + "\tcmp r0, r1\n" + "\tbcs _080F56D0\n" + "\tadds r2, r0, 0\n" + "\tstr r2, [sp, 0x4]\n" + "\tldr r3, [sp]\n" + "\tldrh r0, [r3, 0x2]\n" + "\tldrh r1, [r5]\n" + "\tlsls r4, r1, 10\n" + "\tldrh r2, [r3]\n" + "\tmov r10, r2\n" + "\tldr r3, [sp, 0x4]\n" + "\tsubs r0, r3\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r8, r0\n" + "\tcmp r0, 0\n" + "\tbeq _080F56FC\n" + "\tsubs r0, r2, r1\n" + "\tb _080F56F2\n" + "_080F56D0:\n" + "\tldrh r0, [r5, 0x2]\n" + "\tldr r1, [sp]\n" + "\tldrh r1, [r1, 0x2]\n" + "\tstr r1, [sp, 0x4]\n" + "\tldr r2, [sp]\n" + "\tldrh r1, [r2]\n" + "\tlsls r4, r1, 10\n" + "\tldrh r3, [r5]\n" + "\tmov r10, r3\n" + "\tldr r2, [sp, 0x4]\n" + "\tsubs r0, r2\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r8, r0\n" + "\tcmp r0, 0\n" + "\tbeq _080F56FC\n" + "\tsubs r0, r3, r1\n" + "_080F56F2:\n" + "\tlsls r0, 10\n" + "\tmov r1, r8\n" + "\tbl __divsi3\n" + "\tstr r0, [sp, 0x8]\n" + "_080F56FC:\n" + "\tmov r0, r8\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r8, r0\n" + "\tcmp r7, 0\n" + "\tbne _080F5746\n" + "\tldr r0, [sp, 0x4]\n" + "\tsubs r0, 0x38\n" + "\tlsls r0, 2\n" + "\tadds r6, r0\n" + "\tmovs r5, 0\n" + "\tmov r3, r9\n" + "\tlsls r3, 1\n" + "\tmov r12, r3\n" + "\tmov r0, r10\n" + "\tadd r0, r9\n" + "\tstr r0, [sp, 0xC]\n" + "\tcmp r7, r8\n" + "\tbcs _080F57D4\n" + "\tmovs r7, 0x1\n" + "_080F5726:\n" + "\tadds r2, r3, r6\n" + "\tasrs r1, r4, 10\n" + "\tasrs r0, r4, 9\n" + "\tands r0, r7\n" + "\tadds r1, r0\n" + "\tadd r1, r9\n" + "\tstrh r1, [r2]\n" + "\tldr r1, [sp, 0x8]\n" + "\tadds r4, r1\n" + "\tadds r6, 0x4\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, r8\n" + "\tbcc _080F5726\n" + "\tb _080F57D4\n" + "_080F5746:\n" + "\tldr r2, [sp, 0x8]\n" + "\tcmp r2, 0\n" + "\tble _080F57E4\n" + "\tldr r0, [sp, 0x4]\n" + "\tsubs r0, 0x38\n" + "\tlsls r0, 2\n" + "\tadds r7, r0\n" + "\tmovs r5, 0\n" + "\tmov r3, r9\n" + "\tlsls r3, 1\n" + "\tmov r12, r3\n" + "\tmov r0, r10\n" + "\tadd r0, r9\n" + "\tstr r0, [sp, 0xC]\n" + "\tcmp r5, r8\n" + "\tbcs _080F5798\n" + "\tldr r0, _080F57D8 @ =0x00026bff\n" + "\tcmp r4, r0\n" + "\tbgt _080F5798\n" + "\tmov r1, r12\n" + "\tstr r1, [sp, 0x10]\n" + "\tmov r10, r0\n" + "_080F5772:\n" + "\tldr r3, [sp, 0x10]\n" + "\tadds r2, r3, r7\n" + "\tasrs r1, r4, 10\n" + "\tasrs r0, r4, 9\n" + "\tmovs r3, 0x1\n" + "\tands r0, r3\n" + "\tadds r1, r0\n" + "\tadd r1, r9\n" + "\tstrh r1, [r2]\n" + "\tldr r0, [sp, 0x8]\n" + "\tadds r4, r0\n" + "\tadds r7, 0x4\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, r8\n" + "\tbcs _080F5798\n" + "\tcmp r4, r10\n" + "\tble _080F5772\n" + "_080F5798:\n" + "\tldr r1, _080F57DC @ =gPokenavStructPtr\n" + "\tldr r0, [r1]\n" + "\tldr r2, [sp, 0x4]\n" + "\tadds r1, r2, r5\n" + "\tldr r3, _080F57E0 @ =0x00009340\n" + "\tadds r0, r3\n" + "\tstrh r1, [r0]\n" + "\tldrh r0, [r0]\n" + "\tsubs r0, 0x38\n" + "\tlsls r0, 2\n" + "\tadds r6, r0\n" + "\tcmp r5, r8\n" + "\tbcs _080F57D4\n" + "\tmov r3, r12\n" + "\tmovs r7, 0x1\n" + "_080F57B6:\n" + "\tadds r2, r3, r6\n" + "\tasrs r1, r4, 10\n" + "\tasrs r0, r4, 9\n" + "\tands r0, r7\n" + "\tadds r1, r0\n" + "\tadd r1, r9\n" + "\tstrh r1, [r2]\n" + "\tldr r0, [sp, 0x8]\n" + "\tadds r4, r0\n" + "\tadds r6, 0x4\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, r8\n" + "\tbcc _080F57B6\n" + "_080F57D4:\n" + "\tsubs r0, r6, 0x4\n" + "\tb _080F58C4\n" + "\t.align 2, 0\n" + "_080F57D8: .4byte 0x00026bff\n" + "_080F57DC: .4byte gPokenavStructPtr\n" + "_080F57E0: .4byte 0x00009340\n" + "_080F57E4:\n" + "\tldr r1, [sp, 0x8]\n" + "\tcmp r1, 0\n" + "\tbge _080F5890\n" + "\tldr r0, [sp, 0x4]\n" + "\tsubs r0, 0x38\n" + "\tlsls r0, 2\n" + "\tadds r6, r0\n" + "\tmovs r5, 0\n" + "\tmov r2, r9\n" + "\tlsls r2, 1\n" + "\tmov r12, r2\n" + "\tmov r3, r10\n" + "\tadd r3, r9\n" + "\tstr r3, [sp, 0xC]\n" + "\tcmp r5, r8\n" + "\tbcs _080F5842\n" + "\tadds r3, r2, r6\n" + "\tasrs r1, r4, 10\n" + "\tasrs r0, r4, 9\n" + "\tmovs r2, 0x1\n" + "\tands r0, r2\n" + "\tadds r1, r0\n" + "\tadd r1, r9\n" + "\tstrh r1, [r3]\n" + "\tb _080F5838\n" + "_080F5816:\n" + "\tldr r0, [sp, 0x8]\n" + "\tadds r4, r0\n" + "\tadds r6, 0x4\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, r8\n" + "\tbcs _080F5842\n" + "\tmov r1, r12\n" + "\tadds r3, r1, r6\n" + "\tasrs r2, r4, 10\n" + "\tasrs r0, r4, 9\n" + "\tmovs r1, 0x1\n" + "\tands r0, r1\n" + "\tadds r2, r0\n" + "\tadd r2, r9\n" + "\tstrh r2, [r3]\n" + "_080F5838:\n" + "\tldr r0, _080F5884 @ =0x00026bff\n" + "\tcmp r4, r0\n" + "\tbgt _080F5816\n" + "\tmovs r0, 0x9B\n" + "\tstrh r0, [r3]\n" + "_080F5842:\n" + "\tldr r2, _080F5888 @ =gPokenavStructPtr\n" + "\tldr r0, [r2]\n" + "\tldr r3, [sp, 0x4]\n" + "\tadds r1, r3, r5\n" + "\tldr r2, _080F588C @ =0x00009340\n" + "\tadds r0, r2\n" + "\tstrh r1, [r0]\n" + "\tldrh r0, [r0]\n" + "\tsubs r0, 0x38\n" + "\tlsls r0, 2\n" + "\tadds r7, r0\n" + "\tcmp r5, r8\n" + "\tbcs _080F587E\n" + "\tmov r3, r12\n" + "\tmovs r6, 0x1\n" + "_080F5860:\n" + "\tadds r2, r3, r7\n" + "\tasrs r1, r4, 10\n" + "\tasrs r0, r4, 9\n" + "\tands r0, r6\n" + "\tadds r1, r0\n" + "\tadd r1, r9\n" + "\tstrh r1, [r2]\n" + "\tldr r0, [sp, 0x8]\n" + "\tadds r4, r0\n" + "\tadds r7, 0x4\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, r8\n" + "\tbcc _080F5860\n" + "_080F587E:\n" + "\tsubs r0, r7, 0x4\n" + "\tb _080F58C4\n" + "\t.align 2, 0\n" + "_080F5884: .4byte 0x00026bff\n" + "_080F5888: .4byte gPokenavStructPtr\n" + "_080F588C: .4byte 0x00009340\n" + "_080F5890:\n" + "\tldr r0, _080F58BC @ =gPokenavStructPtr\n" + "\tldr r0, [r0]\n" + "\tldr r1, _080F58C0 @ =0x00009340\n" + "\tadds r0, r1\n" + "\tmov r2, sp\n" + "\tldrh r2, [r2, 0x4]\n" + "\tstrh r2, [r0]\n" + "\tldr r0, [sp, 0x4]\n" + "\tsubs r0, 0x38\n" + "\tlsls r0, 2\n" + "\tadds r6, r0\n" + "\tadds r7, r0\n" + "\tldrh r0, [r5]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r6, 0x2]\n" + "\tldr r3, [sp]\n" + "\tldrh r0, [r3]\n" + "\tstrh r0, [r7]\n" + "\tmovs r0, 0x9B\n" + "\tstrh r0, [r7, 0x2]\n" + "\tb _080F58CC\n" + "\t.align 2, 0\n" + "_080F58BC: .4byte gPokenavStructPtr\n" + "_080F58C0: .4byte 0x00009340\n" + "_080F58C4:\n" + "\tadd r0, r12\n" + "\tmov r1, sp\n" + "\tldrh r1, [r1, 0xC]\n" + "\tstrh r1, [r0]\n" + "_080F58CC:\n" + "\tadd sp, 0x14\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} + +void sub_80F58DC(struct UnkPokenav11 * a0) +{ + u16 i, r6, varMax; + + if (a0[0].unk2 < a0[1].unk2) + { + r6 = a0[0].unk2; + sub_80F5688(gPokenavStructPtr->unk9130, &a0[0], &a0[1], 1, NULL); + } + else + { + r6 = a0[1].unk2; + sub_80F5688(gPokenavStructPtr->unk9130, &a0[1], &a0[0], 0, NULL); + } + sub_80F5688(gPokenavStructPtr->unk9130, &a0[1], &a0[2], 1, NULL); + + i = a0[2].unk2 <= a0[3].unk2; + sub_80F5688(gPokenavStructPtr->unk9130, &a0[2], &a0[3], i, gPokenavStructPtr->unk9238); + for (i = 56; i < r6; i++) + { + gPokenavStructPtr->unk9130[i - 56][0] = 0; + gPokenavStructPtr->unk9130[i - 56][1] = 0; + } + + for (i = a0[0].unk2; i <= gPokenavStructPtr->unk9340; i++) + gPokenavStructPtr->unk9130[i - 56][0] = 155; + + varMax = max(gPokenavStructPtr->unk9340, a0[2].unk2); + for (i = varMax + 1; i < 122; i++) + { + gPokenavStructPtr->unk9130[i - 56][0] = 0; + gPokenavStructPtr->unk9130[i - 56][1] = 0; + } +// +// for (i = 56; i < 122; i++) +// { +// if (gPokenavStructPtr->unk9130[i - 56][0] == 0 && gPokenavStructPtr->unk9130[i - 56][1] != 0) +// gPokenavStructPtr->unk9130[i - 56][0] = 155; +// } +} diff --git a/src/pokenav_before.c b/src/pokenav_before.c index a00f88051..b545b99fb 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -8525,7 +8525,7 @@ static bool8 sub_80F4D88(void) void sub_80F4F78(void) { - sub_80F53EC(gPokenavStructPtr->unk9040, gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9]); + sub_80F53EC(gPokenavStructPtr->unk9004[3], gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9]); sub_80F5504(); } @@ -8539,7 +8539,7 @@ bool8 sub_80F4FB4(void) void sub_80F4FDC(void) { if (gPokenavStructPtr->unk76AA || gPokenavStructPtr->unk87DC != gPokenavStructPtr->unk8828) - sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9040); + sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[3]); } bool8 sub_80F5038(void) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 9deab01fc..e13369c0b 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -549,8 +549,8 @@ static void sub_81369CC(void) break; case 2: sub_8136EF0(); - sub_80F567C(gUnknown_02039304->unk5c, gPokenavStructPtr->unk9040); - sub_80F5550(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9040); + sub_80F567C(gUnknown_02039304->unk5c, gPokenavStructPtr->unk9004[3]); + sub_80F5550(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[3]); sub_8137138(); gUnknown_02039304->unk50++; break; |