Decompile objectiveCheckMultiroomEntered

This commit is contained in:
Ryan Dwyer
2020-01-18 19:58:54 +10:00
parent fb1ba7c554
commit 15481b2c70
14 changed files with 63 additions and 84 deletions
+5 -5
View File
@@ -28372,7 +28372,7 @@ glabel func0f036c08
/* f036e28: 8e0d0064 */ lw $t5,0x64($s0)
/* f036e2c: 02202825 */ or $a1,$s1,$zero
/* f036e30: 8da400bc */ lw $a0,0xbc($t5)
/* f036e34: 0fc19620 */ jal func0f065880
/* f036e34: 0fc19620 */ jal arrayIntersects
/* f036e38: 24840028 */ addiu $a0,$a0,0x28
/* f036e3c: 10400003 */ beqz $v0,.L0f036e4c
/* f036e40: 00002825 */ or $a1,$zero,$zero
@@ -51057,7 +51057,7 @@ glabel func0f04ba34
/* f04bb5c: 31ae0008 */ andi $t6,$t5,0x8
/* f04bb60: 11c00004 */ beqz $t6,.L0f04bb74
/* f04bb64: 02a02025 */ or $a0,$s5,$zero
/* f04bb68: 0fc19620 */ jal func0f065880
/* f04bb68: 0fc19620 */ jal arrayIntersects
/* f04bb6c: 26c50028 */ addiu $a1,$s6,0x28
/* f04bb70: 1440009d */ bnez $v0,.L0f04bde8
.L0f04bb74:
@@ -51132,14 +51132,14 @@ glabel func0f04ba34
/* f04bc60: 02a02025 */ or $a0,$s5,$zero
/* f04bc64: 51200005 */ beqzl $t1,.L0f04bc7c
/* f04bc68: 322a0020 */ andi $t2,$s1,0x20
/* f04bc6c: 0fc19620 */ jal func0f065880
/* f04bc6c: 0fc19620 */ jal arrayIntersects
/* f04bc70: 27a500a8 */ addiu $a1,$sp,0xa8
/* f04bc74: 1440005c */ bnez $v0,.L0f04bde8
/* f04bc78: 322a0020 */ andi $t2,$s1,0x20
.L0f04bc7c:
/* f04bc7c: 11400005 */ beqz $t2,.L0f04bc94
/* f04bc80: 02a02025 */ or $a0,$s5,$zero
/* f04bc84: 0fc19620 */ jal func0f065880
/* f04bc84: 0fc19620 */ jal arrayIntersects
/* f04bc88: 27a500a8 */ addiu $a1,$sp,0xa8
/* f04bc8c: 50400057 */ beqzl $v0,.L0f04bdec
/* f04bc90: 8fae0078 */ lw $t6,0x78($sp)
@@ -51155,7 +51155,7 @@ glabel func0f04ba34
/* f04bcb4: 322e0004 */ andi $t6,$s1,0x4
/* f04bcb8: 11a00004 */ beqz $t5,.L0f04bccc
/* f04bcbc: 02a02025 */ or $a0,$s5,$zero
/* f04bcc0: 0fc19620 */ jal func0f065880
/* f04bcc0: 0fc19620 */ jal arrayIntersects
/* f04bcc4: 268502b8 */ addiu $a1,$s4,0x2b8
/* f04bcc8: 14400047 */ bnez $v0,.L0f04bde8
.L0f04bccc:
+4 -4
View File
@@ -100,8 +100,8 @@ glabel func0f010a98
GLOBAL_ASM(
glabel func0f010ad4
/* f010ad4: 3c02800a */ lui $v0,%hi(var8009d0b8)
/* f010ad8: 2442d0b8 */ addiu $v0,$v0,%lo(var8009d0b8)
/* f010ad4: 3c02800a */ lui $v0,%hi(g_RoomEnteredCriterias)
/* f010ad8: 2442d0b8 */ addiu $v0,$v0,%lo(g_RoomEnteredCriterias)
/* f010adc: 8c4e0000 */ lw $t6,0x0($v0)
/* f010ae0: ac8e000c */ sw $t6,0xc($a0)
/* f010ae4: 03e00008 */ jr $ra
@@ -110,8 +110,8 @@ glabel func0f010ad4
GLOBAL_ASM(
glabel func0f010aec
/* f010aec: 3c02800a */ lui $v0,%hi(var8009d0bc)
/* f010af0: 2442d0bc */ addiu $v0,$v0,%lo(var8009d0bc)
/* f010aec: 3c02800a */ lui $v0,%hi(g_MultiroomEnteredCriterias)
/* f010af0: 2442d0bc */ addiu $v0,$v0,%lo(g_MultiroomEnteredCriterias)
/* f010af4: 8c4e0000 */ lw $t6,0x0($v0)
/* f010af8: ac8e0010 */ sw $t6,0x10($a0)
/* f010afc: 03e00008 */ jr $ra
+1 -1
View File
@@ -6324,7 +6324,7 @@ glabel func0f0657d8
);
GLOBAL_ASM(
glabel func0f065880
glabel arrayIntersects
/* f065880: 84830000 */ lh $v1,0x0($a0)
/* f065884: 2408ffff */ addiu $t0,$zero,-1
/* f065888: 00801025 */ or $v0,$a0,$zero
+27 -56
View File
@@ -3605,7 +3605,7 @@ glabel func0f068218
/* f06825c: 26040028 */ addiu $a0,$s0,0x28
/* f068260: 564e0012 */ bnel $s2,$t6,.L0f0682ac
/* f068264: 8e100020 */ lw $s0,0x20($s0)
/* f068268: 0fc19620 */ jal func0f065880
/* f068268: 0fc19620 */ jal arrayIntersects
/* f06826c: 02a02825 */ or $a1,$s5,$zero
/* f068270: 1040000d */ beqz $v0,.L0f0682a8
/* f068274: 02002025 */ or $a0,$s0,$zero
@@ -11473,7 +11473,7 @@ glabel func0f06f0a0
/* f06f150: 9204005c */ lbu $a0,0x5c($s0)
/* f06f154: 8fa50028 */ lw $a1,0x28($sp)
.L0f06f158:
/* f06f158: 0fc257f6 */ jal func0f095fd8
/* f06f158: 0fc257f6 */ jal objectiveCheckMultiroomEntered
/* f06f15c: 24a50028 */ addiu $a1,$a1,0x28
/* f06f160: 9204005c */ lbu $a0,0x5c($s0)
/* f06f164: 24010056 */ addiu $at,$zero,0x56
@@ -20212,7 +20212,7 @@ glabel func0f073c6c
/* f076ee0: 26450028 */ addiu $a1,$s2,0x28
/* f076ee4: 55810004 */ bnel $t4,$at,.L0f076ef8
/* f076ee8: 8fae05d8 */ lw $t6,0x5d8($sp)
/* f076eec: 0fc257f6 */ jal func0f095fd8
/* f076eec: 0fc257f6 */ jal objectiveCheckMultiroomEntered
/* f076ef0: 9224005c */ lbu $a0,0x5c($s1)
/* f076ef4: 8fae05d8 */ lw $t6,0x5d8($sp)
.L0f076ef8:
@@ -48287,7 +48287,7 @@ glabel func0f08fcb8
/* f08fdd0: 10000024 */ beqz $zero,.L0f08fe64
/* f08fdd4: afac00ac */ sw $t4,0xac($sp)
.L0f08fdd8:
/* f08fdd8: 0fc19620 */ jal func0f065880
/* f08fdd8: 0fc19620 */ jal arrayIntersects
/* f08fddc: afa800a4 */ sw $t0,0xa4($sp)
/* f08fde0: 10400020 */ beqz $v0,.L0f08fe64
/* f08fde4: 8fa800a4 */ lw $t0,0xa4($sp)
@@ -55284,7 +55284,7 @@ glabel func0f095d64
void objectiveCheckRoomEntered(s32 currentroom)
{
struct objectivecriteria *criteria = var8009d0b8;
struct criteria_roomentered *criteria = g_RoomEnteredCriterias;
while (criteria) {
if (criteria->status == OBJECTIVE_INCOMPLETE) {
@@ -55299,57 +55299,28 @@ void objectiveCheckRoomEntered(s32 currentroom)
}
}
GLOBAL_ASM(
glabel func0f095fd8
/* f095fd8: 27bdffc0 */ addiu $sp,$sp,-64
/* f095fdc: afb00018 */ sw $s0,0x18($sp)
/* f095fe0: 3c10800a */ lui $s0,0x800a
/* f095fe4: 8e10d0bc */ lw $s0,-0x2f44($s0)
/* f095fe8: afb40028 */ sw $s4,0x28($sp)
/* f095fec: afb30024 */ sw $s3,0x24($sp)
/* f095ff0: 00809825 */ or $s3,$a0,$zero
/* f095ff4: 00a0a025 */ or $s4,$a1,$zero
/* f095ff8: afbf002c */ sw $ra,0x2c($sp)
/* f095ffc: afb20020 */ sw $s2,0x20($sp)
/* f096000: 12000019 */ beqz $s0,.L0f096068
/* f096004: afb1001c */ sw $s1,0x1c($sp)
/* f096008: 24120001 */ addiu $s2,$zero,0x1
/* f09600c: 27b10034 */ addiu $s1,$sp,0x34
/* f096010: 8e0e000c */ lw $t6,0xc($s0)
.L0f096014:
/* f096014: 55c00012 */ bnezl $t6,.L0f096060
/* f096018: 8e100010 */ lw $s0,0x10($s0)
/* f09601c: 8e0f0004 */ lw $t7,0x4($s0)
/* f096020: 00002025 */ or $a0,$zero,$zero
/* f096024: 566f000e */ bnel $s3,$t7,.L0f096060
/* f096028: 8e100010 */ lw $s0,0x10($s0)
/* f09602c: 0fc12574 */ jal chrGetPadRoom
/* f096030: 8e050008 */ lw $a1,0x8($s0)
/* f096034: 04400009 */ bltz $v0,.L0f09605c
/* f096038: 2418ffff */ addiu $t8,$zero,-1
/* f09603c: a7a20034 */ sh $v0,0x34($sp)
/* f096040: a7b80036 */ sh $t8,0x36($sp)
/* f096044: 02202025 */ or $a0,$s1,$zero
/* f096048: 0fc19620 */ jal func0f065880
/* f09604c: 02802825 */ or $a1,$s4,$zero
/* f096050: 50400003 */ beqzl $v0,.L0f096060
/* f096054: 8e100010 */ lw $s0,0x10($s0)
/* f096058: ae12000c */ sw $s2,0xc($s0)
.L0f09605c:
/* f09605c: 8e100010 */ lw $s0,0x10($s0)
.L0f096060:
/* f096060: 5600ffec */ bnezl $s0,.L0f096014
/* f096064: 8e0e000c */ lw $t6,0xc($s0)
.L0f096068:
/* f096068: 8fbf002c */ lw $ra,0x2c($sp)
/* f09606c: 8fb00018 */ lw $s0,0x18($sp)
/* f096070: 8fb1001c */ lw $s1,0x1c($sp)
/* f096074: 8fb20020 */ lw $s2,0x20($sp)
/* f096078: 8fb30024 */ lw $s3,0x24($sp)
/* f09607c: 8fb40028 */ lw $s4,0x28($sp)
/* f096080: 03e00008 */ jr $ra
/* f096084: 27bd0040 */ addiu $sp,$sp,0x40
);
void objectiveCheckMultiroomEntered(s32 arg0, s16 *requiredrooms)
{
struct criteria_multiroomentered *criteria = g_MultiroomEnteredCriterias;
while (criteria) {
if (criteria->status == OBJECTIVE_INCOMPLETE && criteria->unk04 == arg0) {
s32 room = chrGetPadRoom(NULL, criteria->pad);
if (room >= 0) {
s16 objectiverooms[2];
objectiverooms[0] = room;
objectiverooms[1] = -1;
if (arrayIntersects(&objectiverooms[0], requiredrooms)) {
criteria->status = OBJECTIVE_COMPLETE;
}
}
}
criteria = criteria->next;
}
}
GLOBAL_ASM(
glabel func0f096088
+2 -2
View File
@@ -5171,7 +5171,7 @@ glabel func0f0b69d0
/* f0b6c8c: 00000000 */ sll $zero,$zero,0x0
/* f0b6c90: 46007506 */ mov.s $f20,$f14
.L0f0b6c94:
/* f0b6c94: 0fc19620 */ jal func0f065880
/* f0b6c94: 0fc19620 */ jal arrayIntersects
/* f0b6c98: 00000000 */ sll $zero,$zero,0x0
/* f0b6c9c: 50400003 */ beqzl $v0,.L0f0b6cac
/* f0b6ca0: 92690000 */ lbu $t1,0x0($s3)
@@ -5183,7 +5183,7 @@ glabel func0f0b69d0
/* f0b6cb4: 8e0a0000 */ lw $t2,0x0($s0)
/* f0b6cb8: 03c02025 */ or $a0,$s8,$zero
/* f0b6cbc: 8d45001c */ lw $a1,0x1c($t2)
/* f0b6cc0: 0fc19620 */ jal func0f065880
/* f0b6cc0: 0fc19620 */ jal arrayIntersects
/* f0b6cc4: 24a50028 */ addiu $a1,$a1,0x28
/* f0b6cc8: 10400002 */ beqz $v0,.L0f0b6cd4
/* f0b6ccc: 00000000 */ sll $zero,$zero,0x0
+1 -1
View File
@@ -2414,7 +2414,7 @@ glabel func0f12af5c
/* f12afe8: a7a2004a */ sh $v0,0x4a($sp)
/* f12afec: a7b6004a */ sh $s6,0x4a($sp)
.L0f12aff0:
/* f12aff0: 0fc19620 */ jal func0f065880
/* f12aff0: 0fc19620 */ jal arrayIntersects
/* f12aff4: a7b6004c */ sh $s6,0x4c($sp)
/* f12aff8: 50400028 */ beqzl $v0,.L0f12b09c
/* f12affc: 92a903cf */ lbu $t1,0x3cf($s5)
+1 -1
View File
@@ -11788,7 +11788,7 @@ glabel func0f191638
/* f1916c8: 24a50028 */ addiu $a1,$a1,0x28
/* f1916cc: 8ce4001c */ lw $a0,0x1c($a3)
/* f1916d0: afa6002c */ sw $a2,0x2c($sp)
/* f1916d4: 0fc19620 */ jal func0f065880
/* f1916d4: 0fc19620 */ jal arrayIntersects
/* f1916d8: 24840028 */ addiu $a0,$a0,0x28
/* f1916dc: 10400002 */ beqz $v0,.L0f1916e8
/* f1916e0: 8fa6002c */ lw $a2,0x2c($sp)
+1 -1
View File
@@ -1408,7 +1408,7 @@ glabel func0f19ab70
/* f19abf8: 27a40158 */ addiu $a0,$sp,0x158
/* f19abfc: 14400022 */ bnez $v0,.L0f19ac88
/* f19ac00: 27a40160 */ addiu $a0,$sp,0x160
/* f19ac04: 0fc19620 */ jal func0f065880
/* f19ac04: 0fc19620 */ jal arrayIntersects
/* f19ac08: 27a50154 */ addiu $a1,$sp,0x154
/* f19ac0c: 1040001e */ beqz $v0,.L0f19ac88
/* f19ac10: 8fb80050 */ lw $t8,0x50($sp)
+2 -2
View File
@@ -16324,8 +16324,8 @@ u32 var8009d0a8 = 0;
u32 var8009d0ac = 0;
u32 var8009d0b0 = 0;
u32 var8009d0b4 = 0;
struct objectivecriteria *var8009d0b8 = NULL;
u32 var8009d0bc = 0;
struct criteria_roomentered *g_RoomEnteredCriterias = NULL;
struct criteria_multiroomentered *g_MultiroomEnteredCriterias = NULL;
u32 var8009d0c0 = 0;
// 8009d0c4
+1 -1
View File
@@ -41,7 +41,7 @@ u32 func0f0654e8(void);
u32 func0f06554c(void);
void func0f0657a4(s32 *arg0, s8 *arg1);
u32 func0f0657d8(void);
u32 func0f065880(void);
bool arrayIntersects(s16 *a, s16 *b);
u32 func0f0658e8(void);
u32 func0f06593c(void);
u32 func0f0659e4(void);
+1 -1
View File
@@ -388,7 +388,7 @@ u32 func0f095bf4(void);
u32 func0f095c04(void);
u32 func0f095d64(void);
void objectiveCheckRoomEntered(s32 currentroom);
u32 func0f095fd8(void);
void objectiveCheckMultiroomEntered(s32 arg0, s16 *requiredrooms);
u32 func0f096088(void);
u32 func0f096360(void);
u32 func0f0964b4(void);
+2 -2
View File
@@ -584,8 +584,8 @@ extern struct objective *g_Objectives[10];
extern u32 var8009d088;
extern u32 var8009d0b0;
extern u32 var8009d0b4;
extern struct objectivecriteria *var8009d0b8;
extern u32 var8009d0bc;
extern struct criteria_roomentered *g_RoomEnteredCriterias;
extern struct criteria_multiroomentered *g_MultiroomEnteredCriterias;
extern u32 var8009d0c0;
extern u32 var8009d0d0;
extern u32 var8009d0d8;
+10 -2
View File
@@ -4678,11 +4678,19 @@ struct objective {
/*0x0f*/ s8 difficulties;
};
struct objectivecriteria {
struct criteria_roomentered {
u32 unk00;
u32 pad;
u32 status;
struct objectivecriteria *next;
struct criteria_roomentered *next;
};
struct criteria_multiroomentered {
u32 unk00;
u32 unk04;
u32 pad;
u32 status;
struct criteria_multiroomentered *next;
};
#endif
+5 -5
View File
@@ -11507,7 +11507,7 @@ glabel func0002d72c
/* 2d750: 0fc19747 */ jal func0f065d1c
/* 2d754: 27a70034 */ addiu $a3,$sp,0x34
/* 2d758: 27a40034 */ addiu $a0,$sp,0x34
/* 2d75c: 0fc19620 */ jal func0f065880
/* 2d75c: 0fc19620 */ jal arrayIntersects
/* 2d760: 8fa5007c */ lw $a1,0x7c($sp)
/* 2d764: 10400011 */ beqz $v0,.L0002d7ac
/* 2d768: 00001825 */ or $v1,$zero,$zero
@@ -11636,7 +11636,7 @@ glabel func0002d8b8
/* 2d920: 00401825 */ or $v1,$v0,$zero
/* 2d924: 27a40034 */ addiu $a0,$sp,0x34
/* 2d928: 8fa5007c */ lw $a1,0x7c($sp)
/* 2d92c: 0fc19620 */ jal func0f065880
/* 2d92c: 0fc19620 */ jal arrayIntersects
/* 2d930: afa20030 */ sw $v0,0x30($sp)
/* 2d934: 14400004 */ bnez $v0,.L0002d948
/* 2d938: 8fa30030 */ lw $v1,0x30($sp)
@@ -11703,7 +11703,7 @@ glabel func0002d95c
.L0002da18:
/* 2da18: 27a4004c */ addiu $a0,$sp,0x4c
/* 2da1c: 8fa50094 */ lw $a1,0x94($sp)
/* 2da20: 0fc19620 */ jal func0f065880
/* 2da20: 0fc19620 */ jal arrayIntersects
/* 2da24: afa3003c */ sw $v1,0x3c($sp)
/* 2da28: 14400004 */ bnez $v0,.L0002da3c
/* 2da2c: 8fa3003c */ lw $v1,0x3c($sp)
@@ -11872,7 +11872,7 @@ glabel hasLineOfSight
/* 2dc60: 0fc19747 */ jal func0f065d1c
/* 2dc64: 27a70034 */ addiu $a3,$sp,0x34
/* 2dc68: 27a40034 */ addiu $a0,$sp,0x34
/* 2dc6c: 0fc19620 */ jal func0f065880
/* 2dc6c: 0fc19620 */ jal arrayIntersects
/* 2dc70: 8fa5007c */ lw $a1,0x7c($sp)
/* 2dc74: 10400011 */ beqz $v0,.L0002dcbc
/* 2dc78: 00001825 */ or $v1,$zero,$zero
@@ -11929,7 +11929,7 @@ glabel func0002dcfc
/* 2dd20: 0fc19747 */ jal func0f065d1c
/* 2dd24: 8fa70070 */ lw $a3,0x70($sp)
/* 2dd28: 8fa40070 */ lw $a0,0x70($sp)
/* 2dd2c: 0fc19620 */ jal func0f065880
/* 2dd2c: 0fc19620 */ jal arrayIntersects
/* 2dd30: 8fa5006c */ lw $a1,0x6c($sp)
/* 2dd34: 10400011 */ beqz $v0,.L0002dd7c
/* 2dd38: 00001825 */ or $v1,$zero,$zero