summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-04-06 10:58:44 -0400
committerhuderlem <huderlem@gmail.com>2019-04-06 10:06:10 -0500
commitaf33bf4d1c401b78e944d41c229c2b4a39fd3970 (patch)
tree23a9909b374236759dcdd43c88360f29db803859
parentb844921a9ead2a3088381b931ad0b55b662ff715 (diff)
Finish contest_painting_effects
-rw-r--r--asm/contest_painting_effects.s1046
-rw-r--r--include/contest_painting_effects.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/contest_painting.c4
-rw-r--r--src/contest_painting_effects.c421
5 files changed, 419 insertions, 1055 deletions
diff --git a/asm/contest_painting_effects.s b/asm/contest_painting_effects.s
deleted file mode 100644
index f2d2ac869..000000000
--- a/asm/contest_painting_effects.s
+++ /dev/null
@@ -1,1046 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80FDA18
-sub_80FDA18: @ 80FDA18
- push {lr}
- ldr r2, _080FDA68 @ =gUnknown_03005E0C
- ldrb r1, [r0, 0x18]
- lsls r1, 4
- strh r1, [r2]
- ldr r3, _080FDA6C @ =gUnknown_03005E08
- ldrh r2, [r2]
- lsls r2, 1
- ldr r1, [r0, 0x8]
- adds r1, r2
- str r1, [r3]
- ldr r2, _080FDA70 @ =gUnknown_03005DEC
- ldr r1, [r0, 0x4]
- str r1, [r2]
- ldr r2, _080FDA74 @ =gUnknown_03005DE8
- ldrb r1, [r0, 0x19]
- strb r1, [r2]
- ldr r2, _080FDA78 @ =gUnknown_03005DFC
- ldrb r1, [r0, 0x1A]
- strb r1, [r2]
- ldr r2, _080FDA7C @ =gUnknown_03005DF8
- ldrb r1, [r0, 0x1B]
- strb r1, [r2]
- ldr r2, _080FDA80 @ =gUnknown_03005DF0
- ldrb r1, [r0, 0x1C]
- strb r1, [r2]
- ldr r2, _080FDA84 @ =gUnknown_03005E04
- ldrb r1, [r0, 0x1D]
- strb r1, [r2]
- ldr r2, _080FDA88 @ =gUnknown_03005DF4
- ldrb r1, [r0, 0x1E]
- strb r1, [r2]
- ldrh r0, [r0, 0x14]
- cmp r0, 0x5
- bhi _080FDADE
- lsls r0, 2
- ldr r1, _080FDA8C @ =_080FDA90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FDA68: .4byte gUnknown_03005E0C
-_080FDA6C: .4byte gUnknown_03005E08
-_080FDA70: .4byte gUnknown_03005DEC
-_080FDA74: .4byte gUnknown_03005DE8
-_080FDA78: .4byte gUnknown_03005DFC
-_080FDA7C: .4byte gUnknown_03005DF8
-_080FDA80: .4byte gUnknown_03005DF0
-_080FDA84: .4byte gUnknown_03005E04
-_080FDA88: .4byte gUnknown_03005DF4
-_080FDA8C: .4byte _080FDA90
- .align 2, 0
-_080FDA90:
- .4byte _080FDAA8
- .4byte _080FDAB0
- .4byte _080FDAB8
- .4byte _080FDAC2
- .4byte _080FDACC
- .4byte _080FDAD6
-_080FDAA8:
- movs r0, 0
- bl sub_80FDC18
- b _080FDADE
-_080FDAB0:
- movs r0, 0x1
- bl sub_80FDC18
- b _080FDADE
-_080FDAB8:
- bl sub_80FDAE4
- bl sub_80FDF88
- b _080FDADE
-_080FDAC2:
- bl sub_80FDBE4
- bl sub_80FDED8
- b _080FDADE
-_080FDACC:
- bl sub_80FDBA8
- bl sub_80FDE28
- b _080FDADE
-_080FDAD6:
- bl sub_80FDB8C
- bl sub_80FDD70
-_080FDADE:
- pop {r0}
- bx r0
- thumb_func_end sub_80FDA18
-
- thumb_func_start sub_80FDAE4
-sub_80FDAE4: @ 80FDAE4
- ldr r2, _080FDB4C @ =gUnknown_03005E08
- ldr r1, [r2]
- movs r0, 0
- strh r0, [r1]
- ldr r0, [r2]
- ldr r2, _080FDB50 @ =0x000018c6
- adds r1, r2, 0
- strh r1, [r0, 0x2]
- ldr r2, _080FDB54 @ =0x000077bd
- adds r1, r2, 0
- strh r1, [r0, 0x4]
- ldr r2, _080FDB58 @ =0x00002d6b
- adds r1, r2, 0
- strh r1, [r0, 0x6]
- ldr r2, _080FDB5C @ =0x000018dd
- adds r1, r2, 0
- strh r1, [r0, 0x8]
- ldr r2, _080FDB60 @ =0x00001ba6
- adds r1, r2, 0
- strh r1, [r0, 0xA]
- ldr r2, _080FDB64 @ =0x000074c6
- adds r1, r2, 0
- strh r1, [r0, 0xC]
- ldr r2, _080FDB68 @ =0x00001bbd
- adds r1, r2, 0
- strh r1, [r0, 0xE]
- ldr r2, _080FDB6C @ =0x000074dd
- adds r1, r2, 0
- strh r1, [r0, 0x10]
- ldr r2, _080FDB70 @ =0x000077a6
- adds r1, r2, 0
- strh r1, [r0, 0x12]
- ldr r2, _080FDB74 @ =0x0000197d
- adds r1, r2, 0
- strh r1, [r0, 0x14]
- ldr r2, _080FDB78 @ =0x00001bab
- adds r1, r2, 0
- strh r1, [r0, 0x16]
- ldr r2, _080FDB7C @ =0x00007566
- adds r1, r2, 0
- strh r1, [r0, 0x18]
- ldr r2, _080FDB80 @ =0x00002cdd
- adds r1, r2, 0
- strh r1, [r0, 0x1A]
- ldr r2, _080FDB84 @ =0x00002fa6
- adds r1, r2, 0
- strh r1, [r0, 0x1C]
- ldr r2, _080FDB88 @ =0x000074cb
- adds r1, r2, 0
- strh r1, [r0, 0x1E]
- bx lr
- .align 2, 0
-_080FDB4C: .4byte gUnknown_03005E08
-_080FDB50: .4byte 0x000018c6
-_080FDB54: .4byte 0x000077bd
-_080FDB58: .4byte 0x00002d6b
-_080FDB5C: .4byte 0x000018dd
-_080FDB60: .4byte 0x00001ba6
-_080FDB64: .4byte 0x000074c6
-_080FDB68: .4byte 0x00001bbd
-_080FDB6C: .4byte 0x000074dd
-_080FDB70: .4byte 0x000077a6
-_080FDB74: .4byte 0x0000197d
-_080FDB78: .4byte 0x00001bab
-_080FDB7C: .4byte 0x00007566
-_080FDB80: .4byte 0x00002cdd
-_080FDB84: .4byte 0x00002fa6
-_080FDB88: .4byte 0x000074cb
- thumb_func_end sub_80FDAE4
-
- thumb_func_start sub_80FDB8C
-sub_80FDB8C: @ 80FDB8C
- ldr r2, _080FDBA0 @ =gUnknown_03005E08
- ldr r0, [r2]
- movs r1, 0
- strh r1, [r0]
- ldr r2, [r2]
- strh r1, [r2, 0x2]
- ldr r1, _080FDBA4 @ =0x00007fff
- adds r0, r1, 0
- strh r0, [r2, 0x4]
- bx lr
- .align 2, 0
-_080FDBA0: .4byte gUnknown_03005E08
-_080FDBA4: .4byte 0x00007fff
- thumb_func_end sub_80FDB8C
-
- thumb_func_start sub_80FDBA8
-sub_80FDBA8: @ 80FDBA8
- push {r4,r5,lr}
- ldr r1, _080FDBE0 @ =gUnknown_03005E08
- ldr r0, [r1]
- movs r2, 0
- strh r2, [r0]
- ldr r0, [r1]
- strh r2, [r0, 0x2]
- movs r4, 0
- adds r5, r1, 0
-_080FDBBA:
- ldr r0, [r5]
- lsls r2, r4, 1
- adds r2, r0
- adds r0, r4, 0x2
- lsls r3, r0, 1
- lsls r1, r0, 11
- lsls r0, 6
- orrs r1, r0
- orrs r1, r3
- strh r1, [r2, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xD
- bls _080FDBBA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FDBE0: .4byte gUnknown_03005E08
- thumb_func_end sub_80FDBA8
-
- thumb_func_start sub_80FDBE4
-sub_80FDBE4: @ 80FDBE4
- push {r4,lr}
- ldr r2, _080FDC14 @ =gUnknown_03005E08
- ldr r1, [r2]
- movs r0, 0
- strh r0, [r1]
- movs r3, 0
- adds r4, r2, 0
-_080FDBF2:
- ldr r0, [r4]
- lsls r2, r3, 1
- adds r2, r0
- lsls r0, r3, 10
- lsls r1, r3, 5
- orrs r0, r1
- orrs r0, r3
- strh r0, [r2, 0x2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1F
- bls _080FDBF2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FDC14: .4byte gUnknown_03005E08
- thumb_func_end sub_80FDBE4
-
- thumb_func_start sub_80FDC18
-sub_80FDC18: @ 80FDC18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- movs r1, 0xDF
- mov r9, r1
- cmp r0, 0
- bne _080FDC30
- movs r2, 0xFF
- mov r9, r2
-_080FDC30:
- movs r6, 0
- ldr r3, _080FDCB4 @ =gUnknown_03005E08
- mov r12, r3
- mov r0, r9
- lsls r4, r0, 1
- ldr r5, _080FDCB8 @ =gUnknown_03005DF0
- cmp r6, r9
- bcs _080FDC54
- movs r2, 0
-_080FDC42:
- ldr r0, [r3]
- lsls r1, r6, 1
- adds r1, r0
- strh r2, [r1]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r9
- bcc _080FDC42
-_080FDC54:
- mov r1, r12
- ldr r0, [r1]
- adds r0, r4, r0
- ldr r2, _080FDCBC @ =0x00003def
- adds r1, r2, 0
- strh r1, [r0]
- movs r3, 0
- ldrb r5, [r5]
- cmp r3, r5
- bcs _080FDD58
-_080FDC68:
- ldr r2, _080FDCC0 @ =gUnknown_03005DEC
- ldr r0, _080FDCC4 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r3
- ldr r0, _080FDCC8 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- ldr r1, [r2]
- adds r1, r0
- ldr r0, _080FDCCC @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r6, 0
- ldr r0, _080FDCD0 @ =gUnknown_03005DF8
- adds r2, r0, 0
- adds r3, 0x1
- mov r10, r3
- ldrb r3, [r2]
- cmp r6, r3
- bcs _080FDD4A
- ldr r0, _080FDCD4 @ =gUnknown_03005E0C
- mov r8, r0
-_080FDC98:
- ldrh r0, [r4]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080FDCD8
- mov r1, r8
- ldrh r0, [r1]
- strh r0, [r4]
- adds r6, 0x1
- adds r7, r4, 0x2
- b _080FDD3E
- .align 2, 0
-_080FDCB4: .4byte gUnknown_03005E08
-_080FDCB8: .4byte gUnknown_03005DF0
-_080FDCBC: .4byte 0x00003def
-_080FDCC0: .4byte gUnknown_03005DEC
-_080FDCC4: .4byte gUnknown_03005DFC
-_080FDCC8: .4byte gUnknown_03005E04
-_080FDCCC: .4byte gUnknown_03005DE8
-_080FDCD0: .4byte gUnknown_03005DF8
-_080FDCD4: .4byte gUnknown_03005E0C
-_080FDCD8:
- adds r0, r4, 0
- bl sub_80FE038
- lsls r0, 16
- lsrs r5, r0, 16
- movs r3, 0x1
- adds r6, 0x1
- adds r7, r4, 0x2
- cmp r3, r9
- bcs _080FDD34
- ldr r0, _080FDD04 @ =gUnknown_03005E08
- ldr r2, [r0]
- ldrh r1, [r2, 0x2]
- mov r12, r0
- cmp r1, 0
- bne _080FDD08
- strh r5, [r2, 0x2]
- mov r2, r8
- ldrh r0, [r2]
- adds r0, 0x1
- b _080FDD32
- .align 2, 0
-_080FDD04: .4byte gUnknown_03005E08
-_080FDD08:
- mov r2, r12
- ldr r1, [r2]
- lsls r0, r3, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r5
- beq _080FDD2C
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r9
- bcs _080FDD34
- lsls r0, r3, 1
- adds r1, r0, r1
- ldrh r0, [r1]
- cmp r0, 0
- bne _080FDD08
- strh r5, [r1]
-_080FDD2C:
- mov r1, r8
- ldrh r0, [r1]
- adds r0, r3
-_080FDD32:
- strh r0, [r4]
-_080FDD34:
- ldr r2, _080FDD68 @ =gUnknown_03005DF8
- cmp r3, r9
- bne _080FDD3E
- mov r3, r9
- strh r3, [r4]
-_080FDD3E:
- lsls r0, r6, 24
- lsrs r6, r0, 24
- adds r4, r7, 0
- ldrb r0, [r2]
- cmp r6, r0
- bcc _080FDC98
-_080FDD4A:
- mov r1, r10
- lsls r0, r1, 24
- lsrs r3, r0, 24
- ldr r0, _080FDD6C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r3, r0
- bcc _080FDC68
-_080FDD58:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FDD68: .4byte gUnknown_03005DF8
-_080FDD6C: .4byte gUnknown_03005DF0
- thumb_func_end sub_80FDC18
-
- thumb_func_start sub_80FDD70
-sub_80FDD70: @ 80FDD70
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r2, 0
- ldr r0, _080FDDC4 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FDE14
- ldr r0, _080FDDC8 @ =gUnknown_03005DEC
- mov r8, r0
-_080FDD84:
- ldr r0, _080FDDCC @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FDDD0 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080FDDD4 @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r6, 0
- ldr r0, _080FDDD8 @ =gUnknown_03005DF8
- adds r3, r0, 0
- adds r7, r2, 0x1
- ldrb r0, [r3]
- cmp r6, r0
- bcs _080FDE08
- ldr r5, _080FDDDC @ =gUnknown_03005E0C
-_080FDDB0:
- ldrh r0, [r4]
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _080FDDE0
- ldrh r0, [r5]
- strh r0, [r4]
- b _080FDDFA
- .align 2, 0
-_080FDDC4: .4byte gUnknown_03005DF0
-_080FDDC8: .4byte gUnknown_03005DEC
-_080FDDCC: .4byte gUnknown_03005DFC
-_080FDDD0: .4byte gUnknown_03005E04
-_080FDDD4: .4byte gUnknown_03005DE8
-_080FDDD8: .4byte gUnknown_03005DF8
-_080FDDDC: .4byte gUnknown_03005E0C
-_080FDDE0:
- adds r0, r4, 0
- bl ConvertToBlackOrWhite
- lsls r0, 16
- cmp r0, 0
- bne _080FDDF2
- ldrh r0, [r5]
- adds r0, 0x1
- b _080FDDF6
-_080FDDF2:
- ldrh r0, [r5]
- adds r0, 0x2
-_080FDDF6:
- strh r0, [r4]
- ldr r3, _080FDE20 @ =gUnknown_03005DF8
-_080FDDFA:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r6, r0
- bcc _080FDDB0
-_080FDE08:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080FDE24 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FDD84
-_080FDE14:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FDE20: .4byte gUnknown_03005DF8
-_080FDE24: .4byte gUnknown_03005DF0
- thumb_func_end sub_80FDD70
-
- thumb_func_start sub_80FDE28
-sub_80FDE28: @ 80FDE28
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080FDE7C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FDEC4
- ldr r0, _080FDE80 @ =gUnknown_03005DEC
- mov r8, r0
-_080FDE3E:
- ldr r0, _080FDE84 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FDE88 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080FDE8C @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- ldr r0, _080FDE90 @ =gUnknown_03005DF8
- adds r7, r2, 0x1
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080FDEB8
- ldr r6, _080FDE94 @ =gUnknown_03005E0C
- movs r0, 0x80
- lsls r0, 8
- adds r2, r0, 0
-_080FDE6E:
- ldrh r0, [r4]
- ands r0, r2
- cmp r0, 0
- beq _080FDE98
- ldrh r0, [r6]
- strh r0, [r4]
- b _080FDEA8
- .align 2, 0
-_080FDE7C: .4byte gUnknown_03005DF0
-_080FDE80: .4byte gUnknown_03005DEC
-_080FDE84: .4byte gUnknown_03005DFC
-_080FDE88: .4byte gUnknown_03005E04
-_080FDE8C: .4byte gUnknown_03005DE8
-_080FDE90: .4byte gUnknown_03005DF8
-_080FDE94: .4byte gUnknown_03005E0C
-_080FDE98:
- adds r0, r4, 0
- str r2, [sp]
- bl sub_80FE17C
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r4]
- ldr r2, [sp]
-_080FDEA8:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldr r0, _080FDED0 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080FDE6E
-_080FDEB8:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080FDED4 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FDE3E
-_080FDEC4:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FDED0: .4byte gUnknown_03005DF8
-_080FDED4: .4byte gUnknown_03005DF0
- thumb_func_end sub_80FDE28
-
- thumb_func_start sub_80FDED8
-sub_80FDED8: @ 80FDED8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080FDF2C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FDF74
- ldr r0, _080FDF30 @ =gUnknown_03005DEC
- mov r8, r0
-_080FDEEE:
- ldr r0, _080FDF34 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FDF38 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080FDF3C @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- ldr r0, _080FDF40 @ =gUnknown_03005DF8
- adds r7, r2, 0x1
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080FDF68
- ldr r6, _080FDF44 @ =gUnknown_03005E0C
- movs r0, 0x80
- lsls r0, 8
- adds r2, r0, 0
-_080FDF1E:
- ldrh r0, [r4]
- ands r0, r2
- cmp r0, 0
- beq _080FDF48
- ldrh r0, [r6]
- strh r0, [r4]
- b _080FDF58
- .align 2, 0
-_080FDF2C: .4byte gUnknown_03005DF0
-_080FDF30: .4byte gUnknown_03005DEC
-_080FDF34: .4byte gUnknown_03005DFC
-_080FDF38: .4byte gUnknown_03005E04
-_080FDF3C: .4byte gUnknown_03005DE8
-_080FDF40: .4byte gUnknown_03005DF8
-_080FDF44: .4byte gUnknown_03005E0C
-_080FDF48:
- adds r0, r4, 0
- str r2, [sp]
- bl sub_80FE1B0
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r4]
- ldr r2, [sp]
-_080FDF58:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldr r0, _080FDF80 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080FDF1E
-_080FDF68:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080FDF84 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FDEEE
-_080FDF74:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FDF80: .4byte gUnknown_03005DF8
-_080FDF84: .4byte gUnknown_03005DF0
- thumb_func_end sub_80FDED8
-
- thumb_func_start sub_80FDF88
-sub_80FDF88: @ 80FDF88
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080FDFDC @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FE024
- ldr r0, _080FDFE0 @ =gUnknown_03005DEC
- mov r8, r0
-_080FDF9E:
- ldr r0, _080FDFE4 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FDFE8 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080FDFEC @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- ldr r0, _080FDFF0 @ =gUnknown_03005DF8
- adds r7, r2, 0x1
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080FE018
- ldr r6, _080FDFF4 @ =gUnknown_03005E0C
- movs r0, 0x80
- lsls r0, 8
- adds r2, r0, 0
-_080FDFCE:
- ldrh r0, [r4]
- ands r0, r2
- cmp r0, 0
- beq _080FDFF8
- ldrh r0, [r6]
- strh r0, [r4]
- b _080FE008
- .align 2, 0
-_080FDFDC: .4byte gUnknown_03005DF0
-_080FDFE0: .4byte gUnknown_03005DEC
-_080FDFE4: .4byte gUnknown_03005DFC
-_080FDFE8: .4byte gUnknown_03005E04
-_080FDFEC: .4byte gUnknown_03005DE8
-_080FDFF0: .4byte gUnknown_03005DF8
-_080FDFF4: .4byte gUnknown_03005E0C
-_080FDFF8:
- adds r0, r4, 0
- str r2, [sp]
- bl sub_80FE0AC
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r4]
- ldr r2, [sp]
-_080FE008:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldr r0, _080FE030 @ =gUnknown_03005DF8
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080FDFCE
-_080FE018:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080FE034 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FDF9E
-_080FE024:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FE030: .4byte gUnknown_03005DF8
-_080FE034: .4byte gUnknown_03005DF0
- thumb_func_end sub_80FDF88
-
- thumb_func_start sub_80FE038
-sub_80FE038: @ 80FE038
- push {r4,lr}
- ldrh r0, [r0]
- movs r1, 0x1F
- movs r4, 0x1F
- ands r4, r0
- lsls r0, 16
- lsrs r3, r0, 21
- ands r3, r1
- lsrs r2, r0, 26
- ands r2, r1
- movs r1, 0x3
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE05C
- movs r0, 0x1C
- ands r0, r4
- adds r4, r0, 0x4
-_080FE05C:
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE06A
- movs r0, 0x1C
- ands r0, r3
- adds r3, r0, 0x4
-_080FE06A:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _080FE078
- movs r0, 0x1C
- ands r0, r2
- adds r2, r0, 0x4
-_080FE078:
- cmp r4, 0x5
- bhi _080FE07E
- movs r4, 0x6
-_080FE07E:
- cmp r4, 0x1E
- bls _080FE084
- movs r4, 0x1E
-_080FE084:
- cmp r3, 0x5
- bhi _080FE08A
- movs r3, 0x6
-_080FE08A:
- cmp r3, 0x1E
- bls _080FE090
- movs r3, 0x1E
-_080FE090:
- cmp r2, 0x5
- bhi _080FE096
- movs r2, 0x6
-_080FE096:
- cmp r2, 0x1E
- bls _080FE09C
- movs r2, 0x1E
-_080FE09C:
- lsls r0, r2, 10
- lsls r1, r3, 5
- orrs r0, r1
- orrs r4, r0
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FE038
-
- thumb_func_start sub_80FE0AC
-sub_80FE0AC: @ 80FE0AC
- push {lr}
- ldrh r0, [r0]
- movs r1, 0x1F
- movs r3, 0x1F
- ands r3, r0
- lsls r0, 16
- lsrs r2, r0, 21
- ands r2, r1
- lsrs r0, 26
- ands r0, r1
- cmp r3, 0xB
- bhi _080FE0D0
- cmp r2, 0xA
- bhi _080FE0D0
- cmp r0, 0xA
- bhi _080FE0D0
- movs r0, 0x1
- b _080FE176
-_080FE0D0:
- cmp r3, 0x13
- bls _080FE0F4
- cmp r2, 0x13
- bls _080FE0DC
- cmp r0, 0x13
- bhi _080FE100
-_080FE0DC:
- cmp r3, 0x13
- bls _080FE0F4
- cmp r2, 0x13
- bls _080FE0EA
- cmp r0, 0xE
- bhi _080FE100
- b _080FE138
-_080FE0EA:
- cmp r0, 0x13
- bls _080FE0F4
- cmp r2, 0xE
- bhi _080FE100
- b _080FE114
-_080FE0F4:
- cmp r2, 0x13
- bls _080FE104
- cmp r0, 0x13
- bls _080FE104
- cmp r3, 0xE
- bls _080FE15C
-_080FE100:
- movs r0, 0x2
- b _080FE176
-_080FE104:
- cmp r3, 0x13
- bls _080FE128
- cmp r2, 0xB
- bls _080FE11C
- cmp r0, 0xB
- bls _080FE118
- cmp r2, r0
- bcs _080FE138
-_080FE114:
- movs r0, 0x8
- b _080FE176
-_080FE118:
- movs r0, 0xA
- b _080FE176
-_080FE11C:
- cmp r0, 0xB
- bls _080FE124
- movs r0, 0xD
- b _080FE176
-_080FE124:
- movs r0, 0x4
- b _080FE176
-_080FE128:
- cmp r2, 0x13
- bls _080FE14C
- cmp r3, 0xB
- bls _080FE140
- cmp r0, 0xB
- bls _080FE13C
- cmp r3, r0
- bcc _080FE15C
-_080FE138:
- movs r0, 0x7
- b _080FE176
-_080FE13C:
- movs r0, 0xB
- b _080FE176
-_080FE140:
- cmp r0, 0xB
- bls _080FE148
- movs r0, 0xE
- b _080FE176
-_080FE148:
- movs r0, 0x5
- b _080FE176
-_080FE14C:
- cmp r0, 0x13
- bls _080FE174
- cmp r3, 0xB
- bls _080FE160
- cmp r2, 0xB
- bls _080FE168
- cmp r3, r2
- bcs _080FE114
-_080FE15C:
- movs r0, 0x9
- b _080FE176
-_080FE160:
- cmp r2, 0xB
- bls _080FE168
- movs r0, 0xC
- b _080FE176
-_080FE168:
- cmp r0, 0xB
- bls _080FE170
- movs r0, 0xF
- b _080FE176
-_080FE170:
- movs r0, 0x6
- b _080FE176
-_080FE174:
- movs r0, 0x3
-_080FE176:
- pop {r1}
- bx r1
- thumb_func_end sub_80FE0AC
-
- thumb_func_start sub_80FE17C
-sub_80FE17C: @ 80FE17C
- 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
- movs r1, 0x1E
- ands r0, r1
- lsls r0, 16
- cmp r0, 0
- beq _080FE1A8
- lsrs r0, 17
- b _080FE1AA
-_080FE1A8:
- movs r0, 0x1
-_080FE1AA:
- pop {r1}
- bx r1
- thumb_func_end sub_80FE17C
-
- thumb_func_start sub_80FE1B0
-sub_80FE1B0: @ 80FE1B0
- 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
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80FE1B0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/contest_painting_effects.h b/include/contest_painting_effects.h
index d6e598c46..8b99ba692 100644
--- a/include/contest_painting_effects.h
+++ b/include/contest_painting_effects.h
@@ -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;
diff --git a/ld_script.txt b/ld_script.txt
index 9bed253db..d6247271e 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -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);
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 6bc6203c1..0c5cdcd49 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -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;
}
diff --git a/src/contest_painting_effects.c b/src/contest_painting_effects.c
index 7a7fc9c4a..57706aea7 100644
--- a/src/contest_painting_effects.c
+++ b/src/contest_painting_effects.c
@@ -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;
+}