#ifndef Z_DEMO_GJ_H #define Z_DEMO_GJ_H #include "ultra64.h" #include "global.h" #include "overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.h" struct DemoGj; typedef struct DemoGj { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ s32 updateMode; /* 0x0168 */ s32 drawConfig; /* 0x016C */ Vec3s rotationVec; /* 0x0172 */ Vec3s unk_172; // It is assigned only. @see DemoGj_SetupTranslation and @see DemoGj_SetupMovement /* 0x0178 */ BossGanon2* ganon; /* 0x017C */ s32 isTransformedIntoGanon; // flag /* 0x0180 */ s32 isRotated; // flag /* 0x0184 */ ColliderCylinder cylinders[3]; /* 0x0268 */ s32 killFlag; // This actor never sets this flag, but it reads it. If set to `true` and the actor type is DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_1, DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_2 or DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_TALL, then the actor will be killed and will drop the specified amount of collectibles. /* 0x026C */ Vec3f unk_26C; // This actor never sets this. Specifies which direction will this actor explode when killed using `killFlag`. } DemoGj; // size = 0x0278 /** * The format of this actor's params is the following: * bits 11-15: The collectible that will be dropped when killed. * bits 8-10: The amount of collectible that will be dropped when killed. * bits 0- 7: A value of the enum DemoGjType. */ typedef enum { /* 04 */ DEMOGJ_TYPE_AROUNDARENA = 4, // This is the indestructible rubble around the arena. This actor keeps alive the whole fight. /* 08 */ DEMOGJ_TYPE_RUBBLE_PILE_1 = 8, // DEMOGJ_TYPE_RUBBLE_PILE_X are the rubbles from where Ganondorf rises. When he transforms into Ganon these are removed from the scene (Actor_Kill). /* 09 */ DEMOGJ_TYPE_RUBBLE_PILE_2, /* 10 */ DEMOGJ_TYPE_RUBBLE_PILE_3, /* 11 */ DEMOGJ_TYPE_RUBBLE_PILE_4, /* 12 */ DEMOGJ_TYPE_RUBBLE_PILE_5, /* 13 */ DEMOGJ_TYPE_RUBBLE_PILE_6, /* 14 */ DEMOGJ_TYPE_RUBBLE_PILE_7, /* 16 */ DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_1 = 16, // This three rubbles are the ones that Ganon can destroy and drop collectables. /* 17 */ DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_2, // They are spawned as soon as the others, but they have collision and are rendered only when Ganondorf has transformed into Ganon. /* 22 */ DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_TALL = 22 // } DemoGjType; #endif