diff options
-rw-r--r-- | asm/contest.s | 1843 | ||||
-rw-r--r-- | include/contest.h | 9 | ||||
-rw-r--r-- | include/graphics.h | 4 | ||||
-rw-r--r-- | src/contest.c | 647 |
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; +} |