summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest.s685
-rw-r--r--include/contest.h2
-rw-r--r--src/contest.c280
3 files changed, 275 insertions, 692 deletions
diff --git a/asm/contest.s b/asm/contest.s
index 51c9433f8..61c68f501 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -5,691 +5,6 @@
.text
- thumb_func_start sub_80AEB1C
-sub_80AEB1C: @ 80AEB1C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC9
- beq _080AEB2A
- movs r0, 0x1
- b _080AEB2C
-_080AEB2A:
- movs r0, 0
-_080AEB2C:
- pop {r1}
- bx r1
- thumb_func_end sub_80AEB1C
-
- thumb_func_start sub_80AEB30
-sub_80AEB30: @ 80AEB30
- push {lr}
- ldr r0, _080AEB44 @ =0x0600c000
- bl sub_80AEB4C
- ldr r0, _080AEB48 @ =0x0600e000
- bl sub_80AEB4C
- pop {r0}
- bx r0
- .align 2, 0
-_080AEB44: .4byte 0x0600c000
-_080AEB48: .4byte 0x0600e000
- thumb_func_end sub_80AEB30
-
- thumb_func_start sub_80AEB4C
-sub_80AEB4C: @ 80AEB4C
- movs r1, 0xA0
- lsls r1, 3
- adds r2, r0, r1
- ldr r1, _080AEB60 @ =0x040000d4
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _080AEB64 @ =0x80000140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bx lr
- .align 2, 0
-_080AEB60: .4byte 0x040000d4
-_080AEB64: .4byte 0x80000140
- thumb_func_end sub_80AEB4C
-
- thumb_func_start sub_80AEB68
-sub_80AEB68: @ 80AEB68
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r2, _080AEB90 @ =gContestEffects
- ldr r1, _080AEB94 @ =gContestMoves
- lsrs r0, 13
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x8
- bhi _080AEBD0
- lsls r0, 2
- ldr r1, _080AEB98 @ =_080AEB9C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080AEB90: .4byte gContestEffects
-_080AEB94: .4byte gContestMoves
-_080AEB98: .4byte _080AEB9C
- .align 2, 0
-_080AEB9C:
- .4byte _080AEBC0
- .4byte _080AEBC0
- .4byte _080AEBC8
- .4byte _080AEBC8
- .4byte _080AEBD0
- .4byte _080AEBD0
- .4byte _080AEBD0
- .4byte _080AEBD0
- .4byte _080AEBC0
-_080AEBC0:
- ldr r0, _080AEBC4 @ =0x00009082
- b _080AEBD2
- .align 2, 0
-_080AEBC4: .4byte 0x00009082
-_080AEBC8:
- ldr r0, _080AEBCC @ =0x00009088
- b _080AEBD2
- .align 2, 0
-_080AEBCC: .4byte 0x00009088
-_080AEBD0:
- ldr r0, _080AEBE8 @ =0x00009086
-_080AEBD2:
- lsls r1, r3, 12
- movs r2, 0x90
- lsls r2, 8
- adds r1, r2
- lsls r0, 16
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_080AEBE8: .4byte 0x00009086
- thumb_func_end sub_80AEB68
-
- thumb_func_start sub_80AEBEC
-sub_80AEBEC: @ 80AEBEC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _080AEC74 @ =gUnknown_03004210
- movs r1, 0x10
- str r1, [sp]
- movs r1, 0x22
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0xB
- movs r3, 0x1F
- bl FillWindowRect_DefaultPalette
- ldr r1, _080AEC78 @ =gContestMoves
- lsls r0, r4, 3
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 29
- ldr r1, _080AEC7C @ =0x00004040
- cmp r0, 0
- beq _080AEC34
- adds r1, 0x5
- cmp r0, 0x1
- beq _080AEC34
- adds r1, 0x5
- cmp r0, 0x2
- beq _080AEC34
- adds r1, 0x40
- cmp r0, 0x3
- bne _080AEC34
- subs r1, 0x20
-_080AEC34:
- ldr r0, _080AEC74 @ =gUnknown_03004210
- mov r8, r0
- ldr r6, _080AEC78 @ =gContestMoves
- lsls r5, r4, 3
- ldr r7, _080AEC80 @ =gContestEffects
- ldr r0, _080AEC84 @ =gContestEffectStrings
- mov r9, r0
- ldr r4, _080AEC88 @ =0x0600c816
- ldr r3, _080AEC8C @ =0x0600c7d6
- movs r2, 0x4
-_080AEC48:
- strh r1, [r3]
- adds r0, r1, 0
- adds r0, 0x10
- strh r0, [r4]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- adds r4, 0x2
- adds r3, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _080AEC48
- adds r0, r5, r6
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r0, r7
- ldrb r0, [r1, 0x1]
- cmp r0, 0xFF
- bne _080AEC90
- movs r0, 0
- b _080AEC9C
- .align 2, 0
-_080AEC74: .4byte gUnknown_03004210
-_080AEC78: .4byte gContestMoves
-_080AEC7C: .4byte 0x00004040
-_080AEC80: .4byte gContestEffects
-_080AEC84: .4byte gContestEffectStrings
-_080AEC88: .4byte 0x0600c816
-_080AEC8C: .4byte 0x0600c7d6
-_080AEC90:
- ldrb r0, [r1, 0x1]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
-_080AEC9C:
- cmp r0, 0x8
- bls _080AECA2
- movs r0, 0x8
-_080AECA2:
- movs r2, 0
- ldr r1, _080AECB8 @ =0x00005012
- adds r4, r1, 0
- adds r1, 0x23
- adds r3, r1, 0
- ldr r1, _080AECBC @ =0x0600c7ea
-_080AECAE:
- cmp r2, r0
- bge _080AECC0
- strh r4, [r1]
- b _080AECC2
- .align 2, 0
-_080AECB8: .4byte 0x00005012
-_080AECBC: .4byte 0x0600c7ea
-_080AECC0:
- strh r3, [r1]
-_080AECC2:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x7
- ble _080AECAE
- adds r0, r5, r6
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r0, r7
- ldrb r0, [r1, 0x2]
- cmp r0, 0xFF
- bne _080AECDC
- movs r0, 0
- b _080AECE8
-_080AECDC:
- ldrb r0, [r1, 0x2]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
-_080AECE8:
- cmp r0, 0x8
- bls _080AECEE
- movs r0, 0x8
-_080AECEE:
- movs r2, 0
- ldr r1, _080AED04 @ =0x00005014
- adds r4, r1, 0
- adds r1, 0x22
- adds r3, r1, 0
- ldr r1, _080AED08 @ =0x0600c82a
-_080AECFA:
- cmp r2, r0
- bge _080AED0C
- strh r4, [r1]
- b _080AED0E
- .align 2, 0
-_080AED04: .4byte 0x00005014
-_080AED08: .4byte 0x0600c82a
-_080AED0C:
- strh r3, [r1]
-_080AED0E:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x7
- ble _080AECFA
- adds r0, r5, r6
- ldrb r0, [r0]
- lsls r0, 2
- add r0, r9
- ldr r1, [r0]
- movs r2, 0xD9
- lsls r2, 2
- movs r0, 0x23
- str r0, [sp]
- mov r0, r8
- movs r3, 0xB
- bl sub_8003460
- ldr r1, _080AED50 @ =gUnknown_083CC5A2
- ldr r2, _080AED54 @ =0x00000362
- movs r0, 0x1F
- str r0, [sp]
- mov r0, r8
- movs r3, 0x10
- bl sub_8003460
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AED50: .4byte gUnknown_083CC5A2
-_080AED54: .4byte 0x00000362
- thumb_func_end sub_80AEBEC
-
- thumb_func_start sub_80AED58
-sub_80AED58: @ 80AED58
- push {lr}
- sub sp, 0x8
- ldr r0, _080AED78 @ =gUnknown_03004210
- movs r1, 0x1C
- str r1, [sp]
- movs r1, 0x28
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0xB
- movs r3, 0x23
- bl FillWindowRect_DefaultPalette
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080AED78: .4byte gUnknown_03004210
- thumb_func_end sub_80AED58
-
- thumb_func_start sub_80AED7C
-sub_80AED7C: @ 80AED7C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, _080AEDD8 @ =gUnknown_02038696
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, 0x2
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- bl sub_80AF59C
- lsls r0, 24
- cmp r0, 0
- bne _080AEDEC
- cmp r6, 0
- beq _080AEDEC
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80AEB68
- lsls r0, 16
- lsrs r0, 16
- lsls r3, r5, 6
- ldr r1, _080AEDDC @ =0x0600c028
- adds r1, r3, r1
- strh r0, [r1]
- ldr r1, _080AEDE0 @ =0x0600c02a
- adds r1, r3, r1
- adds r2, r0, 0x1
- strh r2, [r1]
- ldr r1, _080AEDE4 @ =0x0600c068
- adds r2, r3, r1
- adds r1, r0, 0
- adds r1, 0x10
- strh r1, [r2]
- ldr r1, _080AEDE8 @ =0x0600c06a
- adds r3, r1
- adds r0, 0x11
- strh r0, [r3]
- b _080AEE08
- .align 2, 0
-_080AEDD8: .4byte gUnknown_02038696
-_080AEDDC: .4byte 0x0600c028
-_080AEDE0: .4byte 0x0600c02a
-_080AEDE4: .4byte 0x0600c068
-_080AEDE8: .4byte 0x0600c06a
-_080AEDEC:
- lsls r1, r5, 6
- ldr r0, _080AEE10 @ =0x0600c028
- adds r0, r1, r0
- movs r2, 0
- strh r2, [r0]
- ldr r0, _080AEE14 @ =0x0600c02a
- adds r0, r1, r0
- strh r2, [r0]
- ldr r3, _080AEE18 @ =0x0600c068
- adds r0, r1, r3
- strh r2, [r0]
- ldr r0, _080AEE1C @ =0x0600c06a
- adds r1, r0
- strh r2, [r1]
-_080AEE08:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080AEE10: .4byte 0x0600c028
-_080AEE14: .4byte 0x0600c02a
-_080AEE18: .4byte 0x0600c068
-_080AEE1C: .4byte 0x0600c06a
- thumb_func_end sub_80AED7C
-
- thumb_func_start unref_sub_80AEE20
-unref_sub_80AEE20: @ 80AEE20
- push {r4,lr}
- movs r4, 0
-_080AEE24:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, _080AEE48 @ =gSharedMem + 0x19260
- adds r0, r1
- ldrh r0, [r0, 0x6]
- adds r1, r4, 0
- bl sub_80AED7C
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080AEE24
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080AEE48: .4byte gSharedMem + 0x19260
- thumb_func_end unref_sub_80AEE20
-
- thumb_func_start sub_80AEE4C
-sub_80AEE4C: @ 80AEE4C
- ldr r0, _080AEE50 @ =0x00002034
- bx lr
- .align 2, 0
-_080AEE50: .4byte 0x00002034
- thumb_func_end sub_80AEE4C
-
- thumb_func_start sub_80AEE54
-sub_80AEE54: @ 80AEE54
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- lsls r5, r7, 3
- subs r0, r5, r7
- lsls r0, 2
- ldr r1, _080AEE84 @ =gSharedMem + 0x19260
- adds r0, r1
- ldrb r0, [r0, 0x10]
- movs r2, 0x30
- ands r2, r0
- mov r10, r1
- cmp r2, 0
- bne _080AEE88
- movs r0, 0
- b _080AEF3C
- .align 2, 0
-_080AEE84: .4byte gSharedMem + 0x19260
-_080AEE88:
- ldr r0, _080AEEB0 @ =gUnknown_02038696
- adds r0, r7, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r2, 0x10
- bne _080AEEF0
- adds r0, r7, 0
- bl sub_80AEE4C
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- movs r4, 0
- adds r6, r5, 0
- b _080AEEC4
- .align 2, 0
-_080AEEB0: .4byte gUnknown_02038696
-_080AEEB4:
- mov r1, r9
- adds r0, r1, r4
- lsls r0, 6
- ldr r1, _080AEEE8 @ =0x0600c026
- adds r0, r1
- mov r1, r8
- strh r1, [r0]
- adds r4, 0x1
-_080AEEC4:
- subs r0, r6, r7
- lsls r0, 2
- ldr r1, _080AEEEC @ =gSharedMem + 0x19260
- adds r5, r0, r1
- movs r0, 0xD
- ldrsb r0, [r5, r0]
- movs r1, 0xA
- bl __divsi3
- lsls r0, 24
- asrs r0, 24
- cmp r0, r4
- bgt _080AEEB4
- ldr r0, [sp]
- cmp r0, 0
- beq _080AEF3A
- movs r0, 0x5B
- b _080AEF2C
- .align 2, 0
-_080AEEE8: .4byte 0x0600c026
-_080AEEEC: .4byte gSharedMem + 0x19260
-_080AEEF0:
- movs r1, 0
- mov r8, r1
- movs r4, 0x3
- adds r6, r5, 0
- b _080AEF0A
-_080AEEFA:
- mov r1, r9
- adds r0, r1, r4
- lsls r0, 6
- ldr r1, _080AEF4C @ =0x0600bfe6
- adds r0, r1
- mov r1, r8
- strh r1, [r0]
- subs r4, 0x1
-_080AEF0A:
- subs r0, r6, r7
- lsls r0, 2
- mov r1, r10
- adds r5, r0, r1
- movs r0, 0xD
- ldrsb r0, [r5, r0]
- movs r1, 0xA
- bl __divsi3
- lsls r0, 24
- asrs r0, 24
- cmp r0, r4
- blt _080AEEFA
- ldr r0, [sp]
- cmp r0, 0
- beq _080AEF3A
- movs r0, 0x26
-_080AEF2C:
- bl PlaySE
- ldrb r1, [r5, 0x10]
- movs r0, 0x31
- negs r0, r0
- ands r0, r1
- strb r0, [r5, 0x10]
-_080AEF3A:
- movs r0, 0x1
-_080AEF3C:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080AEF4C: .4byte 0x0600bfe6
- thumb_func_end sub_80AEE54
-
- thumb_func_start sub_80AEF50
-sub_80AEF50: @ 80AEF50
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r5, 0
-_080AEF5A:
- ldr r0, _080AEF80 @ =gUnknown_02038696
- adds r0, r5, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, r5, 24
- lsrs r0, 24
- bl sub_80AEE4C
- lsls r0, 16
- lsrs r6, r0, 16
- movs r4, 0
- lsls r7, r5, 3
- adds r2, r5, 0x1
- b _080AEF92
- .align 2, 0
-_080AEF80: .4byte gUnknown_02038696
-_080AEF84:
- mov r1, r8
- adds r0, r1, r4
- lsls r0, 6
- ldr r3, _080AEFE0 @ =0x0600c026
- adds r0, r3
- strh r6, [r0]
- adds r4, 0x1
-_080AEF92:
- subs r0, r7, r5
- lsls r0, 2
- ldr r1, _080AEFE4 @ =gSharedMem + 0x19260
- adds r0, r1
- ldrb r0, [r0, 0xD]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0xA
- str r2, [sp]
- bl __divsi3
- lsls r0, 24
- asrs r0, 24
- ldr r2, [sp]
- cmp r4, r0
- blt _080AEF84
- movs r6, 0
- cmp r4, 0x2
- bgt _080AEFCE
- lsls r0, r4, 6
- ldr r1, _080AEFE0 @ =0x0600c026
- adds r0, r1
- mov r3, r8
- lsls r1, r3, 6
- adds r0, r1
-_080AEFC4:
- strh r6, [r0]
- adds r0, 0x40
- adds r4, 0x1
- cmp r4, 0x2
- ble _080AEFC4
-_080AEFCE:
- adds r5, r2, 0
- cmp r5, 0x3
- ble _080AEF5A
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080AEFE0: .4byte 0x0600c026
-_080AEFE4: .4byte gSharedMem + 0x19260
- thumb_func_end sub_80AEF50
-
- thumb_func_start sub_80AEFE8
-sub_80AEFE8: @ 80AEFE8
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- cmp r1, 0x4
- bhi _080AF02A
- lsls r0, r1, 2
- ldr r1, _080AF000 @ =_080AF004
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080AF000: .4byte _080AF004
- .align 2, 0
-_080AF004:
- .4byte _080AF018
- .4byte _080AF01C
- .4byte _080AF020
- .4byte _080AF024
- .4byte _080AF028
-_080AF018:
- movs r0, 0x80
- b _080AF02A
-_080AF01C:
- movs r0, 0x84
- b _080AF02A
-_080AF020:
- movs r0, 0x86
- b _080AF02A
-_080AF024:
- movs r0, 0x88
- b _080AF02A
-_080AF028:
- movs r0, 0x82
-_080AF02A:
- movs r1, 0x90
- lsls r1, 8
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80AEFE8
-
thumb_func_start sub_80AF038
sub_80AF038: @ 80AF038
push {r4-r6,lr}
diff --git a/include/contest.h b/include/contest.h
index 414723391..13786e006 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -47,6 +47,8 @@ struct ContestPokemon
}; // wow
extern struct ContestPokemon gContestMons[];
+extern struct ContestEffect gContestEffects[];
+
void ResetLinkContestBoolean(void);
void sub_80AB2AC(void);
void sub_80AB47C(void);
diff --git a/src/contest.c b/src/contest.c
index 483207d69..b7b37faae 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -2,6 +2,7 @@
#include "constants/items.h"
#include "constants/map_objects.h"
#include "constants/songs.h"
+#include "constants/species.h"
#include "battle_anim.h"
#include "contest.h"
#include "contest_link_80C857C.h"
@@ -93,10 +94,11 @@ struct UnknownContestStruct1
u8 unkC_2:1;
*/
u8 unkC;
- u8 fillerD;
+ s8 unkD;
u8 unkE;
u8 fillerF;
- u8 unk10; // maybe a bitfield
+ u8 unk10_0:4;
+ u8 unk10_4:2; // definitely a bitfield
u8 unk11;
u8 filler12;
u8 unk13;
@@ -216,6 +218,8 @@ extern const u8 gUnknownText_UnknownFormatting3[];
extern const u8 gUnknown_083CB02C[];
extern const u8 *const gUnknown_083CB2F0[];
extern const u8 gUnknown_083CC59C[];
+extern const u8 gUnknown_083CC5A2[];
+extern const u8 *const gContestEffectStrings[];
void sub_80AB350(void);
void sub_80AB5D4(u8);
@@ -268,6 +272,7 @@ void sub_80ADFD8(u8);
void sub_80AE010(void);
void sub_80AE020(u8 *, s32);
bool8 sub_80AE074(void);
+void sub_80AEB4C(void *);
void sub_80AE5BC(u8);
void sub_80AE5D4(u8, u8);
void sub_80AE6CC(u8);
@@ -275,11 +280,11 @@ void sub_80AE6E4(u8, u8);
u8 sub_80AE858(void);
u8 sub_80AE8B4(void);
u8 sub_80AE9FC(u16, u32, u32);
-u8 sub_80AEB1C(u16);
+bool8 sub_80AEB1C(u16);
void sub_80AEB30(void);
void sub_80AEBEC(u16);
void sub_80AED58(void);
-u8 sub_80AEE54(u8, u8);
+bool8 sub_80AEE54(u8, u8);
u8 sub_80AF038(u8);
void sub_80AF120(void);
void sub_80AF138(void);
@@ -1605,7 +1610,7 @@ void sub_80AC2CC(u8 taskId)
return;
case 37:
//_080ACA44
- if (sub_80AEE54(r7, 1) != 0)
+ if (sub_80AEE54(r7, 1))
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 38;
@@ -1718,7 +1723,7 @@ void sub_80AC2CC(u8 taskId)
//_080ACC98
for (r6 = 0; gTasks[taskId].data[1] != gUnknown_02038696[r6]; r6++)
;
- if (sub_80AEE54(r6, 1) != 0)
+ if (sub_80AEE54(r6, 1))
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 40;
@@ -5607,10 +5612,271 @@ u8 sub_80AE9FC(u16 species, u32 otId, u32 personality)
gSprites[spriteId].callback = SpriteCallbackDummy;
gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum;
gSprites[spriteId].data[2] = species;
- if (sub_80AEB1C(species) != 0)
+ if (sub_80AEB1C(species))
gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7C18;
else
gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7BEC;
StartSpriteAffineAnim(&gSprites[spriteId], 0);
return spriteId;
}
+
+bool8 sub_80AEB1C(u16 species)
+{
+ if (species == SPECIES_UNOWN)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void sub_80AEB30(void)
+{
+ sub_80AEB4C((void *)(VRAM + 0xC000));
+ sub_80AEB4C((void *)(VRAM + 0xE000));
+}
+
+void sub_80AEB4C(void *a)
+{
+ void *src = a;
+ void *dest = (u8 *)a + 0x500;
+ DmaCopy16(3, src, dest, 0x280);
+}
+
+u16 sub_80AEB68(u16 a, u8 b)
+{
+ u16 var;
+
+ switch (gContestEffects[gContestMoves[a].effect].effectType)
+ {
+ case 0:
+ case 1:
+ case 8:
+ var = 0x9082;
+ break;
+ case 2:
+ case 3:
+ var = 0x9088;
+ break;
+ default:
+ var = 0x9086;
+ break;
+ }
+ var += 0x9000 + (b << 12);
+ return var;
+}
+
+void sub_80AEBEC(u16 a)
+{
+ u8 category;
+ u16 categoryTile;
+ s32 i;
+ u8 numHearts;
+
+ FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 31, 16, 34);
+
+ category = gContestMoves[a].contestCategory;
+ if (category == 0)
+ categoryTile = 0x4040;
+ else if (category == 1)
+ categoryTile = 0x4045;
+ else if (category == 2)
+ categoryTile = 0x404A;
+ else if (category == 3)
+ categoryTile = 0x406A;
+ else
+ categoryTile = 0x408A;
+
+ for (i = 0; i < 5; i++)
+ {
+ *(u16 *)(VRAM + 0xC7D6 + i * 2) = categoryTile;
+ *(u16 *)(VRAM + 0xC816 + i * 2) = categoryTile + 16;
+ categoryTile++;
+ }
+
+ if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF)
+ numHearts = 0;
+ else
+ numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10;
+ if (numHearts > 8)
+ numHearts = 8;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ *(u16 *)(VRAM + 0xC7EA + i * 2) = 0x5012;
+ else
+ *(u16 *)(VRAM + 0xC7EA + i * 2) = 0x5035;
+ }
+
+ if (gContestEffects[gContestMoves[a].effect].jam == 0xFF)
+ numHearts = 0;
+ else
+ numHearts = gContestEffects[gContestMoves[a].effect].jam / 10;
+ if (numHearts > 8)
+ numHearts = 8;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5014;
+ else
+ *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5036;
+ }
+
+ sub_8003460(&gUnknown_03004210, gContestEffectStrings[gContestMoves[a].effect], 868, 11, 35);
+ sub_8003460(&gUnknown_03004210, gUnknown_083CC5A2, 866, 16, 31);
+}
+
+void sub_80AED58(void)
+{
+ FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 35, 28, 40);
+}
+
+// unused
+void sub_80AED7C(u16 a, u8 b)
+{
+ u8 r5 = gUnknown_02038696[b] * 5 + 2;
+
+ if (sub_80AF59C(b) == 0 && a != 0)
+ {
+ u16 tile = sub_80AEB68(a, b);
+
+ *(u16 *)(VRAM + 0xC028 + r5 * 64) = tile;
+ *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = tile + 1;
+
+ *(u16 *)(VRAM + 0xC068 + r5 * 64) = tile + 16;
+ *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = tile + 17;
+
+ }
+ else
+ {
+ *(u16 *)(VRAM + 0xC028 + r5 * 64) = 0;
+ *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = 0;
+
+ *(u16 *)(VRAM + 0xC068 + r5 * 64) = 0;
+ *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = 0;
+ }
+}
+
+void unref_sub_80AEE20(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ struct UnknownContestStruct1 *s = &shared19260.unk19260[i];
+
+ sub_80AED7C(s->unk6, i);
+ }
+}
+
+u16 sub_80AEE4C(u8 unused)
+{
+ return 0x2034;
+}
+
+bool8 sub_80AEE54(u8 a, u8 b)
+{
+ struct UnknownContestStruct1 *s = &shared19260.unk19260[a];
+ u8 r9;
+ u16 r8;
+ s32 r4;
+
+ if (s->unk10_4 == 0)
+ return FALSE;
+ r9 = gUnknown_02038696[a] * 5 + 2;
+ if (s->unk10_4 == 1)
+ {
+ struct UnknownContestStruct1 *r5;
+
+ r8 = sub_80AEE4C(a);
+ r4 = 0;
+ while (1)
+ {
+ r5 = &shared19260.unk19260[a];
+ if (r5->unkD / 10 <= r4)
+ break;
+ *(u16 *)(VRAM + 0xC026 + (r9 + r4) * 64) = r8;
+ r4++;
+ }
+ if (b != 0)
+ {
+ PlaySE(SE_EXPMAX);
+ r5->unk10_4 = 0;
+ }
+ }
+ else
+ {
+ struct UnknownContestStruct1 *r5;
+
+ r8 = 0;
+ r4 = 3;
+ while (1)
+ {
+ r5 = &shared19260.unk19260[a];
+ if (r5->unkD / 10 >= r4)
+ break;
+ *(u16 *)(VRAM + 0xBFE6 + (r9 + r4) * 64) = r8;
+ r4--;
+ }
+ if (b != 0)
+ {
+ PlaySE(SE_FU_ZAKU2);
+ r5->unk10_4 = 0;
+ }
+ }
+ return TRUE;
+}
+
+void sub_80AEF50(void)
+{
+ s32 i;
+ s32 r4;
+
+ for (i = 0; i < 4; i++)
+ {
+ struct UnknownContestStruct1 *s;
+ u8 r8 = gUnknown_02038696[i] * 5 + 2;
+ u16 r6 = sub_80AEE4C(i);
+
+ r4 = 0;
+ while (1)
+ {
+ s = &shared19260.unk19260[i];
+ if (r4 >= s->unkD / 10)
+ break;
+ *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6;
+ r4++;
+ }
+ r6 = 0;
+ while (r4 < 3)
+ {
+ *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6;
+ r4++;
+ }
+ }
+}
+
+u16 sub_80AEFE8(int unused, u8 b)
+{
+ u16 var = 0;
+
+ switch (b)
+ {
+ case 0:
+ var = 0x80;
+ break;
+ case 1:
+ var = 0x84;
+ break;
+ case 2:
+ var = 0x86;
+ break;
+ case 3:
+ var = 0x88;
+ break;
+ case 4:
+ var = 0x82;
+ break;
+ }
+ var += 0x9000;
+ return var;
+}
+