summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest.s1843
-rw-r--r--include/contest.h9
-rw-r--r--include/graphics.h4
-rw-r--r--src/contest.c647
4 files changed, 618 insertions, 1885 deletions
diff --git a/asm/contest.s b/asm/contest.s
index 581fd60d6..c918c7683 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -5,1849 +5,6 @@
.text
- thumb_func_start sub_80B1118
-sub_80B1118: @ 80B1118
- push {r4,r5,lr}
- movs r4, 0
- movs r5, 0xA0
-_080B111E:
- ldr r0, _080B1144 @ =gSharedMem + 0x18004
- adds r0, r5, r0
- ldr r1, _080B1148 @ =gUnknown_02038696
- adds r1, r4, r1
- ldrb r1, [r1]
- adds r1, 0x5
- lsls r1, 4
- movs r2, 0x20
- bl LoadPalette
- adds r5, 0x20
- adds r4, 0x1
- cmp r4, 0x3
- ble _080B111E
- bl sub_80AE514
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1144: .4byte gSharedMem + 0x18004
-_080B1148: .4byte gUnknown_02038696
- thumb_func_end sub_80B1118
-
- thumb_func_start sub_80B114C
-sub_80B114C: @ 80B114C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r7, r6, 3
- subs r0, r7, r6
- lsls r0, 2
- ldr r4, _080B11B8 @ =gSharedMem + 0x19260
- adds r5, r0, r4
- movs r0, 0
- strh r0, [r5, 0x2]
- strh r0, [r5]
- adds r0, r6, 0
- bl sub_80AF404
- lsls r0, 24
- mov r8, r4
- cmp r0, 0
- bne _080B1176
- b _080B13DC
-_080B1176:
- ldrh r0, [r5, 0x6]
- ldr r1, _080B11BC @ =gContestMoves
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0]
- mov r12, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 29
- strb r0, [r5, 0xA]
- ldrh r0, [r5, 0x6]
- ldrh r1, [r5, 0x8]
- cmp r0, r1
- bne _080B11C0
- cmp r0, 0
- beq _080B11C0
- ldrb r0, [r5, 0x15]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5, 0x15]
- ldrb r2, [r5, 0xB]
- lsls r1, r2, 25
- lsrs r1, 29
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- lsls r1, 4
- movs r0, 0x71
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0xB]
- b _080B11D8
- .align 2, 0
-_080B11B8: .4byte gSharedMem + 0x19260
-_080B11BC: .4byte gContestMoves
-_080B11C0:
- lsls r4, r6, 3
- subs r1, r4, r6
- lsls r1, 2
- ldr r3, _080B1264 @ =gSharedMem + 0x19260
- adds r1, r3
- ldrb r2, [r1, 0xB]
- movs r0, 0x71
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0xB]
- adds r7, r4, 0
- mov r8, r3
-_080B11D8:
- subs r0, r7, r6
- lsls r0, 2
- add r0, r8
- ldr r2, _080B1268 @ =gContestEffects
- mov r1, r12
- lsls r3, r1, 2
- adds r2, r3, r2
- ldrb r1, [r2, 0x1]
- strh r1, [r0]
- strh r1, [r0, 0x2]
- mov r0, r8
- adds r0, 0x70
- ldrb r1, [r2, 0x2]
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- strb r6, [r0, 0x11]
- movs r2, 0
- adds r4, r3, 0
- movs r1, 0
- mov r5, r8
- adds r5, 0x7D
- mov r3, r8
-_080B1204:
- strb r1, [r3, 0xE]
- adds r0, r5, r2
- strb r1, [r0]
- adds r3, 0x1C
- adds r2, 0x1
- cmp r2, 0x3
- ble _080B1204
- subs r0, r7, r6
- lsls r0, 2
- ldr r1, _080B1264 @ =gSharedMem + 0x19260
- adds r5, r0, r1
- ldrb r1, [r5, 0x15]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B123C
- ldrh r0, [r5, 0x8]
- ldrh r1, [r5, 0x6]
- bl AreMovesContestCombo
- lsls r0, 24
- cmp r0, 0
- bne _080B123C
- ldrb r1, [r5, 0x15]
- movs r0, 0x11
- negs r0, r0
- ands r0, r1
- strb r0, [r5, 0x15]
-_080B123C:
- ldr r0, _080B126C @ =gContestEffectFuncs
- adds r0, r4, r0
- ldr r0, [r0]
- bl _call_via_r0
- subs r0, r7, r6
- lsls r0, 2
- ldr r1, _080B1264 @ =gSharedMem + 0x19260
- adds r2, r0, r1
- ldrb r1, [r2, 0x10]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0x10
- bne _080B1270
- ldrh r1, [r2, 0x2]
- subs r1, 0xA
- movs r0, 0xD
- ldrsb r0, [r2, r0]
- b _080B128A
- .align 2, 0
-_080B1264: .4byte gSharedMem + 0x19260
-_080B1268: .4byte gContestEffects
-_080B126C: .4byte gContestEffectFuncs
-_080B1270:
- ldrb r1, [r2, 0x11]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080B1284
- movs r1, 0xD
- ldrsb r1, [r2, r1]
- lsls r0, r1, 1
- adds r0, r1
- b _080B1288
-_080B1284:
- movs r0, 0xD
- ldrsb r0, [r2, r0]
-_080B1288:
- ldrh r1, [r2, 0x2]
-_080B128A:
- adds r0, r1
- strh r0, [r2, 0x2]
- subs r0, r7, r6
- lsls r0, 2
- ldr r1, _080B12E8 @ =gSharedMem + 0x19260
- adds r4, r0, r1
- movs r0, 0
- strb r0, [r4, 0x16]
- ldrb r1, [r4, 0x15]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r4, 0x15]
- adds r0, r6, 0
- bl sub_80B214C
- lsls r0, 24
- cmp r0, 0
- beq _080B1322
- ldrh r0, [r4, 0x8]
- ldrh r1, [r4, 0x6]
- bl AreMovesContestCombo
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _080B12EC
- ldrb r1, [r4, 0x15]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B12EC
- strb r2, [r4, 0x16]
- movs r0, 0x40
- orrs r1, r0
- movs r0, 0x11
- negs r0, r0
- ands r1, r0
- movs r0, 0
- ldrsh r2, [r4, r0]
- ldrb r0, [r4, 0x16]
- muls r0, r2
- strb r0, [r4, 0x17]
- movs r0, 0x8
- orrs r1, r0
- strb r1, [r4, 0x15]
- b _080B1322
- .align 2, 0
-_080B12E8: .4byte gSharedMem + 0x19260
-_080B12EC:
- ldr r2, _080B1310 @ =gContestMoves
- subs r0, r7, r6
- lsls r0, 2
- ldr r1, _080B1314 @ =gSharedMem + 0x19260
- adds r3, r0, r1
- ldrh r0, [r3, 0x6]
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _080B1318
- ldrb r0, [r3, 0x15]
- movs r1, 0x10
- orrs r0, r1
- movs r1, 0x40
- orrs r0, r1
- b _080B1320
- .align 2, 0
-_080B1310: .4byte gContestMoves
-_080B1314: .4byte gSharedMem + 0x19260
-_080B1318:
- ldrb r1, [r3, 0x15]
- movs r0, 0x11
- negs r0, r0
- ands r0, r1
-_080B1320:
- strb r0, [r3, 0x15]
-_080B1322:
- subs r0, r7, r6
- lsls r0, 2
- ldr r1, _080B139C @ =gSharedMem + 0x19260
- mov r8, r1
- adds r4, r0, r1
- ldrb r1, [r4, 0x15]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080B1348
- ldrb r0, [r4, 0xB]
- lsls r0, 25
- lsrs r0, 29
- adds r0, 0x1
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- strb r1, [r4, 0x18]
-_080B1348:
- ldrb r1, [r4, 0xC]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080B1362
- ldrb r0, [r4, 0x15]
- movs r1, 0x11
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x15]
- movs r0, 0
- strh r0, [r4, 0x2]
- strh r0, [r4]
-_080B1362:
- ldrh r0, [r4, 0x6]
- bl contest_get_move_excitement
- mov r2, r8
- adds r2, 0xC8
- strb r0, [r2]
- ldrb r1, [r4, 0x11]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B137A
- strb r5, [r2]
-_080B137A:
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0
- ble _080B13A4
- mov r0, r8
- subs r0, 0x5C
- ldrb r0, [r0, 0x13]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0
- ldrsb r1, [r2, r1]
- adds r0, r1
- cmp r0, 0x4
- ble _080B13A0
- movs r0, 0x3C
- b _080B13A6
- .align 2, 0
-_080B139C: .4byte gSharedMem + 0x19260
-_080B13A0:
- movs r0, 0xA
- b _080B13A6
-_080B13A4:
- movs r0, 0
-_080B13A6:
- strb r0, [r2, 0x2]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- b _080B13CA
-_080B13BE:
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
-_080B13C4:
- adds r2, 0x1
- cmp r2, 0x3
- bgt _080B13D2
-_080B13CA:
- cmp r2, r6
- beq _080B13C4
- cmp r0, 0
- bne _080B13BE
-_080B13D2:
- subs r0, r7, r6
- lsls r0, 2
- ldr r1, _080B13E8 @ =gSharedMem + 0x19260
- adds r0, r1
- strb r2, [r0, 0x1B]
-_080B13DC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B13E8: .4byte gSharedMem + 0x19260
- thumb_func_end sub_80B114C
-
- thumb_func_start sub_80B13EC
-sub_80B13EC: @ 80B13EC
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- ldr r0, _080B1400 @ =gSharedMem + 0x19260
- adds r2, r0
- strb r1, [r2, 0x13]
- bx lr
- .align 2, 0
-_080B1400: .4byte gSharedMem + 0x19260
- thumb_func_end sub_80B13EC
-
- thumb_func_start sub_80B1404
-sub_80B1404: @ 80B1404
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- ldr r0, _080B1418 @ =gSharedMem + 0x19260
- adds r2, r0
- strb r1, [r2, 0x14]
- bx lr
- .align 2, 0
-_080B1418: .4byte gSharedMem + 0x19260
- thumb_func_end sub_80B1404
-
- thumb_func_start sub_80B141C
-sub_80B141C: @ 80B141C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x3B
- bls _080B1436
- movs r1, 0x35
- bl sub_80B13EC
- b _080B1466
-_080B1436:
- cmp r1, 0x27
- bls _080B1442
- movs r1, 0x34
- bl sub_80B13EC
- b _080B1466
-_080B1442:
- cmp r1, 0x1D
- bls _080B144E
- movs r1, 0x33
- bl sub_80B13EC
- b _080B1466
-_080B144E:
- cmp r1, 0x13
- bls _080B145A
- movs r1, 0x32
- bl sub_80B13EC
- b _080B1466
-_080B145A:
- cmp r2, 0x9
- bls _080B1466
- adds r0, r3, 0
- movs r1, 0x31
- bl sub_80B13EC
-_080B1466:
- pop {r0}
- bx r0
- thumb_func_end sub_80B141C
-
- thumb_func_start sub_80B146C
-sub_80B146C: @ 80B146C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _080B14C8 @ =gStringVar1
- lsls r1, r4, 6
- ldr r2, _080B14CC @ =gContestMons + 0x2
- adds r1, r2
- bl StringCopy
- ldr r0, _080B14D0 @ =gStringVar2
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- ldr r4, _080B14D4 @ =gSharedMem + 0x19260
- adds r1, r4
- ldrh r2, [r1, 0x6]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _080B14D8 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r2, _080B14DC @ =gContestMoves
- adds r0, r4, 0
- adds r0, 0x70
- ldrb r1, [r0, 0x11]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x6]
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x1]
- lsls r1, r0, 29
- cmp r1, 0
- bne _080B14E8
- ldr r0, _080B14E0 @ =gStringVar3
- ldr r1, _080B14E4 @ =gUnknown_083CC280
- bl StringCopy
- b _080B1538
- .align 2, 0
-_080B14C8: .4byte gStringVar1
-_080B14CC: .4byte gContestMons + 0x2
-_080B14D0: .4byte gStringVar2
-_080B14D4: .4byte gSharedMem + 0x19260
-_080B14D8: .4byte gMoveNames
-_080B14DC: .4byte gContestMoves
-_080B14E0: .4byte gStringVar3
-_080B14E4: .4byte gUnknown_083CC280
-_080B14E8:
- lsrs r0, r1, 29
- cmp r0, 0x1
- bne _080B1500
- ldr r0, _080B14F8 @ =gStringVar3
- ldr r1, _080B14FC @ =gUnknown_083CC288
- bl StringCopy
- b _080B1538
- .align 2, 0
-_080B14F8: .4byte gStringVar3
-_080B14FC: .4byte gUnknown_083CC288
-_080B1500:
- lsrs r0, r1, 29
- cmp r0, 0x2
- bne _080B1518
- ldr r0, _080B1510 @ =gStringVar3
- ldr r1, _080B1514 @ =gUnknown_083CC290
- bl StringCopy
- b _080B1538
- .align 2, 0
-_080B1510: .4byte gStringVar3
-_080B1514: .4byte gUnknown_083CC290
-_080B1518:
- lsrs r0, r1, 29
- cmp r0, 0x3
- bne _080B1530
- ldr r0, _080B1528 @ =gStringVar3
- ldr r1, _080B152C @ =gUnknown_083CC299
- bl StringCopy
- b _080B1538
- .align 2, 0
-_080B1528: .4byte gStringVar3
-_080B152C: .4byte gUnknown_083CC299
-_080B1530:
- ldr r0, _080B1568 @ =gStringVar3
- ldr r1, _080B156C @ =gUnknown_083CC2A3
- bl StringCopy
-_080B1538:
- ldr r4, _080B1570 @ =gStringVar4
- ldr r1, _080B1574 @ =gUnknown_083CC188
- lsls r0, r5, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80AF138
- ldr r0, _080B1578 @ =gMenuWindow
- movs r2, 0xC2
- lsls r2, 2
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_8002EB0
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1568: .4byte gStringVar3
-_080B156C: .4byte gUnknown_083CC2A3
-_080B1570: .4byte gStringVar4
-_080B1574: .4byte gUnknown_083CC188
-_080B1578: .4byte gMenuWindow
- thumb_func_end sub_80B146C
-
- thumb_func_start sub_80B157C
-sub_80B157C: @ 80B157C
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _080B1598 @ =gSharedMem + 0x19260
- adds r1, r0
- ldrb r0, [r1, 0xC]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1, 0xC]
- movs r0, 0
- strh r0, [r1, 0x6]
- bx lr
- .align 2, 0
-_080B1598: .4byte gSharedMem + 0x19260
- thumb_func_end sub_80B157C
-
- thumb_func_start sub_80B159C
-sub_80B159C: @ 80B159C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r0, 0
- mov r12, r0
- movs r4, 0
- ldr r1, _080B1600 @ =gUnknown_02038696
- mov r9, r1
- add r2, sp, 0x4
- mov r6, r9
- movs r5, 0
- adds r3, r2, 0
-_080B15B8:
- mov r0, sp
- adds r1, r0, r4
- adds r0, r4, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, r4
- strb r5, [r0]
- adds r4, 0x1
- cmp r4, 0x3
- ble _080B15B8
- movs r4, 0
- ldr r7, _080B1604 @ =gSharedMem + 0x19260
- adds r5, r2, 0
- movs r1, 0x1
- mov r8, r1
-_080B15D6:
- movs r2, 0
- adds r1, r7, 0
-_080B15DA:
- ldrb r0, [r1, 0x19]
- cmp r0, r4
- beq _080B1608
- adds r1, 0x1C
- adds r2, 0x1
- cmp r2, 0x3
- ble _080B15DA
-_080B15E8:
- cmp r2, 0x4
- bne _080B1680
- movs r2, 0
- ldrb r0, [r5]
- cmp r0, 0
- bne _080B1616
- ldrb r0, [r7, 0x19]
- cmp r0, 0xFF
- bne _080B1616
- mov r12, r2
- movs r2, 0x1
- b _080B163A
- .align 2, 0
-_080B1600: .4byte gUnknown_02038696
-_080B1604: .4byte gSharedMem + 0x19260
-_080B1608:
- mov r1, sp
- adds r0, r1, r2
- strb r4, [r0]
- adds r0, r5, r2
- mov r1, r8
- strb r1, [r0]
- b _080B15E8
-_080B1616:
- adds r2, 0x1
- cmp r2, 0x3
- bgt _080B1672
- adds r0, r5, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B1616
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x19]
- cmp r0, 0xFF
- bne _080B1616
- lsls r0, r2, 24
- lsrs r0, 24
- mov r12, r0
- adds r2, 0x1
-_080B163A:
- cmp r2, 0x3
- bgt _080B1672
- ldr r6, _080B16C8 @ =gUnknown_02038696
- lsls r0, r2, 3
- subs r0, r2
- lsls r3, r0, 2
-_080B1646:
- adds r0, r5, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B166A
- adds r0, r3, r7
- ldrb r0, [r0, 0x19]
- cmp r0, 0xFF
- bne _080B166A
- mov r1, r12
- adds r0, r1, r6
- adds r1, r2, r6
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _080B166A
- lsls r0, r2, 24
- lsrs r0, 24
- mov r12, r0
-_080B166A:
- adds r3, 0x1C
- adds r2, 0x1
- cmp r2, 0x3
- ble _080B1646
-_080B1672:
- mov r0, sp
- add r0, r12
- strb r4, [r0]
- mov r1, r12
- adds r0, r5, r1
- mov r1, r8
- strb r1, [r0]
-_080B1680:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080B15D6
- movs r4, 0
- ldr r5, _080B16CC @ =gSharedMem + 0x192D0
- adds r3, r5, 0
- subs r3, 0x60
- movs r6, 0xFF
- movs r7, 0x3F
-_080B1692:
- adds r1, r4, r5
- mov r0, sp
- adds r2, r0, r4
- ldrb r0, [r2]
- strb r0, [r1]
- ldrb r0, [r3, 0x9]
- orrs r0, r6
- strb r0, [r3, 0x9]
- ldrb r1, [r3]
- adds r0, r7, 0
- ands r0, r1
- strb r0, [r3]
- mov r0, r9
- adds r1, r4, r0
- ldrb r0, [r2]
- strb r0, [r1]
- adds r3, 0x1C
- adds r4, 0x1
- cmp r4, 0x3
- ble _080B1692
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B16C8: .4byte gUnknown_02038696
-_080B16CC: .4byte gSharedMem + 0x192D0
- thumb_func_end sub_80B159C
-
- thumb_func_start sub_80B16D0
-sub_80B16D0: @ 80B16D0
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r1, r0, 0x1
- strh r1, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x54
- ble _080B1702
- movs r0, 0
- strh r0, [r2, 0x30]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldr r0, _080B1708 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
- ldr r2, _080B170C @ =gSharedMem + 0x19204
- ldrb r1, [r2, 0x6]
- movs r0, 0x11
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x6]
-_080B1702:
- pop {r0}
- bx r0
- .align 2, 0
-_080B1708: .4byte SpriteCallbackDummy
-_080B170C: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B16D0
-
- thumb_func_start sub_80B1710
-sub_80B1710: @ 80B1710
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080B172C @ =gSharedMem + 0x19204
- ldrb r5, [r0, 0x12]
- cmp r1, 0x8
- bls _080B1720
- b _080B18C0
-_080B1720:
- lsls r0, r1, 2
- ldr r1, _080B1730 @ =_080B1734
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B172C: .4byte gSharedMem + 0x19204
-_080B1730: .4byte _080B1734
- .align 2, 0
-_080B1734:
- .4byte _080B1758
- .4byte _080B1758
- .4byte _080B1788
- .4byte _080B17BC
- .4byte _080B17F0
- .4byte _080B1824
- .4byte _080B1858
- .4byte _080B18C0
- .4byte _080B188C
-_080B1758:
- ldr r0, _080B177C @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x2E]
- ldr r2, _080B1780 @ =0x000003ff
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _080B1784 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- movs r0, 0x20
- bl PlaySE
- b _080B18E4
- .align 2, 0
-_080B177C: .4byte gSprites
-_080B1780: .4byte 0x000003ff
-_080B1784: .4byte 0xfffffc00
-_080B1788:
- ldr r0, _080B17B0 @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x2E]
- adds r2, 0x4
- ldr r3, _080B17B4 @ =0x000003ff
- adds r0, r3, 0
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _080B17B8 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- movs r0, 0x1F
- bl PlaySE
- b _080B18E4
- .align 2, 0
-_080B17B0: .4byte gSprites
-_080B17B4: .4byte 0x000003ff
-_080B17B8: .4byte 0xfffffc00
-_080B17BC:
- ldr r0, _080B17E4 @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x2E]
- adds r2, 0x8
- ldr r3, _080B17E8 @ =0x000003ff
- adds r0, r3, 0
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _080B17EC @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- movs r0, 0x1F
- bl PlaySE
- b _080B18E4
- .align 2, 0
-_080B17E4: .4byte gSprites
-_080B17E8: .4byte 0x000003ff
-_080B17EC: .4byte 0xfffffc00
-_080B17F0:
- ldr r0, _080B1818 @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x2E]
- adds r2, 0xC
- ldr r3, _080B181C @ =0x000003ff
- adds r0, r3, 0
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _080B1820 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- movs r0, 0x2D
- bl PlaySE
- b _080B18E4
- .align 2, 0
-_080B1818: .4byte gSprites
-_080B181C: .4byte 0x000003ff
-_080B1820: .4byte 0xfffffc00
-_080B1824:
- ldr r0, _080B184C @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x2E]
- adds r2, 0xC
- ldr r3, _080B1850 @ =0x000003ff
- adds r0, r3, 0
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _080B1854 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- movs r0, 0x2D
- bl PlaySE
- b _080B18E4
- .align 2, 0
-_080B184C: .4byte gSprites
-_080B1850: .4byte 0x000003ff
-_080B1854: .4byte 0xfffffc00
-_080B1858:
- ldr r0, _080B1880 @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x2E]
- adds r2, 0x10
- ldr r3, _080B1884 @ =0x000003ff
- adds r0, r3, 0
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _080B1888 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- movs r0, 0x2D
- bl PlaySE
- b _080B18E4
- .align 2, 0
-_080B1880: .4byte gSprites
-_080B1884: .4byte 0x000003ff
-_080B1888: .4byte 0xfffffc00
-_080B188C:
- ldr r0, _080B18B4 @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x2E]
- adds r2, 0x18
- ldr r3, _080B18B8 @ =0x000003ff
- adds r0, r3, 0
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _080B18BC @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- movs r0, 0xC3
- bl PlaySE
- b _080B18E4
- .align 2, 0
-_080B18B4: .4byte gSprites
-_080B18B8: .4byte 0x000003ff
-_080B18BC: .4byte 0xfffffc00
-_080B18C0:
- ldr r0, _080B1914 @ =gSprites
- lsls r4, r5, 4
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x2E]
- adds r2, 0x14
- ldr r3, _080B1918 @ =0x000003ff
- adds r0, r3, 0
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _080B191C @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- movs r0, 0x2D
- bl PlaySE
-_080B18E4:
- adds r2, r4, 0
- ldr r4, _080B1914 @ =gSprites
- adds r2, r5
- lsls r2, 2
- adds r1, r2, r4
- movs r0, 0
- strh r0, [r1, 0x30]
- adds r1, 0x3E
- ldrb r3, [r1]
- subs r0, 0x5
- ands r0, r3
- strb r0, [r1]
- adds r4, 0x1C
- adds r2, r4
- ldr r0, _080B1920 @ =sub_80B16D0
- str r0, [r2]
- ldr r2, _080B1924 @ =gSharedMem + 0x19204
- ldrb r0, [r2, 0x6]
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0x6]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1914: .4byte gSprites
-_080B1918: .4byte 0x000003ff
-_080B191C: .4byte 0xfffffc00
-_080B1920: .4byte sub_80B16D0
-_080B1924: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B1710
-
- thumb_func_start sub_80B1928
-sub_80B1928: @ 80B1928
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r5, 0
- ldr r6, _080B19BC @ =gSharedMem + 0x19204
- ldr r0, _080B19C0 @ =gSprites
- mov r10, r0
- movs r1, 0x58
- adds r1, r6
- mov r9, r1
- ldr r0, _080B19C4 @ =0x06010000
- mov r8, r0
- ldr r7, _080B19C8 @ =REG_BG0CNT
-_080B1946:
- movs r0, 0x13
- ldrsb r0, [r6, r0]
- ldr r4, _080B19CC @ =gContestApplauseMeterGfx
- cmp r5, r0
- bge _080B1952
- adds r4, 0x40
-_080B1952:
- mov r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r0, r5, 0
- adds r0, 0x11
- adds r1, r0
- lsls r1, 5
- add r1, r8
- adds r0, r4, 0
- adds r2, r7, 0
- bl CpuSet
- adds r0, r4, 0
- adds r0, 0x20
- mov r1, r9
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r10
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r2, r5, 0
- adds r2, 0x19
- adds r1, r2
- lsls r1, 5
- add r1, r8
- adds r2, r7, 0
- bl CpuSet
- movs r0, 0x13
- ldrsb r0, [r6, r0]
- cmp r0, 0x4
- ble _080B19A8
- bl sub_80B1A2C
-_080B19A8:
- adds r5, 0x1
- cmp r5, 0x4
- ble _080B1946
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B19BC: .4byte gSharedMem + 0x19204
-_080B19C0: .4byte gSprites
-_080B19C4: .4byte 0x06010000
-_080B19C8: .4byte REG_BG0CNT
-_080B19CC: .4byte gContestApplauseMeterGfx
- thumb_func_end sub_80B1928
-
- thumb_func_start unref_sub_80B19D0
-unref_sub_80B19D0: @ 80B19D0
- push {lr}
- sub sp, 0x18
- ldr r1, _080B19F4 @ =gUnknown_083CC2EC
- add r0, sp, 0x4
- bl StringCopy
- ldr r0, _080B19F8 @ =gUnknown_03004210
- movs r2, 0xAA
- lsls r2, 2
- movs r1, 0
- str r1, [sp]
- add r1, sp, 0x4
- movs r3, 0
- bl sub_8003460
- add sp, 0x18
- pop {r0}
- bx r0
- .align 2, 0
-_080B19F4: .4byte gUnknown_083CC2EC
-_080B19F8: .4byte gUnknown_03004210
- thumb_func_end unref_sub_80B19D0
-
- thumb_func_start contest_get_move_excitement
-contest_get_move_excitement: @ 80B19FC
- lsls r0, 16
- ldr r3, _080B1A20 @ =gContestExcitementTable
- ldr r1, _080B1A24 @ =gContestMoves
- lsrs r0, 13
- adds r0, r1
- ldrb r1, [r0, 0x1]
- lsls r1, 29
- lsrs r1, 29
- ldr r0, _080B1A28 @ =gScriptContestCategory
- ldrh r2, [r0]
- lsls r0, r2, 2
- adds r0, r2
- adds r1, r0
- adds r1, r3
- movs r0, 0
- ldrsb r0, [r1, r0]
- bx lr
- .align 2, 0
-_080B1A20: .4byte gContestExcitementTable
-_080B1A24: .4byte gContestMoves
-_080B1A28: .4byte gScriptContestCategory
- thumb_func_end contest_get_move_excitement
-
- thumb_func_start sub_80B1A2C
-sub_80B1A2C: @ 80B1A2C
- push {r4,r5,lr}
- ldr r0, _080B1A60 @ =c3_08130B10
- movs r1, 0xA
- bl CreateTask
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _080B1A64 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r0, 0x1
- strh r0, [r4, 0xA]
- ldr r0, _080B1A68 @ =0x0000abe2
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xC]
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080B1A60: .4byte c3_08130B10
-_080B1A64: .4byte gTasks
-_080B1A68: .4byte 0x0000abe2
- thumb_func_end sub_80B1A2C
-
- thumb_func_start c3_08130B10
-c3_08130B10: @ 80B1A6C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B1A9C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _080B1B06
- movs r0, 0
- strh r0, [r2, 0x8]
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080B1AA0
- ldrh r0, [r2, 0x10]
- adds r0, 0x1
- b _080B1AA4
- .align 2, 0
-_080B1A9C: .4byte gTasks
-_080B1AA0:
- ldrh r0, [r2, 0x10]
- subs r0, 0x1
-_080B1AA4:
- strh r0, [r2, 0x10]
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- lsls r0, 4
- movs r3, 0x84
- lsls r3, 1
- adds r6, r3, 0
- adds r0, r6
- lsls r0, 16
- lsrs r0, 16
- ldrb r2, [r4, 0x10]
- ldr r3, _080B1B0C @ =0x00007fff
- movs r1, 0x1
- bl BlendPalette
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B1AD6
- cmp r0, 0x10
- bne _080B1B06
-_080B1AD6:
- ldrh r0, [r4, 0xE]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0xE]
- ldr r0, _080B1B10 @ =gSharedMem + 0x19204
- ldrb r0, [r0, 0x13]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x4
- bgt _080B1B06
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- lsls r0, 4
- adds r0, r6
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x1F
- bl BlendPalette
- adds r0, r5, 0
- bl DestroyTask
-_080B1B06:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1B0C: .4byte 0x00007fff
-_080B1B10: .4byte gSharedMem + 0x19204
- thumb_func_end c3_08130B10
-
- thumb_func_start sub_80B1B14
-sub_80B1B14: @ 80B1B14
- push {r4,lr}
- ldr r0, _080B1B58 @ =sub_80B1B68
- movs r1, 0xA
- bl CreateTask
- ldr r4, _080B1B5C @ =gSprites
- ldr r3, _080B1B60 @ =gSharedMem + 0x19204
- adds r2, r3, 0
- adds r2, 0x58
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _080B1B64 @ =0x0000ffba
- strh r1, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrb r0, [r3, 0x6]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r3, 0x6]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1B58: .4byte sub_80B1B68
-_080B1B5C: .4byte gSprites
-_080B1B60: .4byte gSharedMem + 0x19204
-_080B1B64: .4byte 0x0000ffba
- thumb_func_end sub_80B1B14
-
- thumb_func_start sub_80B1B68
-sub_80B1B68: @ 80B1B68
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- ldr r4, _080B1BD0 @ =gSharedMem + 0x19204
- adds r0, r4, 0
- adds r0, 0x58
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B1BD4 @ =gSprites
- adds r2, r0, r1
- ldr r0, _080B1BD8 @ =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- movs r5, 0xD0
- lsls r5, 3
- adds r0, r5, 0
- ldrh r5, [r1, 0x1C]
- adds r0, r5
- strh r0, [r1, 0x1C]
- lsls r0, 16
- asrs r0, 24
- ldrh r5, [r2, 0x24]
- adds r0, r5
- strh r0, [r2, 0x24]
- ldrb r0, [r1, 0x1C]
- strh r0, [r1, 0x1C]
- movs r1, 0x24
- ldrsh r0, [r2, r1]
- cmp r0, 0
- ble _080B1BB2
- movs r0, 0
- strh r0, [r2, 0x24]
-_080B1BB2:
- movs r5, 0x24
- ldrsh r0, [r2, r5]
- cmp r0, 0
- bne _080B1BCA
- ldrb r1, [r4, 0x6]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x6]
- adds r0, r3, 0
- bl DestroyTask
-_080B1BCA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1BD0: .4byte gSharedMem + 0x19204
-_080B1BD4: .4byte gSprites
-_080B1BD8: .4byte gTasks
- thumb_func_end sub_80B1B68
-
- thumb_func_start sub_80B1BDC
-sub_80B1BDC: @ 80B1BDC
- push {r4-r6,lr}
- ldr r6, _080B1C04 @ =gSprites
- ldr r4, _080B1C08 @ =gSharedMem + 0x19204
- adds r5, r4, 0
- adds r5, 0x58
- ldrb r0, [r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r0, [r1]
- lsls r0, 29
- cmp r0, 0
- bge _080B1C0C
- ldrb r1, [r4, 0x6]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- b _080B1C28
- .align 2, 0
-_080B1C04: .4byte gSprites
-_080B1C08: .4byte gSharedMem + 0x19204
-_080B1C0C:
- ldr r0, _080B1C30 @ =sub_80B1C34
- movs r1, 0xA
- bl CreateTask
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0
- strh r1, [r0, 0x24]
- ldrb r0, [r4, 0x6]
- movs r1, 0x40
- orrs r0, r1
-_080B1C28:
- strb r0, [r4, 0x6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1C30: .4byte sub_80B1C34
- thumb_func_end sub_80B1BDC
-
- thumb_func_start sub_80B1C34
-sub_80B1C34: @ 80B1C34
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r5, _080B1CAC @ =gSharedMem + 0x19204
- adds r0, r5, 0
- adds r0, 0x58
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080B1CB0 @ =gSprites
- adds r3, r0, r1
- ldr r0, _080B1CB4 @ =gTasks
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 3
- adds r2, r0
- movs r1, 0xD0
- lsls r1, 3
- adds r0, r1, 0
- ldrh r1, [r2, 0x1C]
- adds r0, r1
- strh r0, [r2, 0x1C]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r3, 0x24]
- subs r1, r0
- strh r1, [r3, 0x24]
- ldrb r0, [r2, 0x1C]
- strh r0, [r2, 0x1C]
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- movs r1, 0x46
- negs r1, r1
- cmp r0, r1
- bge _080B1C82
- ldr r0, _080B1CB8 @ =0x0000ffba
- strh r0, [r3, 0x24]
-_080B1C82:
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- cmp r0, r1
- bne _080B1CA6
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldrb r1, [r5, 0x6]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r5, 0x6]
- adds r0, r4, 0
- bl DestroyTask
-_080B1CA6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1CAC: .4byte gSharedMem + 0x19204
-_080B1CB0: .4byte gSprites
-_080B1CB4: .4byte gTasks
-_080B1CB8: .4byte 0x0000ffba
- thumb_func_end sub_80B1C34
-
- thumb_func_start sub_80B1CBC
-sub_80B1CBC: @ 80B1CBC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B1CF0 @ =sub_80B1CFC
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080B1CF4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0x8]
- ldr r2, _080B1CF8 @ =gSharedMem + 0x19204
- ldrb r0, [r2, 0x6]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2, 0x6]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1CF0: .4byte sub_80B1CFC
-_080B1CF4: .4byte gTasks
-_080B1CF8: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B1CBC
-
- thumb_func_start sub_80B1CFC
-sub_80B1CFC: @ 80B1CFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B1D20 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x1C
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080B1D30
- cmp r0, 0x1
- bgt _080B1D24
- cmp r0, 0
- beq _080B1D2A
- b _080B1D78
- .align 2, 0
-_080B1D20: .4byte gTasks
-_080B1D24:
- cmp r0, 0x2
- beq _080B1D50
- b _080B1D78
-_080B1D2A:
- bl sub_80B1B14
- b _080B1D44
-_080B1D30:
- ldr r0, _080B1D4C @ =gSharedMem + 0x19204
- ldrb r1, [r0, 0x6]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080B1D78
- movs r0, 0x8
- ldrsb r0, [r4, r0]
- bl nullsub_18
-_080B1D44:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- b _080B1D78
- .align 2, 0
-_080B1D4C: .4byte gSharedMem + 0x19204
-_080B1D50:
- ldrh r0, [r4, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080B1D78
- movs r0, 0
- strh r0, [r4, 0x1E]
- bl sub_80B1928
- ldr r2, _080B1D80 @ =gSharedMem + 0x19204
- ldrb r1, [r2, 0x6]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x6]
- adds r0, r5, 0
- bl DestroyTask
-_080B1D78:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1D80: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B1CFC
-
- thumb_func_start unref_sub_80B1D84
-unref_sub_80B1D84: @ 80B1D84
- ldr r3, _080B1DB0 @ =gSprites
- ldr r2, _080B1DB4 @ =gSharedMem + 0x19204
- adds r2, 0x58
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080B1DB0: .4byte gSprites
-_080B1DB4: .4byte gSharedMem + 0x19204
- thumb_func_end unref_sub_80B1D84
-
- thumb_func_start unref_sub_80B1DB8
-unref_sub_80B1DB8: @ 80B1DB8
- ldr r2, _080B1DD4 @ =gSprites
- ldr r0, _080B1DD8 @ =gSharedMem + 0x19204
- adds r0, 0x58
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080B1DD4: .4byte gSprites
-_080B1DD8: .4byte gSharedMem + 0x19204
- thumb_func_end unref_sub_80B1DB8
-
- thumb_func_start sub_80B1DDC
-sub_80B1DDC: @ 80B1DDC
- push {lr}
- ldr r0, _080B1DF4 @ =sub_80B1DFC
- movs r1, 0xF
- bl CreateTask
- ldr r2, _080B1DF8 @ =gSharedMem + 0x19204
- ldrb r0, [r2, 0x6]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x6]
- pop {r0}
- bx r0
- .align 2, 0
-_080B1DF4: .4byte sub_80B1DFC
-_080B1DF8: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B1DDC
-
- thumb_func_start sub_80B1DFC
-sub_80B1DFC: @ 80B1DFC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, _080B1E3C @ =gTasks
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r0, 3
- adds r3, r0, r2
- ldrh r0, [r3, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r3, 0x1C]
- lsls r0, 16
- asrs r0, 16
- adds r6, r2, 0
- cmp r0, 0x6
- ble _080B1E8E
- movs r0, 0
- strh r0, [r3, 0x1C]
- movs r1, 0x1E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080B1E50
- ldr r1, _080B1E40 @ =gSharedMem + 0x16800
- ldr r2, _080B1E44 @ =0x06002000
- ldr r0, _080B1E48 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _080B1E4C @ =0x84000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080B1E66
- .align 2, 0
-_080B1E3C: .4byte gTasks
-_080B1E40: .4byte gSharedMem + 0x16800
-_080B1E44: .4byte 0x06002000
-_080B1E48: .4byte 0x040000d4
-_080B1E4C: .4byte 0x84000400
-_080B1E50:
- ldr r1, _080B1E94 @ =gSharedMem + 0x15800
- ldr r2, _080B1E98 @ =0x06002000
- ldr r0, _080B1E9C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _080B1EA0 @ =0x84000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldrh r0, [r3, 0x20]
- adds r0, 0x1
- strh r0, [r3, 0x20]
-_080B1E66:
- adds r0, r4, 0
- adds r0, r5
- lsls r0, 3
- adds r0, r6
- ldrh r1, [r0, 0x1E]
- movs r2, 0x1
- eors r1, r2
- strh r1, [r0, 0x1E]
- movs r1, 0x20
- ldrsh r0, [r0, r1]
- cmp r0, 0x9
- bne _080B1E8E
- ldr r2, _080B1EA4 @ =gSharedMem + 0x19204
- ldrb r1, [r2, 0x6]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x6]
- adds r0, r5, 0
- bl DestroyTask
-_080B1E8E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1E94: .4byte gSharedMem + 0x15800
-_080B1E98: .4byte 0x06002000
-_080B1E9C: .4byte 0x040000d4
-_080B1EA0: .4byte 0x84000400
-_080B1EA4: .4byte gSharedMem + 0x19204
- thumb_func_end sub_80B1DFC
-
- thumb_func_start sub_80B1EA8
-sub_80B1EA8: @ 80B1EA8
- push {r4-r7,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _080B1EE4 @ =sub_80B1F4C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- cmp r4, 0
- ble _080B1F08
- ldr r7, _080B1EE8 @ =0x0000237e
- lsls r0, r5, 24
- adds r4, r0, 0
- cmp r4, 0
- ble _080B1EF0
- movs r5, 0
- ldr r2, _080B1EEC @ =gSharedMem + 0x19204
- movs r1, 0x13
- ldrsb r1, [r2, r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- b _080B1F1E
- .align 2, 0
-_080B1EE4: .4byte sub_80B1F4C
-_080B1EE8: .4byte 0x0000237e
-_080B1EEC: .4byte gSharedMem + 0x19204
-_080B1EF0:
- ldr r2, _080B1F04 @ =gSharedMem + 0x19204
- movs r1, 0x13
- ldrsb r1, [r2, r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- b _080B1F1E
- .align 2, 0
-_080B1F04: .4byte gSharedMem + 0x19204
-_080B1F08:
- movs r7, 0
- lsls r0, r5, 24
- adds r4, r0, 0
- cmp r4, 0
- ble _080B1F18
- movs r5, 0
- movs r3, 0xC
- b _080B1F1C
-_080B1F18:
- movs r5, 0xC
- movs r3, 0
-_080B1F1C:
- ldr r2, _080B1F44 @ =gSharedMem + 0x19204
-_080B1F1E:
- ldr r1, _080B1F48 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0x8]
- strh r5, [r0, 0xA]
- asrs r1, r4, 24
- strh r1, [r0, 0xC]
- strh r3, [r0, 0xE]
- ldrb r1, [r2, 0x7]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x7]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B1F44: .4byte gSharedMem + 0x19204
-_080B1F48: .4byte gTasks
- thumb_func_end sub_80B1EA8
-
thumb_func_start sub_80B1F4C
sub_80B1F4C: @ 80B1F4C
push {r4,r5,lr}
diff --git a/include/contest.h b/include/contest.h
index fe161bac4..9f8c263a4 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -1,6 +1,15 @@
#ifndef GUARD_CONTEST_H
#define GUARD_CONTEST_H
+enum
+{
+ CONTEST_CATEGORY_COOL,
+ CONTEST_CATEGORY_BEAUTY,
+ CONTEST_CATEGORY_CUTE,
+ CONTEST_CATEGORY_SMART,
+ CONTEST_CATEGORY_TOUGH,
+};
+
struct ContestMove
{
u8 effect;
diff --git a/include/graphics.h b/include/graphics.h
index 35bc71c0b..b3417a30f 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -48,6 +48,10 @@ extern const u8 gContest2Pal[];
extern const u8 gMonFootprint_QuestionMark[];
+extern const u8 gContestApplauseGfx[];
+extern const u8 gContestApplauseMeterGfx[];
+extern const u16 gContestPal[];
+
// data/graphics/pokemon/graphics.inc
extern const u8 gMonFrontPic_Bulbasaur[];
extern const u8 gMonPalette_Bulbasaur[];
diff --git a/src/contest.c b/src/contest.c
index 94369b87e..9ffe5e20e 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -52,7 +52,7 @@ struct Shared19204
/*0x19204*/ u8 unk19204;
/*0x19205*/ u8 unk19205;
/*0x19206*/ u8 unk19206[4];
- /*0x1920A*/ u16 unk1920A_0:1;
+ /*0x1920A*/ u16 unk1920A_0:1; // Task active flags?
u16 unk1920A_1:1;
u16 unk1920A_2:1;
u16 unk1920A_3:1;
@@ -70,14 +70,14 @@ struct Shared19204
/*0x19213*/ u8 filler19213;
/*0x19214*/ u8 unk19214;
/*0x19215*/ u8 unk19215;
- /*0x19216*/ u8 unk19216;
+ /*0x19216*/ u8 unk19216; // sprite ID
/*0x19217*/ s8 unk19217;
/*0x19218*/ u8 unk19218[4];
/*0x1921C*/ u32 unk1921C;
u16 unk19220[2][4]; // unknown length
u8 filler19230[0x48-0x30];
u8 unk19248[5][4];
- u8 unk1925C;
+ u8 unk1925C; // sprite ID
/*0x1925D*/ u8 unk1925D;
/*0x1925E*/ u8 unk1925E;
/*0x1925F*/ u8 filler1925F;
@@ -86,29 +86,29 @@ struct Shared19204
#define static_assert(expr) \
typedef char ____[(expr) ? 1 : -1]
-static_assert(offsetof(struct Shared19204, filler19230) == 0x19230 - 0x19204);
-
+ // Appeal, maybe
struct UnknownContestStruct1
{
- u16 unk0;
- s16 unk2; // s16?
+ s16 unk0;
+ s16 unk2;
s16 unk4;
- u16 unk6; // move
- u16 unk8;
+ u16 unk6; // move 1
+ u16 unk8; // move 2
u8 unkA; // contest category
u8 unkB_0:2;
- u8 unkB_2:5;
+ u8 unkB_2:2;
+ u8 unkB_4:3;
u8 unkB_7:1;
u8 unkC_0:1;
u8 unkC_1:2;
s8 unkD;
u8 unkE;
u8 unkF;
- u8 unk10_0:1; // *
- u8 unk10_1:1; // *
+ u8 unk10_0:1;
+ u8 unk10_1:1;
u8 unk10_2:1;
u8 unk10_3:1;
- u8 unk10_4:2; // *
+ u8 unk10_4:2;
u8 unk10_6:2;
u8 unk11_0:2;
u8 unk11_2:1;
@@ -117,7 +117,7 @@ struct UnknownContestStruct1
u8 unk11_5:1;
u8 unk12;
u8 unk13;
- u8 unk14; // s8?
+ u8 unk14;
u8 unk15_0:1;
u8 unk15_1:1;
u8 unk15_2:1;
@@ -130,7 +130,7 @@ struct UnknownContestStruct1
u8 unk18;
u8 unk19;
u8 unk1A;
- u8 filler1B;
+ u8 unk1B;
};
struct UnknownContestStruct3
@@ -155,14 +155,25 @@ struct UnknownContestStruct4
struct UnknownContestStruct5
{
- u16 bits_0:8;
- u16 bits_8:1;
- u16 bits_9:3;
- u16 bits_C:4;
+ s8 bits_0; // excitement?
+ u8 bits_8:1;
+ u8 bits_9:3;
+ u8 bits_C:4;
s8 unk2;
u8 filler3;
};
+struct UnknownContestStruct7
+{
+ u8 unk0[4];
+ u16 unk4;
+ u16 unk6;
+ u8 filler8[0xD-8];
+ u8 unkD[4];
+ u8 unk11;
+ u8 filler12[2];
+};
+
#if 0
struct Shared19260
{
@@ -178,13 +189,17 @@ struct Shared19260
#endif
#define shared15800 (gSharedMem + 0x15800)
+#define shared16800 (gSharedMem + 0x16800)
#define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000))
#define shared19204 (*(struct Shared19204 *)(gSharedMem + 0x19204))
//#define shared19260 (*(struct Shared19260 *)(gSharedMem + 0x19260))
+#define shared18004 ((u16 *)(gSharedMem + 0x18004))
+
// These are separate structs because sub_80AC2CC requires that to match.
#define shared19260_ ((struct UnknownContestStruct1 *)(gSharedMem + 0x19260))
#define shared192D0 (gSharedMem + 0x192D0)
+#define shared192D0_ (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0))
#define shared192E4 (gSharedMem + 0x192E4)
#define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328))
#define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338))
@@ -279,7 +294,14 @@ extern const u8 gUnknown_083CC0E3[];
extern const u8 gUnknown_083CC103[];
extern const u8 gUnknown_083CC14A[];
extern const u8 gUnknown_083CC16E[];
+extern const u8 *const gUnknown_083CC188[];
+extern const u8 gUnknown_083CC280[];
+extern const u8 gUnknown_083CC288[];
+extern const u8 gUnknown_083CC290[];
+extern const u8 gUnknown_083CC299[];
+extern const u8 gUnknown_083CC2A3[];
extern const u8 *const gUnknown_083CC2D8[];
+extern const u8 gUnknown_083CC2EC[];
extern const u8 *const gUnknown_083CC330[];
extern const u8 gUnknownText_UnknownFormatting2[];
extern const u8 gUnknownText_UnknownFormatting3[];
@@ -288,7 +310,8 @@ extern const u8 gUnknown_083CC5A2[];
extern const u16 gUnknown_083CC5A4[];
extern const u8 gUnknownText_MissedTurn[];
extern const u8 gUnknownText_LinkStandbyAndWinner[];
-
+extern void (*const gContestEffectFuncs[])(void);
+extern const s8 gContestExcitementTable[][5];
void sub_80AB350(void);
void sub_80AB5D4(u8);
@@ -380,7 +403,7 @@ void sub_80AFF60(struct Sprite *);
void sub_80AFFE0(bool8);
void sub_80B0034(void);
void sub_80B00C8(void);
-void nullsub_18(int);
+void nullsub_18(s8);
void sub_80B0238(struct Sprite *);
void sub_80B0280(struct Sprite *);
void sub_80B02A8(struct Sprite *);
@@ -406,14 +429,21 @@ void sub_80B1118(void);
void sub_80B114C(u8);
void sub_80B146C(u8, u8);
void sub_80B159C(void);
-void sub_80B1710();
+void sub_80B1710(u8);
void sub_80B1928(void);
s8 contest_get_move_excitement(u16);
+u8 sub_80B1A2C(void);
+void c3_08130B10(u8);
void sub_80B1B14(void);
+void sub_80B1B68(u8);
void sub_80B1BDC(void);
-void sub_80B1CBC();
+void sub_80B1C34(u8);
+void sub_80B1CBC(s8);
+void sub_80B1CFC(u8);
void sub_80B1DDC(void);
+void sub_80B1DFC(u8);
void sub_80B1EA8(s8, s8);
+void sub_80B1F4C(u8);
void sub_80B1FD0();
void sub_80B20C4(void);
u8 sub_80B214C(u8);
@@ -524,7 +554,8 @@ void sub_80AB398(void)
shared19260_[i].unk13 = 0xFF;
shared19260_[i].unk14 = 0xFF;
}
- memset(shared192D0, 0, 20 * sizeof(*shared192D0));
+ //memset(shared192D0, 0, 20 * sizeof(*shared192D0));
+ memset(&shared192D0_, 0, sizeof(shared192D0_));
memset(shared192E4, 0, 0x44 * sizeof(*shared192E4));
memset(&shared19328, 0, sizeof(shared19328));
memset(shared19338, 0, 4 * sizeof(*shared19338));
@@ -1077,7 +1108,7 @@ void sub_80AC2CC(u8 taskId)
{
case 0:
sub_80B0D7C();
- for (r6 = 0; shared19204.unk19214 != shared192D0[r6]; r6++)
+ for (r6 = 0; shared19204.unk19214 != shared192D0_.unk0[r6]; r6++)
;
shared19204.unk19215 = r6;
r7 = shared19204.unk19215;
@@ -1492,7 +1523,7 @@ void sub_80AC2CC(u8 taskId)
StringExpandPlaceholders(gStringVar4, gUnknown_083CC075);
sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[10] = 0;
- sub_80B1710();
+ sub_80B1710(0);
gTasks[taskId].data[0] = 46;
}
else
@@ -2569,13 +2600,13 @@ void sub_80AEBEC(u16 a)
FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 31, 16, 34);
category = gContestMoves[a].contestCategory;
- if (category == 0)
+ if (category == CONTEST_CATEGORY_COOL)
categoryTile = 0x4040;
- else if (category == 1)
+ else if (category == CONTEST_CATEGORY_BEAUTY)
categoryTile = 0x4045;
- else if (category == 2)
+ else if (category == CONTEST_CATEGORY_CUTE)
categoryTile = 0x404A;
- else if (category == 3)
+ else if (category == CONTEST_CATEGORY_SMART)
categoryTile = 0x406A;
else
categoryTile = 0x408A;
@@ -3515,7 +3546,7 @@ void sub_80B00C8(void)
shared19204.unk1925C = spriteId;
}
-void nullsub_18(int unused)
+void nullsub_18(s8 unused)
{
}
@@ -4451,22 +4482,19 @@ void sub_80B0F28(u8 a)
if (a == 0)
{
- for (i = 0; i < 4; i++) //_080B0F9C
+ for (i = 0; i < 4; i++)
{
gUnknown_02038696[i] = i;
- for (r4 = 0; r4 < i; r4++) //_080B0FC4
+ for (r4 = 0; r4 < i; r4++)
{
if (gUnknown_02038670[gUnknown_02038696[r4]] < gUnknown_02038670[i]
|| (gUnknown_02038670[gUnknown_02038696[r4]] == gUnknown_02038670[i] && sp4[gUnknown_02038696[r4]] < sp4[i]))
{
- //_080B0FEC
for (r2 = i; r2 > r4; r2--)
gUnknown_02038696[r2] = gUnknown_02038696[r2 - 1];
- //_080B1004
gUnknown_02038696[r4] = i;
break;
}
- //_080B1010
}
if (r4 == i)
gUnknown_02038696[i] = i;
@@ -4475,11 +4503,8 @@ void sub_80B0F28(u8 a)
for (i = 0; i < 4; i++)
gUnknown_02038696[sp0[i]] = i;
}
- //_080B1050
else
{
- //u8 r2;
-
memset(sp0, 0xFF, sizeof(sp0));
for (i = 0; i < 4; i++)
{
@@ -4491,14 +4516,12 @@ void sub_80B0F28(u8 a)
if (*ptr == 0xFF)
{
*ptr = i;
- //sp0[r2] = i;
gUnknown_02038696[i] = r2;
break;
}
r2++;
}
}
- //_080B1098
for (i = 0; i < 3; i++)
{
for (r4 = 3; r4 > i; r4--)
@@ -4512,8 +4535,548 @@ void sub_80B0F28(u8 a)
gUnknown_02038696[r4] = gUnknown_02038696[r4 - 1];
gUnknown_02038696[r4 - 1] = temp;
}
- //_080B10F0
}
}
}
}
+
+void sub_80B1118(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ //LoadPalette(shared18000.unk18004[5 + i], (gUnknown_02038696[i] + 5) * 16, 32);
+ LoadPalette(shared18004 + (i + 5) * 16, (gUnknown_02038696[i] + 5) * 16, 32);
+ }
+ sub_80AE514();
+}
+
+void sub_80B114C(u8 a)
+{
+ bool8 r8;
+ s32 i;
+
+ shared19260_[a].unk2 = 0;
+ shared19260_[a].unk0 = 0;
+ r8 = sub_80AF404(a);
+ if (r8)
+ {
+ u16 r0 = shared19260_[a].unk6;
+ u8 effect = gContestMoves[r0].effect;
+ u8 rnd;
+
+ shared19260_[a].unkA = gContestMoves[shared19260_[a].unk6].contestCategory;
+ if (shared19260_[a].unk6 == shared19260_[a].unk8 && shared19260_[a].unk6 != 0)
+ {
+ shared19260_[a].unk15_0 = 1;
+ shared19260_[a].unkB_4++;
+ }
+ else
+ {
+ shared19260_[a].unkB_4 = 0;
+ }
+ shared19260_[a].unk0 = gContestEffects[effect].appeal;
+ shared19260_[a].unk2 = gContestEffects[effect].appeal;
+ shared192D0_.unk4 = gContestEffects[effect].jam;
+ shared192D0_.unk6 = gContestEffects[effect].jam;
+ shared192D0_.unk11 = a;
+ for (i = 0; i < 4; i++)
+ {
+ shared19260_[i].unkE = 0;
+ shared192D0_.unkD[i] = 0;
+ }
+ if (shared19260_[a].unk15_4 && !AreMovesContestCombo(shared19260_[a].unk8, shared19260_[a].unk6))
+ shared19260_[a].unk15_4 = 0;
+ gContestEffectFuncs[effect]();
+ if (shared19260_[a].unk10_4 == 1)
+ shared19260_[a].unk2 += shared19260_[a].unkD - 10;
+ else if (shared19260_[a].unk11_5)
+ shared19260_[a].unk2 += shared19260_[a].unkD * 3;
+ else
+ shared19260_[a].unk2 += shared19260_[a].unkD;
+ shared19260_[a].unk16 = 0;
+ shared19260_[a].unk15_6 = 0;
+ if (sub_80B214C(a) != 0)
+ {
+ bool8 r2 = AreMovesContestCombo(shared19260_[a].unk8, shared19260_[a].unk6);
+
+ if (r2 && shared19260_[a].unk15_4)
+ {
+ shared19260_[a].unk16 = r2;
+ shared19260_[a].unk15_6 = 1;
+ shared19260_[a].unk15_4 = 0;
+ shared19260_[a].unk17 = shared19260_[a].unk0 * shared19260_[a].unk16;
+ shared19260_[a].unk15_3 = 1;
+ }
+ else
+ {
+ if (gContestMoves[shared19260_[a].unk6].comboStarterId != 0)
+ {
+ shared19260_[a].unk15_4 = 1;
+ shared19260_[a].unk15_6 = 1;
+ }
+ else
+ {
+ shared19260_[a].unk15_4 = 0;
+ }
+ }
+ }
+ if (shared19260_[a].unk15_0)
+ shared19260_[a].unk18 = (shared19260_[a].unkB_4 + 1) * 10;
+ if (shared19260_[a].unkC_0)
+ {
+ shared19260_[a].unk15_4 = 0;
+ shared19260_[a].unk2 = 0;
+ shared19260_[a].unk0 = 0;
+ }
+ shared19328.bits_0 = contest_get_move_excitement(shared19260_[a].unk6);
+ if (shared19260_[a].unk11_4)
+ shared19328.bits_0 = 1;
+ if (shared19328.bits_0 > 0)
+ {
+ if (shared19204.unk19217 + shared19328.bits_0 > 4)
+ shared19328.unk2 = 60;
+ else
+ shared19328.unk2 = 10;
+ }
+ else
+ {
+ shared19328.unk2 = 0;
+ }
+
+ rnd = Random() % 3;
+ for (i = 0; i < 4; i++)
+ {
+ if (i != a)
+ {
+ if (rnd == 0)
+ break;
+ rnd--;
+ }
+ }
+ shared19260_[a].unk1B = i;
+ }
+}
+
+void sub_80B13EC(u8 a, u8 b)
+{
+ shared19260_[a].unk13 = b;
+}
+
+void sub_80B1404(u8 a, u8 b)
+{
+ shared19260_[a].unk14 = b;
+}
+
+void sub_80B141C(u8 a, u8 b)
+{
+ if (b >= 60)
+ sub_80B13EC(a, 53);
+ else if (b >= 40)
+ sub_80B13EC(a, 52);
+ else if (b >= 30)
+ sub_80B13EC(a, 51);
+ else if (b >= 20)
+ sub_80B13EC(a, 50);
+ else if (b >= 10)
+ sub_80B13EC(a, 49);
+}
+
+void sub_80B146C(u8 a, u8 b)
+{
+ StringCopy(gStringVar1, gContestMons[a].nickname);
+ StringCopy(gStringVar2, gMoveNames[shared19260_[a].unk6]);
+ if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_COOL)
+ StringCopy(gStringVar3, gUnknown_083CC280);
+ else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_BEAUTY)
+ StringCopy(gStringVar3, gUnknown_083CC288);
+ else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_CUTE)
+ StringCopy(gStringVar3, gUnknown_083CC290);
+ else if (gContestMoves[shared19260_[shared192D0_.unk11].unk6].contestCategory == CONTEST_CATEGORY_SMART)
+ StringCopy(gStringVar3, gUnknown_083CC299);
+ else
+ StringCopy(gStringVar3, gUnknown_083CC2A3);
+ StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[b]);
+ sub_80AF138();
+ sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+}
+
+void sub_80B157C(u8 a)
+{
+ shared19260_[a].unkC_0 = 1;
+ shared19260_[a].unk6 = 0;
+}
+
+void sub_80B159C(void)
+{
+ u8 r12 = 0;
+ s32 i;
+ s32 j;
+ u8 sp0[4];
+ u8 sp4[4];
+
+ for (i = 0; i < 4; i++)
+ {
+ sp0[i] = gUnknown_02038696[i];
+ sp4[i] = 0;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (shared19260_[j].unk19 == i)
+ {
+ sp0[j] = i;
+ sp4[j] = 1;
+ break;
+ }
+ }
+ if (j == 4)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (sp4[j] == 0 && shared19260_[j].unk19 == 0xFF)
+ {
+ r12 = j;
+ j++;
+ break;
+ }
+ }
+ for (; j < 4; j++)
+ {
+ if (sp4[j] == 0 && shared19260_[j].unk19 == 0xFF
+ && gUnknown_02038696[r12] > gUnknown_02038696[j])
+ r12 = j;
+ }
+ sp0[r12] = i;
+ sp4[r12] = 1;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ shared192D0_.unk0[i] = sp0[i];
+ shared19260_[i].unk19 = 0xFF;
+ shared19260_[i].unk10_6 = 0;
+ gUnknown_02038696[i] = sp0[i];
+ }
+}
+
+void sub_80B16D0(struct Sprite *sprite)
+{
+ if (sprite->data[1]++ > 84)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible = TRUE;
+ sprite->callback = SpriteCallbackDummy;
+ shared19204.unk1920A_4 = 0;
+ }
+}
+
+void sub_80B1710(u8 a)
+{
+ u8 spriteId = shared19204.unk19216;
+
+ switch (a)
+ {
+ case 0:
+ case 1:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0];
+ PlaySE(SE_HAZURE);
+ break;
+ case 2:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 4;
+ PlaySE(SE_SEIKAI);
+ break;
+ case 3:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 8;
+ PlaySE(SE_SEIKAI);
+ break;
+ case 4:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12;
+ PlaySE(SE_TK_WARPIN);
+ break;
+ case 5: // exactly the same as case 4
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12;
+ PlaySE(SE_TK_WARPIN);
+ break;
+ case 6:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 16;
+ PlaySE(SE_TK_WARPIN);
+ break;
+ case 8:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 24;
+ PlaySE(SE_W215);
+ break;
+ case 7:
+ default:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 20;
+ PlaySE(SE_TK_WARPIN);
+ break;
+ }
+ gSprites[spriteId].data[1] = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gSprites[spriteId].callback = sub_80B16D0;
+ shared19204.unk1920A_4 = 1;
+}
+
+void sub_80B1928(void)
+{
+ s32 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ const u8 *src;
+
+ if (i < shared19204.unk19217)
+ src = gContestApplauseMeterGfx + 64;
+ else
+ src = gContestApplauseMeterGfx;
+ CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[shared19204.unk1925C].oam.tileNum + 17 + i) * 32), 32);
+ CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[shared19204.unk1925C].oam.tileNum + 25 + i) * 32), 32);
+ if (shared19204.unk19217 > 4)
+ sub_80B1A2C();
+ }
+}
+
+void unref_sub_80B19D0(void)
+{
+ u8 str[20];
+ StringCopy(str, gUnknown_083CC2EC);
+ sub_8003460(&gUnknown_03004210, str, 680, 0, 0);
+}
+
+s8 contest_get_move_excitement(u16 move)
+{
+ return gContestExcitementTable[gScriptContestCategory][gContestMoves[move].contestCategory];
+}
+
+u8 sub_80B1A2C(void)
+{
+ u8 taskId = CreateTask(c3_08130B10, 10);
+
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x0ABE2);
+ return taskId;
+}
+
+void c3_08130B10(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] == 1)
+ {
+ gTasks[taskId].data[0] = 0;
+ if (gTasks[taskId].data[3] == 0)
+ gTasks[taskId].data[4]++;
+ else
+ gTasks[taskId].data[4]--;
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], 0x7FFF);
+ if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16)
+ {
+ gTasks[taskId].data[3] ^= 1;
+ if (shared19204.unk19217 <= 4)
+ {
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, 31);
+ DestroyTask(taskId);
+ }
+ }
+ }
+}
+
+void sub_80B1B14(void)
+{
+ CreateTask(sub_80B1B68, 10);
+ gSprites[shared19204.unk1925C].pos2.x = -70;
+ gSprites[shared19204.unk1925C].invisible = FALSE;
+ shared19204.unk1920A_6 = 1;
+}
+
+void sub_80B1B68(u8 taskId)
+{
+ struct Sprite *sprite = &gSprites[shared19204.unk1925C];
+
+ gTasks[taskId].data[10] += 1664;
+ sprite->pos2.x += gTasks[taskId].data[10] >> 8;
+ gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
+ if (sprite->pos2.x > 0)
+ sprite->pos2.x = 0;
+ if (sprite->pos2.x == 0)
+ {
+ shared19204.unk1920A_6 = 0;
+ DestroyTask(taskId);
+ }
+}
+
+void sub_80B1BDC(void)
+{
+ if (gSprites[shared19204.unk1925C].invisible == TRUE)
+ {
+ shared19204.unk1920A_6 = 0;
+ }
+ else
+ {
+ CreateTask(sub_80B1C34, 10);
+ gSprites[shared19204.unk1925C].pos2.x = 0;
+ shared19204.unk1920A_6 = 1;
+ }
+}
+
+void sub_80B1C34(u8 taskId)
+{
+ struct Sprite *sprite = &gSprites[shared19204.unk1925C];
+
+ gTasks[taskId].data[10] += 1664;
+ sprite->pos2.x -= gTasks[taskId].data[10] >> 8;
+ gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
+ if (sprite->pos2.x < -70)
+ sprite->pos2.x = -70;
+ if (sprite->pos2.x == -70)
+ {
+ sprite->invisible = TRUE;
+ shared19204.unk1920A_6 = 0;
+ DestroyTask(taskId);
+ }
+}
+
+void sub_80B1CBC(s8 a)
+{
+ u8 taskId = CreateTask(sub_80B1CFC, 5);
+
+ gTasks[taskId].data[0] = a;
+ shared19204.unk1920A_5 = 1;
+}
+
+void sub_80B1CFC(u8 taskId)
+{
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ sub_80B1B14();
+ gTasks[taskId].data[10]++;
+ break;
+ case 1:
+ if (!shared19204.unk1920A_6)
+ {
+ nullsub_18(gTasks[taskId].data[0]);
+ gTasks[taskId].data[10]++;
+ }
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ > 20)
+ {
+ gTasks[taskId].data[11] = 0;
+ sub_80B1928();
+ shared19204.unk1920A_5 = 0;
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void unref_sub_80B1D84(void)
+{
+ gSprites[shared19204.unk1925C].pos2.x = 0;
+ gSprites[shared19204.unk1925C].invisible = FALSE;
+}
+
+void unref_sub_80B1DB8(void)
+{
+ gSprites[shared19204.unk1925C].invisible = TRUE;
+}
+
+void sub_80B1DDC(void)
+{
+ CreateTask(sub_80B1DFC, 15);
+ shared19204.unk1920A_7 = 1;
+}
+
+void sub_80B1DFC(u8 taskId)
+{
+ if (gTasks[taskId].data[10]++ > 6)
+ {
+ register struct Task *task asm("r0");
+ register u32 r4 asm("r4") = taskId * 4;
+
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[10] = 0;
+ if (gTasks[taskId].data[11] == 0)
+ {
+ {
+ void *src = shared16800;
+ void *dest = (void *)(VRAM + 0x2000);
+ u32 size = 0x1000;
+ DmaCopy32(3, src, dest, size);
+ }
+ }
+ else
+ {
+ {
+ void *src = shared15800;
+ void *dest = (void *)(VRAM + 0x2000);
+ u32 size = 0x1000;
+ DmaCopy32(3, src, dest, size);
+ }
+ gTasks[taskId].data[12]++;
+ }
+
+ // Why won't this match the normal way?
+ asm("add %0, %1, #0\n\t"
+ "add %0, %3\n\t"
+ "lsl %0, #3\n\t"
+ "add %0, %2\n\t"
+ : "=r"(task):"r"(r4),"r"(gTasks),"r"(taskId));
+
+ //gTasks[taskId].data[11] ^= 1;
+ task->data[11] ^= 1;
+
+ //if (gTasks[taskId].data[12] == 9)
+ if (task->data[12] == 9)
+ {
+ shared19204.unk1920A_7 = 0;
+ DestroyTask(taskId);
+ }
+ }
+}
+
+void sub_80B1EA8(s8 a, s8 b)
+{
+ u8 taskId = CreateTask(sub_80B1F4C, 10);
+ u16 r7;
+ u8 r5;
+ u8 r3;
+
+ if (a > 0)
+ {
+ r7 = 0x237E;
+ if (b > 0)
+ {
+ r5 = 0;
+ r3 = shared19204.unk19217 * 3;
+ }
+ else
+ {
+ r5 = shared19204.unk19217 * 3;
+ r3 = 0;
+ }
+ }
+ else
+ {
+ r7 = 0;
+ if (b > 0)
+ {
+ r5 = 0;
+ r3 = 12;
+ }
+ else
+ {
+ r5 = 12;
+ r3 = 0;
+ }
+ }
+ gTasks[taskId].data[0] = r7;
+ gTasks[taskId].data[1] = r5;
+ gTasks[taskId].data[2] = b;
+ gTasks[taskId].data[3] = r3;
+ shared19204.unk1920B_0 = 0;
+}