mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-06 20:05:15 -05:00
Match CheckElectricAbilities
Thanks to wizard @jiangzhengwenjz
This commit is contained in:
parent
4c760a92cb
commit
44094d9fdd
|
|
@ -1,6 +1,7 @@
|
|||
#include "global.h"
|
||||
#include "dungeon_action.h"
|
||||
|
||||
#include "constants/ability.h"
|
||||
#include "constants/dungeon_action.h"
|
||||
#include "dungeon_entity.h"
|
||||
#include "dungeon_global_data.h"
|
||||
|
|
@ -31,7 +32,6 @@ extern void sub_8043ED0(u32);
|
|||
extern void sub_807EAA0(u32, u32);
|
||||
extern void UseAttack(u32);
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void CheckElectricAbilities(void)
|
||||
{
|
||||
struct DungeonEntityData * entityData;
|
||||
|
|
@ -57,18 +57,22 @@ void CheckElectricAbilities(void)
|
|||
entityData2 = entityData;
|
||||
entityData->attacking = FALSE;
|
||||
|
||||
// should be isNotEnemy = (entityData->isEnemy != '\0');
|
||||
// gets a neg/orr/lsr instead of cmp/beq
|
||||
isNotEnemy = (entityData->isEnemy == 0);
|
||||
if(entityData->isEnemy)
|
||||
{
|
||||
isNotEnemy = FALSE;
|
||||
}
|
||||
else {
|
||||
isNotEnemy = TRUE;
|
||||
}
|
||||
|
||||
if (HasAbility(entity, 0x32)) { // ABILITY_LIGHTNINGROD
|
||||
if (HasAbility(entity, ABILITY_LIGHTNINGROD)) { // ABILITY_LIGHTNINGROD
|
||||
gDungeonGlobalData->lightningRodPokemon = entity;
|
||||
gDungeonGlobalData->unk17B38 = entityData2->unk98;
|
||||
}
|
||||
if (HasAbility(entity, 0x3f)) { // ABILITY_MINUS
|
||||
if (HasAbility(entity, ABILITY_MINUS)) { // ABILITY_MINUS
|
||||
gDungeonGlobalData->hasMinus[isNotEnemy] = TRUE;
|
||||
}
|
||||
if (HasAbility(entity, 0x38)) { // ABILITY_PLUS
|
||||
if (HasAbility(entity, ABILITY_PLUS)) { // ABILITY_PLUS
|
||||
gDungeonGlobalData->hasPlus[isNotEnemy] = TRUE;
|
||||
}
|
||||
}
|
||||
|
|
@ -76,149 +80,6 @@ void CheckElectricAbilities(void)
|
|||
sub_8043ED0(0);
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void CheckElectricAbilities(void)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r8\n"
|
||||
"\tpush {r7}\n"
|
||||
"\tldr r1, _08044A94\n"
|
||||
"\tldr r4, _08044A98\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r2, 0xCC\n"
|
||||
"\tlsls r2, 3\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"\tldrsh r0, [r0, r3]\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tadds r1, 0x32\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08044A8A\n"
|
||||
"\tbl sub_8071B48\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r2, _08044A9C\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r3, _08044AA0\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r1, _08044AA4\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tldr r3, _08044AA8\n"
|
||||
"\tadds r1, r0, r3\n"
|
||||
"\tstr r2, [r1]\n"
|
||||
"\tldr r1, _08044AAC\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tmovs r1, 0x2\n"
|
||||
"\tstr r1, [r0]\n"
|
||||
"\tmov r8, r2\n"
|
||||
"\tadds r7, r4, 0\n"
|
||||
"_080449F2:\n"
|
||||
"\tldr r0, [r7]\n"
|
||||
"\tmov r2, r8\n"
|
||||
"\tlsls r1, r2, 2\n"
|
||||
"\tldr r3, _08044AB0\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldr r5, [r0]\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl EntityExists\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08044A7A\n"
|
||||
"\tldr r0, [r5, 0x70]\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tmovs r0, 0xA4\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tadds r1, r4, r0\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstrb r0, [r1]\n"
|
||||
"\tldrb r0, [r4, 0x6]\n"
|
||||
"\tmovs r6, 0x1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08044A24\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"_08044A24:\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tmovs r1, 0x32\n"
|
||||
"\tbl HasAbility\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08044A46\n"
|
||||
"\tldr r1, [r7]\n"
|
||||
"\tldr r2, _08044AA8\n"
|
||||
"\tadds r0, r1, r2\n"
|
||||
"\tstr r5, [r0]\n"
|
||||
"\tldr r3, _08044AAC\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tadds r0, 0x98\n"
|
||||
"\tldr r0, [r0]\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"_08044A46:\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tmovs r1, 0x3F\n"
|
||||
"\tbl HasAbility\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08044A60\n"
|
||||
"\tldr r0, [r7]\n"
|
||||
"\tldr r1, _08044AA4\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tadds r0, r6\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"_08044A60:\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tmovs r1, 0x38\n"
|
||||
"\tbl HasAbility\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08044A7A\n"
|
||||
"\tldr r0, [r7]\n"
|
||||
"\tldr r2, _08044A9C\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tadds r0, r6\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"_08044A7A:\n"
|
||||
"\tmovs r3, 0x1\n"
|
||||
"\tadd r8, r3\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tcmp r0, 0x13\n"
|
||||
"\tble _080449F2\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tbl sub_8043ED0\n"
|
||||
"_08044A8A:\n"
|
||||
"\tpop {r3}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08044A94: .4byte gSpeedTurns\n"
|
||||
"_08044A98: .4byte gDungeonGlobalData\n"
|
||||
"_08044A9C: .4byte 0x000037f8\n"
|
||||
"_08044AA0: .4byte 0x000037f9\n"
|
||||
"_08044AA4: .4byte 0x000037fa\n"
|
||||
"_08044AA8: .4byte 0x00017b2c\n"
|
||||
"_08044AAC: .4byte 0x00017b38\n"
|
||||
"_08044AB0: .4byte 0x000135cc");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_8044AB4(void)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user