diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-30 12:43:00 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-30 12:43:00 -0400 |
commit | 9007978827e723c6d4fb4978ae8dc94f8a3900ab (patch) | |
tree | 3d4af4c67a74ce4c8f98968f0274de68797bef31 | |
parent | b125a4057419ab9efe6dbd1e911abd5de2200b9b (diff) |
through ContestEffect_47
-rw-r--r-- | asm/contest_effect.s | 203 | ||||
-rw-r--r-- | include/contest.h | 4 | ||||
-rw-r--r-- | src/contest_effect.c | 82 |
3 files changed, 85 insertions, 204 deletions
diff --git a/asm/contest_effect.s b/asm/contest_effect.s index 469486a1c..6808c9204 100644 --- a/asm/contest_effect.s +++ b/asm/contest_effect.s @@ -5,209 +5,6 @@ .text - thumb_func_start ContestEffect_44 -ContestEffect_44: @ 80B8EBC - push {lr} - ldr r3, _080B8EF0 @ =gContestMoves - ldr r1, _080B8EF4 @ =gSharedMem + 0x192D0 - ldrb r2, [r1, 0x11] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - subs r1, 0x70 - adds r2, r0, r1 - ldrh r0, [r2, 0x6] - lsls r0, 3 - adds r0, r3 - ldrb r0, [r0, 0x1] - lsls r0, 29 - ldr r1, _080B8EF8 @ =gSpecialVar_ContestCategory - lsrs r0, 29 - ldrh r1, [r1] - cmp r0, r1 - beq _080B8EEA - ldrb r0, [r2, 0x11] - movs r1, 0x10 - orrs r0, r1 - strb r0, [r2, 0x11] -_080B8EEA: - pop {r0} - bx r0 - .align 2, 0 -_080B8EF0: .4byte gContestMoves -_080B8EF4: .4byte gSharedMem + 0x192D0 -_080B8EF8: .4byte gSpecialVar_ContestCategory - thumb_func_end ContestEffect_44 - - thumb_func_start ContestEffect_45 -ContestEffect_45: @ 80B8EFC - push {r4-r7,lr} - movs r7, 0 - movs r5, 0 - ldr r4, _080B8F34 @ =gSharedMem + 0x192D0 - movs r6, 0 -_080B8F06: - ldrb r0, [r4, 0x11] - adds r0, r4 - adds r1, r5, r4 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _080B8F52 - adds r0, r4, 0 - subs r0, 0x70 - adds r1, r6, r0 - movs r2, 0x2 - ldrsh r0, [r1, r2] - cmp r0, 0 - ble _080B8F38 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x4] - movs r1, 0x4 - ldrsh r0, [r4, r1] - bl sub_80B9268 - b _080B8F3A - .align 2, 0 -_080B8F34: .4byte gSharedMem + 0x192D0 -_080B8F38: - movs r0, 0xA -_080B8F3A: - strh r0, [r4, 0x4] - strb r5, [r4, 0x8] - movs r0, 0xFF - strb r0, [r4, 0x9] - bl sub_80B9120 - lsls r0, 24 - cmp r0, 0 - beq _080B8F52 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_080B8F52: - adds r6, 0x1C - adds r5, 0x1 - cmp r5, 0x3 - ble _080B8F06 - cmp r7, 0 - bne _080B8F68 - ldr r0, _080B8F78 @ =gSharedMem + 0x192D0 - ldrb r0, [r0, 0x11] - movs r1, 0x36 - bl SetContestantStatusUnk14 -_080B8F68: - ldr r0, _080B8F78 @ =gSharedMem + 0x192D0 - ldrb r0, [r0, 0x11] - movs r1, 0x30 - bl SetContestantStatusUnk13 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B8F78: .4byte gSharedMem + 0x192D0 - thumb_func_end ContestEffect_45 - - thumb_func_start ContestEffect_46 -ContestEffect_46: @ 80B8F7C - push {r4,lr} - ldr r0, _080B8F98 @ =gSharedMem + 0x19204 - movs r1, 0x13 - ldrsb r1, [r0, r1] - cmp r1, 0 - bne _080B8F9C - movs r4, 0xA - adds r0, 0xCC - ldrb r0, [r0, 0x11] - movs r1, 0x1A - bl SetContestantStatusUnk13 - b _080B8FDE - .align 2, 0 -_080B8F98: .4byte gSharedMem + 0x19204 -_080B8F9C: - cmp r1, 0x1 - bne _080B8FAE - movs r4, 0x14 - adds r0, 0xCC - ldrb r0, [r0, 0x11] - movs r1, 0x1B - bl SetContestantStatusUnk13 - b _080B8FDE -_080B8FAE: - cmp r1, 0x2 - bne _080B8FC0 - movs r4, 0x1E - adds r0, 0xCC - ldrb r0, [r0, 0x11] - movs r1, 0x1C - bl SetContestantStatusUnk13 - b _080B8FDE -_080B8FC0: - cmp r1, 0x3 - bne _080B8FD2 - movs r4, 0x32 - adds r0, 0xCC - ldrb r0, [r0, 0x11] - movs r1, 0x1D - bl SetContestantStatusUnk13 - b _080B8FDE -_080B8FD2: - movs r4, 0x3C - adds r0, 0xCC - ldrb r0, [r0, 0x11] - movs r1, 0x1E - bl SetContestantStatusUnk13 -_080B8FDE: - ldr r0, _080B8FF4 @ =gSharedMem + 0x192D0 - ldrb r2, [r0, 0x11] - lsls r1, r2, 3 - subs r1, r2 - lsls r1, 2 - subs r0, 0x70 - adds r1, r0 - strh r4, [r1, 0x2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080B8FF4: .4byte gSharedMem + 0x192D0 - thumb_func_end ContestEffect_46 - - thumb_func_start ContestEffect_47 -ContestEffect_47: @ 80B8FF8 - push {lr} - ldr r3, _080B9034 @ =gSharedMem + 0x19328 - ldrb r2, [r3, 0x1] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _080B902E - movs r0, 0x1 - orrs r2, r0 - movs r0, 0x58 - negs r0, r0 - adds r0, r3 - mov r12, r0 - ldrb r1, [r0, 0x11] - movs r0, 0x7 - ands r0, r1 - lsls r0, 1 - movs r1, 0xF - negs r1, r1 - ands r2, r1 - orrs r2, r0 - strb r2, [r3, 0x1] - mov r1, r12 - ldrb r0, [r1, 0x11] - movs r1, 0x3D - bl SetContestantStatusUnk13 -_080B902E: - pop {r0} - bx r0 - .align 2, 0 -_080B9034: .4byte gSharedMem + 0x19328 - thumb_func_end ContestEffect_47 - thumb_func_start sub_80B9038 sub_80B9038: @ 80B9038 push {r4-r7,lr} diff --git a/include/contest.h b/include/contest.h index 6e3d64cd1..2bcf32bef 100644 --- a/include/contest.h +++ b/include/contest.h @@ -225,7 +225,7 @@ struct UnknownContestStruct5 struct UnknownContestStruct7 { u8 unk0[4]; - u16 unk4; + s16 unk4; u16 unk6; u8 unk8[5]; u8 unkD[4]; @@ -277,6 +277,8 @@ extern u16 gUnknown_02038688[4]; extern u8 gContestFinalStandings[4]; extern u8 gUnknown_02038696[4]; extern u8 gUnknown_0203869B; +extern u16 gSpecialVar_ContestCategory; + void SetContestantStatusUnk13(u8 a, u8 b); void SetContestantStatusUnk14(u8 a, u8 b); void sub_80B157C(u8 p); diff --git a/src/contest_effect.c b/src/contest_effect.c index c484882ff..d5e9ca2e4 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -7,6 +7,7 @@ u8 sub_80B9120(void); bool8 sub_80B90C0(u8); void sub_80B9038(u8); s16 sub_80B9224(s16); +s16 sub_80B9268(s16); extern bool8 const gComboStarterLookupTable[]; @@ -921,3 +922,84 @@ void ContestEffect_43(void) SetContestantStatusUnk13(shared192D0.unk11, 39); } } + +void ContestEffect_44(void) +// An appeal that excites the audience in any CONTEST. +{ + if (gContestMoves[curContestant->currMove].contestCategory != gSpecialVar_ContestCategory) + { + curContestant->unk11_4 = TRUE; + } +} + +void ContestEffect_45(void) +// Badly startles all POKéMON that made good appeals. +{ + int i; + u8 r7 = 0; + + for (i = 0; i < 4; i++) + { + if (shared192D0.unk0[shared192D0.unk11] > shared192D0.unk0[i]) + { + if (sContestantStatus[i].appeal2 > 0) + { + shared192D0.unk4 = sContestantStatus[i].appeal2 / 2; + shared192D0.unk4 = sub_80B9268(shared192D0.unk4); + } + else + shared192D0.unk4 = 10; + shared192D0.unk8[0] = i; + shared192D0.unk8[1] = 0xFF; + if (sub_80B9120()) + r7++; + } + } + if (r7 == 0) + SetContestantStatusUnk14(shared192D0.unk11, 0x36); + SetContestantStatusUnk13(shared192D0.unk11, 48); +} + +void ContestEffect_46(void) +// The appeal works best the more the crowd is excited. +{ + s16 appeal; + + if (sContest.applauseLevel == 0) + { + appeal = 10; + SetContestantStatusUnk13(shared192D0.unk11, 26); + } + else if (sContest.applauseLevel == 1) + { + appeal = 20; + SetContestantStatusUnk13(shared192D0.unk11, 27); + } + else if (sContest.applauseLevel == 2) + { + appeal = 30; + SetContestantStatusUnk13(shared192D0.unk11, 28); + } + else if (sContest.applauseLevel == 3) + { + appeal = 50; + SetContestantStatusUnk13(shared192D0.unk11, 29); + } + else + { + appeal = 60; + SetContestantStatusUnk13(shared192D0.unk11, 30); + } + curContestant->appeal2 = appeal; +} + +void ContestEffect_47(void) +// Temporarily stops the crowd from growing excited. +{ + if (!shared19328.bits_8) + { + shared19328.bits_8 = TRUE; + shared19328.bits_9 = shared192D0.unk11; + SetContestantStatusUnk13(shared192D0.unk11, 61); + } +} |