diff --git a/src/dungeon_action.c b/src/dungeon_action.c index e487eefec..70dc65ee0 100644 --- a/src/dungeon_action.c +++ b/src/dungeon_action.c @@ -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) {