summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-07-22 10:40:00 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-07-22 17:40:53 -0500
commit354b82fce64c1f798c1a6c143b82269514562f91 (patch)
tree926382658c40d9e0a5b1898417ff8c098cc434f9
parentd1358719dbf4c7298662041b4e18a4567f65a6ba (diff)
Decompile more of contest_effects.s
-rw-r--r--asm/contest_painting_effects.s1362
-rw-r--r--src/contest_painting_effects.c599
2 files changed, 595 insertions, 1366 deletions
diff --git a/asm/contest_painting_effects.s b/asm/contest_painting_effects.s
index bc72a6ef5..0c403c093 100644
--- a/asm/contest_painting_effects.s
+++ b/asm/contest_painting_effects.s
@@ -5,1366 +5,6 @@
.text
- thumb_func_start sub_80FCB5C
-sub_80FCB5C: @ 80FCB5C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r2, 0
- ldr r0, _080FCC00 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FCBF2
- ldr r0, _080FCC04 @ =gUnknown_03005DEC
- mov r8, r0
- ldr r3, _080FCC08 @ =gUnknown_03005E04
-_080FCB74:
- ldr r0, _080FCC0C @ =gUnknown_03005DFC
- ldrb r1, [r0]
- ldrb r0, [r3]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080FCC10 @ =gUnknown_03005DE8
- ldrb r0, [r0]
- adds r0, r2
- lsls r0, 1
- adds r4, r1, r0
- ldrh r1, [r4]
- mov r0, sp
- strh r1, [r0]
- movs r5, 0x1
- ldrb r0, [r3]
- lsls r0, 1
- adds r4, r0
- ldr r0, _080FCC14 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- subs r0, 0x1
- adds r7, r2, 0x1
- cmp r5, r0
- bge _080FCBE6
- ldr r6, _080FCC08 @ =gUnknown_03005E04
-_080FCBAA:
- ldrh r0, [r4]
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080FCBD0
- ldrb r2, [r6]
- lsls r2, 1
- adds r2, r4, r2
- mov r0, sp
- adds r1, r4, 0
- str r3, [sp, 0x4]
- bl sub_80FD68C
- strh r0, [r4]
- mov r1, sp
- strh r0, [r1]
- ldr r3, [sp, 0x4]
-_080FCBD0:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r6]
- lsls r0, 1
- adds r4, r0
- ldr r0, _080FCC14 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r5, r0
- blt _080FCBAA
-_080FCBE6:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080FCC00 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FCB74
-_080FCBF2:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCC00: .4byte gUnknown_03005DF8
-_080FCC04: .4byte gUnknown_03005DEC
-_080FCC08: .4byte gUnknown_03005E04
-_080FCC0C: .4byte gUnknown_03005DFC
-_080FCC10: .4byte gUnknown_03005DE8
-_080FCC14: .4byte gUnknown_03005DF0
- thumb_func_end sub_80FCB5C
-
- thumb_func_start sub_80FCC18
-sub_80FCC18: @ 80FCC18
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r2, 0
- ldr r0, _080FCCA4 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FCC94
- ldr r0, _080FCCA8 @ =gUnknown_03005DEC
- mov r9, r0
- ldr r3, _080FCCAC @ =gUnknown_03005DF8
-_080FCC38:
- ldr r0, _080FCCB0 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FCCB4 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r9
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080FCCB8 @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080FCC88
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080FCC64:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080FCC7A
- adds r0, r4, 0
- mov r1, r8
- str r3, [sp]
- bl sub_80FD3D0
- strh r0, [r4]
- ldr r3, [sp]
-_080FCC7A:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080FCC64
-_080FCC88:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080FCCA4 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FCC38
-_080FCC94:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCCA4: .4byte gUnknown_03005DF0
-_080FCCA8: .4byte gUnknown_03005DEC
-_080FCCAC: .4byte gUnknown_03005DF8
-_080FCCB0: .4byte gUnknown_03005DFC
-_080FCCB4: .4byte gUnknown_03005E04
-_080FCCB8: .4byte gUnknown_03005DE8
- thumb_func_end sub_80FCC18
-
- thumb_func_start sub_80FCCBC
-sub_80FCCBC: @ 80FCCBC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080FCD3C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FCD2E
- ldr r0, _080FCD40 @ =gUnknown_03005DEC
- mov r8, r0
- ldr r3, _080FCD44 @ =gUnknown_03005DF8
-_080FCCD4:
- ldr r0, _080FCD48 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FCD4C @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080FCD50 @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080FCD22
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080FCD00:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080FCD14
- adds r0, r4, 0
- str r3, [sp]
- bl sub_80FD4DC
- strh r0, [r4]
- ldr r3, [sp]
-_080FCD14:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080FCD00
-_080FCD22:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080FCD3C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FCCD4
-_080FCD2E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCD3C: .4byte gUnknown_03005DF0
-_080FCD40: .4byte gUnknown_03005DEC
-_080FCD44: .4byte gUnknown_03005DF8
-_080FCD48: .4byte gUnknown_03005DFC
-_080FCD4C: .4byte gUnknown_03005E04
-_080FCD50: .4byte gUnknown_03005DE8
- thumb_func_end sub_80FCCBC
-
- thumb_func_start sub_80FCD54
-sub_80FCD54: @ 80FCD54
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r7, 0
- ldr r0, _080FCE8C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r7, r0
- bcs _080FCDE0
- ldr r0, _080FCE90 @ =gUnknown_03005DEC
- mov r8, r0
-_080FCD6A:
- ldr r0, _080FCE94 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r7
- ldr r0, _080FCE98 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r2, r8
- ldr r1, [r2]
- adds r1, r0
- ldr r0, _080FCE9C @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r5, r1, r0
- adds r4, r5, 0x2
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80FD50C
- strh r0, [r5]
- movs r6, 0x1
- adds r5, r4, 0
- ldr r0, _080FCEA0 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- subs r0, 0x1
- adds r7, 0x1
- cmp r6, r0
- bge _080FCDCA
-_080FCDA2:
- adds r4, r5, 0x2
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80FD50C
- strh r0, [r5]
- subs r1, r5, 0x2
- adds r0, r5, 0
- bl sub_80FD50C
- strh r0, [r5]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r5, r4, 0
- ldr r0, _080FCEA0 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r6, r0
- blt _080FCDA2
-_080FCDCA:
- subs r1, r5, 0x2
- adds r0, r5, 0
- bl sub_80FD50C
- strh r0, [r5]
- lsls r0, r7, 24
- lsrs r7, r0, 24
- ldr r0, _080FCE8C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r7, r0
- bcc _080FCD6A
-_080FCDE0:
- movs r6, 0
- ldr r0, _080FCEA0 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r6, r0
- bcs _080FCE80
- ldr r3, _080FCE90 @ =gUnknown_03005DEC
- mov r9, r3
- ldr r0, _080FCE98 @ =gUnknown_03005E04
- mov r8, r0
-_080FCDF2:
- ldr r0, _080FCE94 @ =gUnknown_03005DFC
- ldrb r0, [r0]
- mov r2, r8
- ldrb r1, [r2]
- muls r0, r1
- lsls r0, 1
- mov r3, r9
- ldr r2, [r3]
- adds r2, r0
- ldr r0, _080FCE9C @ =gUnknown_03005DE8
- ldrb r0, [r0]
- adds r0, r6
- lsls r0, 1
- adds r5, r2, r0
- lsls r1, 1
- adds r1, r5, r1
- adds r0, r5, 0
- bl sub_80FD50C
- strh r0, [r5]
- movs r7, 0x1
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 1
- adds r5, r0
- ldr r0, _080FCE8C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- subs r0, 0x1
- adds r6, 0x1
- cmp r7, r0
- bge _080FCE64
- ldr r4, _080FCE98 @ =gUnknown_03005E04
-_080FCE32:
- ldrb r1, [r4]
- lsls r1, 1
- adds r1, r5, r1
- adds r0, r5, 0
- bl sub_80FD50C
- strh r0, [r5]
- ldrb r1, [r4]
- lsls r1, 1
- subs r1, r5, r1
- adds r0, r5, 0
- bl sub_80FD50C
- strh r0, [r5]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r4]
- lsls r0, 1
- adds r5, r0
- ldr r0, _080FCE8C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r7, r0
- blt _080FCE32
-_080FCE64:
- mov r2, r8
- ldrb r1, [r2]
- lsls r1, 1
- subs r1, r5, r1
- adds r0, r5, 0
- bl sub_80FD50C
- strh r0, [r5]
- lsls r0, r6, 24
- lsrs r6, r0, 24
- ldr r0, _080FCEA0 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r6, r0
- bcc _080FCDF2
-_080FCE80:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCE8C: .4byte gUnknown_03005DF0
-_080FCE90: .4byte gUnknown_03005DEC
-_080FCE94: .4byte gUnknown_03005DFC
-_080FCE98: .4byte gUnknown_03005E04
-_080FCE9C: .4byte gUnknown_03005DE8
-_080FCEA0: .4byte gUnknown_03005DF8
- thumb_func_end sub_80FCD54
-
- thumb_func_start sub_80FCEA4
-sub_80FCEA4: @ 80FCEA4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080FCF24 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FCF16
- ldr r0, _080FCF28 @ =gUnknown_03005DEC
- mov r8, r0
- ldr r3, _080FCF2C @ =gUnknown_03005DF8
-_080FCEBC:
- ldr r0, _080FCF30 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FCF34 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080FCF38 @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080FCF0A
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080FCEE8:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080FCEFC
- adds r0, r4, 0
- str r3, [sp]
- bl sub_80FD53C
- strh r0, [r4]
- ldr r3, [sp]
-_080FCEFC:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080FCEE8
-_080FCF0A:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080FCF24 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FCEBC
-_080FCF16:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCF24: .4byte gUnknown_03005DF0
-_080FCF28: .4byte gUnknown_03005DEC
-_080FCF2C: .4byte gUnknown_03005DF8
-_080FCF30: .4byte gUnknown_03005DFC
-_080FCF34: .4byte gUnknown_03005E04
-_080FCF38: .4byte gUnknown_03005DE8
- thumb_func_end sub_80FCEA4
-
- thumb_func_start sub_80FCF3C
-sub_80FCF3C: @ 80FCF3C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _080FD068 @ =gUnknown_03005DEC
- ldr r4, [r0]
- movs r6, 0
- movs r0, 0x80
- lsls r0, 8
- adds r5, r0, 0
-_080FCF54:
- movs r7, 0
-_080FCF56:
- ldrh r0, [r4]
- ands r0, r5
- cmp r0, 0
- bne _080FCF66
- adds r0, r4, 0
- bl sub_80FD53C
- strh r0, [r4]
-_080FCF66:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r4, 0x2
- cmp r7, 0x3F
- bls _080FCF56
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3F
- bls _080FCF54
- movs r7, 0
- ldr r1, _080FD068 @ =gUnknown_03005DEC
- mov r10, r1
- mov r3, sp
- movs r2, 0x80
- lsls r2, 8
- mov r9, r2
-_080FCF8A:
- lsls r0, r7, 1
- mov r2, r10
- ldr r1, [r2]
- adds r4, r1, r0
- ldrh r1, [r4]
- strh r1, [r3]
- mov r1, r9
- strh r1, [r4]
- movs r6, 0x1
- adds r4, 0x80
- adds r5, r0, 0
-_080FCFA0:
- ldrh r0, [r4]
- movs r2, 0x80
- lsls r2, 8
- ands r0, r2
- cmp r0, 0
- bne _080FCFC0
- adds r2, r4, 0
- adds r2, 0x80
- mov r0, sp
- adds r1, r4, 0
- str r3, [sp, 0x4]
- bl sub_80FD7AC
- strh r0, [r4]
- ldr r3, [sp, 0x4]
- strh r0, [r3]
-_080FCFC0:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, 0x80
- cmp r6, 0x3E
- bls _080FCFA0
- mov r0, r9
- strh r0, [r4]
- mov r1, r10
- ldr r0, [r1]
- adds r4, r0, r5
- ldrh r0, [r4]
- strh r0, [r3]
- mov r2, r9
- strh r2, [r4]
- movs r6, 0x1
- adds r4, 0x80
- movs r0, 0x80
- lsls r0, 8
- mov r8, r0
-_080FCFE8:
- ldrh r0, [r4]
- mov r1, r8
- ands r0, r1
- adds r5, r4, 0
- adds r5, 0x80
- cmp r0, 0
- bne _080FD008
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- str r3, [sp, 0x4]
- bl sub_80FD7AC
- strh r0, [r4]
- ldr r3, [sp, 0x4]
- strh r0, [r3]
-_080FD008:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, r5, 0
- cmp r6, 0x3E
- bls _080FCFE8
- mov r2, r9
- strh r2, [r4]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3F
- bls _080FCF8A
- ldr r0, _080FD068 @ =gUnknown_03005DEC
- ldr r4, [r0]
- movs r6, 0
- movs r0, 0x80
- lsls r0, 8
- mov r8, r0
-_080FD02E:
- movs r7, 0
- adds r5, r6, 0x1
-_080FD032:
- ldrh r0, [r4]
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- bne _080FD044
- adds r0, r4, 0
- bl sub_80FD53C
- strh r0, [r4]
-_080FD044:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r4, 0x2
- cmp r7, 0x3F
- bls _080FD032
- lsls r0, r5, 24
- lsrs r6, r0, 24
- cmp r6, 0x3F
- bls _080FD02E
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD068: .4byte gUnknown_03005DEC
- thumb_func_end sub_80FCF3C
-
- thumb_func_start sub_80FD06C
-sub_80FD06C: @ 80FD06C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080FD0FC @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FD0EE
- ldr r0, _080FD100 @ =gUnknown_03005DEC
- mov r8, r0
-_080FD082:
- ldr r0, _080FD104 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FD108 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080FD10C @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- ldrh r1, [r4]
- mov r0, sp
- strh r1, [r0]
- movs r5, 0x1
- adds r4, 0x2
- ldr r0, _080FD110 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- subs r0, 0x1
- adds r6, r2, 0x1
- cmp r5, r0
- bge _080FD0E2
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080FD0BA:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080FD0D0
- mov r0, sp
- adds r1, r4, 0
- bl sub_80FD568
- strh r0, [r4]
- mov r1, sp
- strh r0, [r1]
-_080FD0D0:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldr r0, _080FD110 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r5, r0
- blt _080FD0BA
-_080FD0E2:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080FD0FC @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FD082
-_080FD0EE:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD0FC: .4byte gUnknown_03005DF0
-_080FD100: .4byte gUnknown_03005DEC
-_080FD104: .4byte gUnknown_03005DFC
-_080FD108: .4byte gUnknown_03005E04
-_080FD10C: .4byte gUnknown_03005DE8
-_080FD110: .4byte gUnknown_03005DF8
- thumb_func_end sub_80FD06C
-
- thumb_func_start sub_80FD114
-sub_80FD114: @ 80FD114
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r2, 0
- ldr r0, _080FD1B0 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FD1A2
- ldr r0, _080FD1B4 @ =gUnknown_03005DEC
- mov r8, r0
- ldr r7, _080FD1B8 @ =gUnknown_03005E04
-_080FD12C:
- ldr r0, _080FD1BC @ =gUnknown_03005DFC
- ldrb r1, [r0]
- ldrb r0, [r7]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080FD1C0 @ =gUnknown_03005DE8
- ldrb r0, [r0]
- adds r0, r2
- lsls r0, 1
- adds r4, r1, r0
- ldrh r1, [r4]
- mov r0, sp
- strh r1, [r0]
- movs r5, 0x1
- ldrb r0, [r7]
- lsls r0, 1
- adds r4, r0
- ldr r0, _080FD1C4 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- subs r0, 0x1
- adds r6, r2, 0x1
- cmp r5, r0
- bge _080FD196
- movs r0, 0x80
- lsls r0, 8
- adds r2, r0, 0
-_080FD166:
- ldrh r0, [r4]
- ands r0, r2
- cmp r0, 0
- bne _080FD180
- mov r0, sp
- adds r1, r4, 0
- str r2, [sp, 0x4]
- bl sub_80FD568
- strh r0, [r4]
- mov r1, sp
- strh r0, [r1]
- ldr r2, [sp, 0x4]
-_080FD180:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r7]
- lsls r0, 1
- adds r4, r0
- ldr r0, _080FD1C4 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r5, r0
- blt _080FD166
-_080FD196:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080FD1B0 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FD12C
-_080FD1A2:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FD1B0: .4byte gUnknown_03005DF8
-_080FD1B4: .4byte gUnknown_03005DEC
-_080FD1B8: .4byte gUnknown_03005E04
-_080FD1BC: .4byte gUnknown_03005DFC
-_080FD1C0: .4byte gUnknown_03005DE8
-_080FD1C4: .4byte gUnknown_03005DF0
- thumb_func_end sub_80FD114
-
- thumb_func_start sub_80FD1C8
-sub_80FD1C8: @ 80FD1C8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- mov r2, sp
- ldr r3, _080FD234 @ =gUnknown_083E7A50
- lsls r1, r0, 1
- add r1, r10
- adds r0, r1, r3
- ldrb r0, [r0]
- strb r0, [r2]
- adds r0, r3, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- strb r0, [r2, 0x1]
- mov r5, sp
- adds r0, r3, 0x2
- adds r1, r0
- ldrb r4, [r1]
- lsls r2, r4, 24
- lsrs r1, r2, 27
- movs r0, 0x7
- ands r1, r0
- strh r1, [r5, 0x2]
- lsrs r2, 25
- mov r9, r2
- movs r0, 0x3
- ands r2, r0
- mov r9, r2
- movs r5, 0x1
- ands r5, r4
- movs r4, 0x1
- mov r8, r4
- cmp r8, r1
- bcs _080FD27A
- mov r3, sp
-_080FD21A:
- cmp r5, 0
- bne _080FD238
- mov r0, r8
- lsls r2, r0, 2
- mov r4, sp
- adds r1, r4, r2
- ldrb r0, [r3]
- mov r4, r8
- subs r0, r4
- strb r0, [r1]
- ldrb r0, [r3, 0x1]
- add r0, r8
- b _080FD24A
- .align 2, 0
-_080FD234: .4byte gUnknown_083E7A50
-_080FD238:
- mov r0, r8
- lsls r2, r0, 2
- mov r4, sp
- adds r1, r4, r2
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r1]
- ldrb r0, [r3, 0x1]
- subs r0, 0x1
-_080FD24A:
- strb r0, [r1, 0x1]
- add r2, sp
- ldrb r0, [r2]
- cmp r0, 0x3F
- bhi _080FD25A
- ldrb r0, [r2, 0x1]
- cmp r0, 0x3F
- bls _080FD262
-_080FD25A:
- mov r0, r8
- subs r0, 0x1
- strh r0, [r3, 0x2]
- b _080FD27A
-_080FD262:
- ldrh r0, [r3, 0x2]
- mov r1, r8
- subs r0, r1
- strh r0, [r2, 0x2]
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrh r0, [r3, 0x2]
- cmp r8, r0
- bcc _080FD21A
-_080FD27A:
- movs r2, 0
- mov r8, r2
- mov r0, sp
- ldrh r0, [r0, 0x2]
- cmp r8, r0
- bcc _080FD288
- b _080FD38A
-_080FD288:
- movs r3, 0x1F
-_080FD28A:
- ldr r1, _080FD2E8 @ =gUnknown_03005DEC
- mov r4, r8
- lsls r0, r4, 2
- mov r2, sp
- adds r6, r2, r0
- ldrb r0, [r6, 0x1]
- lsls r0, 7
- ldr r1, [r1]
- adds r1, r0
- ldrb r0, [r6]
- lsls r0, 1
- adds r2, r1, r0
- ldrh r1, [r2]
- movs r4, 0x80
- lsls r4, 8
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _080FD376
- movs r7, 0x1F
- ands r7, r1
- lsls r0, r1, 16
- lsrs r5, r0, 21
- ands r5, r3
- lsrs r4, r0, 26
- ands r4, r3
- mov r0, r9
- cmp r0, 0
- blt _080FD36C
- cmp r0, 0x1
- ble _080FD2EC
- cmp r0, 0x3
- bgt _080FD36C
- ldrh r0, [r6, 0x2]
- adds r1, r7, r0
- lsls r1, 16
- lsrs r7, r1, 16
- adds r1, r5, r0
- lsls r1, 16
- lsrs r5, r1, 16
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r7, 0x1F
- bls _080FD360
- movs r7, 0x1F
- b _080FD360
- .align 2, 0
-_080FD2E8: .4byte gUnknown_03005DEC
-_080FD2EC:
- mov r1, r10
- lsls r0, r1, 1
- add r0, r10
- ldr r1, _080FD320 @ =gUnknown_083E7A50
- adds r1, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsrs r0, 3
- movs r1, 0x7
- ands r0, r1
- movs r1, 0x3
- str r2, [sp, 0x18]
- str r3, [sp, 0x1C]
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- cmp r0, 0x1
- beq _080FD33C
- cmp r0, 0x1
- bgt _080FD324
- cmp r0, 0
- beq _080FD32A
- b _080FD36C
- .align 2, 0
-_080FD320: .4byte gUnknown_083E7A50
-_080FD324:
- cmp r0, 0x2
- beq _080FD34E
- b _080FD36C
-_080FD32A:
- ldrh r0, [r6, 0x2]
- cmp r7, r0
- bcc _080FD338
- subs r0, r7, r0
- lsls r0, 16
- lsrs r7, r0, 16
- b _080FD36C
-_080FD338:
- movs r7, 0
- b _080FD36C
-_080FD33C:
- ldrh r0, [r6, 0x2]
- cmp r5, r0
- bcc _080FD34A
- subs r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- b _080FD36C
-_080FD34A:
- movs r5, 0
- b _080FD36C
-_080FD34E:
- ldrh r0, [r6, 0x2]
- cmp r4, r0
- bcc _080FD35C
- subs r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- b _080FD36C
-_080FD35C:
- movs r4, 0
- b _080FD36C
-_080FD360:
- cmp r5, 0x1F
- bls _080FD366
- movs r5, 0x1F
-_080FD366:
- cmp r4, 0x1F
- bls _080FD36C
- movs r4, 0x1F
-_080FD36C:
- lsls r0, r4, 10
- lsls r1, r5, 5
- orrs r0, r1
- orrs r7, r0
- strh r7, [r2]
-_080FD376:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, sp
- ldrh r0, [r0, 0x2]
- cmp r8, r0
- bcs _080FD38A
- b _080FD28A
-_080FD38A:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80FD1C8
-
- thumb_func_start sub_80FD39C
-sub_80FD39C: @ 80FD39C
- push {lr}
- ldrh r1, [r0]
- movs r3, 0x1F
- movs r0, 0x1F
- ands r0, r1
- lsls r1, 16
- lsrs r2, r1, 21
- ands r2, r3
- lsrs r1, 26
- ands r1, r3
- adds r0, r2
- adds r0, r1
- movs r1, 0x3
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r0, r1, 10
- lsls r2, r1, 5
- orrs r0, r2
- orrs r0, r1
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80FD39C
-
- thumb_func_start sub_80FD3D0
-sub_80FD3D0: @ 80FD3D0
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldrh r0, [r0]
- movs r2, 0x1F
- movs r1, 0x1F
- ands r1, r0
- lsls r0, 16
- lsrs r3, r0, 21
- ands r3, r2
- lsrs r0, 26
- ands r0, r2
- cmp r1, 0x10
- bhi _080FD400
- cmp r3, 0x10
- bhi _080FD400
- cmp r0, 0x10
- bhi _080FD400
- adds r0, r4, 0
- bl sub_80FD40C
- lsls r0, 16
- lsrs r0, 16
- b _080FD402
-_080FD400:
- ldr r0, _080FD408 @ =0x00007fff
-_080FD402:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080FD408: .4byte 0x00007fff
- thumb_func_end sub_80FD3D0
-
- thumb_func_start sub_80FD40C
-sub_80FD40C: @ 80FD40C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- mov r8, r0
- movs r6, 0
- movs r7, 0
- adds r0, r4, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _080FD4C4
- lsls r0, 2
- ldr r1, _080FD450 @ =_080FD454
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FD450: .4byte _080FD454
- .align 2, 0
-_080FD454:
- .4byte _080FD46C
- .4byte _080FD47C
- .4byte _080FD48C
- .4byte _080FD49A
- .4byte _080FD4A8
- .4byte _080FD4B6
-_080FD46C:
- movs r0, 0x15
- subs r0, r5
- lsls r0, 16
- lsrs r6, r0, 16
- adds r7, r6, 0
- movs r1, 0
- mov r8, r1
- b _080FD4C4
-_080FD47C:
- movs r7, 0
- movs r0, 0x15
- subs r0, r5
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- mov r6, r8
- b _080FD4C4
-_080FD48C:
- movs r0, 0x15
- subs r0, r5
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- mov r8, r7
- b _080FD4C4
-_080FD49A:
- movs r7, 0
- movs r6, 0
- movs r0, 0x17
- subs r0, r5
- lsls r0, 16
- lsrs r0, 16
- b _080FD4C2
-_080FD4A8:
- movs r0, 0x17
- subs r0, r5
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- mov r8, r6
- b _080FD4C4
-_080FD4B6:
- movs r7, 0
- movs r0, 0x17
- subs r0, r5
- lsls r0, 16
- lsrs r6, r0, 16
- movs r0, 0
-_080FD4C2:
- mov r8, r0
-_080FD4C4:
- lsls r0, r7, 10
- lsls r1, r6, 5
- orrs r0, r1
- mov r1, r8
- orrs r1, r0
- lsls r0, r1, 16
- lsrs r0, 16
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80FD40C
-
- thumb_func_start sub_80FD4DC
-sub_80FD4DC: @ 80FD4DC
- push {lr}
- ldrh r0, [r0]
- movs r2, 0x1F
- movs r1, 0x1F
- ands r1, r0
- lsls r0, 16
- lsrs r3, r0, 21
- ands r3, r2
- lsrs r0, 26
- ands r0, r2
- cmp r1, 0x10
- bhi _080FD500
- cmp r3, 0x10
- bhi _080FD500
- cmp r0, 0x10
- bhi _080FD500
- movs r0, 0
- b _080FD502
-_080FD500:
- ldr r0, _080FD508 @ =0x00007fff
-_080FD502:
- pop {r1}
- bx r1
- .align 2, 0
-_080FD508: .4byte 0x00007fff
- thumb_func_end sub_80FD4DC
-
- thumb_func_start sub_80FD50C
-sub_80FD50C: @ 80FD50C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r3, [r4]
- cmp r3, 0
- beq _080FD534
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- ands r0, r3
- cmp r0, 0
- beq _080FD526
- adds r0, r2, 0
- b _080FD536
-_080FD526:
- ldrh r1, [r1]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080FD534
- ldrh r0, [r4]
- b _080FD536
-_080FD534:
- movs r0, 0
-_080FD536:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FD50C
-
- thumb_func_start sub_80FD53C
-sub_80FD53C: @ 80FD53C
- push {r4,lr}
- ldrh r1, [r0]
- movs r0, 0x1F
- movs r3, 0x1F
- ands r3, r1
- lsls r1, 16
- lsrs r2, r1, 21
- lsrs r1, 26
- subs r3, r0, r3
- adds r4, r0, 0
- bics r4, r2
- adds r2, r4, 0
- bics r0, r1
- lsls r0, 10
- lsls r2, 5
- orrs r0, r2
- orrs r0, r3
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FD53C
-
thumb_func_start sub_80FD568
sub_80FD568: @ 80FD568
push {r4-r7,lr}
@@ -2479,7 +1119,7 @@ _080FDDD8: .4byte gUnknown_03005DF8
_080FDDDC: .4byte gUnknown_03005E0C
_080FDDE0:
adds r0, r4, 0
- bl sub_80FD4DC
+ bl ConvertToBlackOrWhite
lsls r0, 16
cmp r0, 0
bne _080FDDF2
diff --git a/src/contest_painting_effects.c b/src/contest_painting_effects.c
index b07319048..ae89df88e 100644
--- a/src/contest_painting_effects.c
+++ b/src/contest_painting_effects.c
@@ -3,6 +3,7 @@
#include "contest_painting.h"
extern u16 (*gUnknown_03005DEC)[][32];
+extern u8 gUnknown_083E7A50[][3];
extern u8 gUnknown_03005E00;
extern u8 gUnknown_03005DFC;
extern u8 gUnknown_03005DF8;
@@ -26,8 +27,15 @@ void sub_80FCC18(u8);
void sub_80FC92C(u8);
void sub_80FC9E4(u8);
void sub_80FD1C8(u16);
-u16 sub_80FD39C(u16*);
+u16 ConvertColorToGrayscale(u16*);
u16 sub_80FD68C(u16*, u16*, u16*);
+u16 ConvertCoolColor(u16*, u8);
+u16 ConvertToBlackOrWhite(u16*);
+u16 sub_80FD50C(u16*, u16*);
+u16 InvertColor(u16*);
+u16 sub_80FD7AC(u16*, u16*, u16*);
+u16 sub_80FD568(u16*, u16*);
+u16 GetCoolColorFromPersonality(u8);
void sub_80FC7A0(struct Unk03005E20* info)
{
@@ -152,13 +160,594 @@ void sub_80FCAC4(void)
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++)
+ u16* color = &var2[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, color++)
{
- if (!(0x8000 & *pal))
+ if (!(0x8000 & *color))
+ {
+ *color = ConvertColorToGrayscale(color);
+ }
+ }
+ }
+}
+
+void sub_80FCB5C(void)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF8; i++)
+ {
+ u16* var0 = &(*gUnknown_03005DEC)[0][gUnknown_03005DFC * gUnknown_03005E04];
+ u16* palette = &var0[gUnknown_03005DE8 + i];
+ u16 color = *palette;
+ j = 1;
+ palette += gUnknown_03005E04;
+ while (j < gUnknown_03005DF0 - 1)
+ {
+ if (!(0x8000 & *palette))
+ {
+ *palette = sub_80FD68C(&color, palette, palette + gUnknown_03005E04);
+ color = *palette;
+ }
+
+ j++;
+ palette += gUnknown_03005E04;
+ }
+ }
+}
+
+void sub_80FCC18(u8 arg0)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* color = &var0[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, color++)
+ {
+ if (!(0x8000 & *color))
+ {
+ *color = ConvertCoolColor(color, arg0);
+ }
+ }
+ }
+}
+
+void sub_80FCCBC(void)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* color = &var0[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, color++)
+ {
+ if (!(0x8000 & *color))
+ {
+ *color = ConvertToBlackOrWhite(color);
+ }
+ }
+ }
+}
+
+void sub_80FCD54(void)
+{
+ u8 i, j;
+ u16 *palette;
+
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ palette = &var0[gUnknown_03005DE8];
+ *palette = sub_80FD50C(palette, palette + 1);
+ for (j = 1, palette = palette + 1; j < gUnknown_03005DF8 - 1; j++, palette++)
+ {
+ *palette = sub_80FD50C(palette, palette + 1);
+ *palette = sub_80FD50C(palette, palette - 1);
+ }
+
+ *palette = sub_80FD50C(palette, palette - 1);
+ }
+
+ for (j = 0; j < gUnknown_03005DF8; j++)
+ {
+ u16* var0 = &(*gUnknown_03005DEC)[0][gUnknown_03005DFC * gUnknown_03005E04];
+ palette = &var0[gUnknown_03005DE8 + j];
+ *palette = sub_80FD50C(palette, palette + gUnknown_03005E04);
+ for (i = 1, palette = palette + gUnknown_03005E04; i < gUnknown_03005DF0 - 1; i++, palette += gUnknown_03005E04)
+ {
+ *palette = sub_80FD50C(palette, palette + gUnknown_03005E04);
+ *palette = sub_80FD50C(palette, palette - gUnknown_03005E04);
+ }
+
+ *palette = sub_80FD50C(palette, palette - gUnknown_03005E04);
+ }
+}
+
+void sub_80FCEA4(void)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* color = &var0[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, color++)
+ {
+ if (!(0x8000 & *color))
+ {
+ *color = InvertColor(color);
+ }
+ }
+ }
+}
+
+void sub_80FCF3C(void)
+{
+ u8 i, j;
+ u16 *palette;
+ u16 color;
+
+ palette = (*gUnknown_03005DEC)[0];
+ for (i = 0; i < 64; i++)
+ {
+ for (j = 0; j < 64; j++, palette++)
+ {
+ if (!(0x8000 & *palette))
+ {
+ *palette = InvertColor(palette);
+ }
+ }
+ }
+
+ for (j = 0; j < 64; j++)
+ {
+ palette = &(*gUnknown_03005DEC)[0][j];
+ color = *palette;
+ *palette = 0x8000;
+ for (i = 1, palette += 64; i < 63; i++, palette += 64)
+ {
+ if (!(0x8000 & *palette))
+ {
+ *palette = sub_80FD7AC(&color, palette, palette + 64);
+ color = *palette;
+ }
+ }
+
+ *palette = 0x8000;
+ palette = &(*gUnknown_03005DEC)[0][j];
+ color = *palette;
+ *palette = 0x8000;
+ for (i = 1, palette += 64; i < 63; i++, palette += 64)
+ {
+ if (!(0x8000 & *palette))
+ {
+ *palette = sub_80FD7AC(&color, palette, palette + 64);
+ color = *palette;
+ }
+ }
+
+ *palette = 0x8000;
+ }
+
+ palette = (*gUnknown_03005DEC)[0];
+ for (i = 0; i < 64; i++)
+ {
+ for (j = 0; j < 64; j++, palette++)
+ {
+ if (!(0x8000 & *palette))
+ {
+ *palette = InvertColor(palette);
+ }
+ }
+ }
+}
+
+void sub_80FD06C(void)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* palette = &var0[gUnknown_03005DE8];
+ u16 color = *palette;
+ for (j = 1, palette++; j < gUnknown_03005DF8 - 1; j++, palette++)
+ {
+ if (!(0x8000 & *palette))
+ {
+ *palette = sub_80FD568(&color, palette);
+ color = *palette;
+ }
+ }
+ }
+}
+
+void sub_80FD114(void)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF8; i++)
+ {
+ u16* var0 = &(*gUnknown_03005DEC)[0][gUnknown_03005DFC * gUnknown_03005E04];
+ u16* palette = &var0[gUnknown_03005DE8 + i];
+ u16 color = *palette;
+ for (j = 1, palette += gUnknown_03005E04; j < gUnknown_03005DF0 - 1; j++, palette += gUnknown_03005E04)
+ {
+ if (!(0x8000 & *palette))
{
- *pal = sub_80FD39C(pal);
+ *palette = sub_80FD568(&color, palette);
+ color = *palette;
}
}
}
}
+
+NAKED
+void sub_80FD1C8(u16 arg0)
+{
+ asm(".syntax 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, 0x20\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ mov r2, sp\n\
+ ldr r3, _080FD234 @ =gUnknown_083E7A50\n\
+ lsls r1, r0, 1\n\
+ add r1, r10\n\
+ adds r0, r1, r3\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ adds r0, r3, 0x1\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2, 0x1]\n\
+ mov r5, sp\n\
+ adds r0, r3, 0x2\n\
+ adds r1, r0\n\
+ ldrb r4, [r1]\n\
+ lsls r2, r4, 24\n\
+ lsrs r1, r2, 27\n\
+ movs r0, 0x7\n\
+ ands r1, r0\n\
+ strh r1, [r5, 0x2]\n\
+ lsrs r2, 25\n\
+ mov r9, r2\n\
+ movs r0, 0x3\n\
+ ands r2, r0\n\
+ mov r9, r2\n\
+ movs r5, 0x1\n\
+ ands r5, r4\n\
+ movs r4, 0x1\n\
+ mov r8, r4\n\
+ cmp r8, r1\n\
+ bcs _080FD27A\n\
+ mov r3, sp\n\
+_080FD21A:\n\
+ cmp r5, 0\n\
+ bne _080FD238\n\
+ mov r0, r8\n\
+ lsls r2, r0, 2\n\
+ mov r4, sp\n\
+ adds r1, r4, r2\n\
+ ldrb r0, [r3]\n\
+ mov r4, r8\n\
+ subs r0, r4\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3, 0x1]\n\
+ add r0, r8\n\
+ b _080FD24A\n\
+ .align 2, 0\n\
+_080FD234: .4byte gUnknown_083E7A50\n\
+_080FD238:\n\
+ mov r0, r8\n\
+ lsls r2, r0, 2\n\
+ mov r4, sp\n\
+ adds r1, r4, r2\n\
+ ldrb r0, [r3]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3, 0x1]\n\
+ subs r0, 0x1\n\
+_080FD24A:\n\
+ strb r0, [r1, 0x1]\n\
+ add r2, sp\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x3F\n\
+ bhi _080FD25A\n\
+ ldrb r0, [r2, 0x1]\n\
+ cmp r0, 0x3F\n\
+ bls _080FD262\n\
+_080FD25A:\n\
+ mov r0, r8\n\
+ subs r0, 0x1\n\
+ strh r0, [r3, 0x2]\n\
+ b _080FD27A\n\
+_080FD262:\n\
+ ldrh r0, [r3, 0x2]\n\
+ mov r1, r8\n\
+ subs r0, r1\n\
+ strh r0, [r2, 0x2]\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ ldrh r0, [r3, 0x2]\n\
+ cmp r8, r0\n\
+ bcc _080FD21A\n\
+_080FD27A:\n\
+ movs r2, 0\n\
+ mov r8, r2\n\
+ mov r0, sp\n\
+ ldrh r0, [r0, 0x2]\n\
+ cmp r8, r0\n\
+ bcc _080FD288\n\
+ b _080FD38A\n\
+_080FD288:\n\
+ movs r3, 0x1F\n\
+_080FD28A:\n\
+ ldr r1, _080FD2E8 @ =gUnknown_03005DEC\n\
+ mov r4, r8\n\
+ lsls r0, r4, 2\n\
+ mov r2, sp\n\
+ adds r6, r2, r0\n\
+ ldrb r0, [r6, 0x1]\n\
+ lsls r0, 7\n\
+ ldr r1, [r1]\n\
+ adds r1, r0\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 1\n\
+ adds r2, r1, r0\n\
+ ldrh r1, [r2]\n\
+ movs r4, 0x80\n\
+ lsls r4, 8\n\
+ adds r0, r4, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080FD376\n\
+ movs r7, 0x1F\n\
+ ands r7, r1\n\
+ lsls r0, r1, 16\n\
+ lsrs r5, r0, 21\n\
+ ands r5, r3\n\
+ lsrs r4, r0, 26\n\
+ ands r4, r3\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ blt _080FD36C\n\
+ cmp r0, 0x1\n\
+ ble _080FD2EC\n\
+ cmp r0, 0x3\n\
+ bgt _080FD36C\n\
+ ldrh r0, [r6, 0x2]\n\
+ adds r1, r7, r0\n\
+ lsls r1, 16\n\
+ lsrs r7, r1, 16\n\
+ adds r1, r5, r0\n\
+ lsls r1, 16\n\
+ lsrs r5, r1, 16\n\
+ adds r0, r4, r0\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r7, 0x1F\n\
+ bls _080FD360\n\
+ movs r7, 0x1F\n\
+ b _080FD360\n\
+ .align 2, 0\n\
+_080FD2E8: .4byte gUnknown_03005DEC\n\
+_080FD2EC:\n\
+ mov r1, r10\n\
+ lsls r0, r1, 1\n\
+ add r0, r10\n\
+ ldr r1, _080FD320 @ =gUnknown_083E7A50\n\
+ adds r1, 0x2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsrs r0, 3\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ movs r1, 0x3\n\
+ str r2, [sp, 0x18]\n\
+ str r3, [sp, 0x1C]\n\
+ bl __umodsi3\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r2, [sp, 0x18]\n\
+ ldr r3, [sp, 0x1C]\n\
+ cmp r0, 0x1\n\
+ beq _080FD33C\n\
+ cmp r0, 0x1\n\
+ bgt _080FD324\n\
+ cmp r0, 0\n\
+ beq _080FD32A\n\
+ b _080FD36C\n\
+ .align 2, 0\n\
+_080FD320: .4byte gUnknown_083E7A50\n\
+_080FD324:\n\
+ cmp r0, 0x2\n\
+ beq _080FD34E\n\
+ b _080FD36C\n\
+_080FD32A:\n\
+ ldrh r0, [r6, 0x2]\n\
+ cmp r7, r0\n\
+ bcc _080FD338\n\
+ subs r0, r7, r0\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ b _080FD36C\n\
+_080FD338:\n\
+ movs r7, 0\n\
+ b _080FD36C\n\
+_080FD33C:\n\
+ ldrh r0, [r6, 0x2]\n\
+ cmp r5, r0\n\
+ bcc _080FD34A\n\
+ subs r0, r5, r0\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ b _080FD36C\n\
+_080FD34A:\n\
+ movs r5, 0\n\
+ b _080FD36C\n\
+_080FD34E:\n\
+ ldrh r0, [r6, 0x2]\n\
+ cmp r4, r0\n\
+ bcc _080FD35C\n\
+ subs r0, r4, r0\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ b _080FD36C\n\
+_080FD35C:\n\
+ movs r4, 0\n\
+ b _080FD36C\n\
+_080FD360:\n\
+ cmp r5, 0x1F\n\
+ bls _080FD366\n\
+ movs r5, 0x1F\n\
+_080FD366:\n\
+ cmp r4, 0x1F\n\
+ bls _080FD36C\n\
+ movs r4, 0x1F\n\
+_080FD36C:\n\
+ lsls r0, r4, 10\n\
+ lsls r1, r5, 5\n\
+ orrs r0, r1\n\
+ orrs r7, r0\n\
+ strh r7, [r2]\n\
+_080FD376:\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ mov r0, sp\n\
+ ldrh r0, [r0, 0x2]\n\
+ cmp r8, r0\n\
+ bcs _080FD38A\n\
+ b _080FD28A\n\
+_080FD38A:\n\
+ add sp, 0x20\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\n\
+ .syntax divided\n");
+}
+
+u16 ConvertColorToGrayscale(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+ u16 average = (red + green + blue) / 3;
+ return RGB2(average, average, average);
+}
+
+// The dark colors are the colored edges of the Cool painting effect.
+// Everything else is white.
+u16 ConvertCoolColor(u16 *color, u8 personality)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+ if (red < 17 && green < 17 && blue < 17)
+ return GetCoolColorFromPersonality(personality);
+ else
+ return RGB2(31, 31, 31);
+}
+
+// Based on the given value, which comes from the first 8 bits of
+// the mon's personality value, return a color.
+u16 GetCoolColorFromPersonality(u8 personality)
+{
+ u16 red = 0;
+ u16 green = 0;
+ u16 blue = 0;
+ u8 strength = (personality / 6) % 3;
+ u8 colorType = personality % 6;
+
+ switch (colorType)
+ {
+ case 0:
+ // Teal color
+ green = 21 - strength;
+ blue = green;
+ red = 0;
+ break;
+ case 1:
+ // Yellow color
+ blue = 0;
+ red = 21 - strength;
+ green = red;
+ break;
+ case 2:
+ // Purple color
+ blue = 21 - strength;
+ green = 0;
+ red = blue;
+ break;
+ case 3:
+ // Red color
+ blue = 0;
+ green = 0;
+ red = 23 - strength;
+ break;
+ case 4:
+ // Blue color
+ blue = 23 - strength;
+ green = 0;
+ red = 0;
+ break;
+ case 5:
+ // Green color
+ blue = 0;
+ green = 23 - strength;
+ red = 0;
+ break;
+ }
+
+ return RGB2(red, green, blue);
+}
+
+u16 ConvertToBlackOrWhite(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+ if (red < 17 && green < 17 && blue < 17)
+ return RGB2(0, 0, 0);
+ else
+ return RGB2(31, 31, 31);
+}
+
+u16 sub_80FD50C(u16 *colorA, u16 *colorB)
+{
+ if (*colorA)
+ {
+ if (*colorA & 0x8000)
+ return 0x8000;
+ if (*colorB & 0x8000)
+ return RGB2(0, 0, 0);
+
+ return *colorA;
+ }
+
+ return RGB2(0, 0, 0);
+}
+
+u16 InvertColor(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+ red = 31 - red;
+ green = 31 - green;
+ blue = 31 - blue;
+
+ return RGB2(red, green, blue);
+}