diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-05 18:06:48 -0400 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-04-06 08:16:13 -0500 |
commit | 60b2c569d85b6afdd7dc6e25059132c3f45c2a78 (patch) | |
tree | ad897f56337bd7931c10159173be76bd092f9264 | |
parent | 0ab30dbcd559fd5c53fc52166a46eff60d2a0e86 (diff) |
through sub_80F63D0
-rw-r--r-- | asm/pokenav.s | 194 | ||||
-rw-r--r-- | include/pokenav.h | 6 | ||||
-rw-r--r-- | src/pokenav.c | 98 |
3 files changed, 83 insertions, 215 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index 67ec8f510..7afd4ea87 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,200 +5,6 @@ .text - thumb_func_start sub_80F638C -sub_80F638C: @ 80F638C - push {r4,lr} - ldr r0, _080F63C0 @ =gPokenavStructPtr - ldr r4, [r0] - ldr r1, _080F63C4 @ =0x00008fe6 - adds r0, r4, r1 - movs r1, 0 - strb r1, [r0] - ldr r2, _080F63C8 @ =0x00008fe7 - adds r0, r4, r2 - strb r1, [r0] - bl sub_80F492C - ldr r0, _080F63CC @ =0x00006dac - adds r4, r0 - ldrb r0, [r4] - cmp r0, 0 - bne _080F63B8 -_080F63AE: - bl sub_80F63D0 - lsls r0, 24 - cmp r0, 0 - bne _080F63AE -_080F63B8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F63C0: .4byte gPokenavStructPtr -_080F63C4: .4byte 0x00008fe6 -_080F63C8: .4byte 0x00008fe7 -_080F63CC: .4byte 0x00006dac - thumb_func_end sub_80F638C - - thumb_func_start sub_80F63D0 -sub_80F63D0: @ 80F63D0 - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _080F647C @ =gPokenavStructPtr - ldr r2, [r0] - ldr r1, _080F6480 @ =0x00008fe6 - adds r0, r2, r1 - ldrb r3, [r0] - cmp r3, 0xE - beq _080F6498 - cmp r3, 0xF - bne _080F63E8 - b _080F64F6 -_080F63E8: - movs r1, 0x80 - lsls r1, 23 - ldr r0, [sp] - orrs r0, r1 - str r0, [sp] - movs r6, 0 - ldr r0, _080F6480 @ =0x00008fe6 - adds r5, r2, r0 - ldr r1, _080F6484 @ =0x00008fe7 - adds r4, r2, r1 -_080F63FC: - ldrb r0, [r5] - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - ldrb r2, [r4] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - ldr r2, _080F6488 @ =gPokemonStorage + 0x4 - adds r1, r2 - adds r0, r1 - movs r1, 0x51 - bl GetBoxMonData - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080F644E - ldrb r1, [r5] - lsls r1, 8 - ldr r2, _080F648C @ =0xffff00ff - ldr r0, [sp] - ands r0, r2 - orrs r0, r1 - str r0, [sp] - ldrb r2, [r4] - movs r1, 0x1F - ands r2, r1 - lsls r2, 16 - ldr r1, _080F6490 @ =0xffe0ffff - ands r0, r1 - orrs r0, r2 - ldr r1, _080F6494 @ =0xffffff00 - ands r0, r1 - orrs r0, r3 - str r0, [sp] - mov r0, sp - bl sub_80F4944 -_080F644E: - ldrb r0, [r4] - adds r0, 0x1 - movs r2, 0 - strb r0, [r4] - movs r1, 0xFF - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bne _080F646E - strb r2, [r4] - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ands r0, r1 - cmp r0, 0xE - beq _080F6508 -_080F646E: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0xE - bls _080F63FC - b _080F6508 - .align 2, 0 -_080F647C: .4byte gPokenavStructPtr -_080F6480: .4byte 0x00008fe6 -_080F6484: .4byte 0x00008fe7 -_080F6488: .4byte gPokemonStorage + 0x4 -_080F648C: .4byte 0xffff00ff -_080F6490: .4byte 0xffe0ffff -_080F6494: .4byte 0xffffff00 -_080F6498: - mov r0, sp - ldrb r1, [r0, 0x3] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0, 0x3] - strb r3, [r0, 0x1] - movs r6, 0 - mov r4, sp -_080F64A8: - movs r0, 0x64 - muls r0, r6 - ldr r1, _080F64FC @ =gPlayerParty - adds r0, r1 - movs r1, 0x51 - bl GetMonData - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080F64DA - movs r0, 0x1F - adds r2, r6, 0 - ands r2, r0 - ldrb r0, [r4, 0x2] - movs r5, 0x20 - negs r5, r5 - adds r1, r5, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x2] - strb r3, [r4] - mov r0, sp - bl sub_80F4944 -_080F64DA: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080F64A8 - bl sub_80F49F4 - ldr r0, _080F6500 @ =gPokenavStructPtr - ldr r1, [r0] - ldr r0, _080F6504 @ =0x00008fe6 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080F64F6: - movs r0, 0 - b _080F650A - .align 2, 0 -_080F64FC: .4byte gPlayerParty -_080F6500: .4byte gPokenavStructPtr -_080F6504: .4byte 0x00008fe6 -_080F6508: - movs r0, 0x1 -_080F650A: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F63D0 - thumb_func_start sub_80F6514 sub_80F6514: @ 80F6514 push {r4-r7,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 21a5c997e..b96337c00 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -38,9 +38,9 @@ struct UnkPokenavStruct_Sub3 { struct UnkUsePokeblockSub { /*0x0*/ u8 unk0; /*0x1*/ u8 unk1; - /*0x2*/ u8 partyIdx:5; - /*0x2*/ u16 unk2:9; - /*0x3*/ u8 unk4:1; + /*0x2*/ u16 partyIdx:5; + /*0x2*/ u16 unk2_5:9; + /*0x3*/ u16 unk3_14:1; }; struct UnkPokenav11 { diff --git a/src/pokenav.c b/src/pokenav.c index e074b83e8..21a2ecf2d 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1106,7 +1106,7 @@ void sub_80F01E0(u16 a) if (gPokenavStructPtr->unk76AA == 1) { Menu_PrintText(gPokenavStructPtr->unk88E9[a], 13, 3); - sub_80F443C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk2); + sub_80F443C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk2_5); Menu_PrintText(gPokenavStructPtr->unk8788, 1, 6); } } @@ -1304,7 +1304,7 @@ void ShowMapNamePopUpWindow(void) switch (gPokenavStructPtr->unk87CA) { case 0: - sub_80F443C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk876E].unk2); + sub_80F443C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk893c[gPokenavStructPtr->unk876E].unk2_5); break; case 1: sub_80F445C(gPokenavStructPtr->unk8788, gPokenavStructPtr->unk876E + 1); @@ -2214,7 +2214,7 @@ bool8 sub_80F1778(void) void sub_80F1934(void) { u8 *buffer = gPokenavStructPtr->unk8788; - if (gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4) + if (gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk3_14) { u8 nature = GetNature(&gPlayerParty[sub_8137124(gPokenavStructPtr->unk87DC)]); buffer = StringCopy(buffer, gOtherText_Nature2); @@ -4020,7 +4020,7 @@ void sub_80F3D00(void) u8 var1; struct UnkUsePokeblockSub *var0 = &gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC]; - if (!var0->unk4) + if (!var0->unk3_14) return; var1 = gPokenavStructPtr->unk8931[gPokenavStructPtr->unk8fe9]; @@ -4552,7 +4552,7 @@ void SetMonMarkings(u16 box, u16 monIndex, u8 markings) void sub_80F45A0(s16 arg0, u8 arg1) { u8 box; - u8 var0 = gPokenavStructPtr->unk893c[arg0].unk4; + u8 var0 = gPokenavStructPtr->unk893c[arg0].unk3_14; if (var0) { sub_80F4428(gPokenavStructPtr->unk8829[arg1], arg0, 0); @@ -4578,7 +4578,7 @@ void sub_80F468C(s16 arg0, u8 arg1) u16 box; u16 monIndex; - if (gPokenavStructPtr->unk893c[arg0].unk4) + if (gPokenavStructPtr->unk893c[arg0].unk3_14) { box = gPokenavStructPtr->unk893c[arg0].unk1; monIndex = gPokenavStructPtr->unk893c[arg0].partyIdx; @@ -4614,7 +4614,7 @@ void sub_80F4824(s16 arg0, u8 arg1) u16 box; u16 monIndex; - if (gPokenavStructPtr->unk893c[arg0].unk4) + if (gPokenavStructPtr->unk893c[arg0].unk3_14) { box = gPokenavStructPtr->unk893c[arg0].unk1; monIndex = gPokenavStructPtr->unk893c[arg0].partyIdx; @@ -4782,13 +4782,13 @@ void sub_80F49F4(void) { u16 i; - gPokenavStructPtr->unk893c[0].unk2 = 1; + gPokenavStructPtr->unk893c[0].unk2_5 = 1; for (i = 1; i < gPokenavStructPtr->unk8FE4; i++) { if (gPokenavStructPtr->unk893c[i].unk0 == gPokenavStructPtr->unk893c[i - 1].unk0) - gPokenavStructPtr->unk893c[i].unk2 = gPokenavStructPtr->unk893c[i - 1].unk2; + gPokenavStructPtr->unk893c[i].unk2_5 = gPokenavStructPtr->unk893c[i - 1].unk2_5; else - gPokenavStructPtr->unk893c[i].unk2 = i + 1; + gPokenavStructPtr->unk893c[i].unk2_5 = i + 1; } gPokenavStructPtr->unk876C = 0; @@ -4841,16 +4841,16 @@ void sub_80F4BD0(void) { gPokenavStructPtr->unk893c[j].unk1 = 14; gPokenavStructPtr->unk893c[j].partyIdx = i; - gPokenavStructPtr->unk893c[j].unk2 = j + 1; - gPokenavStructPtr->unk893c[j].unk4 = 1; + gPokenavStructPtr->unk893c[j].unk2_5 = j + 1; + gPokenavStructPtr->unk893c[j].unk3_14 = 1; j++; } } gPokenavStructPtr->unk893c[j].unk1 = 0; gPokenavStructPtr->unk893c[j].partyIdx = 0; - gPokenavStructPtr->unk893c[j].unk2 = 0; - gPokenavStructPtr->unk893c[j].unk4 = 0; + gPokenavStructPtr->unk893c[j].unk2_5 = 0; + gPokenavStructPtr->unk893c[j].unk3_14 = 0; gPokenavStructPtr->unk87DC = 0; gPokenavStructPtr->unk87DA = j + 1; sub_80F4B20(); @@ -4888,7 +4888,7 @@ bool8 sub_80F4D88(void) switch (gPokenavStructPtr->unk8FE6) { default: - var0.unk4 = 1; + var0.unk3_14 = 1; for (i = 0; i < 15; i++) { @@ -4916,7 +4916,7 @@ bool8 sub_80F4D88(void) } break; case 14: - var0.unk4 = 1; + var0.unk3_14 = 1; var0.unk1 = 14; for (i = 0; i < gPokenavStructPtr->unk8828; i++) { @@ -4977,7 +4977,7 @@ void sub_80F5060(u8 arg0) var0 = gPokenavStructPtr->unk8FEA; sub_80F53EC(gPokenavStructPtr->unk9004[gPokenavStructPtr->unk8fe9], gPokenavStructPtr->unk9004[var0]); - var1 = gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4; + var1 = gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk3_14; if (arg0) { gPokenavStructPtr->unk8FEB = gPokenavStructPtr->unk8FEA; @@ -5007,7 +5007,7 @@ void sub_80F5060(u8 arg0) : 0; } - var2 = gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk4; + var2 = gPokenavStructPtr->unk893c[gPokenavStructPtr->unk87DC].unk3_14; if (!var1) gPokenavStructPtr->unk87E0 = sub_80F5264; else if (!var2) @@ -5912,3 +5912,65 @@ bool8 sub_80F6250(void) } return TRUE; } + +void sub_80F638C(void) +{ + gPokenavStructPtr->unk8FE6 = 0; + gPokenavStructPtr->unk8FE7 = 0; + sub_80F492C(); + if (gPokenavStructPtr->unk6DAC == 0) + { + while (sub_80F63D0()) + ; + } +} + +bool8 sub_80F63D0(void) +{ + struct UnkUsePokeblockSub sp0; + u8 ribbons; + u16 i; + + switch (gPokenavStructPtr->unk8FE6) + { + default: + sp0.unk3_14 = 1; + for (i = 0; i < 15; i++) + { + ribbons = GetBoxMonData(&gPokemonStorage.boxes[gPokenavStructPtr->unk8FE6][gPokenavStructPtr->unk8FE7 + 0], MON_DATA_RIBBON_COUNT); + if (ribbons != 0) + { + sp0.unk1 = gPokenavStructPtr->unk8FE6; + sp0.partyIdx = gPokenavStructPtr->unk8FE7; + sp0.unk0 = ribbons; + sub_80F4944(&sp0); + } + if (++gPokenavStructPtr->unk8FE7 == 30) + { + gPokenavStructPtr->unk8FE7 = 0; + if (++gPokenavStructPtr->unk8FE6 == 14) + break; + } + } + break; + case 15: + return FALSE; + case 14: + sp0.unk3_14 = 1; + sp0.unk1 = 14; + for (i = 0; i < 6; i++) + { + ribbons = GetMonData(&gPlayerParty[i], MON_DATA_RIBBON_COUNT); + if (ribbons != 0) + { + sp0.partyIdx = i; + sp0.unk0 = ribbons; + sub_80F4944(&sp0); + } + } + sub_80F49F4(); + gPokenavStructPtr->unk8FE6++; + return FALSE; + } + return TRUE; +} |