mirror of
https://github.com/zeldaret/oot.git
synced 2025-05-10 19:13:42 +00:00
[ntsc-1.0/1.1] Match z_boss_ganon.c and z_boss_ganon2.c changes from PAL 1.0 (#2228)
This commit is contained in:
parent
19621c6a3f
commit
f7a0117e7d
4 changed files with 394 additions and 391 deletions
|
@ -1,28 +1,28 @@
|
||||||
<Root>
|
<Root>
|
||||||
<File Name="ovl_Boss_Ganon2">
|
<File Name="ovl_Boss_Ganon2">
|
||||||
<Texture Name="gGanonLightOrbTex" OutName="ganon_light_orb" Format="i8" Width="64" Height="64" Offset="0x0"/>
|
<Texture Name="gGanonLightOrbTex" OutName="ganon_light_orb" Format="i8" Width="64" Height="64" Offset="0x0" Static="Off"/>
|
||||||
<DList Name="gGanonLightOrbMaterialDL" Offset="0x1040"/>
|
<DList Name="gGanonLightOrbMaterialDL" Offset="0x1040" Static="Off"/>
|
||||||
<DList Name="gGanonLightOrbModelDL" Offset="0x10B0"/>
|
<DList Name="gGanonLightOrbModelDL" Offset="0x10B0" Static="Off"/>
|
||||||
<DList Name="gGanonShadowMaterialDL" Offset="0x1108"/>
|
<DList Name="gGanonShadowMaterialDL" Offset="0x1108" Static="Off"/>
|
||||||
<DList Name="gGanonShadowModelDL" Offset="0x1128"/>
|
<DList Name="gGanonShadowModelDL" Offset="0x1128" Static="Off"/>
|
||||||
<Texture Name="gGanonSwordTrailTex" OutName="ganon_sword_trail" Format="i8" Width="32" Height="32" Offset="0x1158"/>
|
<Texture Name="gGanonSwordTrailTex" OutName="ganon_sword_trail" Format="i8" Width="32" Height="32" Offset="0x1158" Static="Off"/>
|
||||||
<Texture Name="gGanonSwordTrailMaskTex" OutName="ganon_sword_trail_mask" Format="i4" Width="32" Height="32" Offset="0x1558"/>
|
<Texture Name="gGanonSwordTrailMaskTex" OutName="ganon_sword_trail_mask" Format="i4" Width="32" Height="32" Offset="0x1558" Static="Off"/>
|
||||||
<Array Name="gGanonSwordTrailVtx" Count="22" Offset="0x1758">
|
<Array Name="gGanonSwordTrailVtx" Count="22" Offset="0x1758" Static="Off">
|
||||||
<Vtx/>
|
<Vtx/>
|
||||||
</Array>
|
</Array>
|
||||||
<DList Name="gGanonSwordTrailDL" Offset="0x18B8"/>
|
<DList Name="gGanonSwordTrailDL" Offset="0x18B8" Static="Off"/>
|
||||||
<Texture Name="gGanonTriforceTex" OutName="ganon_triforce" Format="i8" Width="64" Height="64" Offset="0x19D0"/>
|
<Texture Name="gGanonTriforceTex" OutName="ganon_triforce" Format="i8" Width="64" Height="64" Offset="0x19D0" Static="Off"/>
|
||||||
<DList Name="gGanonTriforceDL" Offset="0x2A10"/>
|
<DList Name="gGanonTriforceDL" Offset="0x2A10" Static="Off"/>
|
||||||
<Texture Name="gGanonLightningTex" OutName="ganon_lightning" Format="i4" Width="32" Height="160" Offset="0x2A90"/>
|
<Texture Name="gGanonLightningTex" OutName="ganon_lightning" Format="i4" Width="32" Height="160" Offset="0x2A90" Static="Off"/>
|
||||||
<DList Name="gGanonLightningDL" Offset="0x34D0"/> <!-- Original name might be "efc_fg2_thunder1_modelT" -->
|
<DList Name="gGanonLightningDL" Offset="0x34D0" Static="Off"/> <!-- Original name might be "efc_fg2_thunder1_modelT" -->
|
||||||
<Texture Name="gGanonFireRingTex" OutName="ganon_fire_ring" Format="i8" Width="32" Height="64" Offset="0x3558"/>
|
<Texture Name="gGanonFireRingTex" OutName="ganon_fire_ring" Format="i8" Width="32" Height="64" Offset="0x3558" Static="Off"/>
|
||||||
<DList Name="gGanonFireRingDL" Offset="0x3EF8"/> <!-- Original name is "ganon_fire_modelT" -->
|
<DList Name="gGanonFireRingDL" Offset="0x3EF8" Static="Off"/> <!-- Original name is "ganon_fire_modelT" -->
|
||||||
<Texture Name="gGanonZeldaMagicTex" OutName="ganon_zelda_magic" Format="i8" Width="32" Height="64" Offset="0x4018"/>
|
<Texture Name="gGanonZeldaMagicTex" OutName="ganon_zelda_magic" Format="i8" Width="32" Height="64" Offset="0x4018" Static="Off"/>
|
||||||
<DList Name="gGanonZeldaMagicDL" Offset="0x4978"/> <!-- Original name is "efc_ganon2_hadou_modelT" ("wave motion; undulation; surge") -->
|
<DList Name="gGanonZeldaMagicDL" Offset="0x4978" Static="Off"/> <!-- Original name is "efc_ganon2_hadou_modelT" ("wave motion; undulation; surge") -->
|
||||||
<Texture Name="gGanonMasterSwordShadowTex" OutName="ganon_master_sword_shadow" Format="i8" Width="32" Height="32" Offset="0x4A80"/>
|
<Texture Name="gGanonMasterSwordShadowTex" OutName="ganon_master_sword_shadow" Format="i8" Width="32" Height="32" Offset="0x4A80" Static="Off"/>
|
||||||
<DList Name="gGanonMasterSwordShadowDL" Offset="0x4EC0"/> <!-- Original name is "master_sword_shadow_model" -->
|
<DList Name="gGanonMasterSwordShadowDL" Offset="0x4EC0" Static="Off"/> <!-- Original name is "master_sword_shadow_model" -->
|
||||||
<Texture Name="gGanonMasterSwordPommelTex" OutName="ganon_master_sword_pommel" Format="rgba16" Width="16" Height="16" Offset="0x4F40"/>
|
<Texture Name="gGanonMasterSwordPommelTex" OutName="ganon_master_sword_pommel" Format="rgba16" Width="16" Height="16" Offset="0x4F40" Static="Off"/>
|
||||||
<Texture Name="gGanonMasterSwordGuardTex" OutName="ganon_master_sword_guard" Format="rgba16" Width="32" Height="32" Offset="0x5140"/>
|
<Texture Name="gGanonMasterSwordGuardTex" OutName="ganon_master_sword_guard" Format="rgba16" Width="32" Height="32" Offset="0x5140" Static="Off"/>
|
||||||
<DList Name="gGanonMasterSwordDL" Offset="0x60E0"/> <!-- Original name is "master_gn2_swordB_model" -->
|
<DList Name="gGanonMasterSwordDL" Offset="0x60E0" Static="Off"/> <!-- Original name is "master_gn2_swordB_model" -->
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "z_boss_ganon.h"
|
#include "z_boss_ganon.h"
|
||||||
|
#include "versions.h"
|
||||||
#include "assets/overlays/ovl_Boss_Ganon/ovl_Boss_Ganon.h"
|
#include "assets/overlays/ovl_Boss_Ganon/ovl_Boss_Ganon.h"
|
||||||
#include "overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.h"
|
#include "overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.h"
|
||||||
#include "overlays/actors/ovl_En_Zl3/z_en_zl3.h"
|
#include "overlays/actors/ovl_En_Zl3/z_en_zl3.h"
|
||||||
|
@ -1225,15 +1226,10 @@ void BossGanon_ShatterWindows(u8 windowShatterState) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
|
void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
|
||||||
static Color_RGBA8 bloodPrimColor = { 0, 120, 0, 255 };
|
|
||||||
static Color_RGBA8 bloodEnvColor = { 0, 120, 0, 255 };
|
|
||||||
s16 i;
|
s16 i;
|
||||||
u8 moveCam = false;
|
u8 moveCam = false;
|
||||||
Player* player = GET_PLAYER(play);
|
Player* player = GET_PLAYER(play);
|
||||||
s16 pad;
|
s16 pad;
|
||||||
Vec3f sp98;
|
|
||||||
Vec3f sp8C;
|
|
||||||
Vec3f sp80;
|
|
||||||
|
|
||||||
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->animObjectSlot].segment);
|
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->animObjectSlot].segment);
|
||||||
|
|
||||||
|
@ -1336,6 +1332,17 @@ void BossGanon_DeathAndTowerCutscene(BossGanon* this, PlayState* play) {
|
||||||
Actor_PlaySfx(&this->actor, NA_SE_EN_GANON_TOKETU);
|
Actor_PlaySfx(&this->actor, NA_SE_EN_GANON_TOKETU);
|
||||||
} else {
|
} else {
|
||||||
if (Animation_OnFrame(&this->skelAnime, this->fwork[GDF_FWORK_1] - 16.0f)) {
|
if (Animation_OnFrame(&this->skelAnime, this->fwork[GDF_FWORK_1] - 16.0f)) {
|
||||||
|
Vec3f sp98;
|
||||||
|
Vec3f sp8C;
|
||||||
|
#if OOT_VERSION < PAL_1_0
|
||||||
|
Color_RGBA8 bloodPrimColor = { 120, 0, 0, 255 };
|
||||||
|
Color_RGBA8 bloodEnvColor = { 120, 0, 0, 255 };
|
||||||
|
#else
|
||||||
|
static Color_RGBA8 bloodPrimColor = { 0, 120, 0, 255 };
|
||||||
|
static Color_RGBA8 bloodEnvColor = { 0, 120, 0, 255 };
|
||||||
|
#endif
|
||||||
|
Vec3f sp80;
|
||||||
|
|
||||||
for (i = 0; i < 40; i++) {
|
for (i = 0; i < 40; i++) {
|
||||||
sp98.x = Rand_CenteredFloat(5.0f);
|
sp98.x = Rand_CenteredFloat(5.0f);
|
||||||
sp98.y = Rand_CenteredFloat(1.5f) + 1.0f;
|
sp98.y = Rand_CenteredFloat(1.5f) + 1.0f;
|
||||||
|
|
|
@ -7,9 +7,25 @@
|
||||||
#include "assets/objects/object_ganon2/object_ganon2.h"
|
#include "assets/objects/object_ganon2/object_ganon2.h"
|
||||||
#include "assets/objects/object_ganon_anime3/object_ganon_anime3.h"
|
#include "assets/objects/object_ganon_anime3/object_ganon_anime3.h"
|
||||||
#include "assets/objects/object_geff/object_geff.h"
|
#include "assets/objects/object_geff/object_geff.h"
|
||||||
|
#include "assets/overlays/ovl_Boss_Ganon2/ovl_Boss_Ganon2.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_4 | ACTOR_FLAG_5)
|
#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_4 | ACTOR_FLAG_5)
|
||||||
|
|
||||||
|
#define BOSS_GANON2_EFFECT_COUNT 100
|
||||||
|
|
||||||
|
typedef struct BossGanon2Effect {
|
||||||
|
/* 0x00 */ u8 type;
|
||||||
|
/* 0x01 */ u8 unk_01;
|
||||||
|
/* 0x04 */ Vec3f position;
|
||||||
|
/* 0x10 */ Vec3f velocity;
|
||||||
|
/* 0x1C */ Vec3f accel;
|
||||||
|
/* 0x28 */ char unk_28[0x6];
|
||||||
|
/* 0x2E */ s16 unk_2E;
|
||||||
|
/* 0x30 */ char unk_30[0x4];
|
||||||
|
/* 0x34 */ f32 scale;
|
||||||
|
/* 0x38 */ Vec3f unk_38;
|
||||||
|
} BossGanon2Effect; // size = 0x44
|
||||||
|
|
||||||
void BossGanon2_Init(Actor* thisx, PlayState* play);
|
void BossGanon2_Init(Actor* thisx, PlayState* play);
|
||||||
void BossGanon2_Destroy(Actor* thisx, PlayState* play);
|
void BossGanon2_Destroy(Actor* thisx, PlayState* play);
|
||||||
void BossGanon2_Update(Actor* thisx, PlayState* play);
|
void BossGanon2_Update(Actor* thisx, PlayState* play);
|
||||||
|
@ -45,7 +61,265 @@ ActorProfile Boss_Ganon2_Profile = {
|
||||||
/**/ BossGanon2_Draw,
|
/**/ BossGanon2_Draw,
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "z_boss_ganon2_data.inc.c"
|
static Vec3f D_80906D60 = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
|
static Vec3f D_80906D6C = { 0.0f, 0.0f, 500.0f };
|
||||||
|
|
||||||
|
static u8 D_80906D78 = 0;
|
||||||
|
|
||||||
|
static ColliderJntSphElementInit sJntSphItemsInit1[] = {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 0, { { 0, 0, 0 }, 30 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 1, { { 0, 0, 0 }, 30 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 2, { { 0, 0, 0 }, 30 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 3, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 4, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 5, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 6, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 7, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 8, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 9, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 10, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 11, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 12, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 13, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x10 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 14, { { 0, 0, 0 }, 20 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK0,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 15, { { 0, 0, 0 }, 30 }, 100 },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static ColliderJntSphInit sJntSphInit1 = {
|
||||||
|
{
|
||||||
|
COL_MATERIAL_METAL,
|
||||||
|
AT_ON | AT_TYPE_ENEMY,
|
||||||
|
AC_ON | AC_TYPE_PLAYER,
|
||||||
|
OC1_ON | OC1_TYPE_PLAYER,
|
||||||
|
OC2_FIRST_ONLY | OC2_TYPE_1,
|
||||||
|
COLSHAPE_JNTSPH,
|
||||||
|
},
|
||||||
|
ARRAY_COUNT(sJntSphItemsInit1),
|
||||||
|
sJntSphItemsInit1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static ColliderJntSphElementInit sJntSphItemsInit2[] = {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK2,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x40 },
|
||||||
|
{ 0xFFDFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 15, { { 0, 0, 0 }, 45 }, 100 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
ELEM_MATERIAL_UNK2,
|
||||||
|
{ 0xFFCFFFFF, 0x00, 0x40 },
|
||||||
|
{ 0xFFDFFFFF, 0x00, 0x00 },
|
||||||
|
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||||
|
ACELEM_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
|
{ 16, { { 0, 0, 0 }, 45 }, 100 },
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static ColliderJntSphInit sJntSphInit2 = {
|
||||||
|
{
|
||||||
|
COL_MATERIAL_METAL,
|
||||||
|
AT_ON | AT_TYPE_ENEMY,
|
||||||
|
AC_ON | AC_TYPE_PLAYER,
|
||||||
|
OC1_ON | OC1_TYPE_PLAYER,
|
||||||
|
OC2_TYPE_1,
|
||||||
|
COLSHAPE_JNTSPH,
|
||||||
|
},
|
||||||
|
ARRAY_COUNT(sJntSphItemsInit2),
|
||||||
|
sJntSphItemsInit2,
|
||||||
|
};
|
||||||
|
|
||||||
|
static Vec3f D_8090EB20;
|
||||||
|
|
||||||
|
static EnZl3* sZelda;
|
||||||
|
|
||||||
|
static Actor* D_8090EB30;
|
||||||
|
|
||||||
|
// unused
|
||||||
|
static UNK_TYPE D_8090EB34;
|
||||||
|
|
||||||
|
static BossGanon2Effect sEffects[BOSS_GANON2_EFFECT_COUNT];
|
||||||
|
|
||||||
|
static s32 sSeed1;
|
||||||
|
static s32 sSeed2;
|
||||||
|
static s32 sSeed3;
|
||||||
|
|
||||||
|
// unused
|
||||||
|
static UNK_TYPE D_809105DC;
|
||||||
|
|
||||||
|
static Vec3f D_809105D8[4];
|
||||||
|
|
||||||
|
static Vec3f D_80910608[4];
|
||||||
|
|
||||||
|
static s8 D_80910638;
|
||||||
|
|
||||||
void BossGanon2_InitRand(s32 seedInit0, s32 seedInit1, s32 seedInit2) {
|
void BossGanon2_InitRand(s32 seedInit0, s32 seedInit1, s32 seedInit2) {
|
||||||
sSeed1 = seedInit0;
|
sSeed1 = seedInit0;
|
||||||
|
@ -1448,12 +1722,18 @@ void func_80901020(BossGanon2* this, PlayState* play) {
|
||||||
|
|
||||||
void func_8090109C(BossGanon2* this, PlayState* play) {
|
void func_8090109C(BossGanon2* this, PlayState* play) {
|
||||||
u8 i;
|
u8 i;
|
||||||
|
Vec3f velocity;
|
||||||
|
Vec3f accel;
|
||||||
|
#if OOT_VERSION < PAL_1_0
|
||||||
|
Color_RGBA8 sPrimColor = { 120, 0, 0, 255 };
|
||||||
|
Color_RGBA8 sEnvColor = { 120, 0, 0, 255 };
|
||||||
|
#else
|
||||||
|
static Color_RGBA8 sPrimColor = { 0, 120, 0, 255 };
|
||||||
|
static Color_RGBA8 sEnvColor = { 0, 120, 0, 255 };
|
||||||
|
#endif
|
||||||
|
Vec3f pos;
|
||||||
|
|
||||||
for (i = 0; i < 70; i++) {
|
for (i = 0; i < 70; i++) {
|
||||||
Vec3f velocity;
|
|
||||||
Vec3f accel;
|
|
||||||
Vec3f pos;
|
|
||||||
|
|
||||||
velocity.x = Rand_CenteredFloat(50.0f);
|
velocity.x = Rand_CenteredFloat(50.0f);
|
||||||
velocity.y = Rand_CenteredFloat(10.0f) + 5.0f;
|
velocity.y = Rand_CenteredFloat(10.0f) + 5.0f;
|
||||||
velocity.z = Rand_CenteredFloat(50.0f);
|
velocity.z = Rand_CenteredFloat(50.0f);
|
||||||
|
@ -1467,6 +1747,18 @@ void func_8090109C(BossGanon2* this, PlayState* play) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Vec3f D_8090702C[] = {
|
||||||
|
{ 10.0f, -10.0f, 0.0f },
|
||||||
|
{ 0.0f, 0.0f, -60.0f },
|
||||||
|
{ 70.0f, -30.0f, 10.0f },
|
||||||
|
};
|
||||||
|
|
||||||
|
static Vec3f D_80907050[] = {
|
||||||
|
{ -20.0f, 0.0f, 0.0f },
|
||||||
|
{ -15.0f, 0.0f, 10.0f },
|
||||||
|
{ -16.0f, -12.0f, 40.0f },
|
||||||
|
};
|
||||||
|
|
||||||
void func_8090120C(BossGanon2* this, PlayState* play) {
|
void func_8090120C(BossGanon2* this, PlayState* play) {
|
||||||
Player* player;
|
Player* player;
|
||||||
f32 temp_f14;
|
f32 temp_f14;
|
||||||
|
@ -1875,7 +2167,12 @@ void func_80902348(BossGanon2* this, PlayState* play) {
|
||||||
temp_f2 = -200.0f - player->actor.world.pos.x;
|
temp_f2 = -200.0f - player->actor.world.pos.x;
|
||||||
temp_f12 = -200.0f - player->actor.world.pos.z;
|
temp_f12 = -200.0f - player->actor.world.pos.z;
|
||||||
|
|
||||||
if (sqrtf(SQ(temp_f2) + SQ(temp_f12)) > 784.0f) {
|
#if OOT_VERSION < PAL_1_0
|
||||||
|
if (sqrtf(SQ(temp_f2) + SQ(temp_f12)) > 800.0f)
|
||||||
|
#else
|
||||||
|
if (sqrtf(SQ(temp_f2) + SQ(temp_f12)) > 784.0f)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
for (j = 0; j < PLAYER_BODYPART_MAX; j++) {
|
for (j = 0; j < PLAYER_BODYPART_MAX; j++) {
|
||||||
player->bodyFlameTimers[j] = Rand_S16Offset(0, 200);
|
player->bodyFlameTimers[j] = Rand_S16Offset(0, 200);
|
||||||
}
|
}
|
||||||
|
@ -1967,6 +2264,8 @@ void BossGanon2_CollisionCheck(BossGanon2* this, PlayState* play) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s16 D_80907074[] = { 0, 1, 2, 2, 1, 0 };
|
||||||
|
|
||||||
void BossGanon2_Update(Actor* thisx, PlayState* play) {
|
void BossGanon2_Update(Actor* thisx, PlayState* play) {
|
||||||
BossGanon2* this = (BossGanon2*)thisx;
|
BossGanon2* this = (BossGanon2*)thisx;
|
||||||
s32 pad;
|
s32 pad;
|
||||||
|
@ -2205,6 +2504,11 @@ void BossGanon2_Update(Actor* thisx, PlayState* play) {
|
||||||
BossGanon2_UpdateEffects(this, play);
|
BossGanon2_UpdateEffects(this, play);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s16 D_80907080 = 0;
|
||||||
|
|
||||||
|
static u8 D_80907084[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
|
||||||
|
static u8 D_80907090[] = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21 };
|
||||||
|
|
||||||
void func_809034E4(Vec3f* arg0, Vec3f* arg1) {
|
void func_809034E4(Vec3f* arg0, Vec3f* arg1) {
|
||||||
Vtx* vtx;
|
Vtx* vtx;
|
||||||
Vec3f sp2D0;
|
Vec3f sp2D0;
|
||||||
|
@ -2436,7 +2740,11 @@ void func_80904108(BossGanon2* this, PlayState* play) {
|
||||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 200, 0, (s8)this->unk_324);
|
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 200, 0, (s8)this->unk_324);
|
||||||
gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 128);
|
gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 128);
|
||||||
Matrix_Translate(-200.0f, 1086.0f, -200.0f, MTXMODE_NEW);
|
Matrix_Translate(-200.0f, 1086.0f, -200.0f, MTXMODE_NEW);
|
||||||
|
#if OOT_VERSION < PAL_1_0
|
||||||
|
Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY);
|
||||||
|
#else
|
||||||
Matrix_Scale(0.098000005f, 0.1f, 0.098000005f, MTXMODE_APPLY);
|
Matrix_Scale(0.098000005f, 0.1f, 0.098000005f, MTXMODE_APPLY);
|
||||||
|
#endif
|
||||||
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, gameState->gfxCtx, "../z_boss_ganon2.c", 5183);
|
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, gameState->gfxCtx, "../z_boss_ganon2.c", 5183);
|
||||||
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gGanonFireRingDL));
|
gSPDisplayList(POLY_XLU_DISP++, SEGMENTED_TO_VIRTUAL(gGanonFireRingDL));
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
|
@ -2546,6 +2854,25 @@ s32 BossGanon2_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s8 D_8090709C[] = {
|
||||||
|
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0xFF, 0xFF, 0x05, 0xFF, 0x06, 0x07, 0xFF, 0xFF, 0x08, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0xFF, 0xFF, 0x02, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
static s8 D_809070CC[] = {
|
||||||
|
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0xFF, 0xFF, 0x05, 0xFF, 0x06, 0x07, 0xFF, 0xFF, 0x08, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x00, 0xFF, 0xFF, 0x02, 0x0C, 0x0D, 0x0E, 0x09, 0x0A, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
static Vec3f D_809070FC = { 0.0f, 0.0f, 5000.0f };
|
||||||
|
static Vec3f D_80907108 = { 0.0f, 2000.0f, 0.0f };
|
||||||
|
static Vec3f D_80907114 = { 0.0f, 2000.0f, 0.0f };
|
||||||
|
static Vec3f D_80907120 = { 0.0f, 0.0f, 17000.0f };
|
||||||
|
static Vec3f D_8090712C = { 0.0f, 0.0f, 3000.0f };
|
||||||
|
static Vec3f D_80907138 = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
void BossGanon2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
|
void BossGanon2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
|
||||||
s8 pad;
|
s8 pad;
|
||||||
s8 temp_v0;
|
s8 temp_v0;
|
||||||
|
@ -2704,6 +3031,13 @@ void func_8090523C(BossGanon2* this, PlayState* play) {
|
||||||
CLOSE_DISPS(gameState->gfxCtx, "../z_boss_ganon2.c", 5725);
|
CLOSE_DISPS(gameState->gfxCtx, "../z_boss_ganon2.c", 5725);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s8 D_80907144[] = {
|
||||||
|
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0x05, 0xFF, 0x06, 0x07, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x02, 0x0C, 0x0D, 0x0E, 0x09, 0x0A, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
static Vec3f D_80907164 = { 800.0f, 420.0f, 100.0f };
|
||||||
|
|
||||||
void BossGanon2_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
|
void BossGanon2_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
|
||||||
s8 temp_v1 = D_80907144[limbIndex];
|
s8 temp_v1 = D_80907144[limbIndex];
|
||||||
BossGanon2* this = (BossGanon2*)thisx;
|
BossGanon2* this = (BossGanon2*)thisx;
|
||||||
|
@ -2749,6 +3083,14 @@ void func_80905674(BossGanon2* this, PlayState* play) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void* sEyeTextures[] = {
|
||||||
|
gGanonEyeOpenTex,
|
||||||
|
gGanonEyeHalfTex,
|
||||||
|
gGanonEyeClosedTex,
|
||||||
|
};
|
||||||
|
|
||||||
|
static Vec3f D_8090717C = { 0.0f, -2000.0f, 0.0f };
|
||||||
|
|
||||||
void BossGanon2_Draw(Actor* thisx, PlayState* play) {
|
void BossGanon2_Draw(Actor* thisx, PlayState* play) {
|
||||||
void* shadowTexture = GRAPH_ALLOC(play->state.gfxCtx, 4096);
|
void* shadowTexture = GRAPH_ALLOC(play->state.gfxCtx, 4096);
|
||||||
BossGanon2* this = (BossGanon2*)thisx;
|
BossGanon2* this = (BossGanon2*)thisx;
|
||||||
|
@ -2962,6 +3304,13 @@ void BossGanon2_DrawEffects(PlayState* play) {
|
||||||
CLOSE_DISPS(play->state.gfxCtx, "../z_boss_ganon2.c", 6185);
|
CLOSE_DISPS(play->state.gfxCtx, "../z_boss_ganon2.c", 6185);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s16 D_80907188[] = { 1, 2, 3, 3, 2, 1 };
|
||||||
|
static s16 D_80907194[] = { 2, 3, 4, 4, 4, 3, 2 };
|
||||||
|
static s16 D_809071A4[] = { 2, 3, 4, 4, 4, 4, 3, 2 };
|
||||||
|
static s16 D_809071B4[] = { 2, 4, 5, 5, 6, 6, 6, 6, 5, 5, 4, 2 };
|
||||||
|
static s16 D_809071CC[] = { 1, -1, 1, 1, 3, 4, 1, 6, 7, 2, 9, 10, 2, 12, 13 };
|
||||||
|
static u8 D_809071EC[] = { 3, 2, 2, 1, 3, 3, 1, 3, 3, 1, 0, 3, 1, 0, 3 };
|
||||||
|
|
||||||
void func_80906538(BossGanon2* this, u8* shadowTexture, f32 arg2) {
|
void func_80906538(BossGanon2* this, u8* shadowTexture, f32 arg2) {
|
||||||
s16 temp_t0;
|
s16 temp_t0;
|
||||||
s16 temp_v0;
|
s16 temp_v0;
|
||||||
|
@ -3081,3 +3430,8 @@ void BossGanon2_DrawShadowTexture(void* shadowTexture, BossGanon2* this, PlaySta
|
||||||
|
|
||||||
CLOSE_DISPS(gfxCtx, "../z_boss_ganon2.c", 6479);
|
CLOSE_DISPS(gfxCtx, "../z_boss_ganon2.c", 6479);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// padding
|
||||||
|
static u32 D_809071FC[2] = { 0 };
|
||||||
|
|
||||||
|
#include "assets/overlays/ovl_Boss_Ganon2/ovl_Boss_Ganon2.c"
|
||||||
|
|
|
@ -1,358 +0,0 @@
|
||||||
#include "z_boss_ganon2.h"
|
|
||||||
#include "overlays/actors/ovl_En_Zl3/z_en_zl3.h"
|
|
||||||
#include "assets/objects/object_ganon2/object_ganon2.h"
|
|
||||||
|
|
||||||
#define BOSS_GANON2_EFFECT_COUNT 100
|
|
||||||
|
|
||||||
typedef struct BossGanon2Effect {
|
|
||||||
/* 0x00 */ u8 type;
|
|
||||||
/* 0x01 */ u8 unk_01;
|
|
||||||
/* 0x04 */ Vec3f position;
|
|
||||||
/* 0x10 */ Vec3f velocity;
|
|
||||||
/* 0x1C */ Vec3f accel;
|
|
||||||
/* 0x28 */ char unk_28[0x6];
|
|
||||||
/* 0x2E */ s16 unk_2E;
|
|
||||||
/* 0x30 */ char unk_30[0x4];
|
|
||||||
/* 0x34 */ f32 scale;
|
|
||||||
/* 0x38 */ Vec3f unk_38;
|
|
||||||
} BossGanon2Effect; // size = 0x44
|
|
||||||
|
|
||||||
static Vec3f D_80906D60 = { 0.0f, 0.0f, 0.0f };
|
|
||||||
|
|
||||||
static Vec3f D_80906D6C = { 0.0f, 0.0f, 500.0f };
|
|
||||||
|
|
||||||
static u8 D_80906D78 = 0;
|
|
||||||
|
|
||||||
static ColliderJntSphElementInit sJntSphItemsInit1[] = {
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 0, { { 0, 0, 0 }, 30 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 1, { { 0, 0, 0 }, 30 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 2, { { 0, 0, 0 }, 30 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 3, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 4, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 5, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 6, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 7, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 8, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 9, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 10, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 11, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 12, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 13, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x10 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 14, { { 0, 0, 0 }, 20 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK0,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 15, { { 0, 0, 0 }, 30 }, 100 },
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static ColliderJntSphInit sJntSphInit1 = {
|
|
||||||
{
|
|
||||||
COL_MATERIAL_METAL,
|
|
||||||
AT_ON | AT_TYPE_ENEMY,
|
|
||||||
AC_ON | AC_TYPE_PLAYER,
|
|
||||||
OC1_ON | OC1_TYPE_PLAYER,
|
|
||||||
OC2_FIRST_ONLY | OC2_TYPE_1,
|
|
||||||
COLSHAPE_JNTSPH,
|
|
||||||
},
|
|
||||||
ARRAY_COUNT(sJntSphItemsInit1),
|
|
||||||
sJntSphItemsInit1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static ColliderJntSphElementInit sJntSphItemsInit2[] = {
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK2,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x40 },
|
|
||||||
{ 0xFFDFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 15, { { 0, 0, 0 }, 45 }, 100 },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{
|
|
||||||
ELEM_MATERIAL_UNK2,
|
|
||||||
{ 0xFFCFFFFF, 0x00, 0x40 },
|
|
||||||
{ 0xFFDFFFFF, 0x00, 0x00 },
|
|
||||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
|
||||||
ACELEM_ON,
|
|
||||||
OCELEM_ON,
|
|
||||||
},
|
|
||||||
{ 16, { { 0, 0, 0 }, 45 }, 100 },
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static ColliderJntSphInit sJntSphInit2 = {
|
|
||||||
{
|
|
||||||
COL_MATERIAL_METAL,
|
|
||||||
AT_ON | AT_TYPE_ENEMY,
|
|
||||||
AC_ON | AC_TYPE_PLAYER,
|
|
||||||
OC1_ON | OC1_TYPE_PLAYER,
|
|
||||||
OC2_TYPE_1,
|
|
||||||
COLSHAPE_JNTSPH,
|
|
||||||
},
|
|
||||||
ARRAY_COUNT(sJntSphItemsInit2),
|
|
||||||
sJntSphItemsInit2,
|
|
||||||
};
|
|
||||||
|
|
||||||
static Color_RGBA8 sPrimColor = { 0, 120, 0, 255 };
|
|
||||||
|
|
||||||
static Color_RGBA8 sEnvColor = { 0, 120, 0, 255 };
|
|
||||||
|
|
||||||
static Vec3f D_8090702C[] = {
|
|
||||||
{ 10.0f, -10.0f, 0.0f },
|
|
||||||
{ 0.0f, 0.0f, -60.0f },
|
|
||||||
{ 70.0f, -30.0f, 10.0f },
|
|
||||||
};
|
|
||||||
|
|
||||||
static Vec3f D_80907050[] = {
|
|
||||||
{ -20.0f, 0.0f, 0.0f },
|
|
||||||
{ -15.0f, 0.0f, 10.0f },
|
|
||||||
{ -16.0f, -12.0f, 40.0f },
|
|
||||||
};
|
|
||||||
|
|
||||||
static s16 D_80907074[] = { 0, 1, 2, 2, 1, 0 };
|
|
||||||
|
|
||||||
static s16 D_80907080 = 0;
|
|
||||||
|
|
||||||
static u8 D_80907084[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
|
|
||||||
|
|
||||||
static u8 D_80907090[] = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21 };
|
|
||||||
|
|
||||||
static s8 D_8090709C[] = {
|
|
||||||
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0xFF, 0xFF, 0x05, 0xFF, 0x06, 0x07, 0xFF, 0xFF, 0x08, 0xFF,
|
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
||||||
0x00, 0xFF, 0xFF, 0x02, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x00,
|
|
||||||
};
|
|
||||||
|
|
||||||
static s8 D_809070CC[] = {
|
|
||||||
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0xFF, 0xFF, 0x05, 0xFF, 0x06, 0x07, 0xFF, 0xFF, 0x08, 0xFF,
|
|
||||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
||||||
0x00, 0xFF, 0xFF, 0x02, 0x0C, 0x0D, 0x0E, 0x09, 0x0A, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
|
||||||
};
|
|
||||||
|
|
||||||
static Vec3f D_809070FC = { 0.0f, 0.0f, 5000.0f };
|
|
||||||
|
|
||||||
static Vec3f D_80907108 = { 0.0f, 2000.0f, 0.0f };
|
|
||||||
|
|
||||||
static Vec3f D_80907114 = { 0.0f, 2000.0f, 0.0f };
|
|
||||||
|
|
||||||
static Vec3f D_80907120 = { 0.0f, 0.0f, 17000.0f };
|
|
||||||
|
|
||||||
static Vec3f D_8090712C = { 0.0f, 0.0f, 3000.0f };
|
|
||||||
|
|
||||||
static Vec3f D_80907138 = { 0.0f, 0.0f, 0.0f };
|
|
||||||
|
|
||||||
static s8 D_80907144[] = {
|
|
||||||
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0x05, 0xFF, 0x06, 0x07, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
||||||
0xFF, 0xFF, 0xFF, 0x02, 0x0C, 0x0D, 0x0E, 0x09, 0x0A, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
|
||||||
};
|
|
||||||
|
|
||||||
static Vec3f D_80907164 = { 800.0f, 420.0f, 100.0f };
|
|
||||||
|
|
||||||
static void* sEyeTextures[] = {
|
|
||||||
gGanonEyeOpenTex,
|
|
||||||
gGanonEyeHalfTex,
|
|
||||||
gGanonEyeClosedTex,
|
|
||||||
};
|
|
||||||
|
|
||||||
static Vec3f D_8090717C = { 0.0f, -2000.0f, 0.0f };
|
|
||||||
|
|
||||||
static s16 D_80907188[] = { 1, 2, 3, 3, 2, 1 };
|
|
||||||
|
|
||||||
static s16 D_80907194[] = { 2, 3, 4, 4, 4, 3, 2 };
|
|
||||||
|
|
||||||
static s16 D_809071A4[] = { 2, 3, 4, 4, 4, 4, 3, 2 };
|
|
||||||
|
|
||||||
static s16 D_809071B4[] = { 2, 4, 5, 5, 6, 6, 6, 6, 5, 5, 4, 2 };
|
|
||||||
|
|
||||||
static s16 D_809071CC[] = { 1, -1, 1, 1, 3, 4, 1, 6, 7, 2, 9, 10, 2, 12, 13 };
|
|
||||||
|
|
||||||
static u8 D_809071EC[] = { 3, 2, 2, 1, 3, 3, 1, 3, 3, 1, 0, 3, 1, 0, 3 };
|
|
||||||
|
|
||||||
// padding
|
|
||||||
static u32 D_809071FC[2] = { 0 };
|
|
||||||
|
|
||||||
#include "assets/overlays/ovl_Boss_Ganon2/ovl_Boss_Ganon2.c"
|
|
||||||
|
|
||||||
static Vec3f D_8090EB20;
|
|
||||||
|
|
||||||
static EnZl3* sZelda;
|
|
||||||
|
|
||||||
static Actor* D_8090EB30;
|
|
||||||
|
|
||||||
// unused
|
|
||||||
static UNK_TYPE D_8090EB34;
|
|
||||||
|
|
||||||
static BossGanon2Effect sEffects[BOSS_GANON2_EFFECT_COUNT];
|
|
||||||
|
|
||||||
static s32 sSeed1;
|
|
||||||
static s32 sSeed2;
|
|
||||||
static s32 sSeed3;
|
|
||||||
|
|
||||||
// unused
|
|
||||||
static UNK_TYPE D_809105DC;
|
|
||||||
|
|
||||||
static Vec3f D_809105D8[4];
|
|
||||||
|
|
||||||
static Vec3f D_80910608[4];
|
|
||||||
|
|
||||||
static s8 D_80910638;
|
|
Loading…
Add table
Reference in a new issue