Match sub_8167420

This commit is contained in:
Marcus Huderle 2019-03-23 11:16:53 -05:00
parent 511ff2f20f
commit fffdbe4e79

View File

@ -44,6 +44,13 @@ struct UsePokeblockSubStruct
/*0x78*/ u8 unk78; /*0x78*/ u8 unk78;
}; };
struct Unk7FB8
{
u8 unk0;
u8 unk1;
u16 unk2;
};
struct UsePokeblockStruct struct UsePokeblockStruct
{ {
/*0x0000*/ u8 field_0[0x7B06]; /*0x0000*/ u8 field_0[0x7B06];
@ -56,7 +63,8 @@ struct UsePokeblockStruct
/*0x7C58*/ struct UnknownStruct_81D1ED4 field_7C58; /*0x7C58*/ struct UnknownStruct_81D1ED4 field_7C58;
/*0x7FB0*/ u8 unk7FB0[3]; /*0x7FB0*/ u8 unk7FB0[3];
/*0x7FB3*/ s8 unk7FB3; /*0x7FB3*/ s8 unk7FB3;
/*0x7FB4*/ u8 filler7FB4[0x1C]; /*0x7FB4*/ u8 filler7FB4[0x4];
/*0x7FB8*/ struct Unk7FB8 field_7FB8[6];
/*0x7FD0*/ struct UsePokeblockSubStruct info; /*0x7FD0*/ struct UsePokeblockSubStruct info;
/*0x804C*/ u8 filler804C[0x20]; /*0x804C*/ u8 filler804C[0x20];
}; };
@ -815,13 +823,9 @@ void sub_8166E24(void)
for (gUnknown_0203BC90->field_53 = 0; gUnknown_0203BC90->field_53 < 5 && gUnknown_0203BC90->field_61[gUnknown_0203BC90->field_53] == 0; gUnknown_0203BC90->field_53++); for (gUnknown_0203BC90->field_53 = 0; gUnknown_0203BC90->field_53 < 5 && gUnknown_0203BC90->field_61[gUnknown_0203BC90->field_53] == 0; gUnknown_0203BC90->field_53++);
if (gUnknown_0203BC90->field_53 < 5) if (gUnknown_0203BC90->field_53 < 5)
{
Pokeblock_BufferEnhancedStatText(gStringVar4, gUnknown_0203BC90->field_53, gUnknown_0203BC90->field_61[gUnknown_0203BC90->field_53]); Pokeblock_BufferEnhancedStatText(gStringVar4, gUnknown_0203BC90->field_53, gUnknown_0203BC90->field_61[gUnknown_0203BC90->field_53]);
}
else else
{ Pokeblock_BufferEnhancedStatText(gStringVar4, gUnknown_0203BC90->field_53, 0);
Pokeblock_BufferEnhancedStatText(gStringVar4, gUnknown_0203BC90->field_53, 0);
}
Pokeblock_MenuWindowTextPrint(gStringVar4); Pokeblock_MenuWindowTextPrint(gStringVar4);
PutWindowTilemap(2); PutWindowTilemap(2);
@ -880,10 +884,8 @@ void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2)
{ {
if (a2 != 0) if (a2 != 0)
{ {
if(a2 > 0) if (a2 > 0)
{ a2 = 0;
statID = 0;
}
StringCopy(dest, sContestStatNames[statID]); StringCopy(dest, sContestStatNames[statID]);
StringAppend(dest, gText_WasEnhanced); StringAppend(dest, gText_WasEnhanced);
@ -938,12 +940,10 @@ _08167018:\n\
void Pokeblock_GetMonContestStats(struct Pokemon *pokemon, u8 *data) void Pokeblock_GetMonContestStats(struct Pokemon *pokemon, u8 *data)
{ {
u16 i = 0; u16 i;
for (; i < 5; i++) for (i = 0; i < 5; i++)
{
data[i] = GetMonData(pokemon, gUnknown_085DFCB0[i]); data[i] = GetMonData(pokemon, gUnknown_085DFCB0[i]);
}
} }
void sub_8167054(struct Pokeblock *pokeblock, struct Pokemon *pokemon) void sub_8167054(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
@ -954,7 +954,7 @@ void sub_8167054(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
if (GetMonData(pokemon, MON_DATA_SHEEN) != 255) if (GetMonData(pokemon, MON_DATA_SHEEN) != 255)
{ {
sub_8167184(pokeblock, pokemon); sub_8167184(pokeblock, pokemon);
for (i=0; i<5; i++) for (i = 0; i < 5; i++)
{ {
data = GetMonData(pokemon, gUnknown_085DFCB0[i]); data = GetMonData(pokemon, gUnknown_085DFCB0[i]);
cstat = data + gUnknown_0203BC90->field_66[i]; cstat = data + gUnknown_0203BC90->field_66[i];
@ -965,10 +965,12 @@ void sub_8167054(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
data = cstat; data = cstat;
SetMonData(pokemon, gUnknown_085DFCB0[i], &data); SetMonData(pokemon, gUnknown_085DFCB0[i], &data);
} }
cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN); cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN);
cstat = cstat + pokeblock->feel; cstat = cstat + pokeblock->feel;
if (cstat > 255) if (cstat > 255)
cstat = 255; cstat = 255;
data = cstat; data = cstat;
SetMonData(pokemon, MON_DATA_SHEEN, &data); SetMonData(pokemon, MON_DATA_SHEEN, &data);
} }
@ -1006,17 +1008,17 @@ void sub_8167184(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
direction = -1; direction = -1;
else else
return; return;
for (i=0; i<5; i++)
for (i = 0; i < 5; i++)
{ {
amount = gUnknown_0203BC90->field_66[i]; amount = gUnknown_0203BC90->field_66[i];
boost = amount / 10; boost = amount / 10;
if (amount % 10 >= 5) // round to the nearest if (amount % 10 >= 5) // round to the nearest
boost++; boost++;
taste = GetMonFlavorRelation(pokemon, gUnknown_085DFCC4[i]); taste = GetMonFlavorRelation(pokemon, gUnknown_085DFCC4[i]);
if (taste == direction) if (taste == direction)
{
gUnknown_0203BC90->field_66[i] += boost * taste; gUnknown_0203BC90->field_66[i] += boost * taste;
}
} }
} }
@ -1032,30 +1034,30 @@ bool8 sub_8167268(void)
u8 sub_81672A4(u8 a0) u8 sub_81672A4(u8 a0)
{ {
u8 i; u8 i;
for (i=0; i<PARTY_SIZE; i++) for (i = 0; i < PARTY_SIZE; i++)
{ {
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{ {
if (a0 == 0) if (a0 == 0)
return i; return i;
a0--; a0--;
} }
} }
return 0; return 0;
} }
u8 sub_81672E4(u8 a0) u8 sub_81672E4(u8 partyCount)
{ {
u8 ct; u8 i, numEggs;
u8 i;
for (i=0, ct=0; i<a0; i++) for (i = 0, numEggs = 0; i < partyCount; i++)
{ {
if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{ numEggs++;
ct++;
}
} }
return a0 - ct;
return partyCount - numEggs;
} }
u8 sub_8167324(u8 a0) u8 sub_8167324(u8 a0)
@ -1070,7 +1072,7 @@ void sub_8167338(void)
LoadSpriteSheet(&gSpriteSheet_ConditionUpDown); LoadSpriteSheet(&gSpriteSheet_ConditionUpDown);
LoadSpritePalette(&gSpritePalette_ConditionUpDown); LoadSpritePalette(&gSpritePalette_ConditionUpDown);
gUnknown_0203BC90->field_54 = 0; gUnknown_0203BC90->field_54 = 0;
for (flavor=0; flavor<5; flavor++) for (flavor = 0; flavor < 5; flavor++)
{ {
if (gUnknown_0203BC90->field_61[flavor] != 0) if (gUnknown_0203BC90->field_61[flavor] != 0)
{ {
@ -1078,9 +1080,8 @@ void sub_8167338(void)
if (spriteidx != MAX_SPRITES) if (spriteidx != MAX_SPRITES)
{ {
if (gUnknown_0203BC90->field_61[flavor] != 0) if (gUnknown_0203BC90->field_61[flavor] != 0)
{
gSprites[spriteidx].callback = sub_81673DC; gSprites[spriteidx].callback = sub_81673DC;
}
gUnknown_0203BC90->field_54++; gUnknown_0203BC90->field_54++;
} }
} }
@ -1089,107 +1090,38 @@ void sub_8167338(void)
void sub_81673DC(struct Sprite *sprite) void sub_81673DC(struct Sprite *sprite)
{ {
if (sprite->data[0] <= 5) if (sprite->data[0] < 6)
sprite->pos2.y -= 2; sprite->pos2.y -= 2;
else if (sprite->data[0] <= 11) else if (sprite->data[0] < 12)
sprite->pos2.y += 2; sprite->pos2.y += 2;
if ((++sprite->data[0]) > 60)
if (++sprite->data[0] > 60)
{ {
DestroySprite(sprite); DestroySprite(sprite);
gUnknown_0203BC90->field_54--; gUnknown_0203BC90->field_54--;
} }
} }
#ifdef NONMATCHING
void sub_8167420(void) void sub_8167420(void)
{ {
u16 i; u16 i;
u16 ct; u16 numMons;
for (i=0, ct=0; i < CalculatePlayerPartyCount(); i++) for (i = 0, numMons = 0; i < CalculatePlayerPartyCount(); i++)
{ {
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{ {
*(&gUnknown_0203BCAC->field_7FB8 + ct * 4) = 14; gUnknown_0203BCAC->field_7FB8[numMons].unk0 = 14;
*(&gUnknown_0203BCAC->field_7FB9 + ct * 4)= i; gUnknown_0203BCAC->field_7FB8[numMons].unk1 = i;
*(&gUnknown_0203BCAC->field_7FBA + ct * 2) = 0; gUnknown_0203BCAC->field_7FB8[numMons].unk2 = 0;
ct++; numMons++;
} }
} }
gUnknown_0203BCAC->info.field_71 = 0; gUnknown_0203BCAC->info.field_71 = 0;
gUnknown_0203BCAC->info.field_70 = ct + 1; gUnknown_0203BCAC->info.field_70 = numMons + 1;
sub_81674BC(); sub_81674BC();
} }
#else
NAKED
void sub_8167420(void)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
movs r4, 0\n\
movs r5, 0\n\
ldr r6, =gUnknown_0203BCAC\n\
b _08167472\n\
.pool\n\
_08167430:\n\
movs r0, 0x64\n\
muls r0, r4\n\
ldr r1, =gPlayerParty\n\
adds r0, r1\n\
movs r1, 0x2D\n\
bl GetMonData\n\
adds r3, r0, 0\n\
cmp r3, 0\n\
bne _0816746C\n\
ldr r1, [r6]\n\
lsls r2, r5, 2\n\
adds r1, r2\n\
ldr r0, =0x00007fb8\n\
adds r1, r0\n\
movs r0, 0xE\n\
strb r0, [r1]\n\
ldr r0, [r6]\n\
adds r0, r2\n\
ldr r1, =0x00007fb9\n\
adds r0, r1\n\
strb r4, [r0]\n\
ldr r0, [r6]\n\
adds r0, r2\n\
ldr r2, =0x00007fba\n\
adds r0, r2\n\
strh r3, [r0]\n\
adds r0, r5, 0x1\n\
lsls r0, 16\n\
lsrs r5, r0, 16\n\
_0816746C:\n\
adds r0, r4, 0x1\n\
lsls r0, 16\n\
lsrs r4, r0, 16\n\
_08167472:\n\
bl CalculatePlayerPartyCount\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r4, r0\n\
bcc _08167430\n\
ldr r2, =gUnknown_0203BCAC\n\
ldr r0, [r2]\n\
ldr r1, =0x00008041\n\
adds r0, r1\n\
movs r1, 0\n\
strb r1, [r0]\n\
ldr r0, [r2]\n\
adds r1, r5, 0x1\n\
ldr r2, =0x00008040\n\
adds r0, r2\n\
strb r1, [r0]\n\
bl sub_81674BC\n\
pop {r4-r6}\n\
pop {r0}\n\
bx r0\n\
.pool\n\
.syntax divided\n");
}
#endif
#ifdef NONMATCHING #ifdef NONMATCHING
void sub_81674BC(void) void sub_81674BC(void)