Boss_02 Documentation, Part 2: Document Twinmold Param Types and name most BSS variables (#931)

* Boss_02 Documentation, Part 2: Document Twinmold Param Types and name most BSS variables

* Respond to hensldm's review
This commit is contained in:
Tom Overton 2022-07-21 21:53:14 -07:00 committed by GitHub
parent 905c089beb
commit 7732f5e96d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 241 additions and 232 deletions

View File

@ -16,16 +16,16 @@
void Boss02_Init(Actor* thisx, PlayState* play);
void Boss02_Destroy(Actor* thisx, PlayState* play);
void Boss02_Update(Actor* thisx, PlayState* play);
void Boss02_Draw(Actor* thisx, PlayState* play);
void Boss02_Twinmold_Update(Actor* thisx, PlayState* play);
void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play);
void func_809DAA74(Boss02* this, PlayState* play);
void func_809DAA98(Boss02* this, PlayState* play);
void func_809DAAA8(Boss02* this, PlayState* play);
void func_809DAB78(Boss02* this, PlayState* play);
void func_809DC218(Actor* thisx, PlayState* play);
void func_809DC78C(Actor* thisx, PlayState* play);
void func_809DD0A8(Actor* thisx, PlayState* play);
void Boss02_Tail_Update(Actor* thisx, PlayState* play);
void Boss02_Static_Update(Actor* thisx, PlayState* play);
void Boss02_Static_Draw(Actor* thisx, PlayState* play);
void Boss02_UpdateEffects(PlayState* play);
void Boss02_DrawEffects(PlayState* play);
void func_809DD934(Boss02* this, PlayState* play);
@ -33,15 +33,15 @@ void func_809DEAC4(Boss02* this, PlayState* play);
u8 D_809E0420;
u8 D_809E0421;
u8 D_809E0422; // 0 when the giant's mask is off, 1 when the giant's mask is on
Boss02* D_809E0424;
Boss02* D_809E0428;
Boss02* D_809E042C;
u8 D_809E0430;
DoorWarp1* D_809E0434;
TwinmoldEffect D_809E0438[150];
u8 sIsInGiantMode;
Boss02* sRedTwinmold;
Boss02* sBlueTwinmold;
Boss02* sTwinmoldStatic;
u8 sMusicStartTimer;
DoorWarp1* sBlueWarp;
TwinmoldEffect sEffects[150];
static DamageTable sDamageTable1 = {
static DamageTable sBlueTwinmoldDamageTable = {
/* Deku Nut */ DMG_ENTRY(0, 0x0),
/* Deku Stick */ DMG_ENTRY(1, 0xF),
/* Horse trample */ DMG_ENTRY(0, 0x0),
@ -76,7 +76,7 @@ static DamageTable sDamageTable1 = {
/* Powder Keg */ DMG_ENTRY(1, 0xF),
};
static DamageTable sDamageTable2 = {
static DamageTable sRedTwinmoldDamageTable = {
/* Deku Nut */ DMG_ENTRY(0, 0x0),
/* Deku Stick */ DMG_ENTRY(1, 0xF),
/* Horse trample */ DMG_ENTRY(0, 0x0),
@ -119,8 +119,8 @@ const ActorInit Boss_02_InitVars = {
sizeof(Boss02),
(ActorFunc)Boss02_Init,
(ActorFunc)Boss02_Destroy,
(ActorFunc)Boss02_Update,
(ActorFunc)Boss02_Draw,
(ActorFunc)Boss02_Twinmold_Update,
(ActorFunc)Boss02_Twinmold_Draw,
};
f32 D_809DF5B0 = 1.0f;
@ -480,7 +480,7 @@ void func_809DA24C(PlayState* play) {
void Boss02_SpawnEffectSand(TwinmoldEffect* effects, Vec3f* pos, f32 scale) {
s16 i;
for (i = 0; i < ARRAY_COUNT(D_809E0438); i++, effects++) {
for (i = 0; i < ARRAY_COUNT(sEffects); i++, effects++) {
if (effects->type == TWINMOLD_EFFECT_NONE) {
effects->type = TWINMOLD_EFFECT_SAND;
effects->pos = *pos;
@ -501,7 +501,7 @@ void Boss02_SpawnEffectSand(TwinmoldEffect* effects, Vec3f* pos, f32 scale) {
void Boss02_SpawnEffectFragment(TwinmoldEffect* effects, Vec3f* pos) {
s16 i;
for (i = 0; i < ARRAY_COUNT(D_809E0438); i++, effects++) {
for (i = 0; i < ARRAY_COUNT(sEffects); i++, effects++) {
if (effects->type == TWINMOLD_EFFECT_NONE) {
effects->type = TWINMOLD_EFFECT_FRAGMENT;
effects->pos = *pos;
@ -523,7 +523,7 @@ void Boss02_SpawnEffectFragment(TwinmoldEffect* effects, Vec3f* pos) {
void Boss02_SpawnEffectFlash(TwinmoldEffect* effects, Vec3f* pos) {
s16 i;
for (i = 0; i < ARRAY_COUNT(D_809E0438); i++, effects++) {
for (i = 0; i < ARRAY_COUNT(sEffects); i++, effects++) {
if ((effects->type == TWINMOLD_EFFECT_NONE) || (effects->type == TWINMOLD_EFFECT_FRAGMENT)) {
effects->type = TWINMOLD_EFFECT_FLASH;
effects->pos = *pos;
@ -549,47 +549,48 @@ void Boss02_Init(Actor* thisx, PlayState* play) {
s32 i;
s32 pad[2];
if ((gSaveContext.save.weekEventReg[52] & 0x20) && (this->actor.params == 0)) {
D_809E0434 = (DoorWarp1*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 0.0f, 60.0f,
0.0f, 0, 0, 0, 1);
if ((gSaveContext.save.weekEventReg[52] & 0x20) && (this->actor.params == TWINMOLD_RED)) {
sBlueWarp = (DoorWarp1*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1, 0.0f, 60.0f,
0.0f, 0, 0, 0, 1);
Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, 0.0f, 30.0f, -150.0f, 0, 1, 0, 0);
}
this->actor.targetMode = 10;
this->unk_1D3C.z = this->unk_1D3C.x = 0.0f;
this->unk_1D3C.y = 1.0f;
if (this->actor.params == 200) {
D_809E042C = this;
play->specialEffects = (void*)D_809E0438;
this->actor.update = func_809DC78C;
this->actor.draw = func_809DD0A8;
if (this->actor.params == TWINMOLD_STATIC) {
sTwinmoldStatic = this;
play->specialEffects = (void*)sEffects;
this->actor.update = Boss02_Static_Update;
this->actor.draw = Boss02_Static_Draw;
this->actor.flags &= ~ACTOR_FLAG_1;
this->unk_1D70 = 0.00999999977648f;
if ((KREG(64) != 0) || (gSaveContext.eventInf[5] & 0x20) || (D_809E0434 != NULL)) {
if ((KREG(64) != 0) || (gSaveContext.eventInf[5] & 0x20) || (sBlueWarp != NULL)) {
this->unk_1D20 = 0;
D_809E0430 = KREG(15) + 20;
sMusicStartTimer = KREG(15) + 20;
} else {
this->unk_1D20 = 1;
}
XREG(41) = KREG(14) + 20;
this->unk_01AC = 1.0f;
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_TANRON5, 0.0f, 1000.0f, 0.0f, 0, 0, 0, 0);
} else if (this->actor.params == 100) {
this->actor.update = func_809DC218;
} else if (this->actor.params == TWINMOLD_TAIL) {
this->actor.update = Boss02_Tail_Update;
this->actor.draw = NULL;
this->actor.hintId = 0x2E;
} else {
if (this->actor.params != 35) {
this->actor.params = 0;
Actor_Spawn(&play->actorCtx, play, ACTOR_BOSS_02, 0.0f, 0.0f, 0.0f, 0, 0, 0, 200);
D_809E0424 = this;
D_809E0428 = (Boss02*)Actor_Spawn(&play->actorCtx, play, ACTOR_BOSS_02, this->actor.world.pos.x,
this->actor.world.pos.y, this->actor.world.pos.z, this->actor.world.rot.x,
this->actor.world.rot.y, this->actor.world.rot.z, 35);
D_809E0424->actor.colChkInfo.damageTable = &sDamageTable2;
D_809E0428->actor.colChkInfo.damageTable = &sDamageTable1;
D_809E0424->unk_1674 = D_809E0428;
D_809E0428->unk_1674 = D_809E0424;
if (this->actor.params != TWINMOLD_BLUE) {
this->actor.params = TWINMOLD_RED;
Actor_Spawn(&play->actorCtx, play, ACTOR_BOSS_02, 0.0f, 0.0f, 0.0f, 0, 0, 0, TWINMOLD_STATIC);
sRedTwinmold = this;
sBlueTwinmold =
(Boss02*)Actor_Spawn(&play->actorCtx, play, ACTOR_BOSS_02, this->actor.world.pos.x,
this->actor.world.pos.y, this->actor.world.pos.z, this->actor.world.rot.x,
this->actor.world.rot.y, this->actor.world.rot.z, TWINMOLD_BLUE);
sRedTwinmold->actor.colChkInfo.damageTable = &sRedTwinmoldDamageTable;
sBlueTwinmold->actor.colChkInfo.damageTable = &sBlueTwinmoldDamageTable;
sRedTwinmold->otherTwinmold = sBlueTwinmold;
sBlueTwinmold->otherTwinmold = sRedTwinmold;
}
this->actor.colChkInfo.mass = MASS_HEAVY;
@ -603,7 +604,7 @@ void Boss02_Init(Actor* thisx, PlayState* play) {
this->colliderSphere2Elements);
Collider_InitAndSetCylinder(play, &this->colliderCylinder, &this->actor, &sCylinderInit);
if (D_809E0434 != NULL) {
if (sBlueWarp != NULL) {
func_809DAA74(this, play);
} else {
func_809DAAA8(this, play);
@ -617,7 +618,8 @@ void Boss02_Init(Actor* thisx, PlayState* play) {
this->unk_014C = Rand_ZeroFloat(1000.0f);
this->unk_1678 = 22;
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_BOSS_02, 0.0f, 0.0f, 0.0f, 0, 0, 0, 100);
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_BOSS_02, 0.0f, 0.0f, 0.0f, 0, 0, 0,
TWINMOLD_TAIL);
}
}
@ -635,14 +637,14 @@ void func_809DAA98(Boss02* this, PlayState* play) {
void func_809DAAA8(Boss02* this, PlayState* play) {
this->actionFunc = func_809DAB78;
Animation_MorphToLoop(&this->skelAnime, &gTwinmoldHeadFlyAnim, 0.0f);
if (D_809E042C->unk_1D20 != 0) {
if (sTwinmoldStatic->unk_1D20 != 0) {
this->unk_0144 = 10;
} else {
this->unk_0144 = 100;
this->unk_01A8 = 25.0f;
D_809E042C->unk_1D7E = 100;
sTwinmoldStatic->unk_1D7E = 100;
this->actor.world.pos.x = 0.0f;
if (D_809E0424 == this) {
if (sRedTwinmold == this) {
this->actor.world.pos.z = -1000.0f;
} else {
this->actor.world.pos.z = 1400.0f;
@ -666,7 +668,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
f32 phi_f2;
s16 temp_s0;
s16 temp_s2;
Boss02* spB0 = this->unk_1674;
Boss02* otherTwinmold = this->otherTwinmold;
Vec3f spA4;
f32 spA0;
f32 sp9C;
@ -693,7 +695,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->unk_01A4 = Math_SinS(this->unk_0196) * this->unk_019C;
this->actor.world.rot.x = this->actor.shape.rot.x + this->unk_01A4;
if (!(this->unk_014C & 0x1F) && (D_809E042C->unk_1D20 == 0)) {
if (!(this->unk_014C & 0x1F) && (sTwinmoldStatic->unk_1D20 == 0)) {
this->unk_01A0 = Rand_ZeroFloat(0x1000) + 0x800;
this->unk_019A = Rand_ZeroFloat(0x400) + 0x200;
}
@ -716,7 +718,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
Actor_UpdatePos(&this->actor);
spD0 = this->actor.world.pos;
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
spD0.y = 5000.0f;
} else {
spD0.y = 2000.0f;
@ -752,9 +754,9 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->unk_0B1C[this->unk_014E].z = BINANG_TO_RAD(this->actor.world.rot.z);
}
if ((this->unk_0144 < 10) && (spB0->unk_0144 >= 20)) {
if ((this->unk_0144 < 10) && (otherTwinmold->unk_0144 >= 20)) {
this->unk_01B0.y = -1000.0f * D_809DF5B0;
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
this->unk_01B0.y += 3150.0f;
}
this->unk_0144 = 3;
@ -774,7 +776,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->actor.world.pos.x = randPlusMinusPoint5Scaled(5000.0f * D_809DF5B0);
this->actor.world.pos.z = randPlusMinusPoint5Scaled(5000.0f * D_809DF5B0);
this->actor.world.pos.y = -500.0f * D_809DF5B0;
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
this->actor.world.pos.y += 3150.0f;
}
}
@ -807,7 +809,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->unk_01B0.z = 500.0f;
}
this->unk_01B0.y = Rand_ZeroFloat(800.0f * D_809DF5B0) + (200.0f * D_809DF5B0);
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
this->unk_01B0.y += 3150.0f;
}
}
@ -824,7 +826,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
if (sqrtf(SQ(spCC) + SQ(spC8) + SQ(spC4)) < (phi_f2 * D_809DF5B0)) {
this->unk_0144 = 3;
this->unk_01B0.y = -3000.0f * D_809DF5B0;
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
this->unk_01B0.y += 3150.0f;
}
this->unk_0146[0] = 150;
@ -846,7 +848,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->unk_0144 = 3;
this->unk_01B0.x = randPlusMinusPoint5Scaled(500.0f * D_809DF5B0) + this->actor.world.pos.x;
this->unk_01B0.y = -3000.0f * D_809DF5B0;
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
this->unk_01B0.y += 3150.0f;
}
this->unk_01B0.z = randPlusMinusPoint5Scaled(500.0f * D_809DF5B0) + this->actor.world.pos.z;
@ -870,7 +872,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
return;
case 11:
if (this == D_809E0424) {
if (this == sRedTwinmold) {
this->unk_01B0.x = D_809DF9C0[this->unk_1D1A].x;
this->unk_01B0.y = D_809DF9C0[this->unk_1D1A].y;
this->unk_01B0.z = D_809DF9C0[this->unk_1D1A].z;
@ -894,7 +896,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
if (this->unk_1D1A > 8) {
this->unk_1D1A = 8;
}
if (this == D_809E0424) {
if (this == sRedTwinmold) {
this->unk_01B0.x = D_809DF9C0[this->unk_1D1A].x;
this->unk_01B0.y = D_809DF9C0[this->unk_1D1A].y;
this->unk_01B0.z = D_809DF9C0[this->unk_1D1A].z;
@ -915,7 +917,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->unk_0146[0] = 50;
this->unk_01B0.x = player->actor.world.pos.x + spA4.x;
this->unk_01B0.y = randPlusMinusPoint5Scaled(500.0f * D_809DF5B0) + (600.0f * D_809DF5B0);
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
this->unk_01B0.y += 3150.0f;
}
this->unk_01B0.z = player->actor.world.pos.z + spA4.z;
@ -933,8 +935,8 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->unk_0144 = 21;
this->unk_0146[0] = 20;
this->unk_0152 = 0;
D_809E042C->unk_1D20 = 102;
D_809E042C->unk_1D5C = 0.0f;
sTwinmoldStatic->unk_1D20 = 102;
sTwinmoldStatic->unk_1D5C = 0.0f;
play_sound(NA_SE_EN_INBOSS_DEAD_PRE2_OLD);
} else if (!(this->unk_0146[1] & 0xF) && (Rand_ZeroOne() < 0.5f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_INBOSS_DAMAGE_OLD);
@ -974,7 +976,7 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->actor.speedXZ = 15.0f * D_809DF5B0;
}
if (spB0->unk_0144 >= 10) {
if (otherTwinmold->unk_0144 >= 10) {
Audio_QueueSeqCmd(NA_BGM_CLEAR_BOSS | 0x8000);
}
@ -998,10 +1000,10 @@ void func_809DAB78(Boss02* this, PlayState* play) {
this->unk_0170 = this->unk_017C;
this->unk_016C = 30;
this->unk_0170.y = this->actor.floorHeight;
D_809E042C->unk_1D20 = 103;
D_809E042C->unk_1D1C = 0;
D_809E042C->unk_0146[0] = 15;
D_809E042C->unk_0150 = 0;
sTwinmoldStatic->unk_1D20 = 103;
sTwinmoldStatic->unk_1D1C = 0;
sTwinmoldStatic->unk_0146[0] = 15;
sTwinmoldStatic->unk_0150 = 0;
play_sound(NA_SE_EV_LIGHTNING);
for (i = 0; i < 30; i++) {
@ -1052,13 +1054,13 @@ void func_809DAB78(Boss02* this, PlayState* play) {
}
void func_809DBFB4(Boss02* this, PlayState* play) {
Boss02* temp_s6 = this->unk_1674;
Boss02* otherTwinmold = this->otherTwinmold;
s32 temp;
s32 i;
u8 damage;
if (this->unk_0154 == 0) {
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
temp = 0;
} else {
temp = 1;
@ -1078,7 +1080,7 @@ void func_809DBFB4(Boss02* this, PlayState* play) {
this->unk_015C = 10;
}
if (D_809E0422 != 0) {
if (sIsInGiantMode) {
this->unk_0152 = 15;
} else {
this->unk_0152 = 12;
@ -1086,7 +1088,7 @@ void func_809DBFB4(Boss02* this, PlayState* play) {
damage = this->actor.colChkInfo.damage;
if (temp_s6->unk_0144 < 20) {
if (otherTwinmold->unk_0144 < 20) {
do {
do {
this->actor.colChkInfo.health -= damage;
@ -1100,17 +1102,17 @@ void func_809DBFB4(Boss02* this, PlayState* play) {
this->skelAnime.playSpeed = 2.0f;
this->unk_0144 = 20;
if (temp_s6->unk_0144 >= 10) {
if (otherTwinmold->unk_0144 >= 10) {
Audio_QueueSeqCmd(0x100100FF);
} else {
temp_s6->unk_0195 = 1;
otherTwinmold->unk_0195 = 1;
}
this->unk_0146[1] = BREG(70) + 170;
this->unk_0146[0] = 0;
this->actor.shape.rot.x = 0x4000;
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
if (this->actor.world.pos.y < -200.0f) {
this->actor.world.pos.y = -200.0f;
}
@ -1118,12 +1120,12 @@ void func_809DBFB4(Boss02* this, PlayState* play) {
this->actor.world.pos.y = 3130.0f;
}
D_809E042C->unk_1D20 = 100;
sTwinmoldStatic->unk_1D20 = 100;
if (this == D_809E0424) {
D_809E042C->unk_0194 = 0;
if (this == sRedTwinmold) {
sTwinmoldStatic->unk_0194 = 0;
} else {
D_809E042C->unk_0194 = 1;
sTwinmoldStatic->unk_0194 = 1;
}
}
}
@ -1132,23 +1134,23 @@ void func_809DBFB4(Boss02* this, PlayState* play) {
}
}
void func_809DC218(Actor* thisx, PlayState* play) {
void Boss02_Tail_Update(Actor* thisx, PlayState* play) {
Boss02* this = THIS;
s32 pad;
Vec3f sp24;
CollisionPoly* sp20;
Vec3f pos;
CollisionPoly* outPoly;
this->unk_014C++;
if ((this->unk_014C + this->actor.params) & 1) {
sp24 = this->actor.world.pos;
pos = this->actor.world.pos;
this->actor.focus.pos = this->actor.world.pos;
if (D_809E0422 != 0) {
sp24.y = 5000.0f;
if (sIsInGiantMode) {
pos.y = 5000.0f;
} else {
sp24.y = 2000.0f;
pos.y = 2000.0f;
}
if ((this->actor.focus.pos.y < BgCheck_EntityRaycastFloor1(&play->colCtx, &sp20, &sp24)) || (D_809E0422 != 0)) {
if ((this->actor.focus.pos.y < BgCheck_EntityRaycastFloor1(&play->colCtx, &outPoly, &pos)) || sIsInGiantMode) {
this->actor.flags &= ~ACTOR_FLAG_1;
} else {
this->actor.flags |= ACTOR_FLAG_1;
@ -1156,19 +1158,19 @@ void func_809DC218(Actor* thisx, PlayState* play) {
}
}
void Boss02_Update(Actor* thisx, PlayState* play) {
void Boss02_Twinmold_Update(Actor* thisx, PlayState* play) {
Vec3f sp3C;
Boss02* this = THIS;
s32 pad;
s16 i;
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
Actor_SetScale(&this->actor, 0.6f);
} else {
Actor_SetScale(&this->actor, 0.060000001f);
}
if (D_809E042C->unk_1D18 == 0) {
if (sTwinmoldStatic->unk_1D18 == 0) {
for (i = 0; i < ARRAY_COUNT(this->unk_0146); i++) {
if (this->unk_0146[i] != 0) {
this->unk_0146[i]--;
@ -1274,18 +1276,18 @@ void Boss02_Update(Actor* thisx, PlayState* play) {
}
}
void func_809DC78C(Actor* thisx, PlayState* play) {
void Boss02_Static_Update(Actor* thisx, PlayState* play) {
Boss02* this = THIS;
this->unk_01AC = D_809DF5B0;
play->envCtx.sandstormState = 0xD;
if (D_809E0434 != NULL) {
if (sBlueWarp != NULL) {
this->unk_1D74 = KREG(23) + -15.0f;
D_801F4E30 = 0;
play->envCtx.lightSettingOverride = 1;
play->skyboxId = 1;
} else if (D_809E0422 == 0) {
} else if (!sIsInGiantMode) {
this->unk_1D74 = 0.0f;
D_801F4E30 = this->unk_1D7C;
play->envCtx.lightSettingOverride = 0;
@ -1303,10 +1305,10 @@ void func_809DC78C(Actor* thisx, PlayState* play) {
this->unk_0146[0]--;
}
if (D_809E0434 == NULL) {
if (D_809E0430 != 0) {
D_809E0430--;
if (D_809E0430 == 0) {
if (sBlueWarp == NULL) {
if (sMusicStartTimer != 0) {
sMusicStartTimer--;
if (sMusicStartTimer == 0) {
Audio_QueueSeqCmd(NA_BGM_BOSS | 0x8000);
}
}
@ -1328,7 +1330,7 @@ Gfx* D_809DFA9C[] = {
Vec3f D_809DFAF4 = { -10000.0f, -100000.0f, -100000.0f };
void Boss02_Draw(Actor* thisx, PlayState* play2) {
void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play2) {
PlayState* play = play2;
Boss02* this = THIS;
s32 i;
@ -1358,7 +1360,7 @@ void Boss02_Draw(Actor* thisx, PlayState* play2) {
gSPSegment(POLY_OPA_DISP++, 0x0D, mtx);
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
sp98 = -500.0f;
} else {
sp98 = 3100.0f;
@ -1452,7 +1454,7 @@ void Boss02_Draw(Actor* thisx, PlayState* play2) {
CLOSE_DISPS(play->state.gfxCtx);
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
func_809DA50C(0, &this->colliderSphere2, &D_809DFAF4);
func_809DA50C(21, &this->colliderSphere1, &this->unk_147C[0]);
} else {
@ -1461,7 +1463,7 @@ void Boss02_Draw(Actor* thisx, PlayState* play2) {
}
}
void func_809DD0A8(Actor* thisx, PlayState* play) {
void Boss02_Static_Draw(Actor* thisx, PlayState* play) {
Boss02_DrawEffects(play);
}
@ -1470,13 +1472,13 @@ void Boss02_UpdateEffects(PlayState* play) {
f32 floorY;
s16 i;
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
floorY = 0.0f;
} else {
floorY = 3150.0f;
}
for (i = 0; i < ARRAY_COUNT(D_809E0438); i++, effect++) {
for (i = 0; i < ARRAY_COUNT(sEffects); i++, effect++) {
if (effect->type) {
effect->timer++;
effect->pos.x += effect->velocity.x * D_809DF5B0;
@ -1523,7 +1525,7 @@ void Boss02_DrawEffects(PlayState* play) {
func_8012C28C(play->state.gfxCtx);
func_8012C2DC(play->state.gfxCtx);
for (i = 0; i < ARRAY_COUNT(D_809E0438); i++, effect++) {
for (i = 0; i < ARRAY_COUNT(sEffects); i++, effect++) {
if (effect->type == TWINMOLD_EFFECT_SAND) {
if (!flag) {
gSPDisplayList(POLY_XLU_DISP++, gTwinmoldDustMaterialDL);
@ -1551,7 +1553,7 @@ void Boss02_DrawEffects(PlayState* play) {
}
effect = (TwinmoldEffect*)play->specialEffects;
for (i = 0, flag = false; i < ARRAY_COUNT(D_809E0438); i++, effect++) {
for (i = 0, flag = false; i < ARRAY_COUNT(sEffects); i++, effect++) {
if (effect->type == TWINMOLD_EFFECT_FRAGMENT) {
if (!flag) {
gDPSetCombineLERP(POLY_OPA_DISP++, SHADE, 0, PRIMITIVE, 0, SHADE, 0, PRIMITIVE, 0, SHADE, 0, PRIMITIVE,
@ -1572,7 +1574,7 @@ void Boss02_DrawEffects(PlayState* play) {
}
effect = (TwinmoldEffect*)play->specialEffects;
for (i = 0, flag = false; i < ARRAY_COUNT(D_809E0438); i++, effect++) {
for (i = 0, flag = false; i < ARRAY_COUNT(sEffects); i++, effect++) {
if (effect->type == TWINMOLD_EFFECT_FLASH) {
if (!flag) { //! @bug - dev forgot to set flag to 1, should only apply to first entry?
gSPDisplayList(POLY_XLU_DISP++, gLightOrb1DL);
@ -1591,7 +1593,7 @@ void Boss02_DrawEffects(PlayState* play) {
}
effect = (TwinmoldEffect*)play->specialEffects;
for (i = 0, flag = false; i < ARRAY_COUNT(D_809E0438); i++, effect++) {
for (i = 0, flag = false; i < ARRAY_COUNT(sEffects); i++, effect++) {
if (effect->type == TWINMOLD_EFFECT_BLACK_DUST) {
if (!flag) {
gSPDisplayList(POLY_XLU_DISP++, gTwinmoldDustMaterialDL);
@ -1638,7 +1640,7 @@ void func_809DD934(Boss02* this, PlayState* play) {
this->unk_1D14 = 0;
this->unk_1D5C = 0.0f;
this->unk_1D58 = 0.0f;
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
this->unk_1D18 = 1;
this->unk_1D68 = 10.0f;
this->unk_1D64 = 60.0f;
@ -1767,19 +1769,19 @@ void func_809DD934(Boss02* this, PlayState* play) {
play->envCtx.lightSettings.fogNear = this->unk_1D74;
if (sp57) {
D_809E0422 = 1 - D_809E0422;
if (D_809E0422 == 0) {
sIsInGiantMode = 1 - sIsInGiantMode;
if (!sIsInGiantMode) {
D_809DF5B0 = 1.0f;
} else {
D_809DF5B0 = 0.1f;
}
this->unk_01AC = D_809DF5B0;
if (D_809E0422 == 0) {
if (D_809E0434 != NULL) {
D_809E0434->unk_203 = 0;
D_809E0434->unk_204 = 1.0f;
D_809E0434->dyna.actor.world.pos.y = 60.0f;
if (!sIsInGiantMode) {
if (sBlueWarp != NULL) {
sBlueWarp->unk_203 = 0;
sBlueWarp->unk_204 = 1.0f;
sBlueWarp->dyna.actor.world.pos.y = 60.0f;
}
player->actor.world.pos.x *= 10.0f;
@ -1788,70 +1790,70 @@ void func_809DD934(Boss02* this, PlayState* play) {
player->unk_B68 = player->actor.world.pos.y;
player->actor.world.pos.z *= 10.0f;
if ((D_809E0434 != NULL) && ((SQ(player->actor.world.pos.z) + SQ(player->actor.world.pos.x)) < SQ(60.0f))) {
if ((sBlueWarp != NULL) && ((SQ(player->actor.world.pos.z) + SQ(player->actor.world.pos.x)) < SQ(60.0f))) {
player->actor.world.pos.z = 60.0f;
player->actor.world.pos.x = 60.0f;
}
D_809E0424->actor.world.pos.x *= 10.0f;
D_809E0424->actor.world.pos.y -= 3150.0f;
D_809E0424->actor.world.pos.y *= 10.0f;
D_809E0424->actor.world.pos.z *= 10.0f;
sRedTwinmold->actor.world.pos.x *= 10.0f;
sRedTwinmold->actor.world.pos.y -= 3150.0f;
sRedTwinmold->actor.world.pos.y *= 10.0f;
sRedTwinmold->actor.world.pos.z *= 10.0f;
D_809E0424->unk_0170.x *= 10.0f;
D_809E0424->unk_0170.y -= 3150.0f;
D_809E0424->unk_0170.y *= 10.0f;
D_809E0424->unk_0170.z *= 10.0f;
sRedTwinmold->unk_0170.x *= 10.0f;
sRedTwinmold->unk_0170.y -= 3150.0f;
sRedTwinmold->unk_0170.y *= 10.0f;
sRedTwinmold->unk_0170.z *= 10.0f;
for (i = 0; i < ARRAY_COUNT(this->unk_01BC); i++) {
D_809E0424->unk_01BC[i].x *= 10.0f;
D_809E0424->unk_01BC[i].y -= 3150.0f;
D_809E0424->unk_01BC[i].y *= 10.0f;
D_809E0424->unk_01BC[i].z *= 10.0f;
sRedTwinmold->unk_01BC[i].x *= 10.0f;
sRedTwinmold->unk_01BC[i].y -= 3150.0f;
sRedTwinmold->unk_01BC[i].y *= 10.0f;
sRedTwinmold->unk_01BC[i].z *= 10.0f;
}
D_809E0424->unk_01B0.x *= 10.0f;
D_809E0424->unk_01B0.y -= 3150.0f;
D_809E0424->unk_01B0.y *= 10.0f;
D_809E0424->unk_01B0.z *= 10.0f;
sRedTwinmold->unk_01B0.x *= 10.0f;
sRedTwinmold->unk_01B0.y -= 3150.0f;
sRedTwinmold->unk_01B0.y *= 10.0f;
sRedTwinmold->unk_01B0.z *= 10.0f;
D_809E0424->unk_017C.y -= 3150.0f;
D_809E0424->unk_017C.y *= 10.0f;
D_809E0424->unk_0188.y -= 3150.0f;
D_809E0424->unk_0188.y *= 10.0f;
sRedTwinmold->unk_017C.y -= 3150.0f;
sRedTwinmold->unk_017C.y *= 10.0f;
sRedTwinmold->unk_0188.y -= 3150.0f;
sRedTwinmold->unk_0188.y *= 10.0f;
D_809E0428->actor.world.pos.x *= 10.0f;
D_809E0428->actor.world.pos.y -= 3150.0f;
D_809E0428->actor.world.pos.y *= 10.0f;
D_809E0428->actor.world.pos.z *= 10.0f;
sBlueTwinmold->actor.world.pos.x *= 10.0f;
sBlueTwinmold->actor.world.pos.y -= 3150.0f;
sBlueTwinmold->actor.world.pos.y *= 10.0f;
sBlueTwinmold->actor.world.pos.z *= 10.0f;
D_809E0428->unk_0170.x *= 10.0f;
D_809E0428->unk_0170.y -= 3150.0f;
D_809E0428->unk_0170.y *= 10.0f;
D_809E0428->unk_0170.z *= 10.0f;
sBlueTwinmold->unk_0170.x *= 10.0f;
sBlueTwinmold->unk_0170.y -= 3150.0f;
sBlueTwinmold->unk_0170.y *= 10.0f;
sBlueTwinmold->unk_0170.z *= 10.0f;
for (i = 0; i < ARRAY_COUNT(this->unk_01BC); i++) {
D_809E0428->unk_01BC[i].x *= 10.0f;
D_809E0428->unk_01BC[i].y -= 3150.0f;
D_809E0428->unk_01BC[i].y *= 10.0f;
D_809E0428->unk_01BC[i].z *= 10.0f;
sBlueTwinmold->unk_01BC[i].x *= 10.0f;
sBlueTwinmold->unk_01BC[i].y -= 3150.0f;
sBlueTwinmold->unk_01BC[i].y *= 10.0f;
sBlueTwinmold->unk_01BC[i].z *= 10.0f;
}
D_809E0428->unk_01B0.x *= 10.0f;
D_809E0428->unk_01B0.y -= 3150.0f;
D_809E0428->unk_01B0.y *= 10.0f;
D_809E0428->unk_01B0.z *= 10.0f;
sBlueTwinmold->unk_01B0.x *= 10.0f;
sBlueTwinmold->unk_01B0.y -= 3150.0f;
sBlueTwinmold->unk_01B0.y *= 10.0f;
sBlueTwinmold->unk_01B0.z *= 10.0f;
D_809E0428->unk_017C.y -= 3150.0f;
D_809E0428->unk_017C.y *= 10.0f;
D_809E0428->unk_0188.y -= 3150.0f;
D_809E0428->unk_0188.y *= 10.0f;
sBlueTwinmold->unk_017C.y -= 3150.0f;
sBlueTwinmold->unk_017C.y *= 10.0f;
sBlueTwinmold->unk_0188.y -= 3150.0f;
sBlueTwinmold->unk_0188.y *= 10.0f;
} else {
if (D_809E0434 != 0) {
D_809E0434->unk_203 = 1;
D_809E0434->unk_204 = 0.1f;
D_809E0434->dyna.actor.world.pos.y = 3155.0f;
if (sBlueWarp != 0) {
sBlueWarp->unk_203 = 1;
sBlueWarp->unk_204 = 0.1f;
sBlueWarp->dyna.actor.world.pos.y = 3155.0f;
}
player->actor.world.pos.x *= 0.1f;
@ -1860,59 +1862,59 @@ void func_809DD934(Boss02* this, PlayState* play) {
player->unk_B68 = player->actor.world.pos.y;
player->actor.world.pos.z *= 0.1f;
D_809E0424->actor.world.pos.x *= 0.1f;
D_809E0424->actor.world.pos.y *= 0.1f;
D_809E0424->actor.world.pos.y += 3150.0f;
D_809E0424->actor.world.pos.z *= 0.1f;
sRedTwinmold->actor.world.pos.x *= 0.1f;
sRedTwinmold->actor.world.pos.y *= 0.1f;
sRedTwinmold->actor.world.pos.y += 3150.0f;
sRedTwinmold->actor.world.pos.z *= 0.1f;
D_809E0424->unk_0170.x *= 0.1f;
D_809E0424->unk_0170.y *= 0.1f;
D_809E0424->unk_0170.y += 3150.0f;
D_809E0424->unk_0170.z *= 0.1f;
sRedTwinmold->unk_0170.x *= 0.1f;
sRedTwinmold->unk_0170.y *= 0.1f;
sRedTwinmold->unk_0170.y += 3150.0f;
sRedTwinmold->unk_0170.z *= 0.1f;
for (i = 0; i < ARRAY_COUNT(this->unk_01BC); i++) {
D_809E0424->unk_01BC[i].x *= 0.1f;
D_809E0424->unk_01BC[i].y *= 0.1f;
D_809E0424->unk_01BC[i].y += 3150.0f;
D_809E0424->unk_01BC[i].z *= 0.1f;
sRedTwinmold->unk_01BC[i].x *= 0.1f;
sRedTwinmold->unk_01BC[i].y *= 0.1f;
sRedTwinmold->unk_01BC[i].y += 3150.0f;
sRedTwinmold->unk_01BC[i].z *= 0.1f;
}
D_809E0424->unk_01B0.x *= 0.1f;
D_809E0424->unk_01B0.y *= 0.1f;
D_809E0424->unk_01B0.y += 3150.0f;
D_809E0424->unk_01B0.z *= 0.1f;
sRedTwinmold->unk_01B0.x *= 0.1f;
sRedTwinmold->unk_01B0.y *= 0.1f;
sRedTwinmold->unk_01B0.y += 3150.0f;
sRedTwinmold->unk_01B0.z *= 0.1f;
D_809E0424->unk_017C.y *= 0.1f;
D_809E0424->unk_017C.y += 3150.0f;
D_809E0424->unk_0188.y *= 0.1f;
D_809E0424->unk_0188.y += 3150.0f;
sRedTwinmold->unk_017C.y *= 0.1f;
sRedTwinmold->unk_017C.y += 3150.0f;
sRedTwinmold->unk_0188.y *= 0.1f;
sRedTwinmold->unk_0188.y += 3150.0f;
D_809E0428->actor.world.pos.x *= 0.1f;
D_809E0428->actor.world.pos.y *= 0.1f;
D_809E0428->actor.world.pos.y += 3150.0f;
D_809E0428->actor.world.pos.z *= 0.1f;
sBlueTwinmold->actor.world.pos.x *= 0.1f;
sBlueTwinmold->actor.world.pos.y *= 0.1f;
sBlueTwinmold->actor.world.pos.y += 3150.0f;
sBlueTwinmold->actor.world.pos.z *= 0.1f;
D_809E0428->unk_0170.x *= 0.1f;
D_809E0428->unk_0170.y *= 0.1f;
D_809E0428->unk_0170.y += 3150.0f;
D_809E0428->unk_0170.z *= 0.1f;
sBlueTwinmold->unk_0170.x *= 0.1f;
sBlueTwinmold->unk_0170.y *= 0.1f;
sBlueTwinmold->unk_0170.y += 3150.0f;
sBlueTwinmold->unk_0170.z *= 0.1f;
for (i = 0; i < ARRAY_COUNT(this->unk_01BC); i++) {
D_809E0428->unk_01BC[i].x *= 0.1f;
D_809E0428->unk_01BC[i].y *= 0.1f;
D_809E0428->unk_01BC[i].y += 3150.0f;
D_809E0428->unk_01BC[i].z *= 0.1f;
sBlueTwinmold->unk_01BC[i].x *= 0.1f;
sBlueTwinmold->unk_01BC[i].y *= 0.1f;
sBlueTwinmold->unk_01BC[i].y += 3150.0f;
sBlueTwinmold->unk_01BC[i].z *= 0.1f;
}
D_809E0428->unk_01B0.x *= 0.1f;
D_809E0428->unk_01B0.y *= 0.1f;
D_809E0428->unk_01B0.y += 3150.0f;
D_809E0428->unk_01B0.z *= 0.1f;
sBlueTwinmold->unk_01B0.x *= 0.1f;
sBlueTwinmold->unk_01B0.y *= 0.1f;
sBlueTwinmold->unk_01B0.y += 3150.0f;
sBlueTwinmold->unk_01B0.z *= 0.1f;
D_809E0428->unk_017C.y *= 0.1f;
D_809E0428->unk_017C.y += 3150.0f;
D_809E0428->unk_0188.y *= 0.1f;
D_809E0428->unk_0188.y += 3150.0f;
sBlueTwinmold->unk_017C.y *= 0.1f;
sBlueTwinmold->unk_017C.y += 3150.0f;
sBlueTwinmold->unk_0188.y *= 0.1f;
sBlueTwinmold->unk_0188.y += 3150.0f;
}
player->actor.home.pos = player->actor.world.pos;
@ -1927,15 +1929,15 @@ void func_809DD934(Boss02* this, PlayState* play) {
temp_a0_5 = temp_a0_5->next;
}
{
f32 tmp = D_809E0422 ? 3150.0f : 0.0f;
f32 tmp = sIsInGiantMode ? 3150.0f : 0.0f;
Actor_Spawn(&play->actorCtx, play, ACTOR_BG_INIBS_MOVEBG, 0, tmp, 0, 0, 0, 0, D_809E0422);
Actor_Spawn(&play->actorCtx, play, ACTOR_BG_INIBS_MOVEBG, 0, tmp, 0, 0, 0, 0, sIsInGiantMode);
}
temp_a0_5 = play->actorCtx.actorLists[ACTORCAT_BOSS].first;
while (temp_a0_5 != NULL) {
if ((temp_a0_5->id == ACTOR_EN_TANRON5) || (temp_a0_5->id == ACTOR_ITEM_B_HEART)) {
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
temp_a0_5->world.pos.y -= 3150.0f;
temp_a0_5->world.pos.y *= 10.0f;
@ -2043,9 +2045,9 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
this->unk_1D1C++;
if (this->unk_0194 == 0) {
sp68 = D_809E0424;
sp68 = sRedTwinmold;
} else {
sp68 = D_809E0428;
sp68 = sBlueTwinmold;
}
switch (this->unk_1D20) {
@ -2090,12 +2092,12 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
if (this->unk_1D1C == 45) {
func_800B7298(play, &this->actor, 21);
D_809E0430 = KREG(91) + 43;
sMusicStartTimer = KREG(91) + 43;
}
if (this->unk_1D1C == 85) {
D_809E0424->unk_0144 = 11;
D_809E0424->unk_014C = 0;
sRedTwinmold->unk_0144 = 11;
sRedTwinmold->unk_014C = 0;
}
if (this->unk_1D1C == 92) {
@ -2128,8 +2130,8 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
Math_ApproachF(&this->unk_1D30.z, this->unk_1D48.z, 0.1f, 3000.0f);
if (this->unk_1D1C == 100) {
D_809E0428->unk_0144 = 11;
D_809E0428->unk_014C = 0;
sBlueTwinmold->unk_0144 = 11;
sBlueTwinmold->unk_014C = 0;
this->unk_0194 = 1;
}
@ -2145,8 +2147,8 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
func_800B7298(play, &this->actor, 6);
this->actor.flags |= ACTOR_FLAG_1;
this->unk_1D20 = 0;
D_809E0424->unk_0144 = D_809E0428->unk_0144 = 3;
D_809E0424->unk_0146[0] = D_809E0428->unk_0146[0] = 60;
sRedTwinmold->unk_0144 = sBlueTwinmold->unk_0144 = 3;
sRedTwinmold->unk_0146[0] = sBlueTwinmold->unk_0146[0] = 60;
gSaveContext.eventInf[5] |= 0x20;
}
break;
@ -2176,7 +2178,7 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
this->unk_1D24.x = player->actor.world.pos.x;
this->unk_1D24.y = player->actor.world.pos.y + 100.0f;
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
if (this->unk_1D24.y < 100.0f) {
this->unk_1D24.y = 100.0f;
}
@ -2207,26 +2209,26 @@ void func_809DEAC4(Boss02* this, PlayState* play) {
this->unk_1D20 = 0;
this->actor.flags |= ACTOR_FLAG_1;
sp68->unk_0144 = 10;
if ((D_809E0424->unk_0144 >= 10) && (D_809E0428->unk_0144 >= 10)) {
if ((sRedTwinmold->unk_0144 >= 10) && (sBlueTwinmold->unk_0144 >= 10)) {
f32 phi_f0;
this->unk_1D7E = 0;
if (D_809E0422 == 0) {
if (!sIsInGiantMode) {
Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, 0.0f, 30.0f, -150.0f, 0, 1, 0, 0);
phi_f0 = 60.0f;
} else {
Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_B_HEART, 0.0f, 3153.0f, -15.0f, 0, 1, 0, 35);
phi_f0 = 3155.0f;
}
D_809E0434 = (DoorWarp1*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1,
0.0f, phi_f0, 0.0f, 0, 0, 0, 1);
sBlueWarp = (DoorWarp1*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_DOOR_WARP1,
0.0f, phi_f0, 0.0f, 0, 0, 0, 1);
if (D_809E0422 == 0) {
D_809E0434->unk_203 = 0;
D_809E0434->unk_204 = 1.0f;
if (!sIsInGiantMode) {
sBlueWarp->unk_203 = 0;
sBlueWarp->unk_204 = 1.0f;
} else {
D_809E0434->unk_203 = 1;
D_809E0434->unk_204 = 0.1f;
sBlueWarp->unk_203 = 1;
sBlueWarp->unk_204 = 0.1f;
}
}
}

View File

@ -30,6 +30,13 @@ typedef enum {
/* 4 */ TWINMOLD_EFFECT_FLASH, // The flashes of light that appear when the parts of Twinmold explode
} TwinmoldEffectType;
typedef enum {
/* 0 */ TWINMOLD_RED,
/* 35 */ TWINMOLD_BLUE = 35,
/* 100 */ TWINMOLD_TAIL = 100,
/* 200 */ TWINMOLD_STATIC = 200,
} TwinmoldParams;
typedef struct Boss02 {
/* 0x0000 */ Actor actor;
/* 0x0144 */ u8 unk_0144;
@ -68,7 +75,7 @@ typedef struct Boss02 {
/* 0x15D4 */ Vec3s jointTable[TWINMOLD_HEAD_LIMB_MAX];
/* 0x1622 */ Vec3s morphTable[TWINMOLD_HEAD_LIMB_MAX];
/* 0x1670 */ Boss02ActionFunc actionFunc;
/* 0x1674 */ struct Boss02* unk_1674; // points to the other's instance
/* 0x1674 */ struct Boss02* otherTwinmold; // points to the other's instance
/* 0x1678 */ s32 unk_1678;
/* 0x167C */ Vec3f unk_167C;
/* 0x1688 */ ColliderJntSph colliderSphere1;

View File

@ -9306,11 +9306,11 @@
0x809DAAA8:("func_809DAAA8",),
0x809DAB78:("func_809DAB78",),
0x809DBFB4:("func_809DBFB4",),
0x809DC218:("func_809DC218",),
0x809DC320:("Boss02_Update",),
0x809DC78C:("func_809DC78C",),
0x809DCA00:("Boss02_Draw",),
0x809DD0A8:("func_809DD0A8",),
0x809DC218:("Boss02_Tail_Update",),
0x809DC320:("Boss02_Twinmold_Update",),
0x809DC78C:("Boss02_Static_Update",),
0x809DCA00:("Boss02_Twinmold_Draw",),
0x809DD0A8:("Boss02_Static_Draw",),
0x809DD0CC:("Boss02_UpdateEffects",),
0x809DD2F8:("Boss02_DrawEffects",),
0x809DD934:("func_809DD934",),

View File

@ -10232,12 +10232,12 @@
0x809E0420:("D_809E0420","UNK_TYPE1","",0x1),
0x809E0421:("D_809E0421","UNK_TYPE1","",0x1),
0x809E0422:("D_809E0422","UNK_TYPE1","",0x1),
0x809E0424:("D_809E0424","UNK_TYPE4","",0x4),
0x809E0428:("D_809E0428","UNK_TYPE4","",0x4),
0x809E042C:("D_809E042C","UNK_TYPE4","",0x4),
0x809E0430:("D_809E0430","UNK_TYPE1","",0x1),
0x809E0434:("D_809E0434","UNK_TYPE4","",0x4),
0x809E0438:("D_809E0438","UNK_TYPE1","",0x1),
0x809E0424:("sRedTwinmold","UNK_TYPE4","",0x4),
0x809E0428:("sBlueTwinmold","UNK_TYPE4","",0x4),
0x809E042C:("sTwinmoldStatic","UNK_TYPE4","",0x4),
0x809E0430:("sMusicStartTimer","UNK_TYPE1","",0x1),
0x809E0434:("sBlueWarp","UNK_TYPE4","",0x4),
0x809E0438:("sEffects","UNK_TYPE1","",0x1),
0x809E8EA0:("D_809E8EA0","UNK_TYPE4","",0x4),
0x809E8EAC:("Boss_03_InitVars","UNK_TYPE1","",0x1),
0x809E8ECC:("D_809E8ECC","UNK_TYPE1","",0x1),