Match the worst function ever
This commit is contained in:
parent
1a0e6f7aed
commit
c72b55a5c4
1 changed files with 22 additions and 142 deletions
|
@ -624,160 +624,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("\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r8\n\
|
||||
push {r7}\n\
|
||||
ldr r2, =gContestResources\n\
|
||||
ldr r0, [r2]\n\
|
||||
ldr r3, [r0, 0x8]\n\
|
||||
ldrb r0, [r3, 0x11]\n\
|
||||
adds r0, r3, r0\n\
|
||||
movs r1, 0\n\
|
||||
ldrsb r1, [r0, r1]\n\
|
||||
subs r0, r1, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r4, r0, 24\n\
|
||||
mov r8, r2\n\
|
||||
cmp r1, 0\n\
|
||||
beq _080E61F8\n\
|
||||
mov r7, r8\n\
|
||||
ldrb r6, [r3]\n\
|
||||
_080E6140:\n\
|
||||
movs r2, 0\n\
|
||||
lsls r0, r4, 24\n\
|
||||
asrs r1, r0, 24\n\
|
||||
adds r5, r0, 0\n\
|
||||
cmp r6, r1\n\
|
||||
beq _080E616A\n\
|
||||
ldr r4, =gContestResources\n\
|
||||
_080E614E:\n\
|
||||
lsls r0, r2, 24\n\
|
||||
movs r2, 0x80\n\
|
||||
lsls r2, 17\n\
|
||||
adds r0, r2\n\
|
||||
lsrs r2, r0, 24\n\
|
||||
asrs r3, r0, 24\n\
|
||||
cmp r3, 0x3\n\
|
||||
bgt _080E616A\n\
|
||||
ldr r0, [r4]\n\
|
||||
ldr r0, [r0, 0x8]\n\
|
||||
adds r0, r3\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r0, r1\n\
|
||||
bne _080E614E\n\
|
||||
_080E616A:\n\
|
||||
ldr r0, [r7]\n\
|
||||
lsls r3, r2, 24\n\
|
||||
asrs r1, r3, 24\n\
|
||||
ldr r2, [r0, 0x4]\n\
|
||||
lsls r0, r1, 3\n\
|
||||
subs r0, r1\n\
|
||||
lsls r0, 2\n\
|
||||
adds r2, r0, r2\n\
|
||||
ldrb r1, [r2, 0xB]\n\
|
||||
movs r0, 0x80\n\
|
||||
ands r0, r1\n\
|
||||
mov r12, r3\n\
|
||||
cmp r0, 0\n\
|
||||
bne _080E6190\n\
|
||||
ldrb r1, [r2, 0xC]\n\
|
||||
movs r0, 0x7\n\
|
||||
ands r0, r1\n\
|
||||
cmp r0, 0\n\
|
||||
beq _080E61A4\n\
|
||||
_080E6190:\n\
|
||||
movs r1, 0xFF\n\
|
||||
lsls r1, 24\n\
|
||||
adds r0, r5, r1\n\
|
||||
lsrs r4, r0, 24\n\
|
||||
cmp r0, 0\n\
|
||||
blt _080E61F8\n\
|
||||
b _080E6140\n\
|
||||
.pool\n\
|
||||
_080E61A4:\n\
|
||||
mov r2, r8\n\
|
||||
ldr r6, [r2]\n\
|
||||
ldr r0, [r6, 0x8]\n\
|
||||
ldrb r1, [r0, 0x11]\n\
|
||||
ldr r4, [r6, 0x4]\n\
|
||||
lsls r0, r1, 3\n\
|
||||
subs r0, r1\n\
|
||||
lsls r0, 2\n\
|
||||
adds r5, r0, r4\n\
|
||||
ldrh r0, [r5, 0x6]\n\
|
||||
ldr r3, =gContestMoves\n\
|
||||
lsls r0, 3\n\
|
||||
adds r7, r0, r3\n\
|
||||
ldrb r2, [r7, 0x1]\n\
|
||||
lsls r2, 29\n\
|
||||
mov r0, r12\n\
|
||||
asrs r1, r0, 24\n\
|
||||
lsls r0, r1, 3\n\
|
||||
subs r0, r1\n\
|
||||
lsls r0, 2\n\
|
||||
adds r0, r4\n\
|
||||
ldrh r0, [r0, 0x6]\n\
|
||||
lsls r0, 3\n\
|
||||
adds r0, r3\n\
|
||||
ldrb r0, [r0, 0x1]\n\
|
||||
lsls r0, 29\n\
|
||||
cmp r2, r0\n\
|
||||
bne _080E61F8\n\
|
||||
ldr r1, =gContestEffects\n\
|
||||
ldrb r0, [r7]\n\
|
||||
lsls r0, 2\n\
|
||||
adds r0, r1\n\
|
||||
ldrb r0, [r0, 0x1]\n\
|
||||
lsls r0, 1\n\
|
||||
ldrh r1, [r5, 0x2]\n\
|
||||
adds r0, r1\n\
|
||||
strh r0, [r5, 0x2]\n\
|
||||
ldr r0, [r6, 0x8]\n\
|
||||
ldrb r0, [r0, 0x11]\n\
|
||||
movs r1, 0x1F\n\
|
||||
bl SetContestantEffectStringID\n\
|
||||
_080E61F8:\n\
|
||||
pop {r3}\n\
|
||||
mov r8, r3\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\
|
||||
");
|
||||
}
|
||||
#endif
|
||||
|
||||
// Works well if different in type than the one before.
|
||||
static void ContestEffect_BetterIfDiffType(void)
|
||||
|
|
Loading…
Reference in a new issue