Decompile func0f09018c
This commit is contained in:
parent
8266a3c91a
commit
c4f7002aaa
|
|
@ -48381,159 +48381,48 @@ glabel func0f0900c0
|
|||
/* f090188: 00000000 */ sll $zero,$zero,0x0
|
||||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f09018c
|
||||
/* f09018c: 3c05800a */ lui $a1,0x800a
|
||||
/* f090190: 8ca5a244 */ lw $a1,-0x5dbc($a1)
|
||||
/* f090194: 27bdffc8 */ addiu $sp,$sp,-56
|
||||
/* f090198: afbf001c */ sw $ra,0x1c($sp)
|
||||
/* f09019c: afb00018 */ sw $s0,0x18($sp)
|
||||
/* f0901a0: 8ca20480 */ lw $v0,0x480($a1)
|
||||
/* f0901a4: 00803025 */ or $a2,$a0,$zero
|
||||
/* f0901a8: 8c900004 */ lw $s0,0x4($a0)
|
||||
/* f0901ac: 0002182b */ sltu $v1,$zero,$v0
|
||||
/* f0901b0: 10600004 */ beqz $v1,.L0f0901c4
|
||||
/* f0901b4: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f0901b8: 80430037 */ lb $v1,0x37($v0)
|
||||
/* f0901bc: 0003702b */ sltu $t6,$zero,$v1
|
||||
/* f0901c0: 01c01825 */ or $v1,$t6,$zero
|
||||
.L0f0901c4:
|
||||
/* f0901c4: 50600004 */ beqzl $v1,.L0f0901d8
|
||||
/* f0901c8: 8ca400bc */ lw $a0,0xbc($a1)
|
||||
/* f0901cc: 10000002 */ beqz $zero,.L0f0901d8
|
||||
/* f0901d0: 8c440000 */ lw $a0,0x0($v0)
|
||||
/* f0901d4: 8ca400bc */ lw $a0,0xbc($a1)
|
||||
.L0f0901d8:
|
||||
/* f0901d8: 00c02825 */ or $a1,$a2,$zero
|
||||
/* f0901dc: afa4002c */ sw $a0,0x2c($sp)
|
||||
/* f0901e0: 0fc22f40 */ jal func0f08bd00
|
||||
/* f0901e4: afa60038 */ sw $a2,0x38($sp)
|
||||
/* f0901e8: 10400008 */ beqz $v0,.L0f09020c
|
||||
/* f0901ec: 8fa4002c */ lw $a0,0x2c($sp)
|
||||
/* f0901f0: 0fc24030 */ jal func0f0900c0
|
||||
/* f0901f4: 02002825 */ or $a1,$s0,$zero
|
||||
/* f0901f8: 8fa40038 */ lw $a0,0x38($sp)
|
||||
/* f0901fc: 0fc23fba */ jal func0f08fee8
|
||||
/* f090200: 24050001 */ addiu $a1,$zero,0x1
|
||||
/* f090204: 10000066 */ beqz $zero,.L0f0903a0
|
||||
/* f090208: 8fbf001c */ lw $ra,0x1c($sp)
|
||||
.L0f09020c:
|
||||
/* f09020c: 820f0084 */ lb $t7,0x84($s0)
|
||||
/* f090210: 3c013f00 */ lui $at,0x3f00
|
||||
/* f090214: 55e00062 */ bnezl $t7,.L0f0903a0
|
||||
/* f090218: 8fbf001c */ lw $ra,0x1c($sp)
|
||||
/* f09021c: 44813000 */ mtc1 $at,$f6
|
||||
/* f090220: c608005c */ lwc1 $f8,0x5c($s0)
|
||||
/* f090224: c604007c */ lwc1 $f4,0x7c($s0)
|
||||
/* f090228: 46083282 */ mul.s $f10,$f6,$f8
|
||||
/* f09022c: 460a203c */ c.lt.s $f4,$f10
|
||||
/* f090230: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f090234: 4502005a */ bc1fl .L0f0903a0
|
||||
/* f090238: 8fbf001c */ lw $ra,0x1c($sp)
|
||||
/* f09023c: 8e18000c */ lw $t8,0xc($s0)
|
||||
/* f090240: 33190004 */ andi $t9,$t8,0x4
|
||||
/* f090244: 17200040 */ bnez $t9,.L0f090348
|
||||
/* f090248: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f09024c: 0fc44af0 */ jal func0f112bc0
|
||||
/* f090250: 02002025 */ or $a0,$s0,$zero
|
||||
/* f090254: 3c08800a */ lui $t0,0x800a
|
||||
/* f090258: 8d08a474 */ lw $t0,-0x5b8c($t0)
|
||||
/* f09025c: 24010026 */ addiu $at,$zero,0x26
|
||||
/* f090260: 00402825 */ or $a1,$v0,$zero
|
||||
/* f090264: 1501001b */ bne $t0,$at,.L0f0902d4
|
||||
/* f090268: 00002025 */ or $a0,$zero,$zero
|
||||
/* f09026c: 0fc68606 */ jal ciGetTrainingData
|
||||
/* f090270: afa20028 */ sw $v0,0x28($sp)
|
||||
/* f090274: 0fc687f8 */ jal func0f1a1fe0
|
||||
/* f090278: afa20020 */ sw $v0,0x20($sp)
|
||||
/* f09027c: 8fa40020 */ lw $a0,0x20($sp)
|
||||
/* f090280: 8fa50028 */ lw $a1,0x28($sp)
|
||||
/* f090284: 10800006 */ beqz $a0,.L0f0902a0
|
||||
/* f090288: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f09028c: 8c830000 */ lw $v1,0x0($a0)
|
||||
/* f090290: 00034fc2 */ srl $t1,$v1,0x1f
|
||||
/* f090294: 0009182b */ sltu $v1,$zero,$t1
|
||||
/* f090298: 5460000e */ bnezl $v1,.L0f0902d4
|
||||
/* f09029c: 306400ff */ andi $a0,$v1,0xff
|
||||
.L0f0902a0:
|
||||
/* f0902a0: 10400006 */ beqz $v0,.L0f0902bc
|
||||
/* f0902a4: 3c0d800a */ lui $t5,0x800a
|
||||
/* f0902a8: 8c430000 */ lw $v1,0x0($v0)
|
||||
/* f0902ac: 00035fc2 */ srl $t3,$v1,0x1f
|
||||
/* f0902b0: 000b182b */ sltu $v1,$zero,$t3
|
||||
/* f0902b4: 54600007 */ bnezl $v1,.L0f0902d4
|
||||
/* f0902b8: 306400ff */ andi $a0,$v1,0xff
|
||||
.L0f0902bc:
|
||||
/* f0902bc: 8dada244 */ lw $t5,-0x5dbc($t5)
|
||||
/* f0902c0: 8dae00bc */ lw $t6,0xbc($t5)
|
||||
/* f0902c4: 85c30028 */ lh $v1,0x28($t6)
|
||||
/* f0902c8: 386f000a */ xori $t7,$v1,0xa
|
||||
/* f0902cc: 2de30001 */ sltiu $v1,$t7,0x1
|
||||
/* f0902d0: 306400ff */ andi $a0,$v1,0xff
|
||||
.L0f0902d4:
|
||||
/* f0902d4: 10a0000c */ beqz $a1,.L0f090308
|
||||
/* f0902d8: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f0902dc: 8ca2001c */ lw $v0,0x1c($a1)
|
||||
/* f0902e0: 10400009 */ beqz $v0,.L0f090308
|
||||
/* f0902e4: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f0902e8: 0fc5b9f1 */ jal textGet
|
||||
/* f0902ec: 00402025 */ or $a0,$v0,$zero
|
||||
/* f0902f0: 00402025 */ or $a0,$v0,$zero
|
||||
/* f0902f4: 00002825 */ or $a1,$zero,$zero
|
||||
/* f0902f8: 0fc377e9 */ jal func0f0ddfa4
|
||||
/* f0902fc: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* f090300: 10000011 */ beqz $zero,.L0f090348
|
||||
/* f090304: 00000000 */ sll $zero,$zero,0x0
|
||||
.L0f090308:
|
||||
/* f090308: 10800009 */ beqz $a0,.L0f090330
|
||||
/* f09030c: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f090310: 0fc5b9f1 */ jal textGet
|
||||
/* f090314: 24041c50 */ addiu $a0,$zero,0x1c50
|
||||
/* f090318: 00402025 */ or $a0,$v0,$zero
|
||||
/* f09031c: 00002825 */ or $a1,$zero,$zero
|
||||
/* f090320: 0fc377e9 */ jal func0f0ddfa4
|
||||
/* f090324: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* f090328: 10000007 */ beqz $zero,.L0f090348
|
||||
/* f09032c: 00000000 */ sll $zero,$zero,0x0
|
||||
.L0f090330:
|
||||
/* f090330: 0fc5b9f1 */ jal textGet
|
||||
/* f090334: 2404522c */ addiu $a0,$zero,0x522c
|
||||
/* f090338: 00402025 */ or $a0,$v0,$zero
|
||||
/* f09033c: 00002825 */ or $a1,$zero,$zero
|
||||
/* f090340: 0fc377e9 */ jal func0f0ddfa4
|
||||
/* f090344: 24060001 */ addiu $a2,$zero,0x1
|
||||
.L0f090348:
|
||||
/* f090348: 3c02800a */ lui $v0,0x800a
|
||||
/* f09034c: 3c18800a */ lui $t8,0x800a
|
||||
/* f090350: 8f18a258 */ lw $t8,-0x5da8($t8)
|
||||
/* f090354: 8c42a24c */ lw $v0,-0x5db4($v0)
|
||||
/* f090358: 3c09800a */ lui $t1,0x800a
|
||||
/* f09035c: 17020006 */ bne $t8,$v0,.L0f090378
|
||||
/* f090360: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f090364: 8e190040 */ lw $t9,0x40($s0)
|
||||
/* f090368: 3c010004 */ lui $at,0x4
|
||||
/* f09036c: 03214025 */ or $t0,$t9,$at
|
||||
/* f090370: 10000007 */ beqz $zero,.L0f090390
|
||||
/* f090374: ae080040 */ sw $t0,0x40($s0)
|
||||
.L0f090378:
|
||||
/* f090378: 8d29a254 */ lw $t1,-0x5dac($t1)
|
||||
/* f09037c: 55220005 */ bnel $t1,$v0,.L0f090394
|
||||
/* f090380: 8e0c000c */ lw $t4,0xc($s0)
|
||||
/* f090384: 8e0a0040 */ lw $t2,0x40($s0)
|
||||
/* f090388: 354b4000 */ ori $t3,$t2,0x4000
|
||||
/* f09038c: ae0b0040 */ sw $t3,0x40($s0)
|
||||
.L0f090390:
|
||||
/* f090390: 8e0c000c */ lw $t4,0xc($s0)
|
||||
.L0f090394:
|
||||
/* f090394: 358d0008 */ ori $t5,$t4,0x8
|
||||
/* f090398: ae0d000c */ sw $t5,0xc($s0)
|
||||
/* f09039c: 8fbf001c */ lw $ra,0x1c($sp)
|
||||
.L0f0903a0:
|
||||
/* f0903a0: 8fb00018 */ lw $s0,0x18($sp)
|
||||
/* f0903a4: 27bd0038 */ addiu $sp,$sp,0x38
|
||||
/* f0903a8: 03e00008 */ jr $ra
|
||||
/* f0903ac: 00001025 */ or $v0,$zero,$zero
|
||||
);
|
||||
bool func0f09018c(struct prop *doorprop)
|
||||
{
|
||||
struct doorobj *door = doorprop->door;
|
||||
bool usingeyespy = g_Vars.currentplayer->eyespy && g_Vars.currentplayer->eyespy->active;
|
||||
struct prop *playerprop = usingeyespy ? g_Vars.currentplayer->eyespy->prop : g_Vars.currentplayer->prop;
|
||||
|
||||
if (func0f08bd00(playerprop, doorprop)) {
|
||||
func0f0900c0(playerprop, door);
|
||||
func0f08fee8(doorprop, 1);
|
||||
} else if (door->mode == DOORMODE_IDLE && door->frac < 0.5f * door->maxfrac) {
|
||||
if ((door->base.flags2 & OBJFLAG2_00000004) == 0) {
|
||||
struct textoverride *override = objGetTextOverride(&door->base);
|
||||
u8 intraining = false;
|
||||
|
||||
if (g_Vars.stagenum == STAGE_CITRAINING) {
|
||||
struct trainingdata *a = ciGetTrainingData();
|
||||
struct trainingdata *b = func0f1a1fe0();
|
||||
|
||||
intraining = (a && a->unk00_00) || (b && b->unk00_00) ||
|
||||
g_Vars.currentplayer->prop->rooms[0] == 0x0a;
|
||||
}
|
||||
|
||||
if (override && override->activatetextid) {
|
||||
func0f0ddfa4(textGet(override->activatetextid), 0, 1);
|
||||
} else if (intraining) {
|
||||
func0f0ddfa4(textGet(0x1c50), 0, 1); // "Cannot exit while training is in progress."
|
||||
} else {
|
||||
func0f0ddfa4(textGet(0x522c), 0, 1); // "This door is locked."
|
||||
}
|
||||
}
|
||||
|
||||
if (g_Vars.currentplayernum == g_Vars.coopplayernum) {
|
||||
door->base.hidden |= OBJHFLAG_ACTIVATED_BY_COOP;
|
||||
} else if (g_Vars.currentplayernum == g_Vars.bondplayernum) {
|
||||
door->base.hidden |= OBJHFLAG_ACTIVATED_BY_BOND;
|
||||
}
|
||||
|
||||
door->base.flags2 |= OBJFLAG2_00000008;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void alarmActivate(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ glabel func0f11179c
|
|||
/* f1117c8: 10800025 */ beqz $a0,.L0f111860
|
||||
/* f1117cc: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f1117d0: afa50020 */ sw $a1,0x20($sp)
|
||||
/* f1117d4: 0fc44af0 */ jal func0f112bc0
|
||||
/* f1117d4: 0fc44af0 */ jal objGetTextOverride
|
||||
/* f1117d8: afa6001c */ sw $a2,0x1c($sp)
|
||||
/* f1117dc: 8fa50020 */ lw $a1,0x20($sp)
|
||||
/* f1117e0: 8fa6001c */ lw $a2,0x1c($sp)
|
||||
|
|
@ -723,7 +723,7 @@ glabel func0f111ea4
|
|||
/* f111ef0: 1662000f */ bne $s3,$v0,.L0f111f30
|
||||
/* f111ef4: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f111ef8: 8e020004 */ lw $v0,0x4($s0)
|
||||
/* f111efc: 0fc44af0 */ jal func0f112bc0
|
||||
/* f111efc: 0fc44af0 */ jal objGetTextOverride
|
||||
/* f111f00: 8c440004 */ lw $a0,0x4($v0)
|
||||
/* f111f04: 10400006 */ beqz $v0,.L0f111f20
|
||||
/* f111f08: 00000000 */ sll $zero,$zero,0x0
|
||||
|
|
@ -1685,7 +1685,7 @@ glabel func0f112a58
|
|||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f112bc0
|
||||
glabel objGetTextOverride
|
||||
/* f112bc0: 3c03800a */ lui $v1,0x800a
|
||||
/* f112bc4: 8c63a278 */ lw $v1,-0x5d88($v1)
|
||||
/* f112bc8: 00001025 */ or $v0,$zero,$zero
|
||||
|
|
@ -1745,7 +1745,7 @@ glabel func0f112c44
|
|||
/* f112c68: 54810009 */ bnel $a0,$at,.L0f112c90
|
||||
/* f112c6c: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f112c70: 8c420004 */ lw $v0,0x4($v0)
|
||||
/* f112c74: 0fc44af0 */ jal func0f112bc0
|
||||
/* f112c74: 0fc44af0 */ jal objGetTextOverride
|
||||
/* f112c78: 8c440004 */ lw $a0,0x4($v0)
|
||||
/* f112c7c: 5040001a */ beqzl $v0,.L0f112ce8
|
||||
/* f112c80: 00001025 */ or $v0,$zero,$zero
|
||||
|
|
@ -1800,7 +1800,7 @@ glabel func0f112cf8
|
|||
/* f112d24: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f112d28: 8c420004 */ lw $v0,0x4($v0)
|
||||
/* f112d2c: 8c440004 */ lw $a0,0x4($v0)
|
||||
/* f112d30: 0fc44af0 */ jal func0f112bc0
|
||||
/* f112d30: 0fc44af0 */ jal objGetTextOverride
|
||||
/* f112d34: afa00018 */ sw $zero,0x18($sp)
|
||||
/* f112d38: 8fa50018 */ lw $a1,0x18($sp)
|
||||
/* f112d3c: 10400029 */ beqz $v0,.L0f112de4
|
||||
|
|
@ -1889,7 +1889,7 @@ glabel func0f112e24
|
|||
/* f112e50: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f112e54: 8c420004 */ lw $v0,0x4($v0)
|
||||
/* f112e58: 8c440004 */ lw $a0,0x4($v0)
|
||||
/* f112e5c: 0fc44af0 */ jal func0f112bc0
|
||||
/* f112e5c: 0fc44af0 */ jal objGetTextOverride
|
||||
/* f112e60: afa00018 */ sw $zero,0x18($sp)
|
||||
/* f112e64: 8fa50018 */ lw $a1,0x18($sp)
|
||||
/* f112e68: 1040002d */ beqz $v0,.L0f112f20
|
||||
|
|
@ -2020,7 +2020,7 @@ GLOBAL_ASM(
|
|||
glabel func0f112fec
|
||||
/* f112fec: 27bdffe8 */ addiu $sp,$sp,-24
|
||||
/* f112ff0: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f112ff4: 0fc44af0 */ jal func0f112bc0
|
||||
/* f112ff4: 0fc44af0 */ jal objGetTextOverride
|
||||
/* f112ff8: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f112ffc: 50400009 */ beqzl $v0,.L0f113024
|
||||
/* f113000: 00001025 */ or $v0,$zero,$zero
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@ u32 func0f08bb3c(void);
|
|||
void func0f08bb5c(struct prop *prop, bool firing, s32 room);
|
||||
s32 func0f08bc5c(struct prop *prop);
|
||||
u32 func0f08bcf4(void);
|
||||
u32 func0f08bd00(void);
|
||||
bool func0f08bd00(struct prop *playerprop, struct prop *doorprop);
|
||||
u32 func0f08bdd4(void);
|
||||
u32 func0f08be80(void);
|
||||
u32 func0f08bf78(void);
|
||||
|
|
@ -324,8 +324,8 @@ u32 func0f08f968(void);
|
|||
u32 func0f08fcb8(void);
|
||||
void func0f08fee8(struct prop *prop, s32 arg1);
|
||||
u32 func0f08fffc(void);
|
||||
u32 func0f0900c0(void);
|
||||
u32 func0f09018c(void);
|
||||
void func0f0900c0(struct prop *prop, struct doorobj *door);
|
||||
bool func0f09018c(struct prop *doorprop);
|
||||
u32 func0f0903d4(void);
|
||||
u32 func0f09044c(void);
|
||||
u32 func0f0904e0(void);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ bool func0f112884(void);
|
|||
u32 currentPlayerHasProp(struct prop *prop);
|
||||
u32 func0f112950(void);
|
||||
u32 func0f112a58(void);
|
||||
u32 func0f112bc0(void);
|
||||
struct textoverride *objGetTextOverride(struct defaultobj *obj);
|
||||
u32 func0f112bfc(void);
|
||||
u32 func0f112c44(void);
|
||||
u32 func0f112cf8(void);
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ u32 func0f1a1e38(void);
|
|||
u32 func0f1a1e90(void);
|
||||
u32 func0f1a1f00(void);
|
||||
u32 func0f1a1f70(void);
|
||||
u32 func0f1a1fe0(void);
|
||||
struct trainingdata *func0f1a1fe0(void); // might be a different but similar struct
|
||||
u32 func0f1a1fec(void);
|
||||
u32 func0f1a2070(void);
|
||||
u32 func0f1a2198(void);
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ struct g_vars {
|
|||
/*000274*/ u32 unk000274[4];
|
||||
/*000284*/ struct player *currentplayer;
|
||||
/*000288*/ struct gvars74 *unk000288;
|
||||
/*00028c*/ u32 currentplayernum; // 0-3 - controller numbers I think
|
||||
/*00028c*/ s32 currentplayernum; // 0-3 - controller numbers I think
|
||||
/*000290*/ u32 currentplayerindex; // 0-3 - but 2 or 3 probably only used in combat simulator
|
||||
/*000294*/ s32 bondplayernum;
|
||||
/*000298*/ s32 coopplayernum;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ struct prop {
|
|||
union {
|
||||
struct chrdata *chr;
|
||||
struct defaultobj *obj;
|
||||
struct doorobj *door;
|
||||
struct weaponobj *weapon;
|
||||
};
|
||||
|
||||
|
|
@ -920,7 +921,7 @@ struct eyespy {
|
|||
/*0x34*/ u8 init;
|
||||
/*0x35*/ u8 initialised;
|
||||
/*0x36*/ u8 startuptimer60;
|
||||
/*0x37*/ u8 active;
|
||||
/*0x37*/ s8 active;
|
||||
/*0x38*/ u8 buttonheld;
|
||||
/*0x39*/ u8 camerabuttonheld;
|
||||
/*0x3a*/ s16 bobdir;
|
||||
|
|
@ -4741,4 +4742,15 @@ struct smoketype {
|
|||
f32 unk20;
|
||||
};
|
||||
|
||||
struct textoverride {
|
||||
/*0x00*/ u32 unk00;
|
||||
/*0x04*/ u32 unk04;
|
||||
/*0x08*/ u32 unk08;
|
||||
/*0x0c*/ u32 unk0c;
|
||||
/*0x10*/ u32 unk10;
|
||||
/*0x14*/ u32 unk14;
|
||||
/*0x18*/ u32 unk18;
|
||||
/*0x1c*/ u32 activatetextid;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue