summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-05 18:06:48 -0400
committerhuderlem <huderlem@gmail.com>2019-04-06 08:16:13 -0500
commit60b2c569d85b6afdd7dc6e25059132c3f45c2a78 (patch)
treead897f56337bd7931c10159173be76bd092f9264
parent0ab30dbcd559fd5c53fc52166a46eff60d2a0e86 (diff)
through sub_80F63D0
-rw-r--r--asm/pokenav.s194
-rw-r--r--include/pokenav.h6
-rw-r--r--src/pokenav.c98
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;
+}