summaryrefslogtreecommitdiff
path: root/src/scene/cute_sketch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scene/cute_sketch.c')
-rw-r--r--src/scene/cute_sketch.c164
1 files changed, 164 insertions, 0 deletions
diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c
new file mode 100644
index 000000000..5317bc334
--- /dev/null
+++ b/src/scene/cute_sketch.c
@@ -0,0 +1,164 @@
+#include "global.h"
+#include "cute_sketch.h"
+#include "contest_painting.h"
+
+extern u16 (*gUnknown_03005DEC)[][32];
+extern u8 gUnknown_03005E00;
+extern u8 gUnknown_03005DFC;
+extern u8 gUnknown_03005DF8;
+extern u8 gUnknown_03005DF0;
+extern u8 gUnknown_03005E04;
+extern u8 gUnknown_03005DF4;
+
+extern u8 gUnknown_03005DE8;
+
+// this file's functions
+void sub_80FCAA4(void);
+void sub_80FCB5C(void);
+void sub_80FCD54(void);
+void sub_80FCEA4(void);
+void sub_80FCCBC(void);
+void sub_80FD06C(void);
+void sub_80FD114(void);
+void sub_80FCF3C(void);
+void sub_80FCAC4(void);
+void sub_80FCC18(u8);
+void sub_80FC92C(u8);
+void sub_80FC9E4(u8);
+void sub_80FD1C8(u16);
+u16 sub_80FD39C(u16*);
+u16 sub_80FD68C(u16*, u16*, u16*);
+
+void sub_80FC7A0(struct Unk03005E20* info)
+{
+ gUnknown_03005DEC = info->var_4;
+ gUnknown_03005E00 = info->var_1F;
+ gUnknown_03005DE8 = info->var_19;
+ gUnknown_03005DFC = info->var_1A;
+ gUnknown_03005DF8 = info->var_1B;
+ gUnknown_03005DF0 = info->var_1C;
+ gUnknown_03005E04 = info->var_1D;
+ gUnknown_03005DF4 = info->var_1E;
+ switch (info->var_0)
+ {
+ case 2:
+ sub_80FCAA4();
+ break;
+ case 8:
+ sub_80FCB5C();
+ break;
+ case 9:
+ sub_80FCD54();
+ sub_80FCC18(gUnknown_03005E00);
+ break;
+ case 10:
+ sub_80FCD54();
+ sub_80FCEA4();
+ sub_80FCCBC();
+ case 31:
+ sub_80FCEA4();
+ break;
+ case 11:
+ sub_80FCD54();
+ sub_80FD06C();
+ sub_80FD06C();
+ sub_80FD114();
+ sub_80FCCBC();
+ break;
+ case 13:
+ sub_80FCF3C();
+ break;
+ case 30:
+ sub_80FCD54();
+ break;
+ case 32:
+ sub_80FD06C();
+ break;
+ case 33:
+ sub_80FD114();
+ break;
+ case 6:
+ sub_80FCAC4();
+ sub_80FC92C(3);
+ break;
+ case 36:
+ sub_80FCD54();
+ sub_80FD06C();
+ sub_80FD114();
+ sub_80FCCBC();
+ sub_80FCB5C();
+ sub_80FCB5C();
+ sub_80FC92C(2);
+ sub_80FC9E4(4);
+ break;
+ }
+}
+
+#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r))
+
+void sub_80FC92C(u8 a0) // it changes palette someway somehow... .__.
+{
+ 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 (!(0x8000 & *pal))
+ {
+ u8 val = (31 & *pal);
+ val += a0;
+ if (val > 31)
+ val = 31;
+
+ *pal = RGB2(val, val, val);
+ }
+ }
+ }
+}
+
+void sub_80FC9E4(u8 a0)
+{
+ 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 (!(0x8000 & *pal))
+ {
+ u8 val = (31 & *pal);
+ if (val > 31 - a0)
+ val = 31 - (a0 >> 1);
+
+ *pal = RGB2(val, val, val);
+ }
+ }
+ }
+}
+
+void sub_80FCAA4(void)
+{
+ u32 i;
+ for (i = 0; i < 3200; i++)
+ sub_80FD1C8(i);
+}
+
+void sub_80FCAC4(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 (!(0x8000 & *pal))
+ {
+ *pal = sub_80FD39C(pal);
+ }
+ }
+ }
+}