mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Finish decompiling contest_painting_effects.c
This commit is contained in:
parent
691392fd5d
commit
4ae8a52473
File diff suppressed because it is too large
Load Diff
@ -185,7 +185,6 @@ SECTIONS {
|
|||||||
src/heal_location.o(.text);
|
src/heal_location.o(.text);
|
||||||
src/region_map.o(.text);
|
src/region_map.o(.text);
|
||||||
src/contest_painting_effects.o(.text);
|
src/contest_painting_effects.o(.text);
|
||||||
asm/contest_painting_effects.o(.text);
|
|
||||||
src/decoration.o(.text);
|
src/decoration.o(.text);
|
||||||
src/slot_machine.o(.text);
|
src/slot_machine.o(.text);
|
||||||
src/contest_painting.o(.text);
|
src/contest_painting.o(.text);
|
||||||
|
@ -3,6 +3,13 @@
|
|||||||
#include "contest_painting.h"
|
#include "contest_painting.h"
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
|
|
||||||
|
struct Unk8125954
|
||||||
|
{
|
||||||
|
u8 unk0;
|
||||||
|
u8 unk1;
|
||||||
|
u16 unk2;
|
||||||
|
};
|
||||||
|
|
||||||
// IWRAM common
|
// IWRAM common
|
||||||
u8 gUnknown_03006164;
|
u8 gUnknown_03006164;
|
||||||
u16 (*gUnknown_03006168)[][32];
|
u16 (*gUnknown_03006168)[][32];
|
||||||
@ -12,32 +19,46 @@ u8 gUnknown_03006174;
|
|||||||
u8 gUnknown_03006178;
|
u8 gUnknown_03006178;
|
||||||
u8 gUnknown_0300617C;
|
u8 gUnknown_0300617C;
|
||||||
u8 gUnknown_03006180;
|
u8 gUnknown_03006180;
|
||||||
u16 gUnknown_03006184;
|
u16 *gUnknown_03006184;
|
||||||
u16 gUnknown_03006188;
|
u16 gUnknown_03006188;
|
||||||
|
|
||||||
// this file's functions
|
static void sub_8125230(void);
|
||||||
void sub_8125230(void);
|
static void sub_81252E8(void);
|
||||||
void sub_81252E8(void);
|
static void sub_81254E0(void);
|
||||||
void sub_81254E0(void);
|
static void sub_8125630(void);
|
||||||
void sub_8125630(void);
|
static void sub_8125448(void);
|
||||||
void sub_8125448(void);
|
static void sub_81257F8(void);
|
||||||
void sub_81257F8(void);
|
static void sub_81258A0(void);
|
||||||
void sub_81258A0(void);
|
static void sub_81256C8(void);
|
||||||
void sub_81256C8(void);
|
static void sub_8125250(void);
|
||||||
void sub_8125250(void);
|
static void sub_81253A4(u8);
|
||||||
void sub_81253A4(u8);
|
static void sub_81250B8(u8);
|
||||||
void sub_81250B8(u8);
|
static void sub_8125170(u8);
|
||||||
void sub_8125170(u8);
|
static void sub_8125954(u16);
|
||||||
void sub_8125954(u16);
|
static u16 ConvertColorToGrayscale(u16*);
|
||||||
u16 ConvertColorToGrayscale(u16*);
|
static u16 sub_8125E18(u16*, u16*, u16*);
|
||||||
u16 sub_8125E18(u16*, u16*, u16*);
|
static u16 ConvertCoolColor(u16*, u8);
|
||||||
u16 ConvertCoolColor(u16*, u8);
|
static u16 ConvertToBlackOrWhite(u16*);
|
||||||
u16 ConvertToBlackOrWhite(u16*);
|
static u16 sub_8125C98(u16*, u16*);
|
||||||
u16 sub_8125C98(u16*, u16*);
|
static u16 InvertColor(u16*);
|
||||||
u16 InvertColor(u16*);
|
static u16 sub_8125F38(u16*, u16*, u16*);
|
||||||
u16 sub_8125F38(u16*, u16*, u16*);
|
static u16 sub_8125CF4(u16*, u16*);
|
||||||
u16 sub_8125CF4(u16*, u16*);
|
static u16 GetCoolColorFromPersonality(u8);
|
||||||
u16 GetCoolColorFromPersonality(u8);
|
static void sub_81263A4(bool8);
|
||||||
|
static void sub_8126270(void);
|
||||||
|
static void sub_8126714(void);
|
||||||
|
static void sub_8126370(void);
|
||||||
|
static void sub_8126664(void);
|
||||||
|
static void sub_8126334(void);
|
||||||
|
static void sub_81265B4(void);
|
||||||
|
static void sub_8126318(void);
|
||||||
|
static void sub_81264FC(void);
|
||||||
|
static u16 sub_81267C4(u16*);
|
||||||
|
static u16 sub_8126908(u16*);
|
||||||
|
static u16 sub_812693C(u16*);
|
||||||
|
static u16 sub_8126838(u16*);
|
||||||
|
|
||||||
|
extern const u8 gUnknown_085A1F94[][3];
|
||||||
|
|
||||||
void sub_8124F2C(struct Unk030061A0 *info)
|
void sub_8124F2C(struct Unk030061A0 *info)
|
||||||
{
|
{
|
||||||
@ -104,7 +125,7 @@ void sub_8124F2C(struct Unk030061A0 *info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81250B8(u8 a0) // it changes palette someway somehow... .__.
|
static void sub_81250B8(u8 a0) // it changes palette someway somehow... .__.
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -127,7 +148,7 @@ void sub_81250B8(u8 a0) // it changes palette someway somehow... .__.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8125170(u8 a0)
|
static void sub_8125170(u8 a0)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -149,14 +170,14 @@ void sub_8125170(u8 a0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8125230(void)
|
static void sub_8125230(void)
|
||||||
{
|
{
|
||||||
u32 i;
|
u32 i;
|
||||||
for (i = 0; i < 3200; i++)
|
for (i = 0; i < 3200; i++)
|
||||||
sub_8125954(i);
|
sub_8125954(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8125250(void)
|
static void sub_8125250(void)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -174,7 +195,7 @@ void sub_8125250(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81252E8(void)
|
static void sub_81252E8(void)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -200,7 +221,7 @@ void sub_81252E8(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81253A4(u8 arg0)
|
static void sub_81253A4(u8 arg0)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -218,7 +239,7 @@ void sub_81253A4(u8 arg0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8125448(void)
|
static void sub_8125448(void)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -236,7 +257,7 @@ void sub_8125448(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81254E0(void)
|
static void sub_81254E0(void)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
u16 *palette;
|
u16 *palette;
|
||||||
@ -270,7 +291,7 @@ void sub_81254E0(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8125630(void)
|
static void sub_8125630(void)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -288,7 +309,7 @@ void sub_8125630(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81256C8(void)
|
static void sub_81256C8(void)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
u16 *palette;
|
u16 *palette;
|
||||||
@ -349,7 +370,7 @@ void sub_81256C8(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81257F8(void)
|
static void sub_81257F8(void)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -369,7 +390,7 @@ void sub_81257F8(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_81258A0(void)
|
static void sub_81258A0(void)
|
||||||
{
|
{
|
||||||
u8 i, j;
|
u8 i, j;
|
||||||
|
|
||||||
@ -389,16 +410,7 @@ void sub_81258A0(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Unk8125954
|
static void sub_8125954(u16 arg0)
|
||||||
{
|
|
||||||
u8 unk0;
|
|
||||||
u8 unk1;
|
|
||||||
u16 unk2;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern const u8 gUnknown_085A1F94[][3];
|
|
||||||
|
|
||||||
void sub_8125954(u16 arg0)
|
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
u8 r5, r9;
|
u8 r5, r9;
|
||||||
@ -487,7 +499,7 @@ void sub_8125954(u16 arg0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 ConvertColorToGrayscale(u16 *color)
|
static u16 ConvertColorToGrayscale(u16 *color)
|
||||||
{
|
{
|
||||||
s32 clr = *color;
|
s32 clr = *color;
|
||||||
s32 r = clr & 0x1F;
|
s32 r = clr & 0x1F;
|
||||||
@ -499,7 +511,7 @@ u16 ConvertColorToGrayscale(u16 *color)
|
|||||||
|
|
||||||
// The dark colors are the colored edges of the Cool painting effect.
|
// The dark colors are the colored edges of the Cool painting effect.
|
||||||
// Everything else is white.
|
// Everything else is white.
|
||||||
u16 ConvertCoolColor(u16 *color, u8 personality)
|
static u16 ConvertCoolColor(u16 *color, u8 personality)
|
||||||
{
|
{
|
||||||
u16 red = *color & 0x1F;
|
u16 red = *color & 0x1F;
|
||||||
u16 green = (*color >> 5) & 0x1F;
|
u16 green = (*color >> 5) & 0x1F;
|
||||||
@ -513,7 +525,7 @@ u16 ConvertCoolColor(u16 *color, u8 personality)
|
|||||||
|
|
||||||
// Based on the given value, which comes from the first 8 bits of
|
// Based on the given value, which comes from the first 8 bits of
|
||||||
// the mon's personality value, return a color.
|
// the mon's personality value, return a color.
|
||||||
u16 GetCoolColorFromPersonality(u8 personality)
|
static u16 GetCoolColorFromPersonality(u8 personality)
|
||||||
{
|
{
|
||||||
u16 red = 0;
|
u16 red = 0;
|
||||||
u16 green = 0;
|
u16 green = 0;
|
||||||
@ -564,7 +576,7 @@ u16 GetCoolColorFromPersonality(u8 personality)
|
|||||||
return RGB2(red, green, blue);
|
return RGB2(red, green, blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 ConvertToBlackOrWhite(u16 *color)
|
static u16 ConvertToBlackOrWhite(u16 *color)
|
||||||
{
|
{
|
||||||
u16 red = *color & 0x1F;
|
u16 red = *color & 0x1F;
|
||||||
u16 green = (*color >> 5) & 0x1F;
|
u16 green = (*color >> 5) & 0x1F;
|
||||||
@ -576,7 +588,7 @@ u16 ConvertToBlackOrWhite(u16 *color)
|
|||||||
return RGB_WHITE;
|
return RGB_WHITE;
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 sub_8125C98(u16 *colorA, u16 *colorB)
|
static u16 sub_8125C98(u16 *colorA, u16 *colorB)
|
||||||
{
|
{
|
||||||
if (*colorA)
|
if (*colorA)
|
||||||
{
|
{
|
||||||
@ -591,7 +603,7 @@ u16 sub_8125C98(u16 *colorA, u16 *colorB)
|
|||||||
return RGB_BLACK;
|
return RGB_BLACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 InvertColor(u16 *color)
|
static u16 InvertColor(u16 *color)
|
||||||
{
|
{
|
||||||
u16 red = *color & 0x1F;
|
u16 red = *color & 0x1F;
|
||||||
u16 green = (*color >> 5) & 0x1F;
|
u16 green = (*color >> 5) & 0x1F;
|
||||||
@ -604,7 +616,7 @@ u16 InvertColor(u16 *color)
|
|||||||
return RGB2(red, green, blue);
|
return RGB2(red, green, blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 sub_8125CF4(u16 *a0, u16 *a1)
|
static u16 sub_8125CF4(u16 *a0, u16 *a1)
|
||||||
{
|
{
|
||||||
u16 sp0[2][3];
|
u16 sp0[2][3];
|
||||||
u16 spC[3];
|
u16 spC[3];
|
||||||
@ -660,7 +672,7 @@ u16 sub_8125CF4(u16 *a0, u16 *a1)
|
|||||||
return RGB2(r, g, b);
|
return RGB2(r, g, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 sub_8125E18(u16 * a0, u16 * a1, u16 * a2)
|
static u16 sub_8125E18(u16 * a0, u16 * a1, u16 * a2)
|
||||||
{
|
{
|
||||||
u16 red, green, blue;
|
u16 red, green, blue;
|
||||||
u16 avg0, avg1, avg2;
|
u16 avg0, avg1, avg2;
|
||||||
@ -704,7 +716,7 @@ u16 sub_8125E18(u16 * a0, u16 * a1, u16 * a2)
|
|||||||
return RGB2(red, green, blue);
|
return RGB2(red, green, blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 sub_8125F38(u16 *a0, u16 *a1, u16 *a2)
|
static u16 sub_8125F38(u16 *a0, u16 *a1, u16 *a2)
|
||||||
{
|
{
|
||||||
u16 red, green, blue;
|
u16 red, green, blue;
|
||||||
u16 avg0, avg1, avg2;
|
u16 avg0, avg1, avg2;
|
||||||
@ -772,3 +784,582 @@ void sub_8126058(struct Unk030061A0 *arg0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
NAKED
|
||||||
|
void sub_8126058(struct Unk030061A0 *arg0)
|
||||||
|
{
|
||||||
|
asm_unified("\n\
|
||||||
|
push {r4-r7,lr}\n\
|
||||||
|
mov r7, r10\n\
|
||||||
|
mov r6, r9\n\
|
||||||
|
mov r5, r8\n\
|
||||||
|
push {r5-r7}\n\
|
||||||
|
sub sp, 0xC\n\
|
||||||
|
ldrb r1, [r0, 0x1D]\n\
|
||||||
|
lsrs r5, r1, 3\n\
|
||||||
|
ldrb r1, [r0, 0x1E]\n\
|
||||||
|
lsrs r1, 3\n\
|
||||||
|
str r1, [sp, 0x8]\n\
|
||||||
|
ldr r1, [r0, 0x4]\n\
|
||||||
|
str r1, [sp]\n\
|
||||||
|
ldr r2, [r0, 0x10]\n\
|
||||||
|
str r2, [sp, 0x4]\n\
|
||||||
|
ldrh r0, [r0, 0x16]\n\
|
||||||
|
cmp r0, 0x2\n\
|
||||||
|
bne _08126108\n\
|
||||||
|
movs r1, 0\n\
|
||||||
|
ldr r0, [sp, 0x8]\n\
|
||||||
|
cmp r1, r0\n\
|
||||||
|
bcc _08126086\n\
|
||||||
|
b _08126194\n\
|
||||||
|
_08126086:\n\
|
||||||
|
movs r0, 0\n\
|
||||||
|
adds r2, r1, 0x1\n\
|
||||||
|
mov r10, r2\n\
|
||||||
|
cmp r0, r5\n\
|
||||||
|
bcs _081260FA\n\
|
||||||
|
adds r2, r1, 0\n\
|
||||||
|
muls r2, r5\n\
|
||||||
|
mov r9, r2\n\
|
||||||
|
lsls r1, 3\n\
|
||||||
|
mov r8, r1\n\
|
||||||
|
_0812609A:\n\
|
||||||
|
movs r4, 0\n\
|
||||||
|
lsls r6, r0, 4\n\
|
||||||
|
adds r7, r0, 0x1\n\
|
||||||
|
add r0, r9\n\
|
||||||
|
lsls r0, 6\n\
|
||||||
|
ldr r1, [sp, 0x4]\n\
|
||||||
|
adds r1, r0\n\
|
||||||
|
mov r12, r1\n\
|
||||||
|
_081260AA:\n\
|
||||||
|
lsls r0, r4, 3\n\
|
||||||
|
mov r2, r12\n\
|
||||||
|
adds r3, r2, r0\n\
|
||||||
|
mov r1, r8\n\
|
||||||
|
adds r0, r1, r4\n\
|
||||||
|
lsls r0, 3\n\
|
||||||
|
muls r0, r5\n\
|
||||||
|
lsls r0, 1\n\
|
||||||
|
ldr r2, [sp]\n\
|
||||||
|
adds r0, r2, r0\n\
|
||||||
|
adds r2, r0, r6\n\
|
||||||
|
ldrh r0, [r2, 0x2]\n\
|
||||||
|
lsls r0, 8\n\
|
||||||
|
ldrh r1, [r2]\n\
|
||||||
|
orrs r0, r1\n\
|
||||||
|
strh r0, [r3]\n\
|
||||||
|
ldrh r0, [r2, 0x6]\n\
|
||||||
|
lsls r0, 8\n\
|
||||||
|
ldrh r1, [r2, 0x4]\n\
|
||||||
|
orrs r0, r1\n\
|
||||||
|
strh r0, [r3, 0x2]\n\
|
||||||
|
ldrh r0, [r2, 0xA]\n\
|
||||||
|
lsls r0, 8\n\
|
||||||
|
ldrh r1, [r2, 0x8]\n\
|
||||||
|
orrs r0, r1\n\
|
||||||
|
strh r0, [r3, 0x4]\n\
|
||||||
|
ldrh r0, [r2, 0xE]\n\
|
||||||
|
lsls r0, 8\n\
|
||||||
|
ldrh r1, [r2, 0xC]\n\
|
||||||
|
orrs r0, r1\n\
|
||||||
|
strh r0, [r3, 0x6]\n\
|
||||||
|
adds r0, r4, 0x1\n\
|
||||||
|
lsls r0, 16\n\
|
||||||
|
lsrs r4, r0, 16\n\
|
||||||
|
cmp r4, 0x7\n\
|
||||||
|
bls _081260AA\n\
|
||||||
|
lsls r0, r7, 16\n\
|
||||||
|
lsrs r0, 16\n\
|
||||||
|
cmp r0, r5\n\
|
||||||
|
bcc _0812609A\n\
|
||||||
|
_081260FA:\n\
|
||||||
|
mov r1, r10\n\
|
||||||
|
lsls r0, r1, 16\n\
|
||||||
|
lsrs r1, r0, 16\n\
|
||||||
|
ldr r2, [sp, 0x8]\n\
|
||||||
|
cmp r1, r2\n\
|
||||||
|
bcc _08126086\n\
|
||||||
|
b _08126194\n\
|
||||||
|
_08126108:\n\
|
||||||
|
movs r1, 0\n\
|
||||||
|
ldr r0, [sp, 0x8]\n\
|
||||||
|
cmp r1, r0\n\
|
||||||
|
bcs _08126194\n\
|
||||||
|
_08126110:\n\
|
||||||
|
movs r0, 0\n\
|
||||||
|
adds r2, r1, 0x1\n\
|
||||||
|
mov r10, r2\n\
|
||||||
|
cmp r0, r5\n\
|
||||||
|
bcs _08126188\n\
|
||||||
|
adds r2, r1, 0\n\
|
||||||
|
muls r2, r5\n\
|
||||||
|
mov r9, r2\n\
|
||||||
|
lsls r1, 3\n\
|
||||||
|
mov r8, r1\n\
|
||||||
|
_08126124:\n\
|
||||||
|
movs r4, 0\n\
|
||||||
|
lsls r6, r0, 4\n\
|
||||||
|
adds r7, r0, 0x1\n\
|
||||||
|
add r0, r9\n\
|
||||||
|
lsls r0, 5\n\
|
||||||
|
ldr r1, [sp, 0x4]\n\
|
||||||
|
adds r1, r0\n\
|
||||||
|
mov r12, r1\n\
|
||||||
|
_08126134:\n\
|
||||||
|
lsls r0, r4, 2\n\
|
||||||
|
mov r2, r12\n\
|
||||||
|
adds r3, r2, r0\n\
|
||||||
|
mov r1, r8\n\
|
||||||
|
adds r0, r1, r4\n\
|
||||||
|
lsls r0, 3\n\
|
||||||
|
muls r0, r5\n\
|
||||||
|
lsls r0, 1\n\
|
||||||
|
ldr r2, [sp]\n\
|
||||||
|
adds r0, r2, r0\n\
|
||||||
|
adds r2, r0, r6\n\
|
||||||
|
ldrh r1, [r2, 0x2]\n\
|
||||||
|
lsls r1, 4\n\
|
||||||
|
ldrh r0, [r2]\n\
|
||||||
|
orrs r1, r0\n\
|
||||||
|
ldrh r0, [r2, 0x4]\n\
|
||||||
|
lsls r0, 8\n\
|
||||||
|
orrs r1, r0\n\
|
||||||
|
ldrh r0, [r2, 0x6]\n\
|
||||||
|
lsls r0, 12\n\
|
||||||
|
orrs r1, r0\n\
|
||||||
|
strh r1, [r3]\n\
|
||||||
|
ldrh r1, [r2, 0xA]\n\
|
||||||
|
lsls r1, 4\n\
|
||||||
|
ldrh r0, [r2, 0x8]\n\
|
||||||
|
orrs r1, r0\n\
|
||||||
|
ldrh r0, [r2, 0xC]\n\
|
||||||
|
lsls r0, 8\n\
|
||||||
|
orrs r1, r0\n\
|
||||||
|
ldrh r0, [r2, 0xE]\n\
|
||||||
|
lsls r0, 12\n\
|
||||||
|
orrs r1, r0\n\
|
||||||
|
strh r1, [r3, 0x2]\n\
|
||||||
|
adds r0, r4, 0x1\n\
|
||||||
|
lsls r0, 16\n\
|
||||||
|
lsrs r4, r0, 16\n\
|
||||||
|
cmp r4, 0x7\n\
|
||||||
|
bls _08126134\n\
|
||||||
|
lsls r0, r7, 16\n\
|
||||||
|
lsrs r0, 16\n\
|
||||||
|
cmp r0, r5\n\
|
||||||
|
bcc _08126124\n\
|
||||||
|
_08126188:\n\
|
||||||
|
mov r1, r10\n\
|
||||||
|
lsls r0, r1, 16\n\
|
||||||
|
lsrs r1, r0, 16\n\
|
||||||
|
ldr r2, [sp, 0x8]\n\
|
||||||
|
cmp r1, r2\n\
|
||||||
|
bcc _08126110\n\
|
||||||
|
_08126194:\n\
|
||||||
|
add sp, 0xC\n\
|
||||||
|
pop {r3-r5}\n\
|
||||||
|
mov r8, r3\n\
|
||||||
|
mov r9, r4\n\
|
||||||
|
mov r10, r5\n\
|
||||||
|
pop {r4-r7}\n\
|
||||||
|
pop {r0}\n\
|
||||||
|
bx r0");
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_81261A4(struct Unk030061A0 *arg0)
|
||||||
|
{
|
||||||
|
gUnknown_03006188 = arg0->var_18 * 16;
|
||||||
|
gUnknown_03006184 = &arg0->var_8[gUnknown_03006188];
|
||||||
|
gUnknown_03006168 = arg0->var_4;
|
||||||
|
gUnknown_03006164 = arg0->var_19;
|
||||||
|
gUnknown_03006178 = arg0->var_1A;
|
||||||
|
gUnknown_03006174 = arg0->var_1B;
|
||||||
|
gUnknown_0300616C = arg0->var_1C;
|
||||||
|
gUnknown_03006180 = arg0->var_1D;
|
||||||
|
gUnknown_03006170 = arg0->var_1E;
|
||||||
|
|
||||||
|
switch (arg0->var_14)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
sub_81263A4(FALSE);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
sub_81263A4(TRUE);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sub_8126270();
|
||||||
|
sub_8126714();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sub_8126370();
|
||||||
|
sub_8126664();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
sub_8126334();
|
||||||
|
sub_81265B4();
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
sub_8126318();
|
||||||
|
sub_81264FC();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_8126270(void)
|
||||||
|
{
|
||||||
|
gUnknown_03006184[0] = RGB2(0, 0, 0);
|
||||||
|
gUnknown_03006184[1] = RGB2(6, 6, 6);
|
||||||
|
gUnknown_03006184[2] = RGB2(29, 29, 29);
|
||||||
|
gUnknown_03006184[3] = RGB2(11, 11, 11);
|
||||||
|
gUnknown_03006184[4] = RGB2(29, 6, 6);
|
||||||
|
gUnknown_03006184[5] = RGB2(6, 29, 6);
|
||||||
|
gUnknown_03006184[6] = RGB2(6, 6, 29);
|
||||||
|
gUnknown_03006184[7] = RGB2(29, 29, 6);
|
||||||
|
gUnknown_03006184[8] = RGB2(29, 6, 29);
|
||||||
|
gUnknown_03006184[9] = RGB2(6, 29, 29);
|
||||||
|
gUnknown_03006184[10] = RGB2(29, 11, 6);
|
||||||
|
gUnknown_03006184[11] = RGB2(11, 29, 6);
|
||||||
|
gUnknown_03006184[12] = RGB2(6, 11, 29);
|
||||||
|
gUnknown_03006184[13] = RGB2(29, 6, 11);
|
||||||
|
gUnknown_03006184[14] = RGB2(6, 29, 11);
|
||||||
|
gUnknown_03006184[15] = RGB2(11, 6, 29);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_8126318(void)
|
||||||
|
{
|
||||||
|
gUnknown_03006184[0] = RGB2(0, 0, 0);
|
||||||
|
gUnknown_03006184[1] = RGB2(0, 0, 0);
|
||||||
|
gUnknown_03006184[2] = RGB2(31, 31, 31);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_8126334(void)
|
||||||
|
{
|
||||||
|
u8 i;
|
||||||
|
|
||||||
|
gUnknown_03006184[0] = RGB2(0, 0, 0);
|
||||||
|
gUnknown_03006184[1] = RGB2(0, 0, 0);
|
||||||
|
for (i = 0; i < 14; i++)
|
||||||
|
gUnknown_03006184[i + 2] = RGB2(2 * (i + 2), 2 * (i + 2), 2 * (i + 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_8126370(void)
|
||||||
|
{
|
||||||
|
u8 i;
|
||||||
|
|
||||||
|
gUnknown_03006184[0] = RGB2(0, 0, 0);
|
||||||
|
for (i = 0; i < 32; i++)
|
||||||
|
gUnknown_03006184[i + 1] = RGB2(i, i, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_81263A4(bool8 arg0)
|
||||||
|
{
|
||||||
|
u8 i, j;
|
||||||
|
u16 maxIndex;
|
||||||
|
|
||||||
|
maxIndex = 0xDF;
|
||||||
|
if (!arg0)
|
||||||
|
maxIndex = 0xFF;
|
||||||
|
|
||||||
|
for (j = 0; j < maxIndex; j++)
|
||||||
|
gUnknown_03006184[j] = 0;
|
||||||
|
|
||||||
|
gUnknown_03006184[maxIndex] = RGB2(15, 15, 15);
|
||||||
|
for (i = 0; i < gUnknown_0300616C; i++)
|
||||||
|
{
|
||||||
|
u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||||
|
u16* pal = &var2[gUnknown_03006164];
|
||||||
|
for (j = 0; j < gUnknown_03006174; j++, pal++)
|
||||||
|
{
|
||||||
|
if (*pal & 0x8000)
|
||||||
|
{
|
||||||
|
*pal = gUnknown_03006188;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
u16 color = sub_81267C4(pal);
|
||||||
|
u8 curIndex = 1;
|
||||||
|
if (curIndex < maxIndex)
|
||||||
|
{
|
||||||
|
if (gUnknown_03006184[curIndex] == RGB_BLACK)
|
||||||
|
{
|
||||||
|
gUnknown_03006184[curIndex] = color;
|
||||||
|
*pal = gUnknown_03006188 + curIndex;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while (curIndex < maxIndex)
|
||||||
|
{
|
||||||
|
if (gUnknown_03006184[curIndex] == RGB_BLACK)
|
||||||
|
{
|
||||||
|
gUnknown_03006184[curIndex] = color;
|
||||||
|
*pal = gUnknown_03006188 + curIndex;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gUnknown_03006184[curIndex] == color)
|
||||||
|
{
|
||||||
|
*pal = gUnknown_03006188 + curIndex;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
curIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (curIndex == maxIndex)
|
||||||
|
{
|
||||||
|
curIndex = maxIndex;
|
||||||
|
*pal = curIndex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_81264FC(void)
|
||||||
|
{
|
||||||
|
u8 i, j;
|
||||||
|
|
||||||
|
for (i = 0; i < gUnknown_0300616C; i++)
|
||||||
|
{
|
||||||
|
u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||||
|
u16* pal = &var2[gUnknown_03006164];
|
||||||
|
for (j = 0; j < gUnknown_03006174; j++, pal++)
|
||||||
|
{
|
||||||
|
if (*pal & 0x8000)
|
||||||
|
{
|
||||||
|
*pal = gUnknown_03006188;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ConvertToBlackOrWhite(pal) == RGB_BLACK)
|
||||||
|
*pal = gUnknown_03006188 + 1;
|
||||||
|
else
|
||||||
|
*pal = gUnknown_03006188 + 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_81265B4(void)
|
||||||
|
{
|
||||||
|
u8 i, j;
|
||||||
|
|
||||||
|
for (i = 0; i < gUnknown_0300616C; i++)
|
||||||
|
{
|
||||||
|
u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||||
|
u16* pal = &var2[gUnknown_03006164];
|
||||||
|
for (j = 0; j < gUnknown_03006174; j++, pal++)
|
||||||
|
{
|
||||||
|
if (*pal & 0x8000)
|
||||||
|
*pal = gUnknown_03006188;
|
||||||
|
else
|
||||||
|
*pal = sub_8126908(pal) + gUnknown_03006188;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_8126664(void)
|
||||||
|
{
|
||||||
|
u8 i, j;
|
||||||
|
|
||||||
|
for (i = 0; i < gUnknown_0300616C; i++)
|
||||||
|
{
|
||||||
|
u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||||
|
u16* pal = &var2[gUnknown_03006164];
|
||||||
|
for (j = 0; j < gUnknown_03006174; j++, pal++)
|
||||||
|
{
|
||||||
|
if (*pal & 0x8000)
|
||||||
|
*pal = gUnknown_03006188;
|
||||||
|
else
|
||||||
|
*pal = sub_812693C(pal) + gUnknown_03006188;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void sub_8126714(void)
|
||||||
|
{
|
||||||
|
u8 i, j;
|
||||||
|
|
||||||
|
for (i = 0; i < gUnknown_0300616C; i++)
|
||||||
|
{
|
||||||
|
u16* var2 = &(*gUnknown_03006168)[0][(gUnknown_03006178 + i) * gUnknown_03006180];
|
||||||
|
u16* pal = &var2[gUnknown_03006164];
|
||||||
|
for (j = 0; j < gUnknown_03006174; j++, pal++)
|
||||||
|
{
|
||||||
|
if (*pal & 0x8000)
|
||||||
|
*pal = gUnknown_03006188;
|
||||||
|
else
|
||||||
|
*pal = sub_8126838(pal) + gUnknown_03006188;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static u16 sub_81267C4(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);
|
||||||
|
}
|
||||||
|
|
||||||
|
static u16 sub_8126838(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;
|
||||||
|
}
|
||||||
|
|
||||||
|
static u16 sub_8126908(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;
|
||||||
|
}
|
||||||
|
|
||||||
|
static u16 sub_812693C(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;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user