Match DoBasicAI (#619)

* Match DoBasicAI

* Delete DoBasicAI.s

* Match func_8004A124

* Delete func_8004A124.s

* Update 23680.c

* effects.h

* Match func_80049C04

* Delete func_80049C04.s

* NL

* Ethan's comments

* comment
This commit is contained in:
JoshDuMan 2022-01-15 02:06:08 -05:00 committed by GitHub
parent 41c304137d
commit 079302ff23
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 163 additions and 527 deletions

View File

@ -1,5 +1,6 @@
#include "common.h"
#include "npc.h"
#include "effects.h"
INCLUDE_ASM(s32, "23680", spawn_drops);
@ -199,7 +200,45 @@ INCLUDE_ASM(s32, "23680", func_800496B8);
#define NAMESPACE base
#include "world/common/UnkNpcAIFunc1.inc.c"
INCLUDE_ASM(s32, "23680", func_80049C04);
void func_80049C04(Evt* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
Enemy* enemy = script->owner1.enemy;
Npc* npc = get_npc_unsafe(enemy->npcID);
f32 x, y, z;
f32 yaw;
s32 sp34;
if (aiSettings->unk_14 >= 0 && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
x = npc->pos.x;
y = npc->pos.y;
z = npc->pos.z;
yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
if (!npc_test_move_simple_with_slipping(npc->collisionChannel, &x, &y, &z, aiSettings->chaseSpeed, yaw, npc->collisionHeight, npc->collisionRadius)) {
npc->yaw = yaw;
ai_enemy_play_sound(npc, 0x2F4, 0x200000);
fx_emote(0, npc, 0, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &sp34);
if (enemy->npcSettings->unk_2A & 1) {
script->functionTemp[0] = 10;
} else {
script->functionTemp[0] = 12;
}
return;
}
}
if (npc->turnAroundYawAdjustment == 0) {
npc->duration--;
if (npc->duration <= 0) {
script->functionTemp[1]--;
if (script->functionTemp[1]) {
if (!(enemy->npcSettings->unk_2A & 0x10)) {
npc->yaw = clamp_angle(npc->yaw + 180.0f);
}
npc->duration = (aiSettings->waitTime / 2) + rand_int(aiSettings->waitTime / 2 + 1);
return;
}
script->functionTemp[0] = 0;
}
}
}
void func_80049E3C(Evt* script, NpcAISettings* npcAISettings, EnemyTerritoryThing* territory) {
Enemy* enemy = script->owner1.enemy;
@ -271,7 +310,48 @@ void func_80049F7C(Evt* script, NpcAISettings* npcAISettings, EnemyTerritoryThin
script->functionTemp[0] = 13;
}
INCLUDE_ASM(s32, "23680", func_8004A124);
void func_8004A124(Evt* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
Enemy* enemy = script->owner1.enemy;
Npc* npc = get_npc_unsafe(enemy->npcID);
s32 sp28;
f32 x, y, z;
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
fx_emote(2, npc, 0, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &sp28);
npc->currentAnim.w = enemy->animList[0];
npc->duration = 20;
script->functionTemp[0] = 14;
return;
}
if (enemy->npcSettings->unk_2A & 4) {
if (dist2D(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z) > (npc->moveSpeed * 5.0)) {
x = npc->pos.x;
y = npc->pos.y;
z = npc->pos.z;
if (npc_test_move_simple_with_slipping(npc->collisionChannel, &x, &y, &z, 1.0f, npc->yaw, npc->collisionHeight, npc->collisionRadius)) {
fx_emote(2, npc, 0, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xC, &sp28);
npc->currentAnim.w = enemy->animList[0];
npc->duration = 15;
script->functionTemp[0] = 14;
return;
}
}
}
func_8003D660(npc, 1);
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
if (npc->moveSpeed > 8.0 && !(gGameStatusPtr->frameCounter % 5)) {
ai_enemy_play_sound(npc, 0x20C1, 0);
}
if (npc->duration > 0) {
npc->duration--;
} else {
script->functionTemp[0] = 12;
}
}
void func_8004A3E8(Evt* script, NpcAISettings* npcAISettings, EnemyTerritoryThing* territory) {
Enemy* enemy = script->owner1.enemy;
@ -285,4 +365,84 @@ void func_8004A3E8(Evt* script, NpcAISettings* npcAISettings, EnemyTerritoryThin
}
}
INCLUDE_ASM(s32, "23680", DoBasicAI, Evt* script, s32 isInitialCall);
ApiStatus DoBasicAI(Evt* script, s32 isInitialCall) {
Enemy* enemy = script->owner1.enemy;
Npc* npc = get_npc_unsafe(enemy->npcID);
Bytecode* args = script->ptrReadPos;
EnemyTerritoryThing territory;
EnemyTerritoryThing* pTerritory = &territory;
NpcAISettings* aiSettings = (NpcAISettings*) evt_get_variable(script, *args++);
territory.unk_00 = 0;
territory.shape = enemy->territory->wander.detectShape;
territory.pointX = enemy->territory->wander.detect.x;
territory.pointZ = enemy->territory->wander.detect.z;
territory.sizeX = enemy->territory->wander.detectSizeX;
territory.sizeZ = enemy->territory->wander.detectSizeZ;
territory.unk_18 = 65.0f;
territory.unk_1C = 0;
if (isInitialCall || enemy->unk_B0 & 4) {
script->functionTemp[0] = 0;
npc->duration = 0;
npc->currentAnim.w = enemy->animList[0];
npc->flags &= ~NPC_FLAG_NO_Y_MOVEMENT;
if (!enemy->territory->wander.isFlying) {
npc->flags |= NPC_FLAG_GRAVITY;
npc->flags &= ~NPC_FLAG_ENABLE_HIT_SCRIPT;
} else {
npc->flags &= ~NPC_FLAG_GRAVITY;
npc->flags |= NPC_FLAG_ENABLE_HIT_SCRIPT;
}
if (enemy->unk_B0 & 4) {
script->functionTemp[0] = 99;
script->functionTemp[1] = 0;
} else if (enemy->flags & ENEMY_FLAGS_40000000) {
script->functionTemp[0] = 12;
}
enemy->unk_B0 &= ~4;
enemy->flags &= ~ENEMY_FLAGS_40000000;
}
switch (script->functionTemp[0]) {
case 0x0:
func_800495A0(script, aiSettings, pTerritory);
/* fallthrough */
case 0x1:
func_800496B8(script, aiSettings, pTerritory);
break;
case 0x2:
base_UnkNpcAIFunc1(script, aiSettings, pTerritory);
/* fallthrough */
case 0x3:
func_80049C04(script, aiSettings, pTerritory);
break;
case 0xA:
func_80049E3C(script, aiSettings, pTerritory);
/* fallthrough */
case 0xB:
func_80049ECC(script, aiSettings, pTerritory);
break;
case 0xC:
func_80049F7C(script, aiSettings, pTerritory);
/* fallthrough */
case 0xD:
func_8004A124(script, aiSettings, pTerritory);
if (script->functionTemp[0] != 0xE) {
break;
}
/* fallthrough */
case 0xE:
func_8004A3E8(script, aiSettings, pTerritory);
break;
case 0x63:
func_8004A73C(script);
break;
}
return ApiStatus_BLOCK;
}

View File

@ -1,185 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel jtbl_80098728
.word .L8004A5FC_259FC, .L8004A60C_25A0C, .L8004A624_25A24, .L8004A634_25A34, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A64C_25A4C, .L8004A65C_25A5C, .L8004A674_25A74, .L8004A684_25A84, .L8004A6A4_25AA4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6C4_25AC4, .L8004A6BC_25ABC, 0, 0
.section .text
glabel DoBasicAI
/* 2587C 8004A47C 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 25880 8004A480 AFB20038 */ sw $s2, 0x38($sp)
/* 25884 8004A484 0080902D */ daddu $s2, $a0, $zero
/* 25888 8004A488 AFBF0048 */ sw $ra, 0x48($sp)
/* 2588C 8004A48C AFB50044 */ sw $s5, 0x44($sp)
/* 25890 8004A490 AFB40040 */ sw $s4, 0x40($sp)
/* 25894 8004A494 AFB3003C */ sw $s3, 0x3c($sp)
/* 25898 8004A498 AFB10034 */ sw $s1, 0x34($sp)
/* 2589C 8004A49C AFB00030 */ sw $s0, 0x30($sp)
/* 258A0 8004A4A0 8E510148 */ lw $s1, 0x148($s2)
/* 258A4 8004A4A4 86240008 */ lh $a0, 8($s1)
/* 258A8 8004A4A8 0C00EABB */ jal get_npc_unsafe
/* 258AC 8004A4AC 00A0802D */ daddu $s0, $a1, $zero
/* 258B0 8004A4B0 8E43000C */ lw $v1, 0xc($s2)
/* 258B4 8004A4B4 0240202D */ daddu $a0, $s2, $zero
/* 258B8 8004A4B8 8C650000 */ lw $a1, ($v1)
/* 258BC 8004A4BC 0C0B1EAF */ jal evt_get_variable
/* 258C0 8004A4C0 0040A82D */ daddu $s5, $v0, $zero
/* 258C4 8004A4C4 AFA00010 */ sw $zero, 0x10($sp)
/* 258C8 8004A4C8 8E2300D0 */ lw $v1, 0xd0($s1)
/* 258CC 8004A4CC 8C630030 */ lw $v1, 0x30($v1)
/* 258D0 8004A4D0 AFA30014 */ sw $v1, 0x14($sp)
/* 258D4 8004A4D4 8E2300D0 */ lw $v1, 0xd0($s1)
/* 258D8 8004A4D8 8C63001C */ lw $v1, 0x1c($v1)
/* 258DC 8004A4DC AFA30018 */ sw $v1, 0x18($sp)
/* 258E0 8004A4E0 8E2300D0 */ lw $v1, 0xd0($s1)
/* 258E4 8004A4E4 8C630024 */ lw $v1, 0x24($v1)
/* 258E8 8004A4E8 AFA3001C */ sw $v1, 0x1c($sp)
/* 258EC 8004A4EC 8E2300D0 */ lw $v1, 0xd0($s1)
/* 258F0 8004A4F0 8C630028 */ lw $v1, 0x28($v1)
/* 258F4 8004A4F4 27B40010 */ addiu $s4, $sp, 0x10
/* 258F8 8004A4F8 AFA30020 */ sw $v1, 0x20($sp)
/* 258FC 8004A4FC 8E2300D0 */ lw $v1, 0xd0($s1)
/* 25900 8004A500 3C014282 */ lui $at, 0x4282
/* 25904 8004A504 44810000 */ mtc1 $at, $f0
/* 25908 8004A508 8C63002C */ lw $v1, 0x2c($v1)
/* 2590C 8004A50C 0040982D */ daddu $s3, $v0, $zero
/* 25910 8004A510 E7A00028 */ swc1 $f0, 0x28($sp)
/* 25914 8004A514 A7A0002C */ sh $zero, 0x2c($sp)
/* 25918 8004A518 16000005 */ bnez $s0, .L8004A530
/* 2591C 8004A51C AFA30024 */ sw $v1, 0x24($sp)
/* 25920 8004A520 8E2200B0 */ lw $v0, 0xb0($s1)
/* 25924 8004A524 30420004 */ andi $v0, $v0, 4
/* 25928 8004A528 1040002B */ beqz $v0, .L8004A5D8
/* 2592C 8004A52C 00000000 */ nop
.L8004A530:
/* 25930 8004A530 2404F7FF */ addiu $a0, $zero, -0x801
/* 25934 8004A534 AE400070 */ sw $zero, 0x70($s2)
/* 25938 8004A538 A6A0008E */ sh $zero, 0x8e($s5)
/* 2593C 8004A53C 8E2200CC */ lw $v0, 0xcc($s1)
/* 25940 8004A540 8EA30000 */ lw $v1, ($s5)
/* 25944 8004A544 8C420000 */ lw $v0, ($v0)
/* 25948 8004A548 00641824 */ and $v1, $v1, $a0
/* 2594C 8004A54C AEA30000 */ sw $v1, ($s5)
/* 25950 8004A550 AEA20028 */ sw $v0, 0x28($s5)
/* 25954 8004A554 8E2200D0 */ lw $v0, 0xd0($s1)
/* 25958 8004A558 8C420034 */ lw $v0, 0x34($v0)
/* 2595C 8004A55C 54400005 */ bnel $v0, $zero, .L8004A574
/* 25960 8004A560 2402FDFF */ addiu $v0, $zero, -0x201
/* 25964 8004A564 34620200 */ ori $v0, $v1, 0x200
/* 25968 8004A568 2403FFF7 */ addiu $v1, $zero, -9
/* 2596C 8004A56C 0801295F */ j .L8004A57C
/* 25970 8004A570 00431024 */ and $v0, $v0, $v1
.L8004A574:
/* 25974 8004A574 00621024 */ and $v0, $v1, $v0
/* 25978 8004A578 34420008 */ ori $v0, $v0, 8
.L8004A57C:
/* 2597C 8004A57C AEA20000 */ sw $v0, ($s5)
/* 25980 8004A580 8E2200B0 */ lw $v0, 0xb0($s1)
/* 25984 8004A584 30420004 */ andi $v0, $v0, 4
/* 25988 8004A588 10400004 */ beqz $v0, .L8004A59C
/* 2598C 8004A58C 24020063 */ addiu $v0, $zero, 0x63
/* 25990 8004A590 AE420070 */ sw $v0, 0x70($s2)
/* 25994 8004A594 0801296D */ j .L8004A5B4
/* 25998 8004A598 AE400074 */ sw $zero, 0x74($s2)
.L8004A59C:
/* 2599C 8004A59C 8E220000 */ lw $v0, ($s1)
/* 259A0 8004A5A0 3C034000 */ lui $v1, 0x4000
/* 259A4 8004A5A4 00431024 */ and $v0, $v0, $v1
/* 259A8 8004A5A8 10400002 */ beqz $v0, .L8004A5B4
/* 259AC 8004A5AC 2402000C */ addiu $v0, $zero, 0xc
/* 259B0 8004A5B0 AE420070 */ sw $v0, 0x70($s2)
.L8004A5B4:
/* 259B4 8004A5B4 3C05BFFF */ lui $a1, 0xbfff
/* 259B8 8004A5B8 34A5FFFF */ ori $a1, $a1, 0xffff
/* 259BC 8004A5BC 2404FFFB */ addiu $a0, $zero, -5
/* 259C0 8004A5C0 8E2200B0 */ lw $v0, 0xb0($s1)
/* 259C4 8004A5C4 8E230000 */ lw $v1, ($s1)
/* 259C8 8004A5C8 00441024 */ and $v0, $v0, $a0
/* 259CC 8004A5CC 00651824 */ and $v1, $v1, $a1
/* 259D0 8004A5D0 AE2200B0 */ sw $v0, 0xb0($s1)
/* 259D4 8004A5D4 AE230000 */ sw $v1, ($s1)
.L8004A5D8:
/* 259D8 8004A5D8 8E430070 */ lw $v1, 0x70($s2)
/* 259DC 8004A5DC 2C620064 */ sltiu $v0, $v1, 0x64
/* 259E0 8004A5E0 10400038 */ beqz $v0, .L8004A6C4_25AC4
/* 259E4 8004A5E4 00031080 */ sll $v0, $v1, 2
/* 259E8 8004A5E8 3C01800A */ lui $at, %hi(jtbl_80098728)
/* 259EC 8004A5EC 00220821 */ addu $at, $at, $v0
/* 259F0 8004A5F0 8C228728 */ lw $v0, %lo(jtbl_80098728)($at)
/* 259F4 8004A5F4 00400008 */ jr $v0
/* 259F8 8004A5F8 00000000 */ nop
.L8004A5FC_259FC:
/* 259FC 8004A5FC 0240202D */ daddu $a0, $s2, $zero
/* 25A00 8004A600 0260282D */ daddu $a1, $s3, $zero
/* 25A04 8004A604 0C012568 */ jal func_800495A0
/* 25A08 8004A608 0280302D */ daddu $a2, $s4, $zero
.L8004A60C_25A0C:
/* 25A0C 8004A60C 0240202D */ daddu $a0, $s2, $zero
/* 25A10 8004A610 0260282D */ daddu $a1, $s3, $zero
/* 25A14 8004A614 0C0125AE */ jal func_800496B8
/* 25A18 8004A618 0280302D */ daddu $a2, $s4, $zero
/* 25A1C 8004A61C 080129B1 */ j .L8004A6C4_25AC4
/* 25A20 8004A620 00000000 */ nop
.L8004A624_25A24:
/* 25A24 8004A624 0240202D */ daddu $a0, $s2, $zero
/* 25A28 8004A628 0260282D */ daddu $a1, $s3, $zero
/* 25A2C 8004A62C 0C0126D1 */ jal base_UnkNpcAIFunc1
/* 25A30 8004A630 0280302D */ daddu $a2, $s4, $zero
.L8004A634_25A34:
/* 25A34 8004A634 0240202D */ daddu $a0, $s2, $zero
/* 25A38 8004A638 0260282D */ daddu $a1, $s3, $zero
/* 25A3C 8004A63C 0C012701 */ jal func_80049C04
/* 25A40 8004A640 0280302D */ daddu $a2, $s4, $zero
/* 25A44 8004A644 080129B1 */ j .L8004A6C4_25AC4
/* 25A48 8004A648 00000000 */ nop
.L8004A64C_25A4C:
/* 25A4C 8004A64C 0240202D */ daddu $a0, $s2, $zero
/* 25A50 8004A650 0260282D */ daddu $a1, $s3, $zero
/* 25A54 8004A654 0C01278F */ jal func_80049E3C
/* 25A58 8004A658 0280302D */ daddu $a2, $s4, $zero
.L8004A65C_25A5C:
/* 25A5C 8004A65C 0240202D */ daddu $a0, $s2, $zero
/* 25A60 8004A660 0260282D */ daddu $a1, $s3, $zero
/* 25A64 8004A664 0C0127B3 */ jal func_80049ECC
/* 25A68 8004A668 0280302D */ daddu $a2, $s4, $zero
/* 25A6C 8004A66C 080129B1 */ j .L8004A6C4_25AC4
/* 25A70 8004A670 00000000 */ nop
.L8004A674_25A74:
/* 25A74 8004A674 0240202D */ daddu $a0, $s2, $zero
/* 25A78 8004A678 0260282D */ daddu $a1, $s3, $zero
/* 25A7C 8004A67C 0C0127DF */ jal func_80049F7C
/* 25A80 8004A680 0280302D */ daddu $a2, $s4, $zero
.L8004A684_25A84:
/* 25A84 8004A684 0240202D */ daddu $a0, $s2, $zero
/* 25A88 8004A688 0260282D */ daddu $a1, $s3, $zero
/* 25A8C 8004A68C 0C012849 */ jal func_8004A124
/* 25A90 8004A690 0280302D */ daddu $a2, $s4, $zero
/* 25A94 8004A694 8E430070 */ lw $v1, 0x70($s2)
/* 25A98 8004A698 2402000E */ addiu $v0, $zero, 0xe
/* 25A9C 8004A69C 14620009 */ bne $v1, $v0, .L8004A6C4_25AC4
/* 25AA0 8004A6A0 00000000 */ nop
.L8004A6A4_25AA4:
/* 25AA4 8004A6A4 0240202D */ daddu $a0, $s2, $zero
/* 25AA8 8004A6A8 0260282D */ daddu $a1, $s3, $zero
/* 25AAC 8004A6AC 0C0128FA */ jal func_8004A3E8
/* 25AB0 8004A6B0 0280302D */ daddu $a2, $s4, $zero
/* 25AB4 8004A6B4 080129B1 */ j .L8004A6C4_25AC4
/* 25AB8 8004A6B8 00000000 */ nop
.L8004A6BC_25ABC:
/* 25ABC 8004A6BC 0C0129CF */ jal func_8004A73C
/* 25AC0 8004A6C0 0240202D */ daddu $a0, $s2, $zero
.L8004A6C4_25AC4:
/* 25AC4 8004A6C4 8FBF0048 */ lw $ra, 0x48($sp)
/* 25AC8 8004A6C8 8FB50044 */ lw $s5, 0x44($sp)
/* 25ACC 8004A6CC 8FB40040 */ lw $s4, 0x40($sp)
/* 25AD0 8004A6D0 8FB3003C */ lw $s3, 0x3c($sp)
/* 25AD4 8004A6D4 8FB20038 */ lw $s2, 0x38($sp)
/* 25AD8 8004A6D8 8FB10034 */ lw $s1, 0x34($sp)
/* 25ADC 8004A6DC 8FB00030 */ lw $s0, 0x30($sp)
/* 25AE0 8004A6E0 0000102D */ daddu $v0, $zero, $zero
/* 25AE4 8004A6E4 03E00008 */ jr $ra
/* 25AE8 8004A6E8 27BD0050 */ addiu $sp, $sp, 0x50
/* 25AEC 8004A6EC 00000000 */ nop

View File

@ -1,151 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80049C04
/* 25004 80049C04 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 25008 80049C08 AFB40048 */ sw $s4, 0x48($sp)
/* 2500C 80049C0C 0080A02D */ daddu $s4, $a0, $zero
/* 25010 80049C10 AFBF004C */ sw $ra, 0x4c($sp)
/* 25014 80049C14 AFB30044 */ sw $s3, 0x44($sp)
/* 25018 80049C18 AFB20040 */ sw $s2, 0x40($sp)
/* 2501C 80049C1C AFB1003C */ sw $s1, 0x3c($sp)
/* 25020 80049C20 AFB00038 */ sw $s0, 0x38($sp)
/* 25024 80049C24 F7B40050 */ sdc1 $f20, 0x50($sp)
/* 25028 80049C28 8E920148 */ lw $s2, 0x148($s4)
/* 2502C 80049C2C 00A0982D */ daddu $s3, $a1, $zero
/* 25030 80049C30 86440008 */ lh $a0, 8($s2)
/* 25034 80049C34 0C00EABB */ jal get_npc_unsafe
/* 25038 80049C38 00C0882D */ daddu $s1, $a2, $zero
/* 2503C 80049C3C 8E630014 */ lw $v1, 0x14($s3)
/* 25040 80049C40 0460004F */ bltz $v1, .L80049D80
/* 25044 80049C44 0040802D */ daddu $s0, $v0, $zero
/* 25048 80049C48 0220202D */ daddu $a0, $s1, $zero
/* 2504C 80049C4C AFA00010 */ sw $zero, 0x10($sp)
/* 25050 80049C50 8E660024 */ lw $a2, 0x24($s3)
/* 25054 80049C54 8E670028 */ lw $a3, 0x28($s3)
/* 25058 80049C58 0C01242D */ jal func_800490B4
/* 2505C 80049C5C 0240282D */ daddu $a1, $s2, $zero
/* 25060 80049C60 10400047 */ beqz $v0, .L80049D80
/* 25064 80049C64 00000000 */ nop
/* 25068 80049C68 3C02800F */ lui $v0, %hi(gPlayerStatusPtr)
/* 2506C 80049C6C 8C427B30 */ lw $v0, %lo(gPlayerStatusPtr)($v0)
/* 25070 80049C70 C60C0038 */ lwc1 $f12, 0x38($s0)
/* 25074 80049C74 C602003C */ lwc1 $f2, 0x3c($s0)
/* 25078 80049C78 C6040040 */ lwc1 $f4, 0x40($s0)
/* 2507C 80049C7C 46006006 */ mov.s $f0, $f12
/* 25080 80049C80 8C460028 */ lw $a2, 0x28($v0)
/* 25084 80049C84 8C470030 */ lw $a3, 0x30($v0)
/* 25088 80049C88 46002386 */ mov.s $f14, $f4
/* 2508C 80049C8C E7A00028 */ swc1 $f0, 0x28($sp)
/* 25090 80049C90 E7A2002C */ swc1 $f2, 0x2c($sp)
/* 25094 80049C94 0C00A720 */ jal atan2
/* 25098 80049C98 E7A40030 */ swc1 $f4, 0x30($sp)
/* 2509C 80049C9C C6620018 */ lwc1 $f2, 0x18($s3)
/* 250A0 80049CA0 46000506 */ mov.s $f20, $f0
/* 250A4 80049CA4 E7B40014 */ swc1 $f20, 0x14($sp)
/* 250A8 80049CA8 E7A20010 */ swc1 $f2, 0x10($sp)
/* 250AC 80049CAC 860200A8 */ lh $v0, 0xa8($s0)
/* 250B0 80049CB0 27A50028 */ addiu $a1, $sp, 0x28
/* 250B4 80049CB4 44820000 */ mtc1 $v0, $f0
/* 250B8 80049CB8 00000000 */ nop
/* 250BC 80049CBC 46800020 */ cvt.s.w $f0, $f0
/* 250C0 80049CC0 E7A00018 */ swc1 $f0, 0x18($sp)
/* 250C4 80049CC4 860200A6 */ lh $v0, 0xa6($s0)
/* 250C8 80049CC8 27A6002C */ addiu $a2, $sp, 0x2c
/* 250CC 80049CCC 44820000 */ mtc1 $v0, $f0
/* 250D0 80049CD0 00000000 */ nop
/* 250D4 80049CD4 46800020 */ cvt.s.w $f0, $f0
/* 250D8 80049CD8 E7A0001C */ swc1 $f0, 0x1c($sp)
/* 250DC 80049CDC 8E040080 */ lw $a0, 0x80($s0)
/* 250E0 80049CE0 0C037711 */ jal npc_test_move_simple_with_slipping
/* 250E4 80049CE4 27A70030 */ addiu $a3, $sp, 0x30
/* 250E8 80049CE8 14400025 */ bnez $v0, .L80049D80
/* 250EC 80049CEC 0200202D */ daddu $a0, $s0, $zero
/* 250F0 80049CF0 240502F4 */ addiu $a1, $zero, 0x2f4
/* 250F4 80049CF4 3C060020 */ lui $a2, 0x20
/* 250F8 80049CF8 0C012530 */ jal ai_enemy_play_sound
/* 250FC 80049CFC E614000C */ swc1 $f20, 0xc($s0)
/* 25100 80049D00 0000202D */ daddu $a0, $zero, $zero
/* 25104 80049D04 0200282D */ daddu $a1, $s0, $zero
/* 25108 80049D08 0000302D */ daddu $a2, $zero, $zero
/* 2510C 80049D0C 84A300A8 */ lh $v1, 0xa8($a1)
/* 25110 80049D10 3C013F80 */ lui $at, 0x3f80
/* 25114 80049D14 44810000 */ mtc1 $at, $f0
/* 25118 80049D18 3C014000 */ lui $at, 0x4000
/* 2511C 80049D1C 44811000 */ mtc1 $at, $f2
/* 25120 80049D20 3C01C1A0 */ lui $at, 0xc1a0
/* 25124 80049D24 44812000 */ mtc1 $at, $f4
/* 25128 80049D28 2402000F */ addiu $v0, $zero, 0xf
/* 2512C 80049D2C AFA2001C */ sw $v0, 0x1c($sp)
/* 25130 80049D30 44833000 */ mtc1 $v1, $f6
/* 25134 80049D34 00000000 */ nop
/* 25138 80049D38 468031A0 */ cvt.s.w $f6, $f6
/* 2513C 80049D3C 44073000 */ mfc1 $a3, $f6
/* 25140 80049D40 27A20034 */ addiu $v0, $sp, 0x34
/* 25144 80049D44 AFA20020 */ sw $v0, 0x20($sp)
/* 25148 80049D48 E7A00010 */ swc1 $f0, 0x10($sp)
/* 2514C 80049D4C E7A20014 */ swc1 $f2, 0x14($sp)
/* 25150 80049D50 0C01BFA4 */ jal fx_emote
/* 25154 80049D54 E7A40018 */ swc1 $f4, 0x18($sp)
/* 25158 80049D58 8E420018 */ lw $v0, 0x18($s2)
/* 2515C 80049D5C 9442002A */ lhu $v0, 0x2a($v0)
/* 25160 80049D60 30420001 */ andi $v0, $v0, 1
/* 25164 80049D64 10400003 */ beqz $v0, .L80049D74
/* 25168 80049D68 2402000A */ addiu $v0, $zero, 0xa
/* 2516C 80049D6C 08012786 */ j .L80049E18
/* 25170 80049D70 AE820070 */ sw $v0, 0x70($s4)
.L80049D74:
/* 25174 80049D74 2402000C */ addiu $v0, $zero, 0xc
/* 25178 80049D78 08012786 */ j .L80049E18
/* 2517C 80049D7C AE820070 */ sw $v0, 0x70($s4)
.L80049D80:
/* 25180 80049D80 8602008C */ lh $v0, 0x8c($s0)
/* 25184 80049D84 14400024 */ bnez $v0, .L80049E18
/* 25188 80049D88 00000000 */ nop
/* 2518C 80049D8C 9602008E */ lhu $v0, 0x8e($s0)
/* 25190 80049D90 2442FFFF */ addiu $v0, $v0, -1
/* 25194 80049D94 A602008E */ sh $v0, 0x8e($s0)
/* 25198 80049D98 00021400 */ sll $v0, $v0, 0x10
/* 2519C 80049D9C 1C40001E */ bgtz $v0, .L80049E18
/* 251A0 80049DA0 00000000 */ nop
/* 251A4 80049DA4 8E820074 */ lw $v0, 0x74($s4)
/* 251A8 80049DA8 2442FFFF */ addiu $v0, $v0, -1
/* 251AC 80049DAC 10400019 */ beqz $v0, .L80049E14
/* 251B0 80049DB0 AE820074 */ sw $v0, 0x74($s4)
/* 251B4 80049DB4 8E420018 */ lw $v0, 0x18($s2)
/* 251B8 80049DB8 9442002A */ lhu $v0, 0x2a($v0)
/* 251BC 80049DBC 30420010 */ andi $v0, $v0, 0x10
/* 251C0 80049DC0 14400007 */ bnez $v0, .L80049DE0
/* 251C4 80049DC4 00000000 */ nop
/* 251C8 80049DC8 C600000C */ lwc1 $f0, 0xc($s0)
/* 251CC 80049DCC 3C014334 */ lui $at, 0x4334
/* 251D0 80049DD0 44816000 */ mtc1 $at, $f12
/* 251D4 80049DD4 0C00A6C9 */ jal clamp_angle
/* 251D8 80049DD8 460C0300 */ add.s $f12, $f0, $f12
/* 251DC 80049DDC E600000C */ swc1 $f0, 0xc($s0)
.L80049DE0:
/* 251E0 80049DE0 8E640008 */ lw $a0, 8($s3)
/* 251E4 80049DE4 000417C2 */ srl $v0, $a0, 0x1f
/* 251E8 80049DE8 00822021 */ addu $a0, $a0, $v0
/* 251EC 80049DEC 00042043 */ sra $a0, $a0, 1
/* 251F0 80049DF0 0C00A67F */ jal rand_int
/* 251F4 80049DF4 24840001 */ addiu $a0, $a0, 1
/* 251F8 80049DF8 8E630008 */ lw $v1, 8($s3)
/* 251FC 80049DFC 000327C2 */ srl $a0, $v1, 0x1f
/* 25200 80049E00 00641821 */ addu $v1, $v1, $a0
/* 25204 80049E04 00031843 */ sra $v1, $v1, 1
/* 25208 80049E08 00621821 */ addu $v1, $v1, $v0
/* 2520C 80049E0C 08012786 */ j .L80049E18
/* 25210 80049E10 A603008E */ sh $v1, 0x8e($s0)
.L80049E14:
/* 25214 80049E14 AE800070 */ sw $zero, 0x70($s4)
.L80049E18:
/* 25218 80049E18 8FBF004C */ lw $ra, 0x4c($sp)
/* 2521C 80049E1C 8FB40048 */ lw $s4, 0x48($sp)
/* 25220 80049E20 8FB30044 */ lw $s3, 0x44($sp)
/* 25224 80049E24 8FB20040 */ lw $s2, 0x40($sp)
/* 25228 80049E28 8FB1003C */ lw $s1, 0x3c($sp)
/* 2522C 80049E2C 8FB00038 */ lw $s0, 0x38($sp)
/* 25230 80049E30 D7B40050 */ ldc1 $f20, 0x50($sp)
/* 25234 80049E34 03E00008 */ jr $ra
/* 25238 80049E38 27BD0058 */ addiu $sp, $sp, 0x58

View File

@ -1,188 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8004A124
/* 25524 8004A124 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 25528 8004A128 AFB30044 */ sw $s3, 0x44($sp)
/* 2552C 8004A12C 0080982D */ daddu $s3, $a0, $zero
/* 25530 8004A130 AFBF0048 */ sw $ra, 0x48($sp)
/* 25534 8004A134 AFB20040 */ sw $s2, 0x40($sp)
/* 25538 8004A138 AFB1003C */ sw $s1, 0x3c($sp)
/* 2553C 8004A13C AFB00038 */ sw $s0, 0x38($sp)
/* 25540 8004A140 F7B40050 */ sdc1 $f20, 0x50($sp)
/* 25544 8004A144 8E720148 */ lw $s2, 0x148($s3)
/* 25548 8004A148 00A0882D */ daddu $s1, $a1, $zero
/* 2554C 8004A14C 86440008 */ lh $a0, 8($s2)
/* 25550 8004A150 0C00EABB */ jal get_npc_unsafe
/* 25554 8004A154 00C0802D */ daddu $s0, $a2, $zero
/* 25558 8004A158 0200202D */ daddu $a0, $s0, $zero
/* 2555C 8004A15C 0240282D */ daddu $a1, $s2, $zero
/* 25560 8004A160 24030001 */ addiu $v1, $zero, 1
/* 25564 8004A164 AFA30010 */ sw $v1, 0x10($sp)
/* 25568 8004A168 8E260024 */ lw $a2, 0x24($s1)
/* 2556C 8004A16C 8E270028 */ lw $a3, 0x28($s1)
/* 25570 8004A170 0C01242D */ jal func_800490B4
/* 25574 8004A174 0040802D */ daddu $s0, $v0, $zero
/* 25578 8004A178 1440001D */ bnez $v0, .L8004A1F0
/* 2557C 8004A17C 24040002 */ addiu $a0, $zero, 2
/* 25580 8004A180 0200282D */ daddu $a1, $s0, $zero
/* 25584 8004A184 0000302D */ daddu $a2, $zero, $zero
/* 25588 8004A188 860300A8 */ lh $v1, 0xa8($s0)
/* 2558C 8004A18C 3C013F80 */ lui $at, 0x3f80
/* 25590 8004A190 44810000 */ mtc1 $at, $f0
/* 25594 8004A194 3C014000 */ lui $at, 0x4000
/* 25598 8004A198 44811000 */ mtc1 $at, $f2
/* 2559C 8004A19C 3C01C1A0 */ lui $at, 0xc1a0
/* 255A0 8004A1A0 44812000 */ mtc1 $at, $f4
/* 255A4 8004A1A4 2402000F */ addiu $v0, $zero, 0xf
/* 255A8 8004A1A8 AFA2001C */ sw $v0, 0x1c($sp)
/* 255AC 8004A1AC 44833000 */ mtc1 $v1, $f6
/* 255B0 8004A1B0 00000000 */ nop
/* 255B4 8004A1B4 468031A0 */ cvt.s.w $f6, $f6
/* 255B8 8004A1B8 44073000 */ mfc1 $a3, $f6
/* 255BC 8004A1BC 27A20028 */ addiu $v0, $sp, 0x28
/* 255C0 8004A1C0 AFA20020 */ sw $v0, 0x20($sp)
/* 255C4 8004A1C4 E7A00010 */ swc1 $f0, 0x10($sp)
/* 255C8 8004A1C8 E7A20014 */ swc1 $f2, 0x14($sp)
/* 255CC 8004A1CC 0C01BFA4 */ jal fx_emote
/* 255D0 8004A1D0 E7A40018 */ swc1 $f4, 0x18($sp)
/* 255D4 8004A1D4 8E4200CC */ lw $v0, 0xcc($s2)
/* 255D8 8004A1D8 8C430000 */ lw $v1, ($v0)
/* 255DC 8004A1DC 24020014 */ addiu $v0, $zero, 0x14
/* 255E0 8004A1E0 A602008E */ sh $v0, 0x8e($s0)
/* 255E4 8004A1E4 2402000E */ addiu $v0, $zero, 0xe
/* 255E8 8004A1E8 080128F1 */ j .L8004A3C4
/* 255EC 8004A1EC AE030028 */ sw $v1, 0x28($s0)
.L8004A1F0:
/* 255F0 8004A1F0 8E420018 */ lw $v0, 0x18($s2)
/* 255F4 8004A1F4 9442002A */ lhu $v0, 0x2a($v0)
/* 255F8 8004A1F8 30420004 */ andi $v0, $v0, 4
/* 255FC 8004A1FC 1040004A */ beqz $v0, .L8004A328
/* 25600 8004A200 0200202D */ daddu $a0, $s0, $zero
/* 25604 8004A204 3C02800F */ lui $v0, %hi(gPlayerStatusPtr)
/* 25608 8004A208 8C427B30 */ lw $v0, %lo(gPlayerStatusPtr)($v0)
/* 2560C 8004A20C C60C0038 */ lwc1 $f12, 0x38($s0)
/* 25610 8004A210 C60E0040 */ lwc1 $f14, 0x40($s0)
/* 25614 8004A214 8C460028 */ lw $a2, 0x28($v0)
/* 25618 8004A218 0C00A7B5 */ jal dist2D
/* 2561C 8004A21C 8C470030 */ lw $a3, 0x30($v0)
/* 25620 8004A220 C6020018 */ lwc1 $f2, 0x18($s0)
/* 25624 8004A224 3C014014 */ lui $at, 0x4014
/* 25628 8004A228 44812800 */ mtc1 $at, $f5
/* 2562C 8004A22C 44802000 */ mtc1 $zero, $f4
/* 25630 8004A230 460010A1 */ cvt.d.s $f2, $f2
/* 25634 8004A234 46241082 */ mul.d $f2, $f2, $f4
/* 25638 8004A238 00000000 */ nop
/* 2563C 8004A23C 46000021 */ cvt.d.s $f0, $f0
/* 25640 8004A240 4620103C */ c.lt.d $f2, $f0
/* 25644 8004A244 00000000 */ nop
/* 25648 8004A248 45000036 */ bc1f .L8004A324
/* 2564C 8004A24C 27A5002C */ addiu $a1, $sp, 0x2c
/* 25650 8004A250 C6000038 */ lwc1 $f0, 0x38($s0)
/* 25654 8004A254 C602003C */ lwc1 $f2, 0x3c($s0)
/* 25658 8004A258 C6040040 */ lwc1 $f4, 0x40($s0)
/* 2565C 8004A25C 3C013F80 */ lui $at, 0x3f80
/* 25660 8004A260 4481A000 */ mtc1 $at, $f20
/* 25664 8004A264 E7A0002C */ swc1 $f0, 0x2c($sp)
/* 25668 8004A268 E7A20030 */ swc1 $f2, 0x30($sp)
/* 2566C 8004A26C E7A40034 */ swc1 $f4, 0x34($sp)
/* 25670 8004A270 E7B40010 */ swc1 $f20, 0x10($sp)
/* 25674 8004A274 C600000C */ lwc1 $f0, 0xc($s0)
/* 25678 8004A278 E7A00014 */ swc1 $f0, 0x14($sp)
/* 2567C 8004A27C 860200A8 */ lh $v0, 0xa8($s0)
/* 25680 8004A280 44820000 */ mtc1 $v0, $f0
/* 25684 8004A284 00000000 */ nop
/* 25688 8004A288 46800020 */ cvt.s.w $f0, $f0
/* 2568C 8004A28C E7A00018 */ swc1 $f0, 0x18($sp)
/* 25690 8004A290 860200A6 */ lh $v0, 0xa6($s0)
/* 25694 8004A294 27A60030 */ addiu $a2, $sp, 0x30
/* 25698 8004A298 44820000 */ mtc1 $v0, $f0
/* 2569C 8004A29C 00000000 */ nop
/* 256A0 8004A2A0 46800020 */ cvt.s.w $f0, $f0
/* 256A4 8004A2A4 E7A0001C */ swc1 $f0, 0x1c($sp)
/* 256A8 8004A2A8 8E040080 */ lw $a0, 0x80($s0)
/* 256AC 8004A2AC 0C037711 */ jal npc_test_move_simple_with_slipping
/* 256B0 8004A2B0 27A70034 */ addiu $a3, $sp, 0x34
/* 256B4 8004A2B4 1040001B */ beqz $v0, .L8004A324
/* 256B8 8004A2B8 0200282D */ daddu $a1, $s0, $zero
/* 256BC 8004A2BC 24040002 */ addiu $a0, $zero, 2
/* 256C0 8004A2C0 0000302D */ daddu $a2, $zero, $zero
/* 256C4 8004A2C4 860300A8 */ lh $v1, 0xa8($s0)
/* 256C8 8004A2C8 3C014000 */ lui $at, 0x4000
/* 256CC 8004A2CC 44810000 */ mtc1 $at, $f0
/* 256D0 8004A2D0 3C01C1A0 */ lui $at, 0xc1a0
/* 256D4 8004A2D4 44811000 */ mtc1 $at, $f2
/* 256D8 8004A2D8 2402000C */ addiu $v0, $zero, 0xc
/* 256DC 8004A2DC AFA2001C */ sw $v0, 0x1c($sp)
/* 256E0 8004A2E0 44833000 */ mtc1 $v1, $f6
/* 256E4 8004A2E4 00000000 */ nop
/* 256E8 8004A2E8 468031A0 */ cvt.s.w $f6, $f6
/* 256EC 8004A2EC 44073000 */ mfc1 $a3, $f6
/* 256F0 8004A2F0 27A20028 */ addiu $v0, $sp, 0x28
/* 256F4 8004A2F4 E7B40010 */ swc1 $f20, 0x10($sp)
/* 256F8 8004A2F8 AFA20020 */ sw $v0, 0x20($sp)
/* 256FC 8004A2FC E7A00014 */ swc1 $f0, 0x14($sp)
/* 25700 8004A300 0C01BFA4 */ jal fx_emote
/* 25704 8004A304 E7A20018 */ swc1 $f2, 0x18($sp)
/* 25708 8004A308 8E4200CC */ lw $v0, 0xcc($s2)
/* 2570C 8004A30C 8C430000 */ lw $v1, ($v0)
/* 25710 8004A310 2402000F */ addiu $v0, $zero, 0xf
/* 25714 8004A314 A602008E */ sh $v0, 0x8e($s0)
/* 25718 8004A318 2402000E */ addiu $v0, $zero, 0xe
/* 2571C 8004A31C 080128F1 */ j .L8004A3C4
/* 25720 8004A320 AE030028 */ sw $v1, 0x28($s0)
.L8004A324:
/* 25724 8004A324 0200202D */ daddu $a0, $s0, $zero
.L8004A328:
/* 25728 8004A328 0C00F598 */ jal func_8003D660
/* 2572C 8004A32C 24050001 */ addiu $a1, $zero, 1
/* 25730 8004A330 8E050018 */ lw $a1, 0x18($s0)
/* 25734 8004A334 8E06000C */ lw $a2, 0xc($s0)
/* 25738 8004A338 0C00EA95 */ jal npc_move_heading
/* 2573C 8004A33C 0200202D */ daddu $a0, $s0, $zero
/* 25740 8004A340 C6000018 */ lwc1 $f0, 0x18($s0)
/* 25744 8004A344 3C014020 */ lui $at, 0x4020
/* 25748 8004A348 44811800 */ mtc1 $at, $f3
/* 2574C 8004A34C 44801000 */ mtc1 $zero, $f2
/* 25750 8004A350 46000021 */ cvt.d.s $f0, $f0
/* 25754 8004A354 4620103C */ c.lt.d $f2, $f0
/* 25758 8004A358 00000000 */ nop
/* 2575C 8004A35C 45000012 */ bc1f .L8004A3A8
/* 25760 8004A360 00000000 */ nop
/* 25764 8004A364 3C028007 */ lui $v0, %hi(gGameStatusPtr)
/* 25768 8004A368 8C42419C */ lw $v0, %lo(gGameStatusPtr)($v0)
/* 2576C 8004A36C 94430134 */ lhu $v1, 0x134($v0)
/* 25770 8004A370 3C02CCCC */ lui $v0, 0xcccc
/* 25774 8004A374 3442CCCD */ ori $v0, $v0, 0xcccd
/* 25778 8004A378 00620019 */ multu $v1, $v0
/* 2577C 8004A37C 00004010 */ mfhi $t0
/* 25780 8004A380 00082082 */ srl $a0, $t0, 2
/* 25784 8004A384 00041080 */ sll $v0, $a0, 2
/* 25788 8004A388 00441021 */ addu $v0, $v0, $a0
/* 2578C 8004A38C 00621823 */ subu $v1, $v1, $v0
/* 25790 8004A390 3063FFFF */ andi $v1, $v1, 0xffff
/* 25794 8004A394 14600004 */ bnez $v1, .L8004A3A8
/* 25798 8004A398 0200202D */ daddu $a0, $s0, $zero
/* 2579C 8004A39C 240520C1 */ addiu $a1, $zero, 0x20c1
/* 257A0 8004A3A0 0C012530 */ jal ai_enemy_play_sound
/* 257A4 8004A3A4 0000302D */ daddu $a2, $zero, $zero
.L8004A3A8:
/* 257A8 8004A3A8 8602008E */ lh $v0, 0x8e($s0)
/* 257AC 8004A3AC 9603008E */ lhu $v1, 0x8e($s0)
/* 257B0 8004A3B0 18400003 */ blez $v0, .L8004A3C0
/* 257B4 8004A3B4 2462FFFF */ addiu $v0, $v1, -1
/* 257B8 8004A3B8 080128F2 */ j .L8004A3C8
/* 257BC 8004A3BC A602008E */ sh $v0, 0x8e($s0)
.L8004A3C0:
/* 257C0 8004A3C0 2402000C */ addiu $v0, $zero, 0xc
.L8004A3C4:
/* 257C4 8004A3C4 AE620070 */ sw $v0, 0x70($s3)
.L8004A3C8:
/* 257C8 8004A3C8 8FBF0048 */ lw $ra, 0x48($sp)
/* 257CC 8004A3CC 8FB30044 */ lw $s3, 0x44($sp)
/* 257D0 8004A3D0 8FB20040 */ lw $s2, 0x40($sp)
/* 257D4 8004A3D4 8FB1003C */ lw $s1, 0x3c($sp)
/* 257D8 8004A3D8 8FB00038 */ lw $s0, 0x38($sp)
/* 257DC 8004A3DC D7B40050 */ ldc1 $f20, 0x50($sp)
/* 257E0 8004A3E0 03E00008 */ jr $ra
/* 257E4 8004A3E4 27BD0058 */ addiu $sp, $sp, 0x58