mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-04 00:49:17 -04:00
Attempt to decompile objectiveCheckHolograph
This commit is contained in:
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user