summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-06 10:20:56 -0400
committerhuderlem <huderlem@gmail.com>2019-04-06 10:06:10 -0500
commitb844921a9ead2a3088381b931ad0b55b662ff715 (patch)
treeb833a18d45f27e81155c0d01b7e7a0efc3a53cb8
parent5ae6c277632833d8daca9a199f159b3aadb413af (diff)
sub_80FD8CC: an attempt was made
-rw-r--r--asm/contest_painting_effects.s180
-rw-r--r--include/contest_painting_effects.h2
-rw-r--r--src/contest_painting.c2
-rw-r--r--src/contest_painting_effects.c226
4 files changed, 228 insertions, 182 deletions
diff --git a/asm/contest_painting_effects.s b/asm/contest_painting_effects.s
index 249fbf6e4..f2d2ac869 100644
--- a/asm/contest_painting_effects.s
+++ b/asm/contest_painting_effects.s
@@ -5,186 +5,6 @@
.text
- thumb_func_start sub_80FD8CC
-sub_80FD8CC: @ 80FD8CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldrb r1, [r0, 0x1D]
- lsrs r5, r1, 3
- ldrb r1, [r0, 0x1E]
- lsrs r1, 3
- str r1, [sp, 0x8]
- ldr r1, [r0, 0x4]
- str r1, [sp]
- ldr r2, [r0, 0x10]
- str r2, [sp, 0x4]
- ldrh r0, [r0, 0x16]
- cmp r0, 0x2
- bne _080FD97C
- movs r1, 0
- ldr r0, [sp, 0x8]
- cmp r1, r0
- bcc _080FD8FA
- b _080FDA08
-_080FD8FA:
- movs r0, 0
- adds r2, r1, 0x1
- mov r10, r2
- cmp r0, r5
- bcs _080FD96E
- adds r2, r1, 0
- muls r2, r5
- mov r9, r2
- lsls r1, 3
- mov r8, r1
-_080FD90E:
- movs r4, 0
- lsls r6, r0, 4
- adds r7, r0, 0x1
- add r0, r9
- lsls r0, 6
- ldr r1, [sp, 0x4]
- adds r1, r0
- mov r12, r1
-_080FD91E:
- lsls r0, r4, 3
- mov r2, r12
- adds r3, r2, r0
- mov r1, r8
- adds r0, r1, r4
- lsls r0, 3
- muls r0, r5
- lsls r0, 1
- ldr r2, [sp]
- adds r0, r2, r0
- adds r2, r0, r6
- ldrh r0, [r2, 0x2]
- lsls r0, 8
- ldrh r1, [r2]
- orrs r0, r1
- strh r0, [r3]
- ldrh r0, [r2, 0x6]
- lsls r0, 8
- ldrh r1, [r2, 0x4]
- orrs r0, r1
- strh r0, [r3, 0x2]
- ldrh r0, [r2, 0xA]
- lsls r0, 8
- ldrh r1, [r2, 0x8]
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r0, [r2, 0xE]
- lsls r0, 8
- ldrh r1, [r2, 0xC]
- orrs r0, r1
- strh r0, [r3, 0x6]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x7
- bls _080FD91E
- lsls r0, r7, 16
- lsrs r0, 16
- cmp r0, r5
- bcc _080FD90E
-_080FD96E:
- mov r1, r10
- lsls r0, r1, 16
- lsrs r1, r0, 16
- ldr r2, [sp, 0x8]
- cmp r1, r2
- bcc _080FD8FA
- b _080FDA08
-_080FD97C:
- movs r1, 0
- ldr r0, [sp, 0x8]
- cmp r1, r0
- bcs _080FDA08
-_080FD984:
- movs r0, 0
- adds r2, r1, 0x1
- mov r10, r2
- cmp r0, r5
- bcs _080FD9FC
- adds r2, r1, 0
- muls r2, r5
- mov r9, r2
- lsls r1, 3
- mov r8, r1
-_080FD998:
- movs r4, 0
- lsls r6, r0, 4
- adds r7, r0, 0x1
- add r0, r9
- lsls r0, 5
- ldr r1, [sp, 0x4]
- adds r1, r0
- mov r12, r1
-_080FD9A8:
- lsls r0, r4, 2
- mov r2, r12
- adds r3, r2, r0
- mov r1, r8
- adds r0, r1, r4
- lsls r0, 3
- muls r0, r5
- lsls r0, 1
- ldr r2, [sp]
- adds r0, r2, r0
- adds r2, r0, r6
- ldrh r1, [r2, 0x2]
- lsls r1, 4
- ldrh r0, [r2]
- orrs r1, r0
- ldrh r0, [r2, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrh r0, [r2, 0x6]
- lsls r0, 12
- orrs r1, r0
- strh r1, [r3]
- ldrh r1, [r2, 0xA]
- lsls r1, 4
- ldrh r0, [r2, 0x8]
- orrs r1, r0
- ldrh r0, [r2, 0xC]
- lsls r0, 8
- orrs r1, r0
- ldrh r0, [r2, 0xE]
- lsls r0, 12
- orrs r1, r0
- strh r1, [r3, 0x2]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x7
- bls _080FD9A8
- lsls r0, r7, 16
- lsrs r0, 16
- cmp r0, r5
- bcc _080FD998
-_080FD9FC:
- mov r1, r10
- lsls r0, r1, 16
- lsrs r1, r0, 16
- ldr r2, [sp, 0x8]
- cmp r1, r2
- bcc _080FD984
-_080FDA08:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80FD8CC
-
thumb_func_start sub_80FDA18
sub_80FDA18: @ 80FDA18
push {lr}
diff --git a/include/contest_painting_effects.h b/include/contest_painting_effects.h
index 1fa3c90fb..d6e598c46 100644
--- a/include/contest_painting_effects.h
+++ b/include/contest_painting_effects.h
@@ -8,7 +8,7 @@ struct Unk03005E20
u16 (*var_4)[][32];
u16 (*var_8)[];
u8 pad0C[4];
- u32 var_10;
+ u16 (*var_10)[][32];
u16 var_14;
u16 var_16;
u8 var_18;
diff --git a/src/contest_painting.c b/src/contest_painting.c
index d61632a8e..6bc6203c1 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -667,7 +667,7 @@ static void sub_8106F6C(u8 arg0)
gUnknown_03005E20.var_16 = 2;
gUnknown_03005E20.var_0 = arg0;
- gUnknown_03005E20.var_10 = 0x6010000;
+ gUnknown_03005E20.var_10 = OBJ_VRAM0;
sub_80FC7A0(&gUnknown_03005E20);
sub_80FDA18(&gUnknown_03005E20);
diff --git a/src/contest_painting_effects.c b/src/contest_painting_effects.c
index 66e33437f..7a7fc9c4a 100644
--- a/src/contest_painting_effects.c
+++ b/src/contest_painting_effects.c
@@ -895,3 +895,229 @@ u16 sub_80FD7AC(u16 *a0, u16 *a1, u16 *a2)
blue = blue * factor / 31;
return RGB2(red, green, blue);
}
+
+/*
+void sub_80FD8CC(struct Unk03005E20 * a0)
+{
+ u16 i, j, k;
+ u8 r5 = a0->var_1D >> 3;
+ u8 sp08 = a0->var_1E >> 3;
+ u16 * sp00 = (u16 *)a0->var_4;
+ u16 * sp04 = (u16 *)a0->var_10;
+ if (a0->var_16 == 2)
+ {
+ for (i = 0; i < sp08; i++)
+ {
+ for (j = 0; j < r5; j++)
+ {
+ for (k = 0; k < 8; k++)
+ {
+ u16 * r3 = &sp04[i * r5 * 32 + 4 * k];
+ u16 * r2 = &sp00[j * 8 + (i * 8 + k) * 8 * r5];
+ r3[0] = r2[0] | (r2[1] << 8);
+ r3[1] = r2[2] | (r2[3] << 8);
+ r3[2] = r2[4] | (r2[5] << 8);
+ r3[3] = r2[6] | (r2[7] << 8);
+ }
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < sp08; i++)
+ {
+ for (j = 0; j < r5; j++)
+ {
+ for (k = 0; k < 8; k++)
+ {
+ u16 * r3 = &sp04[i * r5 * 16 + 2 * k];
+ u16 * r2 = &sp00[j * 8 + (i * 8 + k) * 8 * r5];
+ r3[0] = r2[0] | (r2[1] << 4) | (r2[2] << 8) | (r2[3] << 12);
+ r3[1] = r2[4] | (r2[5] << 4) | (r2[6] << 8) | (r2[7] << 12);
+ }
+ }
+ }
+ }
+}
+*/
+
+NAKED
+void sub_80FD8CC(struct Unk03005E20 * a0)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0xC\n"
+ "\tldrb r1, [r0, 0x1D]\n"
+ "\tlsrs r5, r1, 3\n"
+ "\tldrb r1, [r0, 0x1E]\n"
+ "\tlsrs r1, 3\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tldr r1, [r0, 0x4]\n"
+ "\tstr r1, [sp]\n"
+ "\tldr r2, [r0, 0x10]\n"
+ "\tstr r2, [sp, 0x4]\n"
+ "\tldrh r0, [r0, 0x16]\n"
+ "\tcmp r0, 0x2\n"
+ "\tbne _080FD97C\n"
+ "\tmovs r1, 0\n"
+ "\tldr r0, [sp, 0x8]\n"
+ "\tcmp r1, r0\n"
+ "\tbcc _080FD8FA\n"
+ "\tb _080FDA08\n"
+ "_080FD8FA:\n"
+ "\tmovs r0, 0\n"
+ "\tadds r2, r1, 0x1\n"
+ "\tmov r10, r2\n"
+ "\tcmp r0, r5\n"
+ "\tbcs _080FD96E\n"
+ "\tadds r2, r1, 0\n"
+ "\tmuls r2, r5\n"
+ "\tmov r9, r2\n"
+ "\tlsls r1, 3\n"
+ "\tmov r8, r1\n"
+ "_080FD90E:\n"
+ "\tmovs r4, 0\n"
+ "\tlsls r6, r0, 4\n"
+ "\tadds r7, r0, 0x1\n"
+ "\tadd r0, r9\n"
+ "\tlsls r0, 6\n"
+ "\tldr r1, [sp, 0x4]\n"
+ "\tadds r1, r0\n"
+ "\tmov r12, r1\n"
+ "_080FD91E:\n"
+ "\tlsls r0, r4, 3\n"
+ "\tmov r2, r12\n"
+ "\tadds r3, r2, r0\n"
+ "\tmov r1, r8\n"
+ "\tadds r0, r1, r4\n"
+ "\tlsls r0, 3\n"
+ "\tmuls r0, r5\n"
+ "\tlsls r0, 1\n"
+ "\tldr r2, [sp]\n"
+ "\tadds r0, r2, r0\n"
+ "\tadds r2, r0, r6\n"
+ "\tldrh r0, [r2, 0x2]\n"
+ "\tlsls r0, 8\n"
+ "\tldrh r1, [r2]\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r3]\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 8\n"
+ "\tldrh r1, [r2, 0x4]\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r3, 0x2]\n"
+ "\tldrh r0, [r2, 0xA]\n"
+ "\tlsls r0, 8\n"
+ "\tldrh r1, [r2, 0x8]\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r3, 0x4]\n"
+ "\tldrh r0, [r2, 0xE]\n"
+ "\tlsls r0, 8\n"
+ "\tldrh r1, [r2, 0xC]\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r3, 0x6]\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r4, r0, 16\n"
+ "\tcmp r4, 0x7\n"
+ "\tbls _080FD91E\n"
+ "\tlsls r0, r7, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, r5\n"
+ "\tbcc _080FD90E\n"
+ "_080FD96E:\n"
+ "\tmov r1, r10\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tcmp r1, r2\n"
+ "\tbcc _080FD8FA\n"
+ "\tb _080FDA08\n"
+ "_080FD97C:\n"
+ "\tmovs r1, 0\n"
+ "\tldr r0, [sp, 0x8]\n"
+ "\tcmp r1, r0\n"
+ "\tbcs _080FDA08\n"
+ "_080FD984:\n"
+ "\tmovs r0, 0\n"
+ "\tadds r2, r1, 0x1\n"
+ "\tmov r10, r2\n"
+ "\tcmp r0, r5\n"
+ "\tbcs _080FD9FC\n"
+ "\tadds r2, r1, 0\n"
+ "\tmuls r2, r5\n"
+ "\tmov r9, r2\n"
+ "\tlsls r1, 3\n"
+ "\tmov r8, r1\n"
+ "_080FD998:\n"
+ "\tmovs r4, 0\n"
+ "\tlsls r6, r0, 4\n"
+ "\tadds r7, r0, 0x1\n"
+ "\tadd r0, r9\n"
+ "\tlsls r0, 5\n"
+ "\tldr r1, [sp, 0x4]\n"
+ "\tadds r1, r0\n"
+ "\tmov r12, r1\n"
+ "_080FD9A8:\n"
+ "\tlsls r0, r4, 2\n"
+ "\tmov r2, r12\n"
+ "\tadds r3, r2, r0\n"
+ "\tmov r1, r8\n"
+ "\tadds r0, r1, r4\n"
+ "\tlsls r0, 3\n"
+ "\tmuls r0, r5\n"
+ "\tlsls r0, 1\n"
+ "\tldr r2, [sp]\n"
+ "\tadds r0, r2, r0\n"
+ "\tadds r2, r0, r6\n"
+ "\tldrh r1, [r2, 0x2]\n"
+ "\tlsls r1, 4\n"
+ "\tldrh r0, [r2]\n"
+ "\torrs r1, r0\n"
+ "\tldrh r0, [r2, 0x4]\n"
+ "\tlsls r0, 8\n"
+ "\torrs r1, r0\n"
+ "\tldrh r0, [r2, 0x6]\n"
+ "\tlsls r0, 12\n"
+ "\torrs r1, r0\n"
+ "\tstrh r1, [r3]\n"
+ "\tldrh r1, [r2, 0xA]\n"
+ "\tlsls r1, 4\n"
+ "\tldrh r0, [r2, 0x8]\n"
+ "\torrs r1, r0\n"
+ "\tldrh r0, [r2, 0xC]\n"
+ "\tlsls r0, 8\n"
+ "\torrs r1, r0\n"
+ "\tldrh r0, [r2, 0xE]\n"
+ "\tlsls r0, 12\n"
+ "\torrs r1, r0\n"
+ "\tstrh r1, [r3, 0x2]\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r4, r0, 16\n"
+ "\tcmp r4, 0x7\n"
+ "\tbls _080FD9A8\n"
+ "\tlsls r0, r7, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, r5\n"
+ "\tbcc _080FD998\n"
+ "_080FD9FC:\n"
+ "\tmov r1, r10\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tcmp r1, r2\n"
+ "\tbcc _080FD984\n"
+ "_080FDA08:\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}