mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-02 06:48:23 -05:00
Finish contest_painting_effects
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@ struct Unk03005E20
|
||||
u8 var_0;
|
||||
u8 pad1[3];
|
||||
u16 (*var_4)[][32];
|
||||
u16 (*var_8)[];
|
||||
u16 *var_8;
|
||||
u8 pad0C[4];
|
||||
u16 (*var_10)[][32];
|
||||
u16 var_14;
|
||||
|
||||
@@ -306,7 +306,6 @@ SECTIONS {
|
||||
src/heal_location.o(.text);
|
||||
src/region_map.o(.text);
|
||||
src/contest_painting_effects.o(.text);
|
||||
asm/contest_painting_effects.o(.text);
|
||||
src/decoration.o(.text);
|
||||
src/slot_machine.o(.text);
|
||||
src/contest_painting.o(.text);
|
||||
|
||||
@@ -23,7 +23,7 @@ u16 (*gUnknown_03005E10)[][32];
|
||||
struct Unk03005E20 gUnknown_03005E20;
|
||||
u8 gUnknown_03005E40[0x4C];
|
||||
struct ContestEntry *gUnknown_03005E8C;
|
||||
u16 (*gUnknown_03005E90)[];
|
||||
u16 *gUnknown_03005E90;
|
||||
|
||||
static const u16 gPictureFramePalettes[][16] =
|
||||
{
|
||||
@@ -634,7 +634,7 @@ static u8 sub_8106EE0(u8 arg0)
|
||||
|
||||
static void sub_8106F4C(void)
|
||||
{
|
||||
gUnknown_03005E90 = &ewram15E00.unk2017e00;
|
||||
gUnknown_03005E90 = ewram15E00.unk2017e00;
|
||||
gUnknown_03005E10 = &ewram15E00.unk2015e00;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,14 +4,15 @@
|
||||
|
||||
extern u16 (*gUnknown_03005DEC)[][32];
|
||||
extern u8 gUnknown_083E7A50[][3];
|
||||
extern u8 gUnknown_03005E00;
|
||||
extern u8 gUnknown_03005DE8;
|
||||
extern u8 gUnknown_03005DF0;
|
||||
extern u8 gUnknown_03005DFC;
|
||||
extern u8 gUnknown_03005DF8;
|
||||
extern u8 gUnknown_03005DF0;
|
||||
extern u8 gUnknown_03005E04;
|
||||
extern u8 gUnknown_03005DF4;
|
||||
|
||||
extern u8 gUnknown_03005DE8;
|
||||
extern u8 gUnknown_03005E00;
|
||||
extern u8 gUnknown_03005E04;
|
||||
extern u16 * gUnknown_03005E08;
|
||||
extern u16 gUnknown_03005E0C;
|
||||
|
||||
// this file's functions
|
||||
void sub_80FCAA4(void);
|
||||
@@ -36,6 +37,19 @@ u16 InvertColor(u16*);
|
||||
u16 sub_80FD7AC(u16*, u16*, u16*);
|
||||
u16 sub_80FD568(u16*, u16*);
|
||||
u16 GetCoolColorFromPersonality(u8);
|
||||
void sub_80FDC18(bool8);
|
||||
void sub_80FDAE4(void);
|
||||
void sub_80FDF88(void);
|
||||
void sub_80FDBE4(void);
|
||||
void sub_80FDED8(void);
|
||||
void sub_80FDBA8(void);
|
||||
void sub_80FDE28(void);
|
||||
void sub_80FDB8C(void);
|
||||
void sub_80FDD70(void);
|
||||
u16 sub_80FE038(u16 *);
|
||||
u16 sub_80FE17C(u16 *);
|
||||
u16 sub_80FE1B0(u16 *);
|
||||
u16 sub_80FE0AC(u16 *);
|
||||
|
||||
void sub_80FC7A0(struct Unk03005E20* info)
|
||||
{
|
||||
@@ -1121,3 +1135,400 @@ void sub_80FD8CC(struct Unk03005E20 * a0)
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0");
|
||||
}
|
||||
|
||||
void sub_80FDA18(struct Unk03005E20 *arg0)
|
||||
{
|
||||
gUnknown_03005E0C = arg0->var_18 * 16;
|
||||
gUnknown_03005E08 = &arg0->var_8[gUnknown_03005E0C];
|
||||
gUnknown_03005DEC = arg0->var_4;
|
||||
gUnknown_03005DE8 = arg0->var_19;
|
||||
gUnknown_03005DFC = arg0->var_1A;
|
||||
gUnknown_03005DF8 = arg0->var_1B;
|
||||
gUnknown_03005DF0 = arg0->var_1C;
|
||||
gUnknown_03005E04 = arg0->var_1D;
|
||||
gUnknown_03005DF4 = arg0->var_1E;
|
||||
|
||||
switch (arg0->var_14)
|
||||
{
|
||||
case 0:
|
||||
sub_80FDC18(FALSE);
|
||||
break;
|
||||
case 1:
|
||||
sub_80FDC18(TRUE);
|
||||
break;
|
||||
case 2:
|
||||
sub_80FDAE4();
|
||||
sub_80FDF88();
|
||||
break;
|
||||
case 3:
|
||||
sub_80FDBE4();
|
||||
sub_80FDED8();
|
||||
break;
|
||||
case 4:
|
||||
sub_80FDBA8();
|
||||
sub_80FDE28();
|
||||
break;
|
||||
case 5:
|
||||
sub_80FDB8C();
|
||||
sub_80FDD70();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FDAE4(void)
|
||||
{
|
||||
gUnknown_03005E08[0] = RGB2(0, 0, 0);
|
||||
gUnknown_03005E08[1] = RGB2(6, 6, 6);
|
||||
gUnknown_03005E08[2] = RGB2(29, 29, 29);
|
||||
gUnknown_03005E08[3] = RGB2(11, 11, 11);
|
||||
gUnknown_03005E08[4] = RGB2(29, 6, 6);
|
||||
gUnknown_03005E08[5] = RGB2(6, 29, 6);
|
||||
gUnknown_03005E08[6] = RGB2(6, 6, 29);
|
||||
gUnknown_03005E08[7] = RGB2(29, 29, 6);
|
||||
gUnknown_03005E08[8] = RGB2(29, 6, 29);
|
||||
gUnknown_03005E08[9] = RGB2(6, 29, 29);
|
||||
gUnknown_03005E08[10] = RGB2(29, 11, 6);
|
||||
gUnknown_03005E08[11] = RGB2(11, 29, 6);
|
||||
gUnknown_03005E08[12] = RGB2(6, 11, 29);
|
||||
gUnknown_03005E08[13] = RGB2(29, 6, 11);
|
||||
gUnknown_03005E08[14] = RGB2(6, 29, 11);
|
||||
gUnknown_03005E08[15] = RGB2(11, 6, 29);
|
||||
}
|
||||
|
||||
void sub_80FDB8C(void)
|
||||
{
|
||||
gUnknown_03005E08[0] = RGB2(0, 0, 0);
|
||||
gUnknown_03005E08[1] = RGB2(0, 0, 0);
|
||||
gUnknown_03005E08[2] = RGB2(31, 31, 31);
|
||||
}
|
||||
|
||||
void sub_80FDBA8(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
gUnknown_03005E08[0] = RGB2(0, 0, 0);
|
||||
gUnknown_03005E08[1] = RGB2(0, 0, 0);
|
||||
for (i = 0; i < 14; i++)
|
||||
gUnknown_03005E08[i + 2] = RGB2(2 * (i + 2), 2 * (i + 2), 2 * (i + 2));
|
||||
}
|
||||
|
||||
void sub_80FDBE4(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
gUnknown_03005E08[0] = RGB2(0, 0, 0);
|
||||
for (i = 0; i < 32; i++)
|
||||
gUnknown_03005E08[i + 1] = RGB2(i, i, i);
|
||||
}
|
||||
|
||||
void sub_80FDC18(bool8 arg0)
|
||||
{
|
||||
u8 i, j;
|
||||
u16 maxIndex;
|
||||
|
||||
maxIndex = 0xDF;
|
||||
if (!arg0)
|
||||
maxIndex = 0xFF;
|
||||
|
||||
for (j = 0; j < maxIndex; j++)
|
||||
gUnknown_03005E08[j] = 0;
|
||||
|
||||
gUnknown_03005E08[maxIndex] = RGB2(15, 15, 15);
|
||||
for (i = 0; i < gUnknown_03005DF0; i++)
|
||||
{
|
||||
u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
|
||||
u16* pal = &var2[gUnknown_03005DE8];
|
||||
for (j = 0; j < gUnknown_03005DF8; j++, pal++)
|
||||
{
|
||||
if (*pal & 0x8000)
|
||||
{
|
||||
*pal = gUnknown_03005E0C;
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 color = sub_80FE038(pal);
|
||||
u8 curIndex = 1;
|
||||
if (curIndex < maxIndex)
|
||||
{
|
||||
if (gUnknown_03005E08[curIndex] == RGB_BLACK)
|
||||
{
|
||||
gUnknown_03005E08[curIndex] = color;
|
||||
*pal = gUnknown_03005E0C + curIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
while (curIndex < maxIndex)
|
||||
{
|
||||
if (gUnknown_03005E08[curIndex] == RGB_BLACK)
|
||||
{
|
||||
gUnknown_03005E08[curIndex] = color;
|
||||
*pal = gUnknown_03005E0C + curIndex;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gUnknown_03005E08[curIndex] == color)
|
||||
{
|
||||
*pal = gUnknown_03005E0C + curIndex;
|
||||
break;
|
||||
}
|
||||
|
||||
curIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (curIndex == maxIndex)
|
||||
{
|
||||
curIndex = maxIndex;
|
||||
*pal = curIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FDD70(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_03005DF0; i++)
|
||||
{
|
||||
u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
|
||||
u16* pal = &var2[gUnknown_03005DE8];
|
||||
for (j = 0; j < gUnknown_03005DF8; j++, pal++)
|
||||
{
|
||||
if (*pal & 0x8000)
|
||||
{
|
||||
*pal = gUnknown_03005E0C;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ConvertToBlackOrWhite(pal) == RGB_BLACK)
|
||||
*pal = gUnknown_03005E0C + 1;
|
||||
else
|
||||
*pal = gUnknown_03005E0C + 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FDE28(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_03005DF0; i++)
|
||||
{
|
||||
u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
|
||||
u16* pal = &var2[gUnknown_03005DE8];
|
||||
for (j = 0; j < gUnknown_03005DF8; j++, pal++)
|
||||
{
|
||||
if (*pal & 0x8000)
|
||||
*pal = gUnknown_03005E0C;
|
||||
else
|
||||
*pal = sub_80FE17C(pal) + gUnknown_03005E0C;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FDED8(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_03005DF0; i++)
|
||||
{
|
||||
u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
|
||||
u16* pal = &var2[gUnknown_03005DE8];
|
||||
for (j = 0; j < gUnknown_03005DF8; j++, pal++)
|
||||
{
|
||||
if (*pal & 0x8000)
|
||||
*pal = gUnknown_03005E0C;
|
||||
else
|
||||
*pal = sub_80FE1B0(pal) + gUnknown_03005E0C;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80FDF88(void)
|
||||
{
|
||||
u8 i, j;
|
||||
|
||||
for (i = 0; i < gUnknown_03005DF0; i++)
|
||||
{
|
||||
u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
|
||||
u16* pal = &var2[gUnknown_03005DE8];
|
||||
for (j = 0; j < gUnknown_03005DF8; j++, pal++)
|
||||
{
|
||||
if (*pal & 0x8000)
|
||||
*pal = gUnknown_03005E0C;
|
||||
else
|
||||
*pal = sub_80FE0AC(pal) + gUnknown_03005E0C;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u16 sub_80FE038(u16 *color)
|
||||
{
|
||||
u16 red = *color & 0x1F;
|
||||
u16 green = (*color >> 5) & 0x1F;
|
||||
u16 blue = (*color >> 10) & 0x1F;
|
||||
|
||||
if (red & 3)
|
||||
red = (red & 0x1C) + 4;
|
||||
if (green & 3)
|
||||
green = (green & 0x1C) + 4;
|
||||
if (blue & 3)
|
||||
blue = (blue & 0x1C) + 4;
|
||||
|
||||
if (red < 6)
|
||||
red = 6;
|
||||
if (red > 30)
|
||||
red = 30;
|
||||
|
||||
if (green < 6)
|
||||
green = 6;
|
||||
if (green > 30)
|
||||
green = 30;
|
||||
|
||||
if (blue < 6)
|
||||
blue = 6;
|
||||
if (blue > 30)
|
||||
blue = 30;
|
||||
|
||||
return RGB2(red, green, blue);
|
||||
}
|
||||
|
||||
u16 sub_80FE0AC(u16* color)
|
||||
{
|
||||
u16 red = *color & 0x1F;
|
||||
u16 green = (*color >> 5) & 0x1F;
|
||||
u16 blue = (*color >> 10) & 0x1F;
|
||||
|
||||
if (red < 12 && green < 11 && blue < 11)
|
||||
return 1;
|
||||
|
||||
if (red > 19 && green > 19 && blue > 19)
|
||||
return 2;
|
||||
|
||||
if (red > 19)
|
||||
{
|
||||
if (green > 19)
|
||||
{
|
||||
if (blue > 14)
|
||||
return 2;
|
||||
else
|
||||
return 7;
|
||||
}
|
||||
else if (blue > 19)
|
||||
{
|
||||
if (green > 14)
|
||||
return 2;
|
||||
else
|
||||
return 8;
|
||||
}
|
||||
}
|
||||
|
||||
if (green > 19 && blue > 19)
|
||||
{
|
||||
if (red > 14)
|
||||
return 2;
|
||||
else
|
||||
return 9;
|
||||
}
|
||||
|
||||
if (red > 19)
|
||||
{
|
||||
if (green > 11)
|
||||
{
|
||||
if (blue > 11)
|
||||
{
|
||||
if (green < blue)
|
||||
return 8;
|
||||
else
|
||||
return 7;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 10;
|
||||
}
|
||||
}
|
||||
else if (blue > 11)
|
||||
{
|
||||
return 13;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
if (green > 19)
|
||||
{
|
||||
if (red > 11)
|
||||
{
|
||||
if (blue > 11)
|
||||
{
|
||||
if (red < blue)
|
||||
return 9;
|
||||
else
|
||||
return 7;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 11;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (blue > 11)
|
||||
return 14;
|
||||
else
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
if (blue > 19)
|
||||
{
|
||||
if (red > 11)
|
||||
{
|
||||
if (green > 11)
|
||||
{
|
||||
if (red < green)
|
||||
return 9;
|
||||
else
|
||||
return 8;
|
||||
}
|
||||
}
|
||||
else if (green > 11)
|
||||
{
|
||||
return 12;
|
||||
}
|
||||
|
||||
if (blue > 11)
|
||||
return 15;
|
||||
else
|
||||
return 6;
|
||||
}
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
u16 sub_80FE17C(u16 *color)
|
||||
{
|
||||
u16 red = *color & 0x1F;
|
||||
u16 green = (*color >> 5) & 0x1F;
|
||||
u16 blue = (*color >> 10) & 0x1F;
|
||||
u16 average = ((red + green + blue) / 3) & 0x1E;
|
||||
if (average == 0)
|
||||
return 1;
|
||||
else
|
||||
return average / 2;
|
||||
}
|
||||
|
||||
u16 sub_80FE1B0(u16 *color)
|
||||
{
|
||||
u16 red = *color & 0x1F;
|
||||
u16 green = (*color >> 5) & 0x1F;
|
||||
u16 blue = (*color >> 10) & 0x1F;
|
||||
u16 average = (red + green + blue) / 3;
|
||||
return average + 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user