battle/action_cmd (#348)

* compile

* improve match

* improve

* ~check_block_input

* match LoadActionCommand

* cleanup

* match SetupMashMeter

* check_block_input much closer

* name action_cmd segments

* make better for great good

* improve again

* revert removing blah

* close

* improve

* match func_80268224

* match func_80268284 wrappers

* improvements

* work on func_80268938

* maide changes to check_block_input

* check_block_input :OK: - thanks Maide!

Co-authored-by: Ethan Roseman <ethteck@gmail.com>
This commit is contained in:
alex 2021-07-31 17:50:10 +01:00 committed by GitHub
parent 5d69c3454f
commit b48eb150d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
208 changed files with 1326 additions and 777 deletions

View File

@ -227,8 +227,8 @@ typedef struct PlayerData {
/* 0x293 */ char unk_293[0x1];
/* 0x294 */ s16 otherHitsTaken;
/* 0x296 */ s16 unk_296;
/* 0x298 */ s16 hitsTaken;
/* 0x29A */ s16 hitsBlocked;
/* 0x298 */ u16 hitsTaken;
/* 0x29A */ u16 hitsBlocked;
/* 0x29C */ s16 playerFirstStrikes;
/* 0x29E */ s16 enemyFirstStrikes;
/* 0x2A0 */ u16 powerBounces;
@ -690,7 +690,8 @@ typedef struct BattleStatus {
/* 0x0A5 */ u8 cloudNineDodgeChance; /* = 50% */
/* 0x0A6 */ char unk_A6[2];
/* 0x0A8 */ s32 cloudNineEffect;
/* 0x0AC */ char unk_AC[2];
/* 0x0AC */ char unk_AC;
/* 0x0AD */ s8 unk_AD;
/* 0x0AE */ u8 hammerLossTurns;
/* 0x0AF */ u8 jumpLossTurns;
/* 0x0B0 */ u8 itemLossTurns;
@ -729,10 +730,10 @@ typedef struct BattleStatus {
/* 0x19A */ u8 unk_19A;
/* 0x19B */ char unk_19B[5];
/* 0x1A0 */ s16 currentTargetID; /* selected? */
/* 0x1A2 */ u8 currentTargetPart; /* selected? */
/* 0x1A2 */ s8 currentTargetPart; /* selected? */
/* 0x1A3 */ char unk_1A3;
/* 0x1A4 */ s16 currentTargetID2;
/* 0x1A6 */ u8 currentTargetPart2;
/* 0x1A6 */ s8 currentTargetPart2;
/* 0x1A7 */ s8 battlePhase;
/* 0x1A8 */ s16 attackerActorID;
/* 0x1AA */ char unk_1AA[4];
@ -751,7 +752,7 @@ typedef struct BattleStatus {
/* 0x22C */ s32 dpadY; /* 0-60 */
/* 0x230 */ s32 holdInputBuffer[64];
/* 0x330 */ s32 pushInputBuffer[64];
/* 0x430 */ u8 holdInputBufferPos;
/* 0x430 */ s8 holdInputBufferPos;
/* 0x431 */ s8 inputBufferPos;
/* 0x432 */ s8 unk_432;
/* 0x433 */ char unk_433;
@ -1736,7 +1737,7 @@ typedef struct Actor {
/* 0x198 */ Vec2b unk_198;
/* 0x19A */ s8 unk_19A;
/* 0x19B */ char unk_19B[1];
/* 0x19C */ s32 actorTypeData1[6]; /* 4 = jump sound */
/* 0x19C */ s32 actorTypeData1[6]; /* 4 = jump sound, 5 = attack sound */ // TODO: struct
/* 0x1B4 */ s16 actorTypeData1b[2];
/* 0x1B8 */ s8 currentHP;
/* 0x1B9 */ s8 maxHP;
@ -1784,10 +1785,10 @@ typedef struct Actor {
/* 0x21C */ u8 status;
/* 0x21D */ char unk_21D[3];
/* 0x220 */ s8 isGlowing;
/* 0x221 */ u8 attackBoost;
/* 0x221 */ s8 attackBoost;
/* 0x222 */ s8 defenseBoost;
/* 0x223 */ u8 chillOutAmount; /* attack reduction */
/* 0x224 */ u8 chillOutTurns;
/* 0x223 */ s8 chillOutAmount; /* attack reduction */
/* 0x224 */ s8 chillOutTurns;
/* 0x225 */ char unk_225[3];
/* 0x228 */ EffectInstance* unk_228;
/* 0x22C */ struct SelectableTarget targetData[24];

View File

@ -517,7 +517,7 @@ enum SoundIDs {
SOUND_E3,
SOUND_E9 = 233,
SOUND_EA,
SOUND_EB,
SOUND_FREEZE,
SOUND_10C = 268,
SOUND_10D,
SOUND_STEP1 = 321,
@ -528,6 +528,7 @@ enum SoundIDs {
SOUND_HIT_BLOCK = 334,
SOUND_SEARCH_BUSH = 339,
SOUND_UNKNOWN_162 = 354,
SOUND_SMASH_GOOMNUT_TREE = 357,
SOUND_BASIC_DOOR_OPEN = 449,
SOUND_BASIC_DOOR_CLOSE,
SOUND_METAL_DOOR_OPEN,
@ -600,6 +601,8 @@ enum SoundIDs {
SOUND_UNKNOWN_202E,
SOUND_UNKNOWN_202F,
SOUND_UNKNOWN_2030,
SOUND_INFLICT_SLEEP,
SOUND_INFLICT_STATUS, //< Stop, poison, paralyze
SOUND_UNKNOWN_2038 = 8248,
SOUND_UNKNOWN_2039,
SOUND_BOMB_BLAST = 8310,
@ -1096,6 +1099,7 @@ typedef UNK_TYPE HitResult;
enum HitResults {
HIT_RESULT_TRIGGERED_EXPLODE = -1,
HIT_RESULT_HIT,
HIT_RESULT_MISS_QUAKE = 2,
HIT_RESULT_LANDED_ON_SPIKE = 4,
HIT_RESULT_LUCKY,
HIT_RESULT_MISS,
@ -1201,8 +1205,9 @@ enum Events {
EVENT_STAR_BEAM = 19,
EVENT_POWER_BOUNCE_HIT = 21,
EVENT_BLOW_AWAY,
EVENT_23 = 23,
EVENT_IMMUNE = 25,
EVENT_23,
EVENT_24,
EVENT_IMMUNE,
EVENT_BLOCK,
EVENT_SPIKE_TAUNT,
EVENT_BURN_TAUNT,
@ -1215,7 +1220,8 @@ enum Events {
EVENT_SHOCK_DEATH = 38,
EVENT_SPIKE_DEATH,
EVENT_POWER_BOUNCE_DEATH,
EVENT_SPIKE_CONTACT = 42,
EVENT_41, // burn death copy?
EVENT_SPIKE_CONTACT,
EVENT_BURN_CONTACT = 44,
EVENT_SHOCK_HIT = 47,
EVENT_RECOVER_STATUS = 49,
@ -1257,6 +1263,7 @@ enum Statuses {
STATUS_STONE,
STATUS_DAZE,
STATUS_E,
STATUS_KO,
STATUS_BERSERK = 16,
STATUS_TURN_DONE = 18,
STATUS_HUSTLE = 25,
@ -1272,7 +1279,8 @@ enum Statuses {
STATUS_POISON_TURN_MOD,
STATUS_PARALYZE_TURN_MOD,
STATUS_SHRINK_TURN_MOD,
STATUS_STOP_TURN_MOD = 41,
STATUS_STONE_TURN_MOD,
STATUS_STOP_TURN_MOD,
};
typedef UNK_TYPE DoorSwing;
@ -1470,8 +1478,8 @@ typedef UNK_TYPE StatusFlag;
enum StatusFlags {
STATUS_FLAG_SLEEP = 0x00001000,
STATUS_FLAG_STATIC = 0x00002000,
STATUS_FLAG_FROZEN = 0x00004000,
STATUS_FLAG_UNKNOWN_STATUS3 = 0x00008000,
STATUS_FLAG_FROZEN = 0x00004000, // TODO: rename to "freeze"
STATUS_FLAG_FEAR = 0x00008000,
STATUS_FLAG_PARALYZE = 0x00010000,
STATUS_FLAG_POISON = 0x00020000,
STATUS_FLAG_DIZZY = 0x00040000,
@ -1500,6 +1508,7 @@ enum DamageTypes {
DAMAGE_TYPE_BLAST = 0x00000200,
DAMAGE_TYPE_POW = 0x00000400,
DAMAGE_TYPE_QUAKE = 0x00000800,
DAMAGE_TYPE_4000 = 0x00004000,
DAMAGE_TYPE_THROW = 0x00040000,
DAMAGE_TYPE_IGNORE_DEFENSE = 0x08000000,
DAMAGE_TYPE_NO_CONTACT = 0x10000000,
@ -1646,12 +1655,14 @@ enum ActorFlags {
ACTOR_FLAG_TARGET_ONLY = 0x00004000, ///< Battle ends even if undefeated. No turn.
ACTOR_FLAG_80000 = 0x00080000,
ACTOR_FLAG_NO_ATTACK = 0x00200000, ///< Skip attack turn.
ACTOR_FLAG_NO_DMG_APPLY = 0x00400000, ///< Damage is not applied to actor HP.
ACTOR_FLAG_NO_DMG_POPUP = 0x02000000, ///< Hide damage popup.
ACTOR_FLAG_10000000 = 0x10000000,
};
enum ActorPartFlags {
PART_FLAG_INVISIBLE = 0x00000001,
PART_FLAG_2000 = 0x00002000, ///< Plays extra hurt SFX?
PART_FLAG_NO_TARGET = 0x00020000, ///< Cannot be targeted.
PART_FLAG_MULTI_TARGET = 0x00800000, ///< Can be targeted with multi-target attacks (e.g. Star Storm).
};

View File

@ -44,7 +44,7 @@ u32 get_entity_type(s32 arg0);
Entity* get_entity_by_index(s32 index);
s32 create_entity(StaticEntityData*, s32, s32, s32, s32, s32);
void entity_shattering_idle(Entity* entity);
void func_802666E4(Actor* actor, f32 arg1, f32 arg2, f32 arg3, s16);
void func_802666E4(Actor* actor, f32 x, f32 y, f32 z, s16 damage);
void step_game_loop(void);
s32 resume_all_group(s32 groupFlags);

View File

@ -321,7 +321,7 @@ extern Script DoParalyzeHit;
extern Script DoPoisonHit;
extern Script DoStopHit;
extern Script DoFreezeHit;
extern Script DoShinkHit;
extern Script DoShrinkHit;
extern Script ForceNextTarget;
extern Script DoNormalHit;
extern Script DoBurnHit;

View File

@ -1441,7 +1441,7 @@ INCLUDE_ASM(void, "190B20", func_802666E4, Actor* actor, f32 arg1, f32 arg2, f32
INCLUDE_ASM(void, "190B20", func_802667F0, s32 arg0, Actor* arg1, f32 arg2, f32 arg3, f32 arg4);
INCLUDE_ASM(s32, "190B20", func_80266970);
INCLUDE_ASM(void, "190B20", func_80266970, Actor* target);
INCLUDE_ASM(s32, "190B20", func_80266978);

View File

@ -1,26 +1,235 @@
#include "common.h"
INCLUDE_ASM(s32, "196AA0", LoadActionCommand);
// TODO: move to src/battle/action_cmd.c
INCLUDE_ASM(s32, "196AA0", func_80268224);
enum ActionCommand {
ACTION_COMMAND_JUMP = 1,
ACTION_COMMAND_SMASH,
ACTION_COMMAND_FLEE,
ACTION_COMMAND_BREAK_FREE,
ACTION_COMMAND_WHIRLWIND,
ACTION_COMMAND_STOP_LEECH,
ACTION_COMMAND_07,
ACTION_COMMAND_DIZZY_SHELL,
ACTION_COMMAND_FIRE_SHELL,
ACTION_COMMAND_0A,
ACTION_COMMAND_BOMB,
ACTION_COMMAND_BODY_SLAM,
ACTION_COMMAND_AIR_LIFT,
ACTION_COMMAND_AIR_RAID,
ACTION_COMMAND_SQUIRT,
ACTION_COMMAND_POWER_SHOCK,
ACTION_COMMAND_MEGA_SHOCK,
ACTION_COMMAND_SMACK,
ACTION_COMMAND_SPINY_SURGE,
ACTION_COMMAND_HURRICANE,
ACTION_COMMAND_SPOOK,
ACTION_COMMAND_WATER_BLOCK,
ACTION_COMMAND_TIDAL_WAVE,
};
// action command state
extern struct D_8029FBE0 {
/* 0x00 */ char unk_00[0x4A];
/* 0x4A */ s16 unk_4A; // current action command id?
/* 0x4C */ s16 unk_4C;
/* 0x4E */ char unk_4E[0x10];
/* 0x5E */ s8 unk_5E;
/* 0x5F */ s8 unk_5F;
/* 0x60 */ s8 unk_60;
/* 0x61 */ s8 unk_61;
/* 0x62 */ s16 unk_62;
/* 0x64 */ s16 unk_64;
/* 0x66 */ s16 unk_66;
/* 0x68 */ s16 unk_68;
/* 0x6A */ s16 unk_6A;
/* 0x6C */ s16 unk_6C;
/* 0x6E */ s16 hitsTakenIsMax;
/* 0x70 */ char unk_70[2];
/* 0x72 */ char unk_72[2];
/* 0x74 */ s16 unk_74;
/* 0x76 */ s16 unk_76;
/* 0x78 */ s16 unk_78;
/* 0x7A */ s16 unk_7A;
/* 0x7C */ s16 unk_7C;
/* 0x7E */ s16 unk_7E;
/* 0x80 */ s8 unk_80;
} D_8029FBE0; // size unknown
extern void* actionCommandDmaTable[23];
extern s32 D_8029FBC0;
ApiStatus LoadActionCommand(ScriptInstance* script, s32 isInitialCall) {
s32 cmd = get_variable(script, *script->ptrReadPos);
dma_copy(actionCommandDmaTable[cmd * 3], actionCommandDmaTable[cmd * 3 + 1], actionCommandDmaTable[cmd * 3 + 2]);
return ApiStatus_DONE2;
}
s32 func_80268224(s32 arg0) {
if (!(gBattleStatus.flags1 & 0x80000)) {
arg0 -= is_ability_active(ABILITY_DODGE_MASTER) * 3;
}
if (arg0 < 0) {
arg0 = 0;
}
if (arg0 > 7) {
arg0 = 7;
}
return arg0;
}
INCLUDE_ASM(s32, "196AA0", func_80268284);
INCLUDE_ASM(s32, "196AA0", func_80268770);
void func_80268770(s32 arg0, s32 arg1, s32 arg2) {
D_8029FBC0 = 2;
func_80268284(arg0, arg1, arg2, 0);
}
INCLUDE_ASM(s32, "196AA0", func_80268798);
void func_80268798(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
D_8029FBC0 = arg3;
func_80268284(arg0, arg1, arg2, 0);
}
INCLUDE_ASM(s32, "196AA0", func_802687BC);
void func_802687BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
D_8029FBC0 = 2;
func_80268284(arg0, arg1, arg2, arg3);
}
INCLUDE_ASM(s32, "196AA0", func_802687E4);
void func_802687E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
D_8029FBC0 = arg3;
func_80268284(arg0, arg1, arg2, arg4);
}
INCLUDE_ASM(s32, "196AA0", func_8026880C);
void func_8026880C(s32 arg0, s32 arg1, s32 arg2) {
D_8029FBC0 = 2;
func_80268284(arg0, arg1, arg2, -1);
}
INCLUDE_ASM(s32, "196AA0", func_80268834);
void func_80268834(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
D_8029FBC0 = arg3;
func_80268284(arg0, arg1, arg2, -1);
}
INCLUDE_ASM(s32, "196AA0", func_80268858);
void func_80268858(void) {
struct D_8029FBE0* d8029FBE0 = &D_8029FBE0;
d8029FBE0->unk_5E = FALSE;
d8029FBE0->unk_6A = FALSE;
if (!(gBattleStatus.flags1 & 0x80000)) {
if (is_ability_active(ABILITY_RIGHT_ON)) {
d8029FBE0->unk_5E = TRUE;
}
if (!(gBattleStatus.flags1 & 0x80000) && is_ability_active(ABILITY_BERSERKER)) {
d8029FBE0->unk_61 = FALSE;
d8029FBE0->unk_6A = TRUE;
if (rand_int(100) < 25) {
d8029FBE0->unk_5E = TRUE;
}
}
}
if (gGameStatusPtr->demoFlags & 1) {
d8029FBE0->unk_5E = TRUE;
}
if (gBattleStatus.flags1 & 0x1000) {
d8029FBE0->unk_5E = TRUE;
d8029FBE0->unk_61 = FALSE;
}
}
// action_cmd_current_main - calls current action command's main func
#ifdef NON_MATCHING
void func_80268938(void) {
enum ActionCommand ac;
if (gBattleStatus.flags1 & 0x8000) {
func_80268C9C();
}
ac = D_8029FBE0.unk_4A;
switch (ac) {
case ACTION_COMMAND_JUMP:
func_802A9234_421C24();
return;
case ACTION_COMMAND_SMASH:
func_802A936C_42236C();
return;
case ACTION_COMMAND_FLEE:
func_802A9378_422E48();
return;
case ACTION_COMMAND_BREAK_FREE:
func_802A92DC_4236CC();
return;
case ACTION_COMMAND_WHIRLWIND:
func_802A92F0_423F60();
return;
case ACTION_COMMAND_STOP_LEECH:
func_802A91F8_425788();
return;
case ACTION_COMMAND_07:
func_802A9228_425D78();
return;
case ACTION_COMMAND_DIZZY_SHELL:
func_802A928C_4263FC();
return;
case ACTION_COMMAND_FIRE_SHELL:
func_802A9294_426C64();
return;
case ACTION_COMMAND_0A:
func_802A928C_4263FC();
return;
case ACTION_COMMAND_BOMB:
func_802A928C_4263FC();
return;
case ACTION_COMMAND_BODY_SLAM:
func_802A92D4_4285B4();
return;
case ACTION_COMMAND_AIR_LIFT:
func_802A9278_428CE8();
return;
case ACTION_COMMAND_AIR_RAID:
func_802A9294_426C64();
return;
case ACTION_COMMAND_SQUIRT:
func_802A9208_429F28();
return;
case ACTION_COMMAND_POWER_SHOCK:
func_802A9310_42D220();
return;
case ACTION_COMMAND_MEGA_SHOCK:
func_802A92A0_422D70();
return;
case ACTION_COMMAND_SMACK:
func_802A9298_42E638();
return;
case ACTION_COMMAND_SPINY_SURGE:
func_802A9254_42F074();
return;
case ACTION_COMMAND_HURRICANE:
func_802A92A0_422D70();
return;
case ACTION_COMMAND_SPOOK:
func_802A9298_42E638();
return;
case ACTION_COMMAND_WATER_BLOCK:
func_802A948C_42A97C();
return;
case ACTION_COMMAND_TIDAL_WAVE:
func_802A9228_425D78();
return;
}
}
#else
INCLUDE_ASM(s32, "196AA0", func_80268938);
#endif
INCLUDE_ASM(s32, "196AA0", func_80268AF8);
@ -28,7 +237,109 @@ INCLUDE_ASM(s32, "196AA0", func_80268C9C);
INCLUDE_ASM(s32, "196AA0", func_80268E88);
INCLUDE_ASM(s32, "196AA0", check_block_input);
s32 check_block_input(s32 buttonMask) {
BattleStatus* battleStatus = &gBattleStatus;
PlayerData* playerData = &gPlayerData;
struct D_8029FBE0* d8029FBE0 = &D_8029FBE0;
s32 mashWindow;
s32 blockWindow;
s32 block;
s32 mash = FALSE;
s32 bufferPos;
s32 i;
s32 ignoreWindow;
battleStatus->blockResult = 0; // Fail
if (battleStatus->unk_83 == -1 && (battleStatus->flags1 & 0x2000000)) {
battleStatus->blockResult = 1;
return TRUE;
}
if (!battleStatus->unk_83 || (gGameStatusPtr->demoFlags & 1)) {
return FALSE;
}
if (playerData->hitsTaken < 9999) {
playerData->hitsTaken += 1;
d8029FBE0->hitsTakenIsMax = FALSE;
} else {
d8029FBE0->hitsTakenIsMax = TRUE;
}
block = FALSE;
blockWindow = 3;
mashWindow = 10;
if (!(gBattleStatus.flags1 & 0x80000) && is_ability_active(ABILITY_DODGE_MASTER)) {
blockWindow = 5;
}
// Pre-window mashing check
bufferPos = battleStatus->inputBufferPos;
bufferPos -= mashWindow + blockWindow;
if (bufferPos < 0) {
bufferPos += ARRAY_COUNT(battleStatus->pushInputBuffer);
}
for (i = 0; i < mashWindow; i++) {
if (bufferPos >= ARRAY_COUNT(battleStatus->pushInputBuffer)) {
bufferPos -= ARRAY_COUNT(battleStatus->pushInputBuffer);
}
if (battleStatus->pushInputBuffer[bufferPos] & buttonMask) {
mash = TRUE;
break;
}
bufferPos++;
}
// Block check
bufferPos = battleStatus->inputBufferPos;
bufferPos -= blockWindow;
if (bufferPos < 0) {
bufferPos += ARRAY_COUNT(battleStatus->pushInputBuffer);
}
for (i = 0; i < blockWindow; i++) {
if (bufferPos >= ARRAY_COUNT(battleStatus->pushInputBuffer)) {
bufferPos -= ARRAY_COUNT(battleStatus->pushInputBuffer);
}
if (battleStatus->pushInputBuffer[bufferPos] & buttonMask) {
battleStatus->blockResult = 1; // Block
block = TRUE;
break;
}
bufferPos++;
}
if (mash) {
battleStatus->blockResult = -1; // Mash
block = FALSE;
}
// Ignore inputs until another mash window has passed, so check_block_input() can be called in quick succession
if (block == TRUE) {
bufferPos = battleStatus->inputBufferPos;
bufferPos -= mashWindow + blockWindow;
if (bufferPos < 0) {
bufferPos += ARRAY_COUNT(battleStatus->pushInputBuffer);
}
for (i = 0; i < mashWindow + blockWindow; i++) {
if (bufferPos >= ARRAY_COUNT(battleStatus->pushInputBuffer)) {
bufferPos -= ARRAY_COUNT(battleStatus->pushInputBuffer);
}
battleStatus->pushInputBuffer[bufferPos] = 0;
bufferPos++;
}
}
if (block && !d8029FBE0->hitsTakenIsMax) {
playerData->hitsBlocked += 1;
}
return block;
}
INCLUDE_ASM(s32, "196AA0", func_80269118);
@ -39,7 +350,17 @@ ApiStatus func_8026919C(ScriptInstance* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
INCLUDE_ASM(s32, "196AA0", SetupMashMeter);
ApiStatus SetupMashMeter(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
D_8029FBE0.unk_80 = get_variable(script, *args++);
D_8029FBE0.unk_76 = get_variable(script, *args++);
D_8029FBE0.unk_78 = get_variable(script, *args++);
D_8029FBE0.unk_7A = get_variable(script, *args++);
D_8029FBE0.unk_7C = get_variable(script, *args++);
D_8029FBE0.unk_7E = get_variable(script, *args++);
D_8029FBE0.unk_74 = D_8029FBE0.unk_76 / 2;
return ApiStatus_DONE2;
}
ApiStatus GetActionSuccess(ScriptInstance* script, s32 isInitialCall) {
set_variable(script, *script->ptrReadPos, gBattleStatus.actionSuccess);

View File

@ -1,9 +1,14 @@
#include "common.h"
#include "battle/battle.h"
#include "script_api/battle.h"
#include "effects.h"
extern s32 D_802946E0[];
void dispatch_event_actor(Actor* actor, Event event);
void func_8024EFE0(f32 x, f32 y, f32 z, s32 a, s32 b);
void func_802664DC(f32 x, f32 y, f32 z, s32 damage);
s32 dispatch_damage_event_actor_1(Actor* actor, s32 damageAmount, s32 event);
s32 func_80263230(Actor*, Actor*);
void func_80267018(Actor* actor, s32 arg1);
@ -38,63 +43,63 @@ void dispatch_event_general(Actor* actor, Event event) {
}
void play_hit_sound(Actor* actor, f32 x, f32 y, f32 z, u32 hitSound) {
s32 actorType = actor->actorID & 0x700;
s32 actorKind = actor->actorID & 0x700;
switch (hitSound) {
case 0:
case HIT_SOUND_MISS:
sfx_play_sound_at_position(SOUND_10C, 0, x, y, z);
break;
case 1:
case HIT_SOUND_BONES:
sfx_play_sound_at_position(SOUND_10D, 0, x, y, z);
break;
case 2:
switch (actorType) {
case 0:
case HIT_SOUND_NORMAL:
switch (actorKind) {
case ACTOR_PLAYER:
sfx_play_sound_at_position(SOUND_E1, 0, x, y, z);
break;
case 0x100:
case ACTOR_PARTNER:
sfx_play_sound_at_position(SOUND_E9, 0, x, y, z);
break;
case 0x200:
case ACTOR_ENEMY0:
sfx_play_sound_at_position(SOUND_E9, 0, x, y, z);
break;
}
break;
case 3:
switch (actorType) {
case 0:
case HIT_SOUND_FIRE:
switch (actorKind) {
case ACTOR_PLAYER:
sfx_play_sound_at_position(SOUND_E2, 0, x, y, z);
break;
case 0x100:
case ACTOR_PARTNER:
sfx_play_sound_at_position(SOUND_EA, 0, x, y, z);
break;
case 0x200:
case ACTOR_ENEMY0:
sfx_play_sound_at_position(SOUND_EA, 0, x, y, z);
break;
}
break;
case 4:
switch (actorType) {
case 0:
case HIT_SOUND_ICE:
switch (actorKind) {
case ACTOR_PLAYER:
sfx_play_sound_at_position(SOUND_E3, 0, x, y, z);
break;
case 0x100:
sfx_play_sound_at_position(SOUND_EB, 0, x, y, z);
case ACTOR_PARTNER:
sfx_play_sound_at_position(SOUND_FREEZE, 0, x, y, z);
break;
case 0x200:
sfx_play_sound_at_position(SOUND_EB, 0, x, y, z);
case ACTOR_ENEMY0:
sfx_play_sound_at_position(SOUND_FREEZE, 0, x, y, z);
break;
}
break;
case 5:
switch (actorType) {
case 0:
case HIT_SOUND_SHOCK:
switch (actorKind) {
case ACTOR_PLAYER:
sfx_play_sound_at_position(SOUND_37A, 0, x, y, z);
break;
case 0x100:
case ACTOR_PARTNER:
sfx_play_sound_at_position(SOUND_37B, 0, x, y, z);
break;
case 0x200:
case ACTOR_ENEMY0:
sfx_play_sound_at_position(SOUND_37B, 0, x, y, z);
break;
}
@ -129,7 +134,579 @@ void dispatch_event_actor(Actor* actor, Event event) {
INCLUDE_ASM(s32, "1A5830", calc_enemy_test_target);
#ifdef NON_MATCHING
// attacker needs to be in 0x58(sp) not a save register
s32 calc_enemy_damage_target(Actor* attacker) {
Actor *target;
s32 attack;
s32 eventFlags;
s32 targetID;
s32 defense;
s32 attackElement;
s32 targetPartIdx;
ActorMovementWalk* walk;
s32 phi_s2;
s8 phi_s5;
s8 phi_s7;
s32 isFire = FALSE;
s32 isElectric = FALSE;
s32 isEnchanted = FALSE;
s32 damage;
ActorPart* targetPart;
BattleStatus* battleStatus = &gBattleStatus;
s32 hitResult = HIT_RESULT_HIT; // ?
targetID = battleStatus->currentTargetID;
targetPartIdx = battleStatus->currentTargetPart;
battleStatus->wasStatusInflicted = FALSE;
battleStatus->lastAttackDamage = 0;
battleStatus->currentTargetID2 = targetID;
battleStatus->attackerActorID = attacker->actorID;
battleStatus->currentTargetPart2 = targetPartIdx;
walk = &attacker->walk;
target = get_actor(targetID);
if (target == NULL) {
return HIT_RESULT_HIT;
}
targetPart = get_actor_part(target, targetPartIdx);
ASSERT(targetPart != NULL);
targetID &= 0x700;
target->lastDamageTaken = 0;
/*
if (targetID != ACTOR_PARTNER) {
if (targetID < 0x101 && targetID == 0) {
target->currentHP = (s8) (u8) gPlayerData.curHP;
}
} else {
target->currentHP = 127;
}
*/
switch (targetID) {
case ACTOR_PLAYER:
target->currentHP = gPlayerData.curHP;
break;
case ACTOR_PARTNER:
target->currentHP = 127;
break;
}
eventFlags = targetPart->eventFlags;
if ((eventFlags & 0x20) == 0) {
if (target->transStatus == 0xE) {
return HIT_RESULT_MISS;
}
if (((eventFlags & 0x800) != 0) && ((battleStatus->currentAttackElement & 0x800) == 0)) {
return HIT_RESULT_MISS;
}
if (target->stoneStatus == STATUS_STONE) {
func_8024EFE0(walk->goalPos.x, walk->goalPos.y, /*eventFlags,*/ walk->goalPos.z, /*0,*/ 1, -1);
show_damage_popup(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0, 0);
play_hit_sound(attacker, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0);
dispatch_event_general(target, EVENT_IMMUNE);
return HIT_RESULT_HIT;
}
if ((battleStatus->currentAttackElement & DAMAGE_TYPE_BLAST) && !(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT) && (targetPart->eventFlags & EVENT_FLAG_EXPLOSIVE)) {
play_hit_sound(attacker, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 3);
dispatch_event_general(target, EVENT_EXPLODE_TRIGGER);
return HIT_RESULT_TRIGGERED_EXPLODE;
}
if ((battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE) && (target->flags & ACTOR_FLAG_FLYING)) {
play_hit_sound(attacker, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 1);
return HIT_RESULT_MISS_QUAKE;
}
if (battleStatus->currentAttackElement & DAMAGE_TYPE_FIRE) {
playFX_24(0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z + 5.0f, 1.0f, 0x18);
isFire = TRUE;
}
if (battleStatus->currentAttackElement & DAMAGE_TYPE_ELECTRIC) {
func_80251474(target);
isElectric = TRUE;
}
if (battleStatus->currentAttackElement & DAMAGE_TYPE_WATER) {
playFX_5F(0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z + 5.0f, 1.0f, 0x18);
}
if (battleStatus->currentAttackElement & DAMAGE_TYPE_ICE) {
playFX_30(0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z + 5.0f);
}
// TODO: if/else ordering
if (attacker->staticStatus == STATUS_STATIC) {
gBattleStatus.flags1 &= ~1;
} else if ((targetPart->eventFlags & EVENT_FLAG_ELECTRIFIED) && !(battleStatus->currentAttackElement & 0x10000020)) {
if (!(battleStatus->currentAttackEventSuppression & 8)) {
if (!has_enchanted_part(attacker)) {
battleStatus->flags1 |= 0x20;
}
gBattleStatus.flags1 &= ~1;
}
} else {
gBattleStatus.flags1 &= ~1;
}
defense = get_defense(target, targetPart->defenseTable, gBattleStatus.currentAttackElement);
attackElement = gBattleStatus.currentAttackElement;
if (!(attackElement & DAMAGE_TYPE_IGNORE_DEFENSE)) {
defense += target->defenseBoost;
if (targetID == ACTOR_PLAYER) {
if (battleStatus->waterBlockTurnsLeft > 0) {
if (!(attackElement & (DAMAGE_TYPE_BLAST | DAMAGE_TYPE_FIRE))) {
defense += 1;
} else {
defense += 2;
}
}
if (gBattleStatus.flags1 & 0x400000) {
defense += 1;
}
}
}
attack = battleStatus->currentAttackDamage;
switch (targetID) {
case ACTOR_PARTNER:
break;
case ACTOR_PLAYER:
attack -= battleStatus->unk_AD;
break;
}
attack += attacker->attackBoost;
if (attacker->chillOutTurns != 0) {
attack -= attacker->chillOutAmount;
}
if (attacker->debuff == STATUS_SHRINK) {
if (attack > 0) {
attack /= 2;
}
}
if (attack > 99) {
attack = 99;
}
if (attack <= 0) {
attack = 0;
}
target->hpChangeCounter = 0;
damage = attack - defense;
if (targetID == ACTOR_PLAYER) {
if (player_team_is_ability_active(target, ABILITY_FIRE_SHIELD)) {
if (battleStatus->currentAttackElement & DAMAGE_TYPE_FIRE) {
damage--;
}
}
damage -= player_team_is_ability_active(target, ABILITY_DEFEND_PLUS);
damage -= player_team_is_ability_active(target, ABILITY_P_DOWN_D_UP);
damage += player_team_is_ability_active(target, ABILITY_P_UP_D_DOWN);
if (target->currentHP <= 5) {
if (player_team_is_ability_active(target, ABILITY_LAST_STAND)) {
damage /= 2;
}
}
}
switch (targetID) {
case ACTOR_PLAYER:
if ((target->debuff == 0 || target->debuff >= STATUS_POISON) && (target->stoneStatus == 0) && ((battleStatus->currentAttackElement & 0x2000000) == 0)) {
s32 blocked;
if (player_team_is_ability_active(target, ABILITY_BERSERKER)) {
blocked = rand_int(1);
} else {
blocked = check_block_input(BUTTON_A);
}
if (blocked) {
damage = damage - 1 - player_team_is_ability_active(target, ABILITY_DAMAGE_DODGE);
sfx_play_sound_at_position(0x231, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
func_802667F0(0, target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
gBattleStatus.flags1 |= 0x80000000;
}
func_80266970(target);
}
break;
case ACTOR_PARTNER:
if ((target->stoneStatus == 0) && (target->koStatus == 0) && ((battleStatus->currentAttackElement & 0x2000000) == 0)) {
if (check_block_input(BUTTON_A)) {
damage = 0;
sfx_play_sound_at_position(0x231, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
func_802667F0(0, target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
gBattleStatus.flags1 |= 0x80000000;
}
func_80266970(target);
}
break;
}
if (gBattleStatus.flags1 & 0x20) {
func_80266970(target);
}
if (damage <= 0) {
target->hpChangeCounter = 0;
if ((battleStatus->currentAttackElement & 0x40000000) == 0) {
hitResult = HIT_RESULT_MISS_QUAKE;
phi_s2 = 0x17;
} else {
hitResult = HIT_RESULT_MISS_QUAKE;
phi_s2 = 0x17;
if (target->currentHP <= 0) {
phi_s2 = EVENT_DEATH;
}
}
battleStatus->lastAttackDamage = 0;
} else {
target->damageCounter += damage;
target->hpChangeCounter -= damage;
battleStatus->lastAttackDamage = 0;
hitResult = HIT_RESULT_HIT; //phi_s2 = 9;
if (!(targetPart->flags & PART_FLAG_2000)) {
if (!(battleStatus->flags1 & 0x2000000)) {
if (!(target->flags & ACTOR_FLAG_NO_DMG_APPLY)) {
target->currentHP -= damage;
}
if (target->currentHP <= 0) {
target->currentHP = 0;
phi_s2 = EVENT_DEATH;
}
}
}
battleStatus->lastAttackDamage += damage;
target->lastDamageTaken = battleStatus->lastAttackDamage;
target->hpChangeCounter = 0;
if (targetID == ACTOR_PLAYER) {
battleStatus->damageTaken += damage;
gPlayerData.curHP = target->currentHP;
}
}
if (gBattleStatus.flags1 & 0x20) {
if (phi_s2 == 9) {
phi_s2 = 0xA;
}
if (phi_s2 == 0x17) {
phi_s2 = 0x19;
}
if (target->currentHP <= 0) {
if (phi_s2 == 0x19) {
phi_s2 = 0x20;
}
}
} else {
if (phi_s2 == 0x20) {
phi_s2 = 9;
}
}
if (gBattleStatus.flags1 & 0x20) {
func_80266E14(targetPart);
if (gBattleStatus.currentAttackElement & (DAMAGE_TYPE_POW | DAMAGE_TYPE_QUAKE | DAMAGE_TYPE_JUMP)) {
if (targetPart->eventFlags & EVENT_FLAG_FLIPABLE) {
if (phi_s2 == 0xA) {
phi_s2 = EVENT_FLIP_TRIGGER;
}
if (phi_s2 == 0x19) {
phi_s2 = EVENT_FLIP_TRIGGER;
}
}
}
}
if (!(gBattleStatus.flags1 & 0x20)) {
if (battleStatus->currentAttackElement & (DAMAGE_TYPE_POW | DAMAGE_TYPE_QUAKE | DAMAGE_TYPE_JUMP)) {
if (targetPart->eventFlags & EVENT_FLAG_FLIPABLE) {
if (phi_s2 == EVENT_HIT_COMBO) {
phi_s2 = EVENT_FLIP_TRIGGER;
}
if (phi_s2 == EVENT_23) {
phi_s2 = EVENT_FLIP_TRIGGER;
}
}
}
} else if (battleStatus->currentAttackElement & (DAMAGE_TYPE_FIRE | DAMAGE_TYPE_BLAST | DAMAGE_TYPE_4000)) {
if (phi_s2 == 0xA) {
phi_s2 = EVENT_BURN_HIT;
}
if (phi_s2 == EVENT_DEATH) {
phi_s2 = EVENT_41;
}
}
if (gBattleStatus.flags1 & 0x80000000) {
if (phi_s2 == EVENT_HIT_COMBO) {
phi_s2 = EVENT_24;
}
if (phi_s2 == EVENT_HIT) {
phi_s2 = EVENT_BLOCK;
}
if (phi_s2 == EVENT_23) {
phi_s2 = EVENT_24;
}
if (phi_s2 == EVENT_IMMUNE) {
phi_s2 = EVENT_BLOCK;
}
if (phi_s2 == EVENT_BURN_HIT) {
phi_s2 = EVENT_BLOCK;
}
}
phi_s5 = FALSE;
phi_s7 = FALSE; // what is this for
if (gBattleStatus.flags1 & 0x20) {
if (battleStatus->lastAttackDamage >= 0 && phi_s2 != EVENT_DEATH && phi_s2 != EVENT_SPIN_SMASH_DEATH) {
if (phi_s2 != EVENT_EXPLODE_TRIGGER) {
if (!(battleStatus->flags1 & 0x80000000)) {
if (!(battleStatus->flags2 & 0x1000000)) {
if (targetID != ACTOR_PLAYER || !is_ability_active(ABILITY_HEALTHY_HEALTHY) || !(rand_int(100) < 20)) {
if ((battleStatus->currentAttackStatus & STATUS_FLAG_SHRINK) && try_inflict_status(target, STATUS_SHRINK, STATUS_SHRINK_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_POISON) && try_inflict_status(target, STATUS_POISON, STATUS_POISON_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_STONE) && try_inflict_status(target, STATUS_STONE, STATUS_STONE_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_SLEEP) && try_inflict_status(target, STATUS_SLEEP, STATUS_SLEEP_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY) && try_inflict_status(target, STATUS_DIZZY, STATUS_DIZZY_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_STOP) && try_inflict_status(target, STATUS_STOP, STATUS_STOP_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_STATIC) && try_inflict_status(target, STATUS_STATIC, STATUS_STATIC_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE) && try_inflict_status(target, STATUS_PARALYZE, STATUS_PARALYZE_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_FEAR) && try_inflict_status(target, STATUS_FEAR, STATUS_FEAR_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
// BUG? repeated paralyse and dizzy infliction
if ((battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE) && try_inflict_status(target, STATUS_PARALYZE, STATUS_PARALYZE_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY) && try_inflict_status(target, STATUS_DIZZY, STATUS_DIZZY_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_FROZEN) && target->debuff != STATUS_FROZEN && try_inflict_status(target, STATUS_FROZEN, STATUS_FROZEN_TURN_MOD)) {
phi_s5 = TRUE;
phi_s7 = TRUE;
}
if (phi_s5) {
if (phi_s2 == EVENT_23) {
phi_s2 = EVENT_HIT_COMBO;
}
if (phi_s2 == EVENT_IMMUNE) {
phi_s2 = EVENT_HIT;
}
}
}
}
}
}
}
}
battleStatus->wasStatusInflicted = phi_s5;
switch (targetID) {
case ACTOR_PARTNER:
dispatch_event_partner(phi_s2);
break;
case ACTOR_PLAYER:
dispatch_event_player(target, phi_s2);
break;
case ACTOR_ENEMY0:
dispatch_event_actor(target, phi_s2);
break;
}
if (targetID == ACTOR_PARTNER) {
if (battleStatus->lastAttackDamage > 0 && (gBattleStatus.flags1 & 0x20) && !(target->flags & ACTOR_FLAG_NO_DMG_APPLY)) {
inflict_partner_ko(target, STATUS_KO, battleStatus->lastAttackDamage);
}
}
if (!(target->flags & ACTOR_FLAG_NO_DMG_POPUP)) {
switch (targetID) {
case ACTOR_PARTNER:
case ACTOR_PLAYER:
if (battleStatus->lastAttackDamage == 0) {
if (!phi_s7 && !phi_s5) {
// immune star fx?
func_8024EFE0(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0, -3);
}
} else {
if (battleStatus->currentAttackElement & 0x20000040) { // TODO flags
show_damage_popup(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage, 1);
} else {
func_802664DC(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage);
}
func_802666E4(target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage);
}
break;
case ACTOR_ENEMY0:
if (battleStatus->lastAttackDamage == 0) {
if (!phi_s7 && !phi_s5) {
func_8024EFE0(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, 0, 3);
}
} else {
if (battleStatus->currentAttackElement & 0x20000040) {
// XXX: last arg
show_damage_popup(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage, 0);
} else {
func_802664DC(walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage);
}
func_802666E4(target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, battleStatus->lastAttackDamage);
}
break;
}
}
if (battleStatus->lastAttackDamage > 0) {
u32 hitSound;
func_80267018(target, 1);
if (attacker->actorTypeData1[5] != 0) {
sfx_play_sound_at_position(attacker->actorTypeData1[5], 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
hitSound = HIT_SOUND_FIRE;
if (!isFire) {
hitSound = HIT_SOUND_SHOCK;
if (!isElectric) {
hitSound = HIT_SOUND_NORMAL;
}
}
play_hit_sound(target, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z, hitSound);
} else { // maybe not else
if (phi_s7 || isEnchanted) {
if (targetPart->flags & PART_FLAG_2000) {
sfx_play_sound_at_position(SOUND_10C, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
}
}
// possibly vars stored as floats
if ((battleStatus->currentAttackStatus & STATUS_FLAG_SLEEP) && phi_s5) {
ScriptInstance* script = start_script(&DoSleepHit, 10, 0);
script->varTable[0] = walk->goalPos.x;
script->varTable[1] = walk->goalPos.y;
script->varTable[2] = walk->goalPos.z;
sfx_play_sound_at_position(SOUND_INFLICT_SLEEP, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_DIZZY) && phi_s5) {
ScriptInstance* script = start_script(&DoDizzyHit, 10, 0);
script->varTable[0] = walk->goalPos.x;
script->varTable[1] = walk->goalPos.y;
script->varTable[2] = walk->goalPos.z;
sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_PARALYZE) && phi_s5) {
ScriptInstance* script = start_script(&DoParalyzeHit, 10, 0);
script->varTable[0] = walk->goalPos.x;
script->varTable[1] = walk->goalPos.y;
script->varTable[2] = walk->goalPos.z;
sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_POISON) && phi_s5) {
ScriptInstance* script = start_script(&DoPoisonHit, 10, 0);
script->varTable[0] = walk->goalPos.x;
script->varTable[1] = walk->goalPos.y;
script->varTable[2] = walk->goalPos.z;
sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_STOP) && phi_s5) {
ScriptInstance* script = start_script(&DoStopHit, 10, 0);
script->varTable[0] = walk->goalPos.x;
script->varTable[1] = walk->goalPos.y;
script->varTable[2] = walk->goalPos.z;
sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_FROZEN) && phi_s5) {
ScriptInstance* script = start_script(&DoFreezeHit, 10, 0);
script->varTable[0] = walk->goalPos.x;
script->varTable[1] = walk->goalPos.y;
script->varTable[2] = walk->goalPos.z;
script->varTable[3] = target;
sfx_play_sound_at_position(SOUND_FREEZE, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
if ((battleStatus->currentAttackStatus & STATUS_FLAG_SHRINK) && phi_s5) {
ScriptInstance* script = start_script(&DoShrinkHit, 10, 0);
script->varTable[0] = walk->goalPos.x;
script->varTable[1] = walk->goalPos.y;
script->varTable[2] = walk->goalPos.z;
script->varTable[3] = target;
sfx_play_sound_at_position(SOUND_INFLICT_STATUS, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
if ((battleStatus->currentAttackElement & DAMAGE_TYPE_SMASH) && target->actorType == ACTOR_TYPE_goomnut_tree) {
sfx_play_sound_at_position(SOUND_SMASH_GOOMNUT_TREE, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
}
func_80266ADC(target);
if (
(
attacker->staticStatus != STATUS_STATIC
&& (target->staticStatus == STATUS_STATIC || (targetPart->eventFlags & EVENT_FLAG_ELECTRIFIED))
)
&& !(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT)
&& !(battleStatus->currentAttackEventSuppression & 8)
&& (attacker->transStatus != 0xE)
&& !has_enchanted_part(attacker)
) {
// enum mismatch? shock vs explode :raised_eyebrow:
sfx_play_sound_at_position(SOUND_37B, 0, walk->goalPos.x, walk->goalPos.y, walk->goalPos.z);
func_80251474(attacker);
dispatch_damage_event_actor_1(attacker, 1, EVENT_SHOCK_HIT);
return HIT_RESULT_TRIGGERED_EXPLODE;
}
}
return hitResult;
}
#else
INCLUDE_ASM(s32, "1A5830", calc_enemy_damage_target);
#endif
// part before the first conditional needs work

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "4219F0", func_802A9000_4219F0);
INCLUDE_ASM(s32, "4219F0", func_802A9120_421B10);
INCLUDE_ASM(s32, "4219F0", func_802A9234_421C24);
INCLUDE_ASM(s32, "4219F0", func_802A9544_421F34);
INCLUDE_ASM(s32, "4219F0", func_802A9590_421F80);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "422000", func_802A9000_422000);
INCLUDE_ASM(s32, "422000", func_802A9258_422258);
INCLUDE_ASM(s32, "422000", func_802A936C_42236C);
INCLUDE_ASM(s32, "422000", func_802A99D4_4229D4);
INCLUDE_ASM(s32, "422000", func_802A9A30_422A30);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "422AD0", func_802A9000_422AD0);
INCLUDE_ASM(s32, "422AD0", func_802A92A0_422D70);
INCLUDE_ASM(s32, "422AD0", func_802A9378_422E48);
INCLUDE_ASM(s32, "422AD0", func_802A96F4_4231C4);
INCLUDE_ASM(s32, "422AD0", func_802A9894_423364);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "4233F0", func_802A9000_4233F0);
INCLUDE_ASM(s32, "4233F0", func_802A91B0_4235A0);
INCLUDE_ASM(s32, "4233F0", func_802A92DC_4236CC);
INCLUDE_ASM(s32, "4233F0", func_802A96B8_423AA8);
INCLUDE_ASM(s32, "4233F0", func_802A97FC_423BEC);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "423C70", func_802A9000_423C70);
INCLUDE_ASM(s32, "423C70", func_802A91E0_423E50);
INCLUDE_ASM(s32, "423C70", func_802A92F0_423F60);
INCLUDE_ASM(s32, "423C70", func_802A9744_4243B4);
INCLUDE_ASM(s32, "423C70", func_802A9898_424508);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "425590", func_802A9000_425590);
INCLUDE_ASM(s32, "425590", func_802A9110_4256A0);
INCLUDE_ASM(s32, "425590", func_802A91F8_425788);
INCLUDE_ASM(s32, "425590", func_802A94A4_425A34);
INCLUDE_ASM(s32, "425590", func_802A9544_425AD4);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "425B50", func_802A9000_425B50);
INCLUDE_ASM(s32, "425B50", func_802A916C_425CBC);
INCLUDE_ASM(s32, "425B50", func_802A9228_425D78);
INCLUDE_ASM(s32, "425B50", func_802A94D8_426028);
INCLUDE_ASM(s32, "425B50", func_802A959C_4260EC);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "426170", func_802A9000_426170);
INCLUDE_ASM(s32, "426170", func_802A9170_4262E0);
INCLUDE_ASM(s32, "426170", func_802A928C_4263FC);
INCLUDE_ASM(s32, "426170", func_802A96DC_42684C);
INCLUDE_ASM(s32, "426170", func_802A97BC_42692C);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "4269D0", func_802A9000_4269D0);
INCLUDE_ASM(s32, "4269D0", func_802A9178_426B48);
INCLUDE_ASM(s32, "4269D0", func_802A9294_426C64);
INCLUDE_ASM(s32, "4269D0", func_802A9834_427204);
INCLUDE_ASM(s32, "4269D0", func_802A9914_4272E4);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "4273B0", func_802A9000_4273B0);
INCLUDE_ASM(s32, "4273B0", func_802A9170_427520);
INCLUDE_ASM(s32, "4273B0", func_802A928C_42763C);
INCLUDE_ASM(s32, "4273B0", func_802A955C_42790C);
INCLUDE_ASM(s32, "4273B0", func_802A963C_4279EC);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "427A70", func_802A9000_427A70);
INCLUDE_ASM(s32, "427A70", func_802A9170_427BE0);
INCLUDE_ASM(s32, "427A70", func_802A928C_427CFC);
INCLUDE_ASM(s32, "427A70", func_802A96EC_42815C);
INCLUDE_ASM(s32, "427A70", func_802A97CC_42823C);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "4282E0", func_802A9000_4282E0);
INCLUDE_ASM(s32, "4282E0", func_802A91B8_428498);
INCLUDE_ASM(s32, "4282E0", func_802A92D4_4285B4);
INCLUDE_ASM(s32, "4282E0", func_802A9664_428944);
INCLUDE_ASM(s32, "4282E0", func_802A9708_4289E8);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "428A70", func_802A9000_428A70);
INCLUDE_ASM(s32, "428A70", func_802A9184_428BF4);
INCLUDE_ASM(s32, "428A70", func_802A9278_428CE8);
INCLUDE_ASM(s32, "428A70", func_802A96EC_42915C);
INCLUDE_ASM(s32, "428A70", func_802A9810_429280);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "429320", func_802A9000_429320);
INCLUDE_ASM(s32, "429320", func_802A9178_429498);
INCLUDE_ASM(s32, "429320", func_802A9294_4295B4);
INCLUDE_ASM(s32, "429320", func_802A984C_429B6C);
INCLUDE_ASM(s32, "429320", func_802A992C_429C4C);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "429D20", func_802A9000_429D20);
INCLUDE_ASM(s32, "429D20", func_802A911C_429E3C);
INCLUDE_ASM(s32, "429D20", func_802A9208_429F28);
INCLUDE_ASM(s32, "429D20", func_802A9634_42A354);
INCLUDE_ASM(s32, "429D20", func_802A9720_42A440);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "42A4F0", func_802A9000_42A4F0);
INCLUDE_ASM(s32, "42A4F0", func_802A9398_42A888);
INCLUDE_ASM(s32, "42A4F0", func_802A948C_42A97C);
INCLUDE_ASM(s32, "42A4F0", func_802AA014_42B504);
INCLUDE_ASM(s32, "42A4F0", func_802AA0D8_42B5C8);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "42C6F0", func_802A9000_42C6F0);
INCLUDE_ASM(s32, "42C6F0", func_802A9138_42C828);
INCLUDE_ASM(s32, "42C6F0", func_802A9228_42C918);
INCLUDE_ASM(s32, "42C6F0", func_802A9718_42CE08);
INCLUDE_ASM(s32, "42C6F0", func_802A9764_42CE54);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "42CF10", func_802A9000_42CF10);
INCLUDE_ASM(s32, "42CF10", func_802A9210_42D120);
INCLUDE_ASM(s32, "42CF10", func_802A9310_42D220);
INCLUDE_ASM(s32, "42CF10", func_802A98D0_42D7E0);
INCLUDE_ASM(s32, "42CF10", func_802A9A54_42D964);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "42DA10", func_802A9000_42DA10);
INCLUDE_ASM(s32, "42DA10", func_802A91A0_42DBB0);
INCLUDE_ASM(s32, "42DA10", func_802A92A0_42DCB0);
INCLUDE_ASM(s32, "42DA10", func_802A97F8_42E208);
INCLUDE_ASM(s32, "42DA10", func_802A98E0_42E2F0);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "42E3A0", func_802A9000_42E3A0);
INCLUDE_ASM(s32, "42E3A0", func_802A917C_42E51C);
INCLUDE_ASM(s32, "42E3A0", func_802A9298_42E638);
INCLUDE_ASM(s32, "42E3A0", func_802A98B0_42EC50);
INCLUDE_ASM(s32, "42E3A0", func_802A9990_42ED30);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "42EE20", func_802A9000_42EE20);
INCLUDE_ASM(s32, "42EE20", func_802A916C_42EF8C);
INCLUDE_ASM(s32, "42EE20", func_802A9254_42F074);
INCLUDE_ASM(s32, "42EE20", func_802A973C_42F55C);
INCLUDE_ASM(s32, "42EE20", func_802A981C_42F63C);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "42F6E0", func_802A9000_42F6E0);
INCLUDE_ASM(s32, "42F6E0", func_802A91A0_42F880);
INCLUDE_ASM(s32, "42F6E0", func_802A92A0_42F980);
INCLUDE_ASM(s32, "42F6E0", func_802A97AC_42FE8C);
INCLUDE_ASM(s32, "42F6E0", func_802A9894_42FF74);

View File

@ -1,11 +0,0 @@
#include "common.h"
INCLUDE_ASM(s32, "430020", func_802A9000_430020);
INCLUDE_ASM(s32, "430020", func_802A917C_43019C);
INCLUDE_ASM(s32, "430020", func_802A9298_4302B8);
INCLUDE_ASM(s32, "430020", func_802A97FC_43081C);
INCLUDE_ASM(s32, "430020", func_802A98DC_4308FC);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/07", func_802A9000_425B50);
INCLUDE_ASM(s32, "battle/action_cmd/07", func_802A916C_425CBC);
INCLUDE_ASM(s32, "battle/action_cmd/07", func_802A9228_425D78);
INCLUDE_ASM(s32, "battle/action_cmd/07", func_802A94D8_426028);
INCLUDE_ASM(s32, "battle/action_cmd/07", func_802A959C_4260EC);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/0A", func_802A9000_4273B0);
INCLUDE_ASM(s32, "battle/action_cmd/0A", func_802A9170_427520);
INCLUDE_ASM(s32, "battle/action_cmd/0A", func_802A928C_42763C);
INCLUDE_ASM(s32, "battle/action_cmd/0A", func_802A955C_42790C);
INCLUDE_ASM(s32, "battle/action_cmd/0A", func_802A963C_4279EC);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/air_lift", func_802A9000_428A70);
INCLUDE_ASM(s32, "battle/action_cmd/air_lift", func_802A9184_428BF4);
INCLUDE_ASM(s32, "battle/action_cmd/air_lift", func_802A9278_428CE8);
INCLUDE_ASM(s32, "battle/action_cmd/air_lift", func_802A96EC_42915C);
INCLUDE_ASM(s32, "battle/action_cmd/air_lift", func_802A9810_429280);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/air_raid", func_802A9000_429320);
INCLUDE_ASM(s32, "battle/action_cmd/air_raid", func_802A9178_429498);
INCLUDE_ASM(s32, "battle/action_cmd/air_raid", func_802A9294_4295B4);
INCLUDE_ASM(s32, "battle/action_cmd/air_raid", func_802A984C_429B6C);
INCLUDE_ASM(s32, "battle/action_cmd/air_raid", func_802A992C_429C4C);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/body_slam", func_802A9000_4282E0);
INCLUDE_ASM(s32, "battle/action_cmd/body_slam", func_802A91B8_428498);
INCLUDE_ASM(s32, "battle/action_cmd/body_slam", func_802A92D4_4285B4);
INCLUDE_ASM(s32, "battle/action_cmd/body_slam", func_802A9664_428944);
INCLUDE_ASM(s32, "battle/action_cmd/body_slam", func_802A9708_4289E8);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/bomb", func_802A9000_427A70);
INCLUDE_ASM(s32, "battle/action_cmd/bomb", func_802A9170_427BE0);
INCLUDE_ASM(s32, "battle/action_cmd/bomb", func_802A928C_427CFC);
INCLUDE_ASM(s32, "battle/action_cmd/bomb", func_802A96EC_42815C);
INCLUDE_ASM(s32, "battle/action_cmd/bomb", func_802A97CC_42823C);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/break_free", func_802A9000_4233F0);
INCLUDE_ASM(s32, "battle/action_cmd/break_free", func_802A91B0_4235A0);
INCLUDE_ASM(s32, "battle/action_cmd/break_free", func_802A92DC_4236CC);
INCLUDE_ASM(s32, "battle/action_cmd/break_free", func_802A96B8_423AA8);
INCLUDE_ASM(s32, "battle/action_cmd/break_free", func_802A97FC_423BEC);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/dizzy_shell", func_802A9000_426170);
INCLUDE_ASM(s32, "battle/action_cmd/dizzy_shell", func_802A9170_4262E0);
INCLUDE_ASM(s32, "battle/action_cmd/dizzy_shell", func_802A928C_4263FC);
INCLUDE_ASM(s32, "battle/action_cmd/dizzy_shell", func_802A96DC_42684C);
INCLUDE_ASM(s32, "battle/action_cmd/dizzy_shell", func_802A97BC_42692C);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/fire_shell", func_802A9000_4269D0);
INCLUDE_ASM(s32, "battle/action_cmd/fire_shell", func_802A9178_426B48);
INCLUDE_ASM(s32, "battle/action_cmd/fire_shell", func_802A9294_426C64);
INCLUDE_ASM(s32, "battle/action_cmd/fire_shell", func_802A9834_427204);
INCLUDE_ASM(s32, "battle/action_cmd/fire_shell", func_802A9914_4272E4);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/flee", func_802A9000_422AD0);
INCLUDE_ASM(s32, "battle/action_cmd/flee", func_802A92A0_422D70);
INCLUDE_ASM(s32, "battle/action_cmd/flee", func_802A9378_422E48);
INCLUDE_ASM(s32, "battle/action_cmd/flee", func_802A96F4_4231C4);
INCLUDE_ASM(s32, "battle/action_cmd/flee", func_802A9894_423364);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/hammer", func_802A9000_422000);
INCLUDE_ASM(s32, "battle/action_cmd/hammer", func_802A9258_422258);
INCLUDE_ASM(s32, "battle/action_cmd/hammer", func_802A936C_42236C);
INCLUDE_ASM(s32, "battle/action_cmd/hammer", func_802A99D4_4229D4);
INCLUDE_ASM(s32, "battle/action_cmd/hammer", func_802A9A30_422A30);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/hurricane", func_802A9000_42F6E0);
INCLUDE_ASM(s32, "battle/action_cmd/hurricane", func_802A91A0_42F880);
INCLUDE_ASM(s32, "battle/action_cmd/hurricane", func_802A92A0_42F980);
INCLUDE_ASM(s32, "battle/action_cmd/hurricane", func_802A97AC_42FE8C);
INCLUDE_ASM(s32, "battle/action_cmd/hurricane", func_802A9894_42FF74);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/jump", func_802A9000_4219F0);
INCLUDE_ASM(s32, "battle/action_cmd/jump", func_802A9120_421B10);
INCLUDE_ASM(s32, "battle/action_cmd/jump", func_802A9234_421C24);
INCLUDE_ASM(s32, "battle/action_cmd/jump", func_802A9544_421F34);
INCLUDE_ASM(s32, "battle/action_cmd/jump", func_802A9590_421F80);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/mega_shock", func_802A9000_42DA10);
INCLUDE_ASM(s32, "battle/action_cmd/mega_shock", func_802A91A0_42DBB0);
INCLUDE_ASM(s32, "battle/action_cmd/mega_shock", func_802A92A0_42DCB0);
INCLUDE_ASM(s32, "battle/action_cmd/mega_shock", func_802A97F8_42E208);
INCLUDE_ASM(s32, "battle/action_cmd/mega_shock", func_802A98E0_42E2F0);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/power_shock", func_802A9000_42CF10);
INCLUDE_ASM(s32, "battle/action_cmd/power_shock", func_802A9210_42D120);
INCLUDE_ASM(s32, "battle/action_cmd/power_shock", func_802A9310_42D220);
INCLUDE_ASM(s32, "battle/action_cmd/power_shock", func_802A98D0_42D7E0);
INCLUDE_ASM(s32, "battle/action_cmd/power_shock", func_802A9A54_42D964);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/smack", func_802A9000_42E3A0);
INCLUDE_ASM(s32, "battle/action_cmd/smack", func_802A917C_42E51C);
INCLUDE_ASM(s32, "battle/action_cmd/smack", func_802A9298_42E638);
INCLUDE_ASM(s32, "battle/action_cmd/smack", func_802A98B0_42EC50);
INCLUDE_ASM(s32, "battle/action_cmd/smack", func_802A9990_42ED30);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/spiny_surge", func_802A9000_42EE20);
INCLUDE_ASM(s32, "battle/action_cmd/spiny_surge", func_802A916C_42EF8C);
INCLUDE_ASM(s32, "battle/action_cmd/spiny_surge", func_802A9254_42F074);
INCLUDE_ASM(s32, "battle/action_cmd/spiny_surge", func_802A973C_42F55C);
INCLUDE_ASM(s32, "battle/action_cmd/spiny_surge", func_802A981C_42F63C);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/spook", func_802A9000_430020);
INCLUDE_ASM(s32, "battle/action_cmd/spook", func_802A917C_43019C);
INCLUDE_ASM(s32, "battle/action_cmd/spook", func_802A9298_4302B8);
INCLUDE_ASM(s32, "battle/action_cmd/spook", func_802A97FC_43081C);
INCLUDE_ASM(s32, "battle/action_cmd/spook", func_802A98DC_4308FC);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9000_429D20);
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A911C_429E3C);
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9208_429F28);
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9634_42A354);
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9720_42A440);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/stop_leech", func_802A9000_425590);
INCLUDE_ASM(s32, "battle/action_cmd/stop_leech", func_802A9110_4256A0);
INCLUDE_ASM(s32, "battle/action_cmd/stop_leech", func_802A91F8_425788);
INCLUDE_ASM(s32, "battle/action_cmd/stop_leech", func_802A94A4_425A34);
INCLUDE_ASM(s32, "battle/action_cmd/stop_leech", func_802A9544_425AD4);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/tidal_wave", func_802A9000_42C6F0);
INCLUDE_ASM(s32, "battle/action_cmd/tidal_wave", func_802A9138_42C828);
INCLUDE_ASM(s32, "battle/action_cmd/tidal_wave", func_802A9228_42C918);
INCLUDE_ASM(s32, "battle/action_cmd/tidal_wave", func_802A9718_42CE08);
INCLUDE_ASM(s32, "battle/action_cmd/tidal_wave", func_802A9764_42CE54);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/water_block", func_802A9000_42A4F0);
INCLUDE_ASM(s32, "battle/action_cmd/water_block", func_802A9398_42A888);
INCLUDE_ASM(s32, "battle/action_cmd/water_block", func_802A948C_42A97C);
INCLUDE_ASM(s32, "battle/action_cmd/water_block", func_802AA014_42B504);
INCLUDE_ASM(s32, "battle/action_cmd/water_block", func_802AA0D8_42B5C8);

View File

@ -0,0 +1,11 @@
#include "common.h"
INCLUDE_ASM(s32, "battle/action_cmd/whirlwind", func_802A9000_423C70);
INCLUDE_ASM(s32, "battle/action_cmd/whirlwind", func_802A91E0_423E50);
INCLUDE_ASM(s32, "battle/action_cmd/whirlwind", func_802A92F0_423F60);
INCLUDE_ASM(s32, "battle/action_cmd/whirlwind", func_802A9744_4243B4);
INCLUDE_ASM(s32, "battle/action_cmd/whirlwind", func_802A9898_424508);

View File

@ -992,8 +992,34 @@ glabel D_80294460
glabel D_802944A0
.word 0x00000082, 0x00000078, 0x0000006E, 0x00000064, 0x0000005A, 0x00000050, 0x00000046, 0x0000003C
glabel D_802944C0
.word 0x00000000, 0x00000000, 0x00000000, 0x004219F0, 0x00422000, func_802A9000_4219F0, 0x00422000, 0x00422AD0, func_802A9000_4219F0, 0x00422AD0, 0x004233F0, func_802A9000_4219F0, 0x004233F0, 0x00423C70, func_802A9000_4219F0, 0x00423C70, 0x00425590, func_802A9000_4219F0, 0x00425590, 0x00425B50, func_802A9000_4219F0, 0x00425B50, 0x00426170, func_802A9000_4219F0, 0x00426170, 0x004269D0, func_802A9000_4219F0, 0x004269D0, 0x004273B0, func_802A9000_4219F0, 0x004273B0, 0x00427A70, func_802A9000_4219F0, 0x00427A70, 0x004282E0, func_802A9000_4219F0, 0x004282E0, 0x00428A70, func_802A9000_4219F0, 0x00428A70, 0x00429320, func_802A9000_4219F0, 0x00429320, 0x00429D20, func_802A9000_4219F0, 0x00429D20, 0x0042A4F0, func_802A9000_4219F0, 0x0042CF10, 0x0042DA10, func_802A9000_4219F0, 0x0042DA10, 0x0042E3A0, func_802A9000_4219F0, 0x0042E3A0, 0x0042EE20, func_802A9000_4219F0, 0x0042EE20, 0x0042F6E0, func_802A9000_4219F0, 0x0042F6E0, 0x00430020, func_802A9000_4219F0, 0x00430020, 0x004309A0, func_802A9000_4219F0, 0x0042A4F0, 0x0042C6F0, func_802A9000_4219F0, 0x0042C6F0, 0x0042CF10, func_802A9000_4219F0
glabel actionCommandDmaTable
.word 0x00000000, 0x00000000, 0x00000000
.word action_cmd_jump_ROM_START, action_cmd_jump_ROM_END, action_cmd_jump_VRAM
.word action_cmd_hammer_ROM_START, action_cmd_hammer_ROM_END, action_cmd_hammer_VRAM
.word action_cmd_flee_ROM_START, action_cmd_flee_ROM_END, action_cmd_flee_VRAM
.word action_cmd_break_free_ROM_START, action_cmd_break_free_ROM_END, action_cmd_break_free_VRAM
.word action_cmd_whirlwind_ROM_START, action_cmd_whirlwind_ROM_END, action_cmd_whirlwind_VRAM
.word action_cmd_stop_leech_ROM_START, action_cmd_stop_leech_ROM_END, action_cmd_stop_leech_VRAM
.word action_cmd_07_ROM_START, action_cmd_07_ROM_END, action_cmd_07_VRAM
.word action_cmd_dizzy_shell_ROM_START, action_cmd_dizzy_shell_ROM_END, action_cmd_dizzy_shell_VRAM
.word action_cmd_fire_shell_ROM_START, action_cmd_fire_shell_ROM_END, action_cmd_fire_shell_VRAM
.word action_cmd_0A_ROM_START, action_cmd_0A_ROM_END, action_cmd_0A_VRAM
.word action_cmd_bomb_ROM_START, action_cmd_bomb_ROM_END, action_cmd_bomb_VRAM
.word action_cmd_body_slam_ROM_START, action_cmd_body_slam_ROM_END, action_cmd_body_slam_VRAM
.word action_cmd_air_lift_ROM_START, action_cmd_air_lift_ROM_END, action_cmd_air_lift_VRAM
.word action_cmd_air_raid_ROM_START, action_cmd_air_raid_ROM_END, action_cmd_air_raid_VRAM
.word action_cmd_squirt_ROM_START, action_cmd_squirt_ROM_END, action_cmd_squirt_VRAM
.word action_cmd_power_shock_ROM_START, action_cmd_power_shock_ROM_END, action_cmd_power_shock_VRAM
.word action_cmd_mega_shock_ROM_START, action_cmd_mega_shock_ROM_END, action_cmd_mega_shock_VRAM
.word action_cmd_smack_ROM_START, action_cmd_smack_ROM_END, action_cmd_smack_VRAM
.word action_cmd_spiny_surge_ROM_START, action_cmd_spiny_surge_ROM_END, action_cmd_spiny_surge_VRAM
.word action_cmd_hurricane_ROM_START, action_cmd_hurricane_ROM_END, action_cmd_hurricane_VRAM
.word action_cmd_spook_ROM_START, action_cmd_spook_ROM_END, action_cmd_spook_VRAM
/*.word action_cmd__ROM_START, action_cmd__ROM_END, action_cmd__VRAM*/
.word action_cmd_water_block_ROM_START, action_cmd_water_block_ROM_END, action_cmd_water_block_VRAM
.word action_cmd_tidal_wave_ROM_START, action_cmd_tidal_wave_ROM_END, action_cmd_tidal_wave_VRAM
glabel DoSleepHit
.word 0x00000043, 0x00000001, func_80271210, 0x00000002, 0x00000000, 0x00000001, 0x00000000
@ -1013,7 +1039,7 @@ glabel DoStopHit
glabel DoFreezeHit
.word 0x00000043, 0x00000001, func_8027143C, 0x00000008, 0x00000001, 0x00000008, 0x00000043, 0x00000001, func_8027143C, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000001, func_80271484, 0x00000002, 0x00000000, 0x00000001, 0x00000000
glabel DoShinkHit
glabel DoShrinkHit
.word 0x00000043, 0x00000001, func_80271588, 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_802946E0

View File

@ -1072,8 +1072,8 @@ glabel calc_item_damage_enemy
/* 180F0C 8025262C 00000000 */ nop
/* 180F10 80252630 12A00017 */ beqz $s5, .L80252690
/* 180F14 80252634 00000000 */ nop
/* 180F18 80252638 3C048029 */ lui $a0, %hi(DoShinkHit)
/* 180F1C 8025263C 248446B8 */ addiu $a0, $a0, %lo(DoShinkHit)
/* 180F18 80252638 3C048029 */ lui $a0, %hi(DoShrinkHit)
/* 180F1C 8025263C 248446B8 */ addiu $a0, $a0, %lo(DoShrinkHit)
/* 180F20 80252640 2405000A */ addiu $a1, $zero, 0xa
/* 180F24 80252644 0C0B0CF8 */ jal start_script
/* 180F28 80252648 0000302D */ daddu $a2, $zero, $zero

View File

@ -1,29 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel LoadActionCommand
/* 196AA0 802681C0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 196AA4 802681C4 AFBF0010 */ sw $ra, 0x10($sp)
/* 196AA8 802681C8 8C82000C */ lw $v0, 0xc($a0)
/* 196AAC 802681CC 0C0B1EAF */ jal get_variable
/* 196AB0 802681D0 8C450000 */ lw $a1, ($v0)
/* 196AB4 802681D4 3C068029 */ lui $a2, %hi(D_802944C0)
/* 196AB8 802681D8 24C644C0 */ addiu $a2, $a2, %lo(D_802944C0)
/* 196ABC 802681DC 00021840 */ sll $v1, $v0, 1
/* 196AC0 802681E0 00621821 */ addu $v1, $v1, $v0
/* 196AC4 802681E4 00031080 */ sll $v0, $v1, 2
/* 196AC8 802681E8 00461021 */ addu $v0, $v0, $a2
/* 196ACC 802681EC 8C440000 */ lw $a0, ($v0)
/* 196AD0 802681F0 24620001 */ addiu $v0, $v1, 1
/* 196AD4 802681F4 00021080 */ sll $v0, $v0, 2
/* 196AD8 802681F8 00461021 */ addu $v0, $v0, $a2
/* 196ADC 802681FC 24630002 */ addiu $v1, $v1, 2
/* 196AE0 80268200 00031880 */ sll $v1, $v1, 2
/* 196AE4 80268204 00661821 */ addu $v1, $v1, $a2
/* 196AE8 80268208 8C450000 */ lw $a1, ($v0)
/* 196AEC 8026820C 0C00A5CF */ jal dma_copy
/* 196AF0 80268210 8C660000 */ lw $a2, ($v1)
/* 196AF4 80268214 8FBF0010 */ lw $ra, 0x10($sp)
/* 196AF8 80268218 24020002 */ addiu $v0, $zero, 2
/* 196AFC 8026821C 03E00008 */ jr $ra
/* 196B00 80268220 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,55 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel SetupMashMeter
/* 197AA8 802691C8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 197AAC 802691CC AFB20018 */ sw $s2, 0x18($sp)
/* 197AB0 802691D0 0080902D */ daddu $s2, $a0, $zero
/* 197AB4 802691D4 AFBF001C */ sw $ra, 0x1c($sp)
/* 197AB8 802691D8 AFB10014 */ sw $s1, 0x14($sp)
/* 197ABC 802691DC AFB00010 */ sw $s0, 0x10($sp)
/* 197AC0 802691E0 8E50000C */ lw $s0, 0xc($s2)
/* 197AC4 802691E4 8E050000 */ lw $a1, ($s0)
/* 197AC8 802691E8 0C0B1EAF */ jal get_variable
/* 197ACC 802691EC 26100004 */ addiu $s0, $s0, 4
/* 197AD0 802691F0 3C11802A */ lui $s1, %hi(D_8029FBE0)
/* 197AD4 802691F4 2631FBE0 */ addiu $s1, $s1, %lo(D_8029FBE0)
/* 197AD8 802691F8 A2220080 */ sb $v0, 0x80($s1)
/* 197ADC 802691FC 8E050000 */ lw $a1, ($s0)
/* 197AE0 80269200 26100004 */ addiu $s0, $s0, 4
/* 197AE4 80269204 0C0B1EAF */ jal get_variable
/* 197AE8 80269208 0240202D */ daddu $a0, $s2, $zero
/* 197AEC 8026920C A6220076 */ sh $v0, 0x76($s1)
/* 197AF0 80269210 8E050000 */ lw $a1, ($s0)
/* 197AF4 80269214 26100004 */ addiu $s0, $s0, 4
/* 197AF8 80269218 0C0B1EAF */ jal get_variable
/* 197AFC 8026921C 0240202D */ daddu $a0, $s2, $zero
/* 197B00 80269220 A6220078 */ sh $v0, 0x78($s1)
/* 197B04 80269224 8E050000 */ lw $a1, ($s0)
/* 197B08 80269228 26100004 */ addiu $s0, $s0, 4
/* 197B0C 8026922C 0C0B1EAF */ jal get_variable
/* 197B10 80269230 0240202D */ daddu $a0, $s2, $zero
/* 197B14 80269234 A622007A */ sh $v0, 0x7a($s1)
/* 197B18 80269238 8E050000 */ lw $a1, ($s0)
/* 197B1C 8026923C 26100004 */ addiu $s0, $s0, 4
/* 197B20 80269240 0C0B1EAF */ jal get_variable
/* 197B24 80269244 0240202D */ daddu $a0, $s2, $zero
/* 197B28 80269248 A622007C */ sh $v0, 0x7c($s1)
/* 197B2C 8026924C 8E050000 */ lw $a1, ($s0)
/* 197B30 80269250 0C0B1EAF */ jal get_variable
/* 197B34 80269254 0240202D */ daddu $a0, $s2, $zero
/* 197B38 80269258 96240076 */ lhu $a0, 0x76($s1)
/* 197B3C 8026925C A622007E */ sh $v0, 0x7e($s1)
/* 197B40 80269260 00042400 */ sll $a0, $a0, 0x10
/* 197B44 80269264 00041C03 */ sra $v1, $a0, 0x10
/* 197B48 80269268 000427C2 */ srl $a0, $a0, 0x1f
/* 197B4C 8026926C 00641821 */ addu $v1, $v1, $a0
/* 197B50 80269270 00031843 */ sra $v1, $v1, 1
/* 197B54 80269274 A6230074 */ sh $v1, 0x74($s1)
/* 197B58 80269278 8FBF001C */ lw $ra, 0x1c($sp)
/* 197B5C 8026927C 8FB20018 */ lw $s2, 0x18($sp)
/* 197B60 80269280 8FB10014 */ lw $s1, 0x14($sp)
/* 197B64 80269284 8FB00010 */ lw $s0, 0x10($sp)
/* 197B68 80269288 24020002 */ addiu $v0, $zero, 2
/* 197B6C 8026928C 03E00008 */ jr $ra
/* 197B70 80269290 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,171 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel check_block_input
/* 1977AC 80268ECC 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 1977B0 80268ED0 AFB40020 */ sw $s4, 0x20($sp)
/* 1977B4 80268ED4 0080A02D */ daddu $s4, $a0, $zero
/* 1977B8 80268ED8 AFB7002C */ sw $s7, 0x2c($sp)
/* 1977BC 80268EDC 0000B82D */ daddu $s7, $zero, $zero
/* 1977C0 80268EE0 AFB10014 */ sw $s1, 0x14($sp)
/* 1977C4 80268EE4 3C11800E */ lui $s1, %hi(gBattleStatus)
/* 1977C8 80268EE8 2631C070 */ addiu $s1, $s1, %lo(gBattleStatus)
/* 1977CC 80268EEC AFB50024 */ sw $s5, 0x24($sp)
/* 1977D0 80268EF0 3C158011 */ lui $s5, %hi(gPlayerData)
/* 1977D4 80268EF4 26B5F290 */ addiu $s5, $s5, %lo(gPlayerData)
/* 1977D8 80268EF8 AFB60028 */ sw $s6, 0x28($sp)
/* 1977DC 80268EFC 3C16802A */ lui $s6, %hi(D_8029FBE0)
/* 1977E0 80268F00 26D6FBE0 */ addiu $s6, $s6, %lo(D_8029FBE0)
/* 1977E4 80268F04 AFBF0030 */ sw $ra, 0x30($sp)
/* 1977E8 80268F08 AFB3001C */ sw $s3, 0x1c($sp)
/* 1977EC 80268F0C AFB20018 */ sw $s2, 0x18($sp)
/* 1977F0 80268F10 AFB00010 */ sw $s0, 0x10($sp)
/* 1977F4 80268F14 82230083 */ lb $v1, 0x83($s1)
/* 1977F8 80268F18 2402FFFF */ addiu $v0, $zero, -1
/* 1977FC 80268F1C 14620009 */ bne $v1, $v0, .L80268F44
/* 197800 80268F20 A2200087 */ sb $zero, 0x87($s1)
/* 197804 80268F24 8E220000 */ lw $v0, ($s1)
/* 197808 80268F28 3C030200 */ lui $v1, 0x200
/* 19780C 80268F2C 00431024 */ and $v0, $v0, $v1
/* 197810 80268F30 10400004 */ beqz $v0, .L80268F44
/* 197814 80268F34 24020001 */ addiu $v0, $zero, 1
/* 197818 80268F38 A2220087 */ sb $v0, 0x87($s1)
/* 19781C 80268F3C 0809A43B */ j .L802690EC
/* 197820 80268F40 24020001 */ addiu $v0, $zero, 1
.L80268F44:
/* 197824 80268F44 82220083 */ lb $v0, 0x83($s1)
/* 197828 80268F48 10400068 */ beqz $v0, .L802690EC
/* 19782C 80268F4C 0000102D */ daddu $v0, $zero, $zero
/* 197830 80268F50 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 197834 80268F54 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* 197838 80268F58 904200AA */ lbu $v0, 0xaa($v0)
/* 19783C 80268F5C 30420001 */ andi $v0, $v0, 1
/* 197840 80268F60 14400062 */ bnez $v0, .L802690EC
/* 197844 80268F64 0000102D */ daddu $v0, $zero, $zero
/* 197848 80268F68 96A30298 */ lhu $v1, 0x298($s5)
/* 19784C 80268F6C 2C62270F */ sltiu $v0, $v1, 0x270f
/* 197850 80268F70 1040000A */ beqz $v0, .L80268F9C
/* 197854 80268F74 24620001 */ addiu $v0, $v1, 1
/* 197858 80268F78 A6A20298 */ sh $v0, 0x298($s5)
/* 19785C 80268F7C 0809A3E9 */ j .L80268FA4
/* 197860 80268F80 A6C0006E */ sh $zero, 0x6e($s6)
.L80268F84:
/* 197864 80268F84 0809A408 */ j .L80269020
/* 197868 80268F88 24170001 */ addiu $s7, $zero, 1
.L80268F8C:
/* 19786C 80268F8C 24020001 */ addiu $v0, $zero, 1
/* 197870 80268F90 A2220087 */ sb $v0, 0x87($s1)
/* 197874 80268F94 0809A41A */ j .L80269068
/* 197878 80268F98 24120001 */ addiu $s2, $zero, 1
.L80268F9C:
/* 19787C 80268F9C 24020001 */ addiu $v0, $zero, 1
/* 197880 80268FA0 A6C2006E */ sh $v0, 0x6e($s6)
.L80268FA4:
/* 197884 80268FA4 0000902D */ daddu $s2, $zero, $zero
/* 197888 80268FA8 24100003 */ addiu $s0, $zero, 3
/* 19788C 80268FAC 3C02800E */ lui $v0, %hi(gBattleStatus)
/* 197890 80268FB0 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0)
/* 197894 80268FB4 3C030008 */ lui $v1, 8
/* 197898 80268FB8 00431024 */ and $v0, $v0, $v1
/* 19789C 80268FBC 14400005 */ bnez $v0, .L80268FD4
/* 1978A0 80268FC0 2413000A */ addiu $s3, $zero, 0xa
/* 1978A4 80268FC4 0C03A752 */ jal is_ability_active
/* 1978A8 80268FC8 0240202D */ daddu $a0, $s2, $zero
/* 1978AC 80268FCC 54400001 */ bnel $v0, $zero, .L80268FD4
/* 1978B0 80268FD0 24100005 */ addiu $s0, $zero, 5
.L80268FD4:
/* 1978B4 80268FD4 82230431 */ lb $v1, 0x431($s1)
/* 1978B8 80268FD8 02701021 */ addu $v0, $s3, $s0
/* 1978BC 80268FDC 00621823 */ subu $v1, $v1, $v0
/* 1978C0 80268FE0 04620001 */ bltzl $v1, .L80268FE8
/* 1978C4 80268FE4 24630040 */ addiu $v1, $v1, 0x40
.L80268FE8:
/* 1978C8 80268FE8 1260000D */ beqz $s3, .L80269020
/* 1978CC 80268FEC 0000202D */ daddu $a0, $zero, $zero
.L80268FF0:
/* 1978D0 80268FF0 28620040 */ slti $v0, $v1, 0x40
/* 1978D4 80268FF4 50400001 */ beql $v0, $zero, .L80268FFC
/* 1978D8 80268FF8 2463FFC0 */ addiu $v1, $v1, -0x40
.L80268FFC:
/* 1978DC 80268FFC 00031080 */ sll $v0, $v1, 2
/* 1978E0 80269000 02221021 */ addu $v0, $s1, $v0
/* 1978E4 80269004 8C420330 */ lw $v0, 0x330($v0)
/* 1978E8 80269008 00541024 */ and $v0, $v0, $s4
/* 1978EC 8026900C 1440FFDD */ bnez $v0, .L80268F84
/* 1978F0 80269010 24840001 */ addiu $a0, $a0, 1
/* 1978F4 80269014 0093102A */ slt $v0, $a0, $s3
/* 1978F8 80269018 1440FFF5 */ bnez $v0, .L80268FF0
/* 1978FC 8026901C 24630001 */ addiu $v1, $v1, 1
.L80269020:
/* 197900 80269020 82230431 */ lb $v1, 0x431($s1)
/* 197904 80269024 00701823 */ subu $v1, $v1, $s0
/* 197908 80269028 04620001 */ bltzl $v1, .L80269030
/* 19790C 8026902C 24630040 */ addiu $v1, $v1, 0x40
.L80269030:
/* 197910 80269030 1200000D */ beqz $s0, .L80269068
/* 197914 80269034 0000202D */ daddu $a0, $zero, $zero
.L80269038:
/* 197918 80269038 28620040 */ slti $v0, $v1, 0x40
/* 19791C 8026903C 50400001 */ beql $v0, $zero, .L80269044
/* 197920 80269040 2463FFC0 */ addiu $v1, $v1, -0x40
.L80269044:
/* 197924 80269044 00031080 */ sll $v0, $v1, 2
/* 197928 80269048 02221021 */ addu $v0, $s1, $v0
/* 19792C 8026904C 8C420330 */ lw $v0, 0x330($v0)
/* 197930 80269050 00541024 */ and $v0, $v0, $s4
/* 197934 80269054 1440FFCD */ bnez $v0, .L80268F8C
/* 197938 80269058 24840001 */ addiu $a0, $a0, 1
/* 19793C 8026905C 0090102A */ slt $v0, $a0, $s0
/* 197940 80269060 1440FFF5 */ bnez $v0, .L80269038
/* 197944 80269064 24630001 */ addiu $v1, $v1, 1
.L80269068:
/* 197948 80269068 12E00003 */ beqz $s7, .L80269078
/* 19794C 8026906C 2402FFFF */ addiu $v0, $zero, -1
/* 197950 80269070 A2220087 */ sb $v0, 0x87($s1)
/* 197954 80269074 0000902D */ daddu $s2, $zero, $zero
.L80269078:
/* 197958 80269078 24020001 */ addiu $v0, $zero, 1
/* 19795C 8026907C 16420012 */ bne $s2, $v0, .L802690C8
/* 197960 80269080 02701021 */ addu $v0, $s3, $s0
/* 197964 80269084 82230431 */ lb $v1, 0x431($s1)
/* 197968 80269088 00621823 */ subu $v1, $v1, $v0
/* 19796C 8026908C 04620001 */ bltzl $v1, .L80269094
/* 197970 80269090 24630040 */ addiu $v1, $v1, 0x40
.L80269094:
/* 197974 80269094 1040000C */ beqz $v0, .L802690C8
/* 197978 80269098 0000202D */ daddu $a0, $zero, $zero
/* 19797C 8026909C 0040282D */ daddu $a1, $v0, $zero
.L802690A0:
/* 197980 802690A0 28620040 */ slti $v0, $v1, 0x40
/* 197984 802690A4 50400001 */ beql $v0, $zero, .L802690AC
/* 197988 802690A8 2463FFC0 */ addiu $v1, $v1, -0x40
.L802690AC:
/* 19798C 802690AC 00031080 */ sll $v0, $v1, 2
/* 197990 802690B0 02221021 */ addu $v0, $s1, $v0
/* 197994 802690B4 AC400330 */ sw $zero, 0x330($v0)
/* 197998 802690B8 24840001 */ addiu $a0, $a0, 1
/* 19799C 802690BC 0085102A */ slt $v0, $a0, $a1
/* 1979A0 802690C0 1440FFF7 */ bnez $v0, .L802690A0
/* 1979A4 802690C4 24630001 */ addiu $v1, $v1, 1
.L802690C8:
/* 1979A8 802690C8 12400008 */ beqz $s2, .L802690EC
/* 1979AC 802690CC 0240102D */ daddu $v0, $s2, $zero
/* 1979B0 802690D0 86C2006E */ lh $v0, 0x6e($s6)
/* 1979B4 802690D4 14400005 */ bnez $v0, .L802690EC
/* 1979B8 802690D8 0240102D */ daddu $v0, $s2, $zero
/* 1979BC 802690DC 96A2029A */ lhu $v0, 0x29a($s5)
/* 1979C0 802690E0 24420001 */ addiu $v0, $v0, 1
/* 1979C4 802690E4 A6A2029A */ sh $v0, 0x29a($s5)
/* 1979C8 802690E8 0240102D */ daddu $v0, $s2, $zero
.L802690EC:
/* 1979CC 802690EC 8FBF0030 */ lw $ra, 0x30($sp)
/* 1979D0 802690F0 8FB7002C */ lw $s7, 0x2c($sp)
/* 1979D4 802690F4 8FB60028 */ lw $s6, 0x28($sp)
/* 1979D8 802690F8 8FB50024 */ lw $s5, 0x24($sp)
/* 1979DC 802690FC 8FB40020 */ lw $s4, 0x20($sp)
/* 1979E0 80269100 8FB3001C */ lw $s3, 0x1c($sp)
/* 1979E4 80269104 8FB20018 */ lw $s2, 0x18($sp)
/* 1979E8 80269108 8FB10014 */ lw $s1, 0x14($sp)
/* 1979EC 8026910C 8FB00010 */ lw $s0, 0x10($sp)
/* 1979F0 80269110 03E00008 */ jr $ra
/* 1979F4 80269114 27BD0038 */ addiu $sp, $sp, 0x38

View File

@ -1,31 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80268224
/* 196B04 80268224 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 196B08 80268228 AFB00010 */ sw $s0, 0x10($sp)
/* 196B0C 8026822C 0080802D */ daddu $s0, $a0, $zero
/* 196B10 80268230 3C02800E */ lui $v0, %hi(gBattleStatus)
/* 196B14 80268234 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0)
/* 196B18 80268238 3C030008 */ lui $v1, 8
/* 196B1C 8026823C 00431024 */ and $v0, $v0, $v1
/* 196B20 80268240 14400006 */ bnez $v0, .L8026825C
/* 196B24 80268244 AFBF0014 */ sw $ra, 0x14($sp)
/* 196B28 80268248 0C03A752 */ jal is_ability_active
/* 196B2C 8026824C 0000202D */ daddu $a0, $zero, $zero
/* 196B30 80268250 00021840 */ sll $v1, $v0, 1
/* 196B34 80268254 00621821 */ addu $v1, $v1, $v0
/* 196B38 80268258 02038023 */ subu $s0, $s0, $v1
.L8026825C:
/* 196B3C 8026825C 06020001 */ bltzl $s0, .L80268264
/* 196B40 80268260 0000802D */ daddu $s0, $zero, $zero
.L80268264:
/* 196B44 80268264 2A020008 */ slti $v0, $s0, 8
/* 196B48 80268268 50400001 */ beql $v0, $zero, .L80268270
/* 196B4C 8026826C 24100007 */ addiu $s0, $zero, 7
.L80268270:
/* 196B50 80268270 0200102D */ daddu $v0, $s0, $zero
/* 196B54 80268274 8FBF0014 */ lw $ra, 0x14($sp)
/* 196B58 80268278 8FB00010 */ lw $s0, 0x10($sp)
/* 196B5C 8026827C 03E00008 */ jr $ra
/* 196B60 80268280 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,14 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80268770
/* 197050 80268770 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 197054 80268774 24020002 */ addiu $v0, $zero, 2
/* 197058 80268778 AFBF0010 */ sw $ra, 0x10($sp)
/* 19705C 8026877C 3C01802A */ lui $at, %hi(D_8029FBC0)
/* 197060 80268780 AC22FBC0 */ sw $v0, %lo(D_8029FBC0)($at)
/* 197064 80268784 0C09A0A1 */ jal func_80268284
/* 197068 80268788 0000382D */ daddu $a3, $zero, $zero
/* 19706C 8026878C 8FBF0010 */ lw $ra, 0x10($sp)
/* 197070 80268790 03E00008 */ jr $ra
/* 197074 80268794 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,13 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80268798
/* 197078 80268798 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 19707C 8026879C 3C01802A */ lui $at, %hi(D_8029FBC0)
/* 197080 802687A0 AC27FBC0 */ sw $a3, %lo(D_8029FBC0)($at)
/* 197084 802687A4 AFBF0010 */ sw $ra, 0x10($sp)
/* 197088 802687A8 0C09A0A1 */ jal func_80268284
/* 19708C 802687AC 0000382D */ daddu $a3, $zero, $zero
/* 197090 802687B0 8FBF0010 */ lw $ra, 0x10($sp)
/* 197094 802687B4 03E00008 */ jr $ra
/* 197098 802687B8 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,14 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802687BC
/* 19709C 802687BC 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 1970A0 802687C0 24020002 */ addiu $v0, $zero, 2
/* 1970A4 802687C4 AFBF0010 */ sw $ra, 0x10($sp)
/* 1970A8 802687C8 3C01802A */ lui $at, %hi(D_8029FBC0)
/* 1970AC 802687CC AC22FBC0 */ sw $v0, %lo(D_8029FBC0)($at)
/* 1970B0 802687D0 0C09A0A1 */ jal func_80268284
/* 1970B4 802687D4 00000000 */ nop
/* 1970B8 802687D8 8FBF0010 */ lw $ra, 0x10($sp)
/* 1970BC 802687DC 03E00008 */ jr $ra
/* 1970C0 802687E0 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,14 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802687E4
/* 1970C4 802687E4 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 1970C8 802687E8 3C01802A */ lui $at, %hi(D_8029FBC0)
/* 1970CC 802687EC AC27FBC0 */ sw $a3, %lo(D_8029FBC0)($at)
/* 1970D0 802687F0 8FA70028 */ lw $a3, 0x28($sp)
/* 1970D4 802687F4 AFBF0010 */ sw $ra, 0x10($sp)
/* 1970D8 802687F8 0C09A0A1 */ jal func_80268284
/* 1970DC 802687FC 00000000 */ nop
/* 1970E0 80268800 8FBF0010 */ lw $ra, 0x10($sp)
/* 1970E4 80268804 03E00008 */ jr $ra
/* 1970E8 80268808 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,14 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8026880C
/* 1970EC 8026880C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 1970F0 80268810 24020002 */ addiu $v0, $zero, 2
/* 1970F4 80268814 AFBF0010 */ sw $ra, 0x10($sp)
/* 1970F8 80268818 3C01802A */ lui $at, %hi(D_8029FBC0)
/* 1970FC 8026881C AC22FBC0 */ sw $v0, %lo(D_8029FBC0)($at)
/* 197100 80268820 0C09A0A1 */ jal func_80268284
/* 197104 80268824 2407FFFF */ addiu $a3, $zero, -1
/* 197108 80268828 8FBF0010 */ lw $ra, 0x10($sp)
/* 19710C 8026882C 03E00008 */ jr $ra
/* 197110 80268830 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,13 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80268834
/* 197114 80268834 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 197118 80268838 3C01802A */ lui $at, %hi(D_8029FBC0)
/* 19711C 8026883C AC27FBC0 */ sw $a3, %lo(D_8029FBC0)($at)
/* 197120 80268840 AFBF0010 */ sw $ra, 0x10($sp)
/* 197124 80268844 0C09A0A1 */ jal func_80268284
/* 197128 80268848 2407FFFF */ addiu $a3, $zero, -1
/* 19712C 8026884C 8FBF0010 */ lw $ra, 0x10($sp)
/* 197130 80268850 03E00008 */ jr $ra
/* 197134 80268854 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,64 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80268858
/* 197138 80268858 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 19713C 8026885C AFB00010 */ sw $s0, 0x10($sp)
/* 197140 80268860 3C10802A */ lui $s0, %hi(D_8029FBE0)
/* 197144 80268864 2610FBE0 */ addiu $s0, $s0, %lo(D_8029FBE0)
/* 197148 80268868 AFB20018 */ sw $s2, 0x18($sp)
/* 19714C 8026886C 3C12800E */ lui $s2, %hi(gBattleStatus)
/* 197150 80268870 2652C070 */ addiu $s2, $s2, %lo(gBattleStatus)
/* 197154 80268874 AFBF001C */ sw $ra, 0x1c($sp)
/* 197158 80268878 AFB10014 */ sw $s1, 0x14($sp)
/* 19715C 8026887C A200005E */ sb $zero, 0x5e($s0)
/* 197160 80268880 A600006A */ sh $zero, 0x6a($s0)
/* 197164 80268884 8E420000 */ lw $v0, ($s2)
/* 197168 80268888 3C110008 */ lui $s1, 8
/* 19716C 8026888C 00511024 */ and $v0, $v0, $s1
/* 197170 80268890 14400015 */ bnez $v0, .L802688E8
/* 197174 80268894 00000000 */ nop
/* 197178 80268898 0C03A752 */ jal is_ability_active
/* 19717C 8026889C 24040016 */ addiu $a0, $zero, 0x16
/* 197180 802688A0 10400002 */ beqz $v0, .L802688AC
/* 197184 802688A4 24020001 */ addiu $v0, $zero, 1
/* 197188 802688A8 A202005E */ sb $v0, 0x5e($s0)
.L802688AC:
/* 19718C 802688AC 8E420000 */ lw $v0, ($s2)
/* 197190 802688B0 00511024 */ and $v0, $v0, $s1
/* 197194 802688B4 1440000C */ bnez $v0, .L802688E8
/* 197198 802688B8 00000000 */ nop
/* 19719C 802688BC 0C03A752 */ jal is_ability_active
/* 1971A0 802688C0 24040015 */ addiu $a0, $zero, 0x15
/* 1971A4 802688C4 10400008 */ beqz $v0, .L802688E8
/* 1971A8 802688C8 24040064 */ addiu $a0, $zero, 0x64
/* 1971AC 802688CC 24110001 */ addiu $s1, $zero, 1
/* 1971B0 802688D0 A2000061 */ sb $zero, 0x61($s0)
/* 1971B4 802688D4 0C00A67F */ jal rand_int
/* 1971B8 802688D8 A611006A */ sh $s1, 0x6a($s0)
/* 1971BC 802688DC 28420019 */ slti $v0, $v0, 0x19
/* 1971C0 802688E0 54400001 */ bnel $v0, $zero, .L802688E8
/* 1971C4 802688E4 A211005E */ sb $s1, 0x5e($s0)
.L802688E8:
/* 1971C8 802688E8 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 1971CC 802688EC 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* 1971D0 802688F0 904200AA */ lbu $v0, 0xaa($v0)
/* 1971D4 802688F4 30420001 */ andi $v0, $v0, 1
/* 1971D8 802688F8 10400002 */ beqz $v0, .L80268904
/* 1971DC 802688FC 24020001 */ addiu $v0, $zero, 1
/* 1971E0 80268900 A202005E */ sb $v0, 0x5e($s0)
.L80268904:
/* 1971E4 80268904 3C02800E */ lui $v0, %hi(gBattleStatus)
/* 1971E8 80268908 8C42C070 */ lw $v0, %lo(gBattleStatus)($v0)
/* 1971EC 8026890C 30421000 */ andi $v0, $v0, 0x1000
/* 1971F0 80268910 10400003 */ beqz $v0, .L80268920
/* 1971F4 80268914 24020001 */ addiu $v0, $zero, 1
/* 1971F8 80268918 A202005E */ sb $v0, 0x5e($s0)
/* 1971FC 8026891C A2000061 */ sb $zero, 0x61($s0)
.L80268920:
/* 197200 80268920 8FBF001C */ lw $ra, 0x1c($sp)
/* 197204 80268924 8FB20018 */ lw $s2, 0x18($sp)
/* 197208 80268928 8FB10014 */ lw $s1, 0x14($sp)
/* 19720C 8026892C 8FB00010 */ lw $s0, 0x10($sp)
/* 197210 80268930 03E00008 */ jr $ra
/* 197214 80268934 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1623,8 +1623,8 @@ glabel L80271E88_1A0768
/* 1A1908 80273028 00000000 */ nop
/* 1A190C 8027302C 12E00017 */ beqz $s7, .L8027308C
/* 1A1910 80273030 00000000 */ nop
/* 1A1914 80273034 3C048029 */ lui $a0, %hi(DoShinkHit)
/* 1A1918 80273038 248446B8 */ addiu $a0, $a0, %lo(DoShinkHit)
/* 1A1914 80273034 3C048029 */ lui $a0, %hi(DoShrinkHit)
/* 1A1918 80273038 248446B8 */ addiu $a0, $a0, %lo(DoShrinkHit)
/* 1A191C 8027303C 2405000A */ addiu $a1, $zero, 0xa
/* 1A1920 80273040 0C0B0CF8 */ jal start_script
/* 1A1924 80273044 0000302D */ daddu $a2, $zero, $zero

View File

@ -1206,8 +1206,8 @@ glabel calc_enemy_damage_target
/* 1A6E2C 8027854C 00000000 */ nop
/* 1A6E30 80278550 12A00017 */ beqz $s5, .L802785B0
/* 1A6E34 80278554 00000000 */ nop
/* 1A6E38 80278558 3C048029 */ lui $a0, %hi(DoShinkHit)
/* 1A6E3C 8027855C 248446B8 */ addiu $a0, $a0, %lo(DoShinkHit)
/* 1A6E38 80278558 3C048029 */ lui $a0, %hi(DoShrinkHit)
/* 1A6E3C 8027855C 248446B8 */ addiu $a0, $a0, %lo(DoShrinkHit)
/* 1A6E40 80278560 2405000A */ addiu $a1, $zero, 0xa
/* 1A6E44 80278564 0C0B0CF8 */ jal start_script
/* 1A6E48 80278568 0000302D */ daddu $a2, $zero, $zero

View File

@ -1478,8 +1478,8 @@ glabel calc_partner_damage_enemy
/* 1AE10C 8027F82C 00000000 */ nop
/* 1AE110 8027F830 12A00017 */ beqz $s5, .L8027F890
/* 1AE114 8027F834 00000000 */ nop
/* 1AE118 8027F838 3C048029 */ lui $a0, %hi(DoShinkHit)
/* 1AE11C 8027F83C 248446B8 */ addiu $a0, $a0, %lo(DoShinkHit)
/* 1AE118 8027F838 3C048029 */ lui $a0, %hi(DoShrinkHit)
/* 1AE11C 8027F83C 248446B8 */ addiu $a0, $a0, %lo(DoShrinkHit)
/* 1AE120 8027F840 2405000A */ addiu $a1, $zero, 0xa
/* 1AE124 8027F844 0C0B0CF8 */ jal start_script
/* 1AE128 8027F848 0000302D */ daddu $a2, $zero, $zero

Some files were not shown because too many files have changed in this diff Show More