diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-08-15 20:35:41 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-08-15 20:49:13 -0500 |
commit | c4162d997dd0ca440fe95ac4fbe54f1d85c365f3 (patch) | |
tree | 261f34794ee6a84df849e3c3adf0bbcb7ee61186 /src/contest_effect.c | |
parent | e6dff5b317a7e269388fcc301ec53e9a0b554a0e (diff) |
Decompile more of pokenav
Diffstat (limited to 'src/contest_effect.c')
-rw-r--r-- | src/contest_effect.c | 154 |
1 files changed, 22 insertions, 132 deletions
diff --git a/src/contest_effect.c b/src/contest_effect.c index d97f38138..17779a0c6 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -615,150 +615,40 @@ static void ContestEffect_QualityDependsOnTiming(void) sContestantStatus[shared192D0.contestant].appeal2 = appeal; } -#ifdef NONMATCHING -// Not even close, send help -// Works well if it’s the same type as the one before. static void ContestEffect_BetterIfSameType(void) { - s8 r4; - s8 r2; + s8 turnOrder = shared192D0.turnOrder[shared192D0.contestant]; + s8 i = turnOrder - 1, j; + u16 move; - for (r4 = shared192D0.turnOrder[shared192D0.contestant]; r4 > 0; r4--) + if (turnOrder == 0) + return; + + while (1) { - for (r2 = 0; r2 < 4; r2++) + for (j = 0; j < 4; j++) { - if (shared192D0.turnOrder[r2] == r4 - 1) + if (shared192D0.turnOrder[j] == i) break; } - if (!(sContestantStatus[r2].noMoreTurns || sContestantStatus[r2].nervous || sContestantStatus[r2].numTurnsSkipped)) + if (sContestantStatus[j].noMoreTurns || sContestantStatus[j].nervous || sContestantStatus[j].numTurnsSkipped) + { + if (--i < 0) + return; + } + else { - u16 move = sContestantStatus[shared192D0.contestant].currMove; - - if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[r2].currMove].contestCategory) - { - sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; - SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD); - } break; } } + + move = sContestantStatus[shared192D0.contestant].currMove; + if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[j].currMove].contestCategory) + { + sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD); + } } -#else -NAKED void ContestEffect_BetterIfSameType(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tldr r1, _080B8940 @ =gSharedMem + 0x192D0\n" - "\tldrb r0, [r1, 0x11]\n" - "\tadds r0, r1\n" - "\tmovs r2, 0\n" - "\tldrsb r2, [r0, r2]\n" - "\tsubs r0, r2, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tmov r12, r1\n" - "\tcmp r2, 0\n" - "\tbeq _080B8994\n" - "\tldrb r5, [r1]\n" - "\tmov r6, r12\n" - "\tsubs r6, 0x70\n" - "_080B88EA:\n" - "\tmovs r2, 0\n" - "\tlsls r0, r4, 24\n" - "\tasrs r1, r0, 24\n" - "\tadds r4, r0, 0\n" - "\tcmp r5, r1\n" - "\tbeq _080B8910\n" - "\tldr r3, _080B8940 @ =gSharedMem + 0x192D0\n" - "_080B88F8:\n" - "\tlsls r0, r2, 24\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 17\n" - "\tadds r0, r2\n" - "\tlsrs r2, r0, 24\n" - "\tasrs r0, 24\n" - "\tcmp r0, 0x3\n" - "\tbgt _080B8910\n" - "\tadds r0, r3\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, r1\n" - "\tbne _080B88F8\n" - "_080B8910:\n" - "\tlsls r2, 24\n" - "\tasrs r1, r2, 24\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r3, r0, r6\n" - "\tldrb r1, [r3, 0xB]\n" - "\tmovs r0, 0x80\n" - "\tands r0, r1\n" - "\tadds r7, r2, 0\n" - "\tcmp r0, 0\n" - "\tbne _080B8932\n" - "\tldrb r1, [r3, 0xC]\n" - "\tmovs r0, 0x7\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _080B8944\n" - "_080B8932:\n" - "\tmovs r1, 0xFF\n" - "\tlsls r1, 24\n" - "\tadds r0, r4, r1\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r0, 0\n" - "\tblt _080B8994\n" - "\tb _080B88EA\n" - "\t.align 2, 0\n" - "_080B8940: .4byte gSharedMem + 0x192D0\n" - "_080B8944:\n" - "\tmov r2, r12\n" - "\tldrb r1, [r2, 0x11]\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tmov r3, r12\n" - "\tsubs r3, 0x70\n" - "\tadds r5, r0, r3\n" - "\tldrh r0, [r5, 0x6]\n" - "\tldr r4, _080B899C @ =gContestMoves\n" - "\tlsls r0, 3\n" - "\tadds r6, r0, r4\n" - "\tldrb r2, [r6, 0x1]\n" - "\tlsls r2, 29\n" - "\tasrs r1, r7, 24\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r0, r3\n" - "\tldrh r0, [r0, 0x6]\n" - "\tlsls r0, 3\n" - "\tadds r0, r4\n" - "\tldrb r0, [r0, 0x1]\n" - "\tlsls r0, 29\n" - "\tcmp r2, r0\n" - "\tbne _080B8994\n" - "\tldr r1, _080B89A0 @ =gContestEffects\n" - "\tldrb r0, [r6]\n" - "\tlsls r0, 2\n" - "\tadds r0, r1\n" - "\tldrb r0, [r0, 0x1]\n" - "\tlsls r0, 1\n" - "\tldrh r1, [r5, 0x2]\n" - "\tadds r0, r1\n" - "\tstrh r0, [r5, 0x2]\n" - "\tmov r2, r12\n" - "\tldrb r0, [r2, 0x11]\n" - "\tmovs r1, 0x1F\n" - "\tbl SetContestantEffectStringID\n" - "_080B8994:\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_080B899C: .4byte gContestMoves\n" - "_080B89A0: .4byte gContestEffects"); -} -#endif // Works well if different in type than the one before. static void ContestEffect_BetterIfDiffType(void) |