diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-29 15:50:16 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-29 15:50:16 -0400 |
commit | 90556b6b3eabc0a90cf7fdcf54826e362053f4c0 (patch) | |
tree | 7ccb9e9c3256a03967f3bf0a0d0eafdd14151c3b | |
parent | 18e6512599ad5a52ee0046f2504a7b357cc80894 (diff) |
ContestEffect_26
-rw-r--r-- | asm/contest_effect.s | 248 | ||||
-rw-r--r-- | include/contest.h | 2 | ||||
-rw-r--r-- | src/contest.c | 1 | ||||
-rw-r--r-- | src/contest_ai.c | 3 | ||||
-rw-r--r-- | src/contest_effect.c | 75 |
5 files changed, 77 insertions, 252 deletions
diff --git a/asm/contest_effect.s b/asm/contest_effect.s index b3d865b3d..cbab264d5 100644 --- a/asm/contest_effect.s +++ b/asm/contest_effect.s @@ -5,254 +5,6 @@ .text - thumb_func_start ContestEffect_26 -ContestEffect_26: @ 80B8310 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - movs r0, 0 - mov r9, r0 - movs r1, 0 - str r1, [sp, 0x18] - mov r0, sp - movs r1, 0xFF - movs r2, 0x5 - bl memset - movs r6, 0 - movs r4, 0 - add r2, sp, 0x10 - mov r8, r2 - add r3, sp, 0x8 - mov r10, r3 - ldr r5, _080B8384 @ =gSharedMem + 0x192D0 - adds r7, r5, 0 - subs r7, 0x70 -_080B8340: - ldrb r0, [r5, 0x11] - adds r0, r5 - adds r1, r6, r5 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bcs _080B836E - ldrb r1, [r7, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080B836E - lsls r0, r6, 24 - lsrs r0, 24 - bl Contest_IsMonsTurnDisabled - lsls r0, 24 - cmp r0, 0 - bne _080B836E - mov r1, sp - adds r0, r1, r4 - strb r6, [r0] - adds r4, 0x1 -_080B836E: - adds r7, 0x1C - adds r6, 0x1 - cmp r6, 0x3 - ble _080B8340 - cmp r4, 0x1 - bne _080B8388 - movs r0, 0x3C - mov r2, r8 - strh r0, [r2] - b _080B83B6 - .align 2, 0 -_080B8384: .4byte gSharedMem + 0x192D0 -_080B8388: - cmp r4, 0x2 - bne _080B8396 - movs r0, 0x1E - mov r3, r8 - strh r0, [r3] - strh r0, [r3, 0x2] - b _080B83B6 -_080B8396: - cmp r4, 0x3 - bne _080B83A6 - movs r0, 0x14 - mov r7, r8 - strh r0, [r7] - strh r0, [r7, 0x2] - strh r0, [r7, 0x4] - b _080B83B6 -_080B83A6: - mov r1, r8 - movs r2, 0 - mov r0, r8 - adds r0, 0x6 -_080B83AE: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080B83AE -_080B83B6: - movs r6, 0 - movs r7, 0 - mov r4, r10 -_080B83BC: - ldr r0, _080B83F0 @ =gSharedMem + 0x19260 - adds r5, r7, r0 - ldrb r1, [r5, 0x15] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080B83FC - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_80B214C - lsls r0, 24 - cmp r0, 0 - beq _080B83FC - ldr r1, _080B83F4 @ =gContestMoves - ldrh r0, [r5, 0x8] - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x2] - ldr r1, _080B83F8 @ =gComboStarterLookupTable - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - b _080B83FE - .align 2, 0 -_080B83F0: .4byte gSharedMem + 0x19260 -_080B83F4: .4byte gContestMoves -_080B83F8: .4byte gComboStarterLookupTable -_080B83FC: - movs r0, 0 -_080B83FE: - strh r0, [r4] - ldr r5, _080B8494 @ =gSharedMem + 0x19260 - adds r0, r7, r5 - ldrb r0, [r0, 0xD] - lsls r0, 24 - asrs r0, 24 - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - asrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4] - subs r0, r1 - strh r0, [r4] - adds r7, 0x1C - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080B83BC - mov r2, r8 - movs r3, 0 - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _080B84CA - movs r6, 0 - mov r0, sp - ldrb r0, [r0] - cmp r0, 0xFF - beq _080B84CA - adds r5, 0x7D - mov r4, sp -_080B8442: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r6, 1 - add r1, r8 - movs r7, 0 - ldrsh r2, [r1, r7] - ldrb r3, [r4] - lsls r1, r3, 1 - add r1, r10 - movs r7, 0 - ldrsh r1, [r1, r7] - adds r2, r1 - cmp r0, r2 - bge _080B8498 - adds r0, r3, 0 - bl sub_80B90C0 - lsls r0, 24 - cmp r0, 0 - beq _080B84A2 - ldrb r0, [r4] - bl sub_80B157C - ldrb r0, [r4] - movs r1, 0xA - bl SetContestantStatusUnk13 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - b _080B849C - .align 2, 0 -_080B8494: .4byte gSharedMem + 0x19260 -_080B8498: - movs r0, 0x1 - str r0, [sp, 0x18] -_080B849C: - ldr r1, [sp, 0x18] - cmp r1, 0 - beq _080B84B8 -_080B84A2: - movs r2, 0 - str r2, [sp, 0x18] - ldrb r0, [r4] - movs r1, 0x3C - bl SetContestantStatusUnk13 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_080B84B8: - ldrb r0, [r4] - adds r0, r5 - movs r1, 0x1 - strb r1, [r0] - adds r4, 0x1 - adds r6, 0x1 - ldrb r0, [r4] - cmp r0, 0xFF - bne _080B8442 -_080B84CA: - ldr r4, _080B84F4 @ =gSharedMem + 0x192D0 - ldrb r0, [r4, 0x11] - movs r1, 0xB - bl SetContestantStatusUnk13 - mov r3, r9 - cmp r3, 0 - bne _080B84E2 - ldrb r0, [r4, 0x11] - movs r1, 0x36 - bl SetContestantStatusUnk14 -_080B84E2: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080B84F4: .4byte gSharedMem + 0x192D0 - thumb_func_end ContestEffect_26 - thumb_func_start ContestEffect_27 ContestEffect_27: @ 80B84F8 push {r4-r7,lr} diff --git a/include/contest.h b/include/contest.h index 24f3331b7..6e3d64cd1 100644 --- a/include/contest.h +++ b/include/contest.h @@ -280,5 +280,7 @@ extern u8 gUnknown_0203869B; void SetContestantStatusUnk13(u8 a, u8 b); void SetContestantStatusUnk14(u8 a, u8 b); void sub_80B157C(u8 p); +bool8 Contest_IsMonsTurnDisabled(u8 a); +bool8 sub_80B214C(u8 a); #endif // GUARD_CONTEST_H diff --git a/src/contest.c b/src/contest.c index 77455e882..686b01476 100644 --- a/src/contest.c +++ b/src/contest.c @@ -201,7 +201,6 @@ void sub_80AF1B8(void); void sub_80AF2A0(u8); void sub_80AF2FC(void); void sub_80AF3C0(void); -bool8 Contest_IsMonsTurnDisabled(u8); s16 sub_80AF688(u8); void DetermineFinalStandings(void); bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *); diff --git a/src/contest_ai.c b/src/contest_ai.c index 63894635b..8fce9d15f 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -5,9 +5,6 @@ #include "contest_effect.h" #include "ewram.h" -extern bool8 sub_80B214C(u8); -extern bool8 Contest_IsMonsTurnDisabled(u8); - extern u16 gSpecialVar_ContestCategory; extern u8 *gAIScriptPtr; diff --git a/src/contest_effect.c b/src/contest_effect.c index c38cb2f96..bbd56493b 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -301,3 +301,78 @@ void ContestEffect_25(void) if (!r4) SetContestantStatusUnk14(shared192D0.unk11, 0x36); } + +void ContestEffect_26(void) +{ + u8 r9 = 0; + bool32 sp18 = FALSE; + u8 sp00[5]; + int r6; + int r4; + s16 sp08[4]; + s16 sp10[4]; + + memset(sp00, 0xFF, ARRAY_COUNT(sp00)); + for (r6 = 0, r4 = 0; r6 < 4; r6++) + { + if (shared192D0.unk0[shared192D0.unk11] < shared192D0.unk0[r6] && + !sContestantStatus[r6].unkC_0 && !Contest_IsMonsTurnDisabled(r6)) + sp00[r4++] = r6; + } + + if (r4 == 1) + { + sp10[0] = 60; + } + else if (r4 == 2) + { + sp10[0] = 30; + sp10[1] = 30; + } + else if (r4 == 3) + { + sp10[0] = 20; + sp10[1] = 20; + sp10[2] = 20; + } + else + { + for (r6 = 0; r6 < 4; r6++) + sp10[r6] = 0; + } + for (r6 = 0; r6 < 4; r6++) + { + if (sContestantStatus[r6].unk15_4 && sub_80B214C(r6)) + sp08[r6] = gComboStarterLookupTable[gContestMoves[sContestantStatus[r6].prevMove].comboStarterId] * 10; + else + sp08[r6] = 0; + sp08[r6] -= (sContestantStatus[r6].unkD / 10) * 10; + } + if (sp10[0] != 0) + { + for (r6 = 0; sp00[r6] != 0xFF; r6++) + { + if (Random() % 100 < sp10[r6] + sp08[sp00[r6]]) + { + if (sub_80B90C0(sp00[r6])) + { + sub_80B157C(sp00[r6]); + SetContestantStatusUnk13(sp00[r6], 10); + r9++; + } else + sp18 = TRUE; + } else + sp18 = TRUE; + if (sp18) + { + sp18 = FALSE; + SetContestantStatusUnk13(sp00[r6], 60); + r9++; + } + shared192D0.unkD[sp00[r6]] = 1; + } + } + SetContestantStatusUnk13(shared192D0.unk11, 11); + if (r9 == 0) + SetContestantStatusUnk14(shared192D0.unk11, 0x36); +} |