Attempt to decompile objectiveCheckHolograph

This commit is contained in:
Ryan Dwyer
2020-01-18 21:06:11 +10:00
parent 15481b2c70
commit 6b9d6679f2
8 changed files with 70 additions and 15 deletions
+2 -2
View File
@@ -120,8 +120,8 @@ glabel func0f010aec
GLOBAL_ASM(
glabel func0f010b04
/* f010b04: 3c02800a */ lui $v0,%hi(var8009d0c0)
/* f010b08: 2442d0c0 */ addiu $v0,$v0,%lo(var8009d0c0)
/* f010b04: 3c02800a */ lui $v0,%hi(g_HolographCriterias)
/* f010b08: 2442d0c0 */ addiu $v0,$v0,%lo(g_HolographCriterias)
/* f010b0c: 8c4e0000 */ lw $t6,0x0($v0)
/* f010b10: ac8e000c */ sw $t6,0xc($a0)
/* f010b14: 03e00008 */ jr $ra
+51 -1
View File
@@ -55323,7 +55323,7 @@ void objectiveCheckMultiroomEntered(s32 arg0, s16 *requiredrooms)
}
GLOBAL_ASM(
glabel func0f096088
glabel objectiveCheckHolograph
/* f096088: 27bdff50 */ addiu $sp,$sp,-176
/* f09608c: afb10034 */ sw $s1,0x34($sp)
/* f096090: 3c11800a */ lui $s1,0x800a
@@ -55514,6 +55514,56 @@ glabel func0f096088
/* f09635c: 00000000 */ sll $zero,$zero,0x0
);
// Too much stack usage and unknown functions to decompile this accurately
// at the moment.
//void objectiveCheckHolograph(s32 arg0)
//{
// struct criteria_holograph *criteria = g_HolographCriterias;
//
// while (criteria) {
// if (g_Vars.stagenum == STAGE_CITRAINING) {
// criteria->status = OBJECTIVE_INCOMPLETE;
// }
//
// if (criteria->status == OBJECTIVE_INCOMPLETE) {
// struct defaultobj *obj = objFindByTagId(criteria->obj);
//
// if (obj && obj->prop && obj->prop->flags & 2 && obj->prop->z > 0 && func0f0869a8(obj)) {
// f32 fVar11 = arg0;
// s32 a[2];
// s32 b[2];
// s32 c[2];
//
// if (fVar11 != 0.00000000) {
// float xdiff = obj->prop->pos.x - g_Vars.currentplayer->unk1bb0.x;
// float zdiff = obj->prop->pos.z - g_Vars.currentplayer->unk1bb0.z;
// pass = xdiff * xdiff + zdiff * zdiff < fVar11 * fVar11;
// } else {
// pass = fVar11 > -1;
// }
//
// if (pass && func0f0899dc(obj->prop, a, b, c)) {
// func0f06803c(a, b, c, &fStack56);
//
// if (func0f0b57f8() < fStack56 && fStack56 < func0f0b57d8() + func0f0b57f8() &&
// func0f0b57f8() < fStack64 && fStack64 < func0f0b57d8() + func0f0b57f8() &&
// func0f0b5808() < fStack52 && fStack52 < func0f0b57e8() + func0f0b5808() &&
// func0f0b5808() < fStack60 && fStack60 < func0f0b57e8() + func0f0b5808()) {
// criteria->status = OBJECTIVE_COMPLETE;
//
// if (g_Vars.stagenum == STAGE_CITRAINING) {
// struct trainingdata *data = ciGetTrainingData();
// data->holographedpc = true;
// }
// }
// }
// }
// }
//
// criteria = criteria->next;
// }
//}
GLOBAL_ASM(
glabel func0f096360
/* f096360: 27bdffd8 */ addiu $sp,$sp,-40
+1 -1
View File
@@ -4184,7 +4184,7 @@ glabel func0f169374
/* f16a088: 14600010 */ bnez $v1,.L0f16a0cc
/* f16a08c: 00000000 */ sll $zero,$zero,0x0
/* f16a090: 44816000 */ mtc1 $at,$f12
/* f16a094: 0fc25822 */ jal func0f096088
/* f16a094: 0fc25822 */ jal objectiveCheckHolograph
/* f16a098: 00000000 */ sll $zero,$zero,0x0
/* f16a09c: 3c048009 */ lui $a0,0x8009
/* f16a0a0: 8c845200 */ lw $a0,0x5200($a0)
+1 -1
View File
@@ -16326,7 +16326,7 @@ u32 var8009d0b0 = 0;
u32 var8009d0b4 = 0;
struct criteria_roomentered *g_RoomEnteredCriterias = NULL;
struct criteria_multiroomentered *g_MultiroomEnteredCriterias = NULL;
u32 var8009d0c0 = 0;
struct criteria_holograph *g_HolographCriterias = NULL;
// 8009d0c4
s32 g_NumTags = 0;
+1 -1
View File
@@ -389,7 +389,7 @@ u32 func0f095c04(void);
u32 func0f095d64(void);
void objectiveCheckRoomEntered(s32 currentroom);
void objectiveCheckMultiroomEntered(s32 arg0, s16 *requiredrooms);
u32 func0f096088(void);
void objectiveCheckHolograph(s32 arg0);
u32 func0f096360(void);
u32 func0f0964b4(void);
u32 func0f0965e4(void);
+4 -4
View File
@@ -51,10 +51,10 @@ u32 func0f0b5778(void);
u32 func0f0b5798(void);
u32 func0f0b57a8(void);
u32 func0f0b57b8(void);
u32 func0f0b57d8(void);
u32 func0f0b57e8(void);
u32 func0f0b57f8(void);
u32 func0f0b5808(void);
f32 func0f0b57d8(void);
f32 func0f0b57e8(void);
f32 func0f0b57f8(void);
f32 func0f0b5808(void);
u32 func0f0b5828(void);
u32 func0f0b5838(void);
u32 func0f0b5b9c(void);
+1 -1
View File
@@ -586,7 +586,7 @@ extern u32 var8009d0b0;
extern u32 var8009d0b4;
extern struct criteria_roomentered *g_RoomEnteredCriterias;
extern struct criteria_multiroomentered *g_MultiroomEnteredCriterias;
extern u32 var8009d0c0;
extern struct criteria_holograph *g_HolographCriterias;
extern u32 var8009d0d0;
extern u32 var8009d0d8;
extern u32 var8009d0e0;
+9 -4
View File
@@ -36,7 +36,7 @@ struct prop {
};
/*0x08*/ struct coord pos;
/*0x14*/ u32 z;
/*0x14*/ f32 z;
/*0x18*/ struct prop *parent;
/*0x1c*/ struct prop *child;
/*0x20*/ struct prop *next;
@@ -2653,9 +2653,7 @@ struct player {
/*0x1ba4*/ u32 unk1ba4;
/*0x1ba8*/ u32 unk1ba8;
/*0x1bac*/ u32 unk1bac;
/*0x1bb0*/ u32 unk1bb0;
/*0x1bb4*/ u32 unk1bb4;
/*0x1bb8*/ u32 unk1bb8;
/*0x1bb0*/ struct coord *unk1bb0;
/*0x1bbc*/ u32 unk1bbc;
/*0x1bc0*/ u32 unk1bc0;
/*0x1bc4*/ u32 unk1bc4;
@@ -4693,4 +4691,11 @@ struct criteria_multiroomentered {
struct criteria_multiroomentered *next;
};
struct criteria_holograph {
u32 unk00;
u32 obj;
u32 status;
struct criteria_holograph *next;
};
#endif