2020-10-31 20:08:43 +00:00
|
|
|
#ifndef D_8004A7C4_H
|
|
|
|
#define D_8004A7C4_H
|
2020-08-30 02:31:51 +00:00
|
|
|
#include "types.h"
|
2021-01-06 02:56:39 +00:00
|
|
|
#include "ovl0/ovl0_2_5.h"
|
2020-08-17 22:47:10 +00:00
|
|
|
|
2021-01-26 01:49:55 +00:00
|
|
|
// same as D_800E1B50?
|
|
|
|
struct UnkStruct8004A7C4_3C_80 {
|
2021-06-06 04:22:06 +00:00
|
|
|
struct UnkStruct8004A7C4_3C_80 *unk0;
|
2021-01-26 01:49:55 +00:00
|
|
|
u32 unk4;
|
2021-03-19 21:39:48 +00:00
|
|
|
struct UnkStruct8004A7C4_3C_80 *unk8;
|
2021-01-26 01:49:55 +00:00
|
|
|
u32 unkC;
|
|
|
|
u32 unk10;
|
|
|
|
u32 unk14;
|
|
|
|
u32 unk18;
|
|
|
|
u32 unk1C;
|
|
|
|
u32 unk20;
|
|
|
|
u32 unk24;
|
|
|
|
u32 unk28;
|
|
|
|
u32 unk2C;
|
|
|
|
u32 unk30;
|
|
|
|
u32 unk34;
|
|
|
|
u32 unk38;
|
|
|
|
u32 unk3C;
|
|
|
|
u32 unk40;
|
|
|
|
u32 unk44;
|
|
|
|
u32 unk48;
|
|
|
|
u32 unk4C;
|
2021-02-01 23:13:42 +00:00
|
|
|
u8 unk50;
|
|
|
|
u8 unk51;
|
|
|
|
u8 unk52;
|
|
|
|
u8 unk53;
|
2021-01-26 01:49:55 +00:00
|
|
|
u32 unk54;
|
2021-03-19 21:39:48 +00:00
|
|
|
u8 unk58;
|
|
|
|
u8 unk59;
|
|
|
|
u8 unk5A;
|
|
|
|
u8 unk5B;
|
2021-01-26 01:49:55 +00:00
|
|
|
u32 unk5C;
|
|
|
|
u32 unk60;
|
|
|
|
u32 unk64;
|
|
|
|
u32 unk68;
|
|
|
|
u32 unk6C;
|
|
|
|
u32 unk70;
|
|
|
|
u32 unk74;
|
|
|
|
u32 unk78;
|
|
|
|
u32 unk7C;
|
|
|
|
u32 unk80;
|
|
|
|
u32 unk84;
|
2021-06-06 04:22:06 +00:00
|
|
|
f32 unk88;
|
2021-01-26 01:49:55 +00:00
|
|
|
u32 unk8C;
|
|
|
|
u32 unk90;
|
|
|
|
u32 unk94;
|
|
|
|
f32 unk98;
|
|
|
|
u32 unk9C;
|
|
|
|
f32 unkA0;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2022-12-29 23:39:22 +00:00
|
|
|
struct UnkStruct8004A7C4_3C_10 {
|
2022-12-30 03:45:24 +00:00
|
|
|
u8 pad[0x30];
|
|
|
|
// vec?
|
|
|
|
Vector unk30;
|
2022-12-29 23:39:22 +00:00
|
|
|
};
|
2021-01-04 20:09:06 +00:00
|
|
|
|
2022-04-07 21:41:21 +00:00
|
|
|
// SOME chunk of the beginning of the struct is a union
|
2020-08-30 02:31:51 +00:00
|
|
|
struct UnkStruct8004A7C4_3C {
|
2021-01-04 20:09:06 +00:00
|
|
|
// u32 unk0;
|
|
|
|
// u32 unk4;
|
|
|
|
// u32 unk8;
|
|
|
|
Vector unk0;
|
|
|
|
|
2020-08-30 02:31:51 +00:00
|
|
|
u32 unkC;
|
|
|
|
|
2022-12-29 23:39:22 +00:00
|
|
|
struct UnkStruct8004A7C4_3C_10 *unk10;
|
2020-08-30 02:31:51 +00:00
|
|
|
u32 unk14;
|
|
|
|
u32 unk18;
|
|
|
|
|
2021-06-06 02:46:11 +00:00
|
|
|
// pos
|
2021-08-23 04:26:01 +00:00
|
|
|
Vector posVec;
|
2020-08-30 02:31:51 +00:00
|
|
|
|
|
|
|
u32 unk28;
|
|
|
|
u32 unk2C;
|
|
|
|
|
2021-06-06 02:46:11 +00:00
|
|
|
// angle
|
2021-08-23 04:26:01 +00:00
|
|
|
Vector angleVec;
|
2020-08-30 02:31:51 +00:00
|
|
|
|
2021-01-04 20:09:06 +00:00
|
|
|
// TODO: how is this actually structured?
|
|
|
|
// some code thinks unk3C is the vector while others
|
|
|
|
// think unk40 is
|
|
|
|
f32 unk3C;
|
2021-06-06 02:46:11 +00:00
|
|
|
// scale
|
2021-08-23 04:26:01 +00:00
|
|
|
Vector scaleVec;
|
2020-08-30 02:31:51 +00:00
|
|
|
|
|
|
|
u32 unk4C;
|
2020-10-29 02:14:41 +00:00
|
|
|
u32 unk50[4];
|
|
|
|
u32 unk60[4];
|
2021-01-27 23:27:46 +00:00
|
|
|
s32 unk70;
|
|
|
|
s32 unk74;
|
|
|
|
f32 unk78;
|
|
|
|
s32 unk7C;
|
2021-01-26 01:49:55 +00:00
|
|
|
struct UnkStruct8004A7C4_3C_80 *unk80;
|
2020-10-29 02:14:41 +00:00
|
|
|
u32 unk84;
|
2020-08-30 02:31:51 +00:00
|
|
|
};
|
|
|
|
|
2021-01-04 20:09:06 +00:00
|
|
|
// only difference is that unk3C is a vector now
|
|
|
|
struct UnkStruct8004A7C4_3C_duplicate {
|
|
|
|
// u32 unk0;
|
|
|
|
// u32 unk4;
|
|
|
|
// u32 unk8;
|
|
|
|
Vector unk0;
|
|
|
|
|
|
|
|
u32 unkC;
|
|
|
|
|
2022-12-29 23:39:22 +00:00
|
|
|
struct UnkStruct8004A7C4_3C_10 *unk10;
|
2021-01-04 20:09:06 +00:00
|
|
|
u32 unk14;
|
|
|
|
u32 unk18;
|
|
|
|
|
|
|
|
Vector unk1C;
|
|
|
|
|
|
|
|
u32 unk28;
|
|
|
|
u32 unk2C;
|
|
|
|
|
|
|
|
Vector unk30;
|
|
|
|
|
|
|
|
Vector unk3C;
|
|
|
|
f32 unk40;
|
|
|
|
|
|
|
|
u32 unk4C;
|
|
|
|
u32 unk50[4];
|
|
|
|
u32 unk60[4];
|
|
|
|
u32 unk70[4];
|
|
|
|
u32 unk80;
|
|
|
|
u32 unk84;
|
|
|
|
};
|
|
|
|
|
2020-10-28 22:12:42 +00:00
|
|
|
// GObj?
|
2022-12-29 23:39:22 +00:00
|
|
|
typedef struct GObj {
|
2022-04-07 21:41:21 +00:00
|
|
|
/* 0x00 */ u32 objId;
|
|
|
|
/* 0x04 */ struct GObj* unk4;
|
|
|
|
/* 0x08 */ struct GObj* unk8;
|
|
|
|
/* 0x0C */ u8 link;
|
2021-03-25 14:09:04 +00:00
|
|
|
// todo: find the array this indexes
|
2022-04-07 21:41:21 +00:00
|
|
|
/* 0x0D */ u8 dl_link;
|
2021-03-19 21:39:48 +00:00
|
|
|
// seems to be similar to other GObj's in proximity
|
2020-10-28 20:40:24 +00:00
|
|
|
u8 unkE;
|
|
|
|
u8 unkF;
|
2020-10-08 01:58:11 +00:00
|
|
|
u32 unk10;
|
2022-04-07 21:41:21 +00:00
|
|
|
// location of render callback according to HSD
|
2020-10-28 20:40:24 +00:00
|
|
|
void (*unk14)(void);
|
2021-03-25 14:09:04 +00:00
|
|
|
struct GObjProcess *proc;
|
2020-10-28 20:40:24 +00:00
|
|
|
u32 unk1C;
|
2021-08-26 14:49:57 +00:00
|
|
|
struct GObj* nextDL;
|
|
|
|
struct GObj* prevDL;
|
|
|
|
u32 renderPriority;
|
2022-04-07 21:41:21 +00:00
|
|
|
// location of user data removal function according to HSD
|
|
|
|
// based on usage this might actually be the render callback
|
2021-08-14 05:36:39 +00:00
|
|
|
void (*unk2C)(struct GObj *);
|
2020-10-29 04:27:31 +00:00
|
|
|
u32 unk30;
|
|
|
|
u32 unk34;
|
|
|
|
u32 unk38;
|
2022-04-07 21:41:21 +00:00
|
|
|
// user_data???
|
2020-08-30 02:31:51 +00:00
|
|
|
struct UnkStruct8004A7C4_3C *unk3C;
|
2021-03-19 21:39:48 +00:00
|
|
|
// goes up by 2.0f per frame until it hits 40.0f, then resets to 0.0f
|
2020-10-29 02:14:41 +00:00
|
|
|
f32 unk40;
|
|
|
|
u32 unk44;
|
2021-06-06 04:22:06 +00:00
|
|
|
// grab arguments
|
|
|
|
void (*unk48)(void);
|
2020-10-29 02:14:41 +00:00
|
|
|
u32 unk4C;
|
2022-12-29 23:39:22 +00:00
|
|
|
} GObj;
|
2021-03-19 21:39:48 +00:00
|
|
|
// size: 0x50
|
2021-08-14 05:36:39 +00:00
|
|
|
extern struct GObj *D_8004A7C4, *D_8004A7C8, *D_8004A7CC;
|
|
|
|
extern struct GObj *D_800DE44C;
|
2021-05-28 21:17:33 +00:00
|
|
|
|
2021-08-14 05:36:39 +00:00
|
|
|
typedef void (*VTABLE[])(struct GObj *);
|
2021-05-28 21:17:33 +00:00
|
|
|
|
2020-08-12 20:36:44 +00:00
|
|
|
#endif
|