mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-25 13:45:29 +01:00
match hidden power calc
This commit is contained in:
parent
edf2ea45b1
commit
a2458d966c
@ -9093,181 +9093,35 @@ static void atkC0_recoverbasedonsunlight(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NONMATCHING
|
|
||||||
static void atkC1_hiddenpowercalc(void)
|
static void atkC1_hiddenpowercalc(void)
|
||||||
{
|
{
|
||||||
u32 powerBits = 0;
|
u8 powerBits;
|
||||||
u32 typeBits = 0;
|
u8 typeBits;
|
||||||
|
|
||||||
powerBits |= ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1);
|
powerBits = ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1)
|
||||||
powerBits |= ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0);
|
| ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0)
|
||||||
powerBits |= ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1);
|
| ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1)
|
||||||
powerBits |= ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2);
|
| ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2)
|
||||||
powerBits |= ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3);
|
| ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3)
|
||||||
powerBits |= ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4);
|
| ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4);
|
||||||
|
|
||||||
typeBits |= ((gBattleMons[gBattlerAttacker].hpIV & 1) << 0);
|
typeBits = ((gBattleMons[gBattlerAttacker].hpIV & 1) << 0)
|
||||||
typeBits |= ((gBattleMons[gBattlerAttacker].attackIV & 1) << 1);
|
| ((gBattleMons[gBattlerAttacker].attackIV & 1) << 1)
|
||||||
typeBits |= ((gBattleMons[gBattlerAttacker].defenseIV & 1) << 2);
|
| ((gBattleMons[gBattlerAttacker].defenseIV & 1) << 2)
|
||||||
typeBits |= ((gBattleMons[gBattlerAttacker].speedIV & 1) << 3);
|
| ((gBattleMons[gBattlerAttacker].speedIV & 1) << 3)
|
||||||
typeBits |= ((gBattleMons[gBattlerAttacker].spAttackIV & 1) << 4);
|
| ((gBattleMons[gBattlerAttacker].spAttackIV & 1) << 4)
|
||||||
typeBits |= ((gBattleMons[gBattlerAttacker].spDefenseIV & 1) << 5);
|
| ((gBattleMons[gBattlerAttacker].spDefenseIV & 1) << 5);
|
||||||
|
|
||||||
gDynamicBasePower = (40 * powerBits) / 63 + 30;
|
gDynamicBasePower = (40 * powerBits) / 63 + 30;
|
||||||
|
|
||||||
gBattleStruct->dynamicMoveType = (15 * typeBits) / 63 + 1;
|
gBattleStruct->dynamicMoveType = (15 * typeBits) / 63 + 1;
|
||||||
if (gBattleStruct->dynamicMoveType > 8)
|
if (gBattleStruct->dynamicMoveType >= TYPE_MYSTERY)
|
||||||
gBattleStruct->dynamicMoveType++;
|
gBattleStruct->dynamicMoveType++;
|
||||||
gBattleStruct->dynamicMoveType |= 0xC0;
|
gBattleStruct->dynamicMoveType |= 0xC0;
|
||||||
|
|
||||||
gBattlescriptCurrInstr++;
|
gBattlescriptCurrInstr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
ASM_DIRECT
|
|
||||||
static void atkC1_hiddenpowercalc(void)
|
|
||||||
{
|
|
||||||
asm(".syntax unified\n\
|
|
||||||
push {r4-r7,lr}\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
mov r6, r9\n\
|
|
||||||
mov r5, r8\n\
|
|
||||||
push {r5-r7}\n\
|
|
||||||
ldr r2, =gBattleMons\n\
|
|
||||||
ldr r0, =gBattlerAttacker\n\
|
|
||||||
ldrb r1, [r0]\n\
|
|
||||||
movs r0, 0x58\n\
|
|
||||||
adds r4, r1, 0\n\
|
|
||||||
muls r4, r0\n\
|
|
||||||
adds r4, r2\n\
|
|
||||||
ldrb r0, [r4, 0x14]\n\
|
|
||||||
mov r10, r0\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
lsls r7, 27\n\
|
|
||||||
adds r0, r7, 0\n\
|
|
||||||
lsrs r0, 27\n\
|
|
||||||
mov r10, r0\n\
|
|
||||||
movs r1, 0x2\n\
|
|
||||||
mov r2, r10\n\
|
|
||||||
ands r2, r1\n\
|
|
||||||
asrs r2, 1\n\
|
|
||||||
ldrh r7, [r4, 0x14]\n\
|
|
||||||
mov r9, r7\n\
|
|
||||||
mov r0, r9\n\
|
|
||||||
lsls r0, 22\n\
|
|
||||||
mov r9, r0\n\
|
|
||||||
lsrs r3, r0, 27\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
ands r0, r3\n\
|
|
||||||
orrs r2, r0\n\
|
|
||||||
ldrb r7, [r4, 0x15]\n\
|
|
||||||
mov r8, r7\n\
|
|
||||||
mov r0, r8\n\
|
|
||||||
lsls r0, 25\n\
|
|
||||||
mov r8, r0\n\
|
|
||||||
lsrs r3, r0, 27\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
ands r0, r3\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
orrs r2, r0\n\
|
|
||||||
ldr r6, [r4, 0x14]\n\
|
|
||||||
lsls r6, 12\n\
|
|
||||||
lsrs r3, r6, 27\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
ands r0, r3\n\
|
|
||||||
lsls r0, 2\n\
|
|
||||||
orrs r2, r0\n\
|
|
||||||
ldrh r5, [r4, 0x16]\n\
|
|
||||||
lsls r5, 23\n\
|
|
||||||
lsrs r3, r5, 27\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
ands r0, r3\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
orrs r2, r0\n\
|
|
||||||
ldrb r3, [r4, 0x17]\n\
|
|
||||||
lsls r3, 26\n\
|
|
||||||
lsrs r0, r3, 27\n\
|
|
||||||
ands r1, r0\n\
|
|
||||||
lsls r1, 4\n\
|
|
||||||
orrs r2, r1\n\
|
|
||||||
movs r1, 0x1\n\
|
|
||||||
adds r4, r1, 0\n\
|
|
||||||
mov r7, r10\n\
|
|
||||||
ands r4, r7\n\
|
|
||||||
mov r0, r9\n\
|
|
||||||
lsrs r0, 27\n\
|
|
||||||
mov r9, r0\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
mov r7, r9\n\
|
|
||||||
ands r0, r7\n\
|
|
||||||
lsls r0, 1\n\
|
|
||||||
orrs r4, r0\n\
|
|
||||||
mov r0, r8\n\
|
|
||||||
lsrs r0, 27\n\
|
|
||||||
mov r8, r0\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
mov r7, r8\n\
|
|
||||||
ands r0, r7\n\
|
|
||||||
lsls r0, 2\n\
|
|
||||||
orrs r4, r0\n\
|
|
||||||
lsrs r6, 27\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
ands r0, r6\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
orrs r4, r0\n\
|
|
||||||
lsrs r5, 27\n\
|
|
||||||
adds r0, r1, 0\n\
|
|
||||||
ands r0, r5\n\
|
|
||||||
lsls r0, 4\n\
|
|
||||||
orrs r4, r0\n\
|
|
||||||
lsrs r3, 27\n\
|
|
||||||
ands r1, r3\n\
|
|
||||||
lsls r1, 5\n\
|
|
||||||
orrs r4, r1\n\
|
|
||||||
ldr r5, =gDynamicBasePower\n\
|
|
||||||
lsls r0, r2, 2\n\
|
|
||||||
adds r0, r2\n\
|
|
||||||
lsls r0, 3\n\
|
|
||||||
movs r1, 0x3F\n\
|
|
||||||
bl __divsi3\n\
|
|
||||||
adds r0, 0x1E\n\
|
|
||||||
strh r0, [r5]\n\
|
|
||||||
ldr r6, =gBattleStruct\n\
|
|
||||||
ldr r5, [r6]\n\
|
|
||||||
lsls r0, r4, 4\n\
|
|
||||||
subs r0, r4\n\
|
|
||||||
movs r1, 0x3F\n\
|
|
||||||
bl __divsi3\n\
|
|
||||||
adds r0, 0x1\n\
|
|
||||||
strb r0, [r5, 0x13]\n\
|
|
||||||
ldr r1, [r6]\n\
|
|
||||||
ldrb r0, [r1, 0x13]\n\
|
|
||||||
cmp r0, 0x8\n\
|
|
||||||
bls _080544F0\n\
|
|
||||||
adds r0, 0x1\n\
|
|
||||||
strb r0, [r1, 0x13]\n\
|
|
||||||
_080544F0:\n\
|
|
||||||
ldr r2, [r6]\n\
|
|
||||||
ldrb r0, [r2, 0x13]\n\
|
|
||||||
movs r1, 0xC0\n\
|
|
||||||
orrs r0, r1\n\
|
|
||||||
strb r0, [r2, 0x13]\n\
|
|
||||||
ldr r1, =gBattlescriptCurrInstr\n\
|
|
||||||
ldr r0, [r1]\n\
|
|
||||||
adds r0, 0x1\n\
|
|
||||||
str r0, [r1]\n\
|
|
||||||
pop {r3-r5}\n\
|
|
||||||
mov r8, r3\n\
|
|
||||||
mov r9, r4\n\
|
|
||||||
mov r10, r5\n\
|
|
||||||
pop {r4-r7}\n\
|
|
||||||
pop {r0}\n\
|
|
||||||
bx r0\n\
|
|
||||||
.pool\n\
|
|
||||||
.syntax divided");
|
|
||||||
}
|
|
||||||
#endif // NONMATCHING
|
|
||||||
|
|
||||||
static void atkC2_selectfirstvalidtarget(void)
|
static void atkC2_selectfirstvalidtarget(void)
|
||||||
{
|
{
|
||||||
for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++)
|
for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user