Decompile aiDestroyObject
This commit is contained in:
parent
a886680dd3
commit
171b1cc4b5
|
|
@ -3323,83 +3323,28 @@ bool ai0065(void)
|
|||
/**
|
||||
* @cmd 0066
|
||||
*/
|
||||
GLOBAL_ASM(
|
||||
glabel ai0066
|
||||
/* f051b84: 3c03800a */ lui $v1,%hi(g_Vars)
|
||||
/* f051b88: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars)
|
||||
/* f051b8c: 8c6e0434 */ lw $t6,0x434($v1)
|
||||
/* f051b90: 8c6f0438 */ lw $t7,0x438($v1)
|
||||
/* f051b94: 27bdffc8 */ addiu $sp,$sp,-56
|
||||
/* f051b98: afbf0024 */ sw $ra,0x24($sp)
|
||||
/* f051b9c: afb00020 */ sw $s0,0x20($sp)
|
||||
/* f051ba0: 01cf1021 */ addu $v0,$t6,$t7
|
||||
/* f051ba4: 0fc2556c */ jal objFindByTagId
|
||||
/* f051ba8: 90440002 */ lbu $a0,0x2($v0)
|
||||
/* f051bac: 10400033 */ beqz $v0,.L0f051c7c
|
||||
/* f051bb0: 00408025 */ or $s0,$v0,$zero
|
||||
/* f051bb4: 8c580014 */ lw $t8,0x14($v0)
|
||||
/* f051bb8: 13000030 */ beqz $t8,.L0f051c7c
|
||||
/* f051bbc: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f051bc0: 0fc1a1ee */ jal func0f0687b8
|
||||
/* f051bc4: 00402025 */ or $a0,$v0,$zero
|
||||
/* f051bc8: 1440002c */ bnez $v0,.L0f051c7c
|
||||
/* f051bcc: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f051bd0: 8e020014 */ lw $v0,0x14($s0)
|
||||
/* f051bd4: 240100eb */ addiu $at,$zero,0xeb
|
||||
/* f051bd8: 24070003 */ addiu $a3,$zero,0x3
|
||||
/* f051bdc: 8c430004 */ lw $v1,0x4($v0)
|
||||
/* f051be0: 84790004 */ lh $t9,0x4($v1)
|
||||
/* f051be4: 57210015 */ bnel $t9,$at,.L0f051c3c
|
||||
/* f051be8: 860b004e */ lh $t3,0x4e($s0)
|
||||
/* f051bec: 8e080008 */ lw $t0,0x8($s0)
|
||||
/* f051bf0: 3c01fffe */ lui $at,0xfffe
|
||||
/* f051bf4: 3421ffff */ ori $at,$at,0xffff
|
||||
/* f051bf8: 01014824 */ and $t1,$t0,$at
|
||||
/* f051bfc: 3c010002 */ lui $at,0x2
|
||||
/* f051c00: 01215025 */ or $t2,$t1,$at
|
||||
/* f051c04: ae0a0008 */ sw $t2,0x8($s0)
|
||||
/* f051c08: 8c640014 */ lw $a0,0x14($v1)
|
||||
/* f051c0c: afa3002c */ sw $v1,0x2c($sp)
|
||||
/* f051c10: afa00010 */ sw $zero,0x10($sp)
|
||||
/* f051c14: 24850008 */ addiu $a1,$a0,0x8
|
||||
/* f051c18: 0fc4a640 */ jal func0f129900
|
||||
/* f051c1c: 24860028 */ addiu $a2,$a0,0x28
|
||||
/* f051c20: 8fa3002c */ lw $v1,0x2c($sp)
|
||||
/* f051c24: 24050016 */ addiu $a1,$zero,0x16
|
||||
/* f051c28: 0fc4b9c5 */ jal func0f12e714
|
||||
/* f051c2c: 8c640014 */ lw $a0,0x14($v1)
|
||||
/* f051c30: 10000012 */ beqz $zero,.L0f051c7c
|
||||
/* f051c34: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f051c38: 860b004e */ lh $t3,0x4e($s0)
|
||||
.L0f051c3c:
|
||||
/* f051c3c: 860c004c */ lh $t4,0x4c($s0)
|
||||
/* f051c40: 3c01437a */ lui $at,0x437a
|
||||
/* f051c44: 44814000 */ mtc1 $at,$f8
|
||||
/* f051c48: 016c6823 */ subu $t5,$t3,$t4
|
||||
/* f051c4c: 25ae0001 */ addiu $t6,$t5,0x1
|
||||
/* f051c50: 448e2000 */ mtc1 $t6,$f4
|
||||
/* f051c54: 240fffff */ addiu $t7,$zero,-1
|
||||
/* f051c58: afaf0010 */ sw $t7,0x10($sp)
|
||||
/* f051c5c: 468021a0 */ cvt.s.w $f6,$f4
|
||||
/* f051c60: 02002025 */ or $a0,$s0,$zero
|
||||
/* f051c64: 24460008 */ addiu $a2,$v0,0x8
|
||||
/* f051c68: 24070022 */ addiu $a3,$zero,0x22
|
||||
/* f051c6c: 46083003 */ div.s $f0,$f6,$f8
|
||||
/* f051c70: 44050000 */ mfc1 $a1,$f0
|
||||
/* f051c74: 0fc214ab */ jal func0f0852ac
|
||||
/* f051c78: 00000000 */ sll $zero,$zero,0x0
|
||||
.L0f051c7c:
|
||||
/* f051c7c: 3c03800a */ lui $v1,%hi(g_Vars)
|
||||
/* f051c80: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars)
|
||||
/* f051c84: 8c780438 */ lw $t8,0x438($v1)
|
||||
/* f051c88: 8fbf0024 */ lw $ra,0x24($sp)
|
||||
/* f051c8c: 8fb00020 */ lw $s0,0x20($sp)
|
||||
/* f051c90: 27190003 */ addiu $t9,$t8,0x3
|
||||
/* f051c94: ac790438 */ sw $t9,0x438($v1)
|
||||
/* f051c98: 27bd0038 */ addiu $sp,$sp,0x38
|
||||
/* f051c9c: 03e00008 */ jr $ra
|
||||
/* f051ca0: 00001025 */ or $v0,$zero,$zero
|
||||
);
|
||||
bool aiDestroyObject(void)
|
||||
{
|
||||
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
|
||||
struct defaultobj *obj = objFindByTagId(cmd[2]);
|
||||
|
||||
if (obj && obj->pos && func0f0687b8(obj) == 0) {
|
||||
struct defaultobj *entity = obj->pos->entity;
|
||||
|
||||
if (entity->obj == 0xeb) {
|
||||
obj->flags = (obj->flags & 0xfffeffff) | 0x20000;
|
||||
func0f129900(entity->pos, &entity->pos->coord, &entity->pos->room, 3, 0);
|
||||
func0f12e714(entity->pos, 0x16);
|
||||
} else {
|
||||
float damage = ((obj->maxdamage - obj->damage) + 1) / 250.0f;
|
||||
func0f0852ac(obj, damage, &obj->pos->coord, 0x22, -1);
|
||||
}
|
||||
}
|
||||
|
||||
g_Vars.aioffset += 3;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @cmd 0067
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@
|
|||
/*0x0062*/ bool aiIfObjectHealthy(void);
|
||||
/*0x0063*/ bool aiIfChrActivatedObject(void);
|
||||
/*0x0065*/ bool ai0065(void);
|
||||
/*0x0066*/ bool ai0066(void);
|
||||
/*0x0066*/ bool aiDestroyObject(void);
|
||||
/*0x0067*/ bool ai0067(void);
|
||||
/*0x0068*/ bool ai0068(void);
|
||||
/*0x0069*/ bool ai0069(void);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ u32 func0f068694(void);
|
|||
u32 func0f0686e0(void);
|
||||
u32 func0f0686f0(void);
|
||||
u32 func0f068760(void);
|
||||
u32 func0f0687b8(void);
|
||||
s32 func0f0687b8(struct defaultobj *obj);
|
||||
u32 func0f0687e4(void);
|
||||
u32 func0f0688f4(void);
|
||||
u32 func0f06896c(void);
|
||||
|
|
@ -221,7 +221,7 @@ u32 func0f085050(void);
|
|||
u32 func0f085194(void);
|
||||
u32 func0f0851ec(void);
|
||||
u32 func0f085270(void);
|
||||
u32 func0f0852ac(void);
|
||||
void func0f0852ac(struct defaultobj *obj, float damage, struct coord *coord, s32 arg3, s32 arg4);
|
||||
u32 func0f0859a0(void);
|
||||
u32 func0f085e00(void);
|
||||
u32 func0f085eac(void);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#include <ultra64.h>
|
||||
#include "types.h"
|
||||
|
||||
u32 func0f129900(void);
|
||||
void func0f129900(struct position *pos, struct coord *coord, s16 room, s32 arg3, s32 arg4);
|
||||
u32 func0f129940(void);
|
||||
u32 func0f129b08(void);
|
||||
u32 func0f129ba4(void);
|
||||
|
|
@ -21,7 +21,7 @@ u32 func0f12d3f0(void);
|
|||
u32 func0f12e1c0(void);
|
||||
u32 func0f12e454(void);
|
||||
u32 func0f12e5b0(void);
|
||||
u32 func0f12e714(void);
|
||||
void func0f12e714(struct position *pos, s32 arg1);
|
||||
u32 func0f12e74c(void);
|
||||
u32 func0f12e77c(void);
|
||||
u32 func0f12e820(void);
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@ struct defaultobj {
|
|||
/*0x00*/ u16 extrascale;
|
||||
/*0x02*/ u8 hidden2;
|
||||
/*0x03*/ u8 type;
|
||||
/*0x04*/ u16 obj;
|
||||
/*0x04*/ s16 obj;
|
||||
/*0x06*/ s16 pad;
|
||||
/*0x08*/ u32 flags;
|
||||
/*0x0c*/ u32 flags2;
|
||||
|
|
@ -298,7 +298,7 @@ struct defaultobj {
|
|||
/*0x44*/ u32 unk44;
|
||||
/*0x48*/ u32 unk48;
|
||||
/*0x4c*/ s16 damage;
|
||||
/*0x4e*/ u16 maxdamage;
|
||||
/*0x4e*/ s16 maxdamage;
|
||||
/*0x50*/ u32 shadecol;
|
||||
/*0x54*/ u32 nextcol;
|
||||
/*0x58*/ u16 floorcol;
|
||||
|
|
|
|||
|
|
@ -14234,7 +14234,7 @@ bool (*g_CommandPointers[])(void) = {
|
|||
/*0x0063*/ aiIfChrActivatedObject,
|
||||
/*0x0064*/ NULL,
|
||||
/*0x0065*/ ai0065,
|
||||
/*0x0066*/ ai0066,
|
||||
/*0x0066*/ aiDestroyObject,
|
||||
/*0x0067*/ ai0067,
|
||||
/*0x0068*/ ai0068,
|
||||
/*0x0069*/ ai0069,
|
||||
|
|
|
|||
Loading…
Reference in New Issue