Decompile func0f197544

This commit is contained in:
Ryan Dwyer 2020-01-05 13:57:55 +10:00
parent cefe97af13
commit 3d5083b6a9
4 changed files with 50 additions and 61 deletions

View File

@ -18471,57 +18471,27 @@ glabel func0f194b40
/* f197540: 27bd02f8 */ addiu $sp,$sp,0x2f8
);
GLOBAL_ASM(
glabel func0f197544
/* f197544: 27bdffe8 */ addiu $sp,$sp,-24
/* f197548: afbf0014 */ sw $ra,0x14($sp)
/* f19754c: 908e02a0 */ lbu $t6,0x2a0($a0)
/* f197550: 2401002a */ addiu $at,$zero,0x2a
/* f197554: 00001025 */ or $v0,$zero,$zero
/* f197558: 15c1001d */ bne $t6,$at,.L0f1975d0
/* f19755c: 8c8502d4 */ lw $a1,0x2d4($a0)
/* f197560: 908f0064 */ lbu $t7,0x64($a0)
/* f197564: 240d0001 */ addiu $t5,$zero,0x1
/* f197568: 000fc080 */ sll $t8,$t7,0x2
/* f19756c: 0098c821 */ addu $t9,$a0,$t8
/* f197570: 8f28004c */ lw $t0,0x4c($t9)
/* f197574: 55000015 */ bnezl $t0,.L0f1975cc
/* f197578: acad00d8 */ sw $t5,0xd8($a1)
/* f19757c: 8ca30010 */ lw $v1,0x10($a1)
/* f197580: 50600012 */ beqzl $v1,.L0f1975cc
/* f197584: acad00d8 */ sw $t5,0xd8($a1)
/* f197588: 8c690018 */ lw $t1,0x18($v1)
/* f19758c: 5520000f */ bnezl $t1,.L0f1975cc
/* f197590: acad00d8 */ sw $t5,0xd8($a1)
/* f197594: 846a0002 */ lh $t2,0x2($v1)
/* f197598: 5540000c */ bnezl $t2,.L0f1975cc
/* f19759c: acad00d8 */ sw $t5,0xd8($a1)
/* f1975a0: 90620000 */ lbu $v0,0x0($v1)
/* f1975a4: 24010004 */ addiu $at,$zero,0x4
/* f1975a8: 10410003 */ beq $v0,$at,.L0f1975b8
/* f1975ac: 24010001 */ addiu $at,$zero,0x1
/* f1975b0: 54410006 */ bnel $v0,$at,.L0f1975cc
/* f1975b4: acad00d8 */ sw $t5,0xd8($a1)
.L0f1975b8:
/* f1975b8: 8c620004 */ lw $v0,0x4($v1)
/* f1975bc: 8c4b0010 */ lw $t3,0x10($v0)
/* f1975c0: 356c4000 */ ori $t4,$t3,0x4000
/* f1975c4: ac4c0010 */ sw $t4,0x10($v0)
/* f1975c8: acad00d8 */ sw $t5,0xd8($a1)
.L0f1975cc:
/* f1975cc: 24020001 */ addiu $v0,$zero,0x1
.L0f1975d0:
/* f1975d0: 14400004 */ bnez $v0,.L0f1975e4
/* f1975d4: 2485002c */ addiu $a1,$a0,0x2c
/* f1975d8: 24860038 */ addiu $a2,$a0,0x38
/* f1975dc: 0fc0e10f */ jal func0f03843c
/* f1975e0: 90870065 */ lbu $a3,0x65($a0)
.L0f1975e4:
/* f1975e4: 8fbf0014 */ lw $ra,0x14($sp)
/* f1975e8: 27bd0018 */ addiu $sp,$sp,0x18
/* f1975ec: 03e00008 */ jr $ra
/* f1975f0: 00000000 */ sll $zero,$zero,0x0
/* f1975f4: 00000000 */ sll $zero,$zero,0x0
/* f1975f8: 00000000 */ sll $zero,$zero,0x0
/* f1975fc: 00000000 */ sll $zero,$zero,0x0
);
void func0f197544(struct chrdata *chr)
{
bool pass = false;
struct chr2d4 *chr2d4 = chr->unk2d4;
if (chr->myaction == MA_AIBOTGETITEM) {
if (chr->act_aibotgetitem.unk4c[chr->unk064] == 0) {
struct prop *prop = chr2d4->prop;
if (prop && !prop->parent && prop->timetoregen == 0) {
if (prop->type == PROPTYPE_WEAPON || prop->type == PROPTYPE_OBJ) {
prop->obj->flags3 |= OBJECTFLAG2_00004000;
}
}
}
chr2d4->unkd8 = 1;
pass = true;
}
if (!pass) {
func0f03843c(chr, &chr->act_aibotgetitem.pos, &chr->act_aibotgetitem.rooms[0], chr->speed);
}
}

View File

@ -533,7 +533,7 @@
#define MPSCENARIO_KINGOFTHEHILL 4
#define MPSCENARIO_CAPTURETHECASE 5
// Object flags - bank 0 (object struct offset 0x08)
// obj->flags
#define OBJECTFLAG0_00000001 0x00000001 // Not used in scripts
#define OBJECTFLAG0_00000002 0x00000002 // Not used in scripts
#define OBJECTFLAG0_00000004 0x00000004 // Not used in scripts
@ -567,7 +567,7 @@
#define OBJECTFLAG0_40000000 0x40000000 // Used quite a lot
#define OBJECTFLAG0_INTERCEPTOR_DISABLED 0x80000000
// Object flags - bank 1 (object struct offset 0x0c)
// obj->flags2
#define OBJECTFLAG1_00000001 0x00000001 // Used only in CI Training
#define OBJECTFLAG1_00000002 0x00000002 // Ruins spikes
#define OBJECTFLAG1_00000004 0x00000004 // Defense hostage doors - openable by AI?
@ -601,7 +601,7 @@
#define OBJECTFLAG1_40000000 0x40000000 // Not used in scripts
#define OBJECTFLAG1_80000000 0x80000000 // Attack Ship glass
// Object flags - bank 2 (object struct offset 0x10)
// obj->flags3
#define OBJECTFLAG2_PUSHABLE 0x00000001
#define OBJECTFLAG2_GRABBABLE 0x00000002
#define OBJECTFLAG2_00000004 0x00000004 // Not used in scripts
@ -635,6 +635,7 @@
#define OBJECTFLAG2_40000000 0x40000000 // Not used in scripts
#define OBJECTFLAG2_80000000 0x80000000 // Not used in scripts
// obj->hidden
#define OBJHIDDENFLAG_00000080 0x00000080
#define OBJHIDDENFLAG_ACTIVATED_BY_BOND 0x00004000
#define OBJHIDDENFLAG_ACTIVATED_BY_COOP 0x00040000

View File

@ -167,6 +167,6 @@ u32 func0f19489c(void);
u32 func0f194904(void);
u32 func0f194990(void);
u32 func0f194b40(void);
u32 func0f197544(void);
void func0f197544(struct chrdata *chr);
#endif

View File

@ -26,7 +26,7 @@ struct prop;
struct prop {
/*0x00*/ u8 type;
/*0x01*/ u8 flags;
/*0x02*/ u16 timetoregen;
/*0x02*/ s16 timetoregen;
/*0x04*/
union {
@ -138,7 +138,7 @@ struct chr2d4 {
/*0x04*/ u32 unk04;
/*0x08*/ u32 unk08;
/*0x0c*/ u32 unk0c;
/*0x10*/ u32 unk10;
/*0x10*/ struct prop *prop;
/*0x14*/ u32 unk14;
/*0x18*/ u32 unk18;
/*0x1c*/ u32 unk1c;
@ -193,6 +193,16 @@ struct chr2d4 {
/*0xa8*/ u32 unka8;
/*0xac*/ u32 unkac;
/*0xb0*/ f32 unkb0;
/*0xb4*/ u32 unkb4;
/*0xb8*/ u32 unkb8;
/*0xbc*/ u32 unkbc;
/*0xc0*/ u32 unkc0;
/*0xc4*/ u32 unkc4;
/*0xc8*/ u32 unkc8;
/*0xcc*/ u32 unkcc;
/*0xd0*/ u32 unkd0;
/*0xd4*/ u32 unkd4;
/*0xd8*/ u32 unkd8;
};
struct act_stand {
@ -277,6 +287,13 @@ struct act_attackamount {
/*0x34*/ s8 unk034;
};
struct act_aibotgetitem {
/*0x2c*/ struct coord pos;
/*0x38*/ s16 rooms[8];
/*0x48*/ u32 unk48;
/*0x4c*/ s32 unk4c[1];
};
struct chrdata {
/*0x000*/ s16 chrnum;
/*0x002*/ s8 accuracyrating;
@ -314,6 +331,7 @@ struct chrdata {
struct act_surprised act_surprised;
struct act_throwgrenade act_throwgrenade;
struct act_attackamount act_attackamount;
struct act_aibotgetitem act_aibotgetitem;
};
/*0x054*/ u32 unk054;
@ -321,7 +339,7 @@ struct chrdata {
/*0x05c*/ u32 unk05c;
/*0x060*/ u32 unk060;
/*0x064*/ u8 unk064;
/*0x066*/ u8 unk065;
/*0x065*/ u8 speed;
/*0x066*/ s16 unk066;
/*0x068*/ u32 unk068;
/*0x06c*/ u16 unk06c;