summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2026-01-02 02:19:56 +0100
committerrobojumper <robojumper@gmail.com>2026-01-28 19:14:18 +0100
commitf8842f94f9c4b715f62722661f2718e9e9d9cd13 (patch)
treed678063180f9bb0aea68641b0f59198cae5de9bb
parent5f8b0b881e5be69dc930d9074d04f39403f83661 (diff)
More documentation
-rw-r--r--config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt2
-rw-r--r--include/d/a/b/d_a_b_lastboss.h30
-rw-r--r--src/REL/d/a/b/d_a_b_lastboss.cpp100
3 files changed, 66 insertions, 66 deletions
diff --git a/config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt b/config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt
index 0a839942..5b01a3a5 100644
--- a/config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt
+++ b/config/SOUE01/rels/d_a_b_lastbossNP/symbols.txt
@@ -90,7 +90,7 @@ updateSkirtTransform__14dAcBlastboss_cFl = .text:0x00008600; // type:function si
updateHairTransform__14dAcBlastboss_cFl = .text:0x00008E60; // type:function size:0x5B4
checkForLinkSwordBySwordHit__14dAcBlastboss_cFv = .text:0x00009420; // type:function size:0x148
classifyAttackDirection__14dAcBlastboss_cFl = .text:0x00009570; // type:function size:0x9C
-executeDemo__14dAcBlastboss_cFv = .text:0x00009610; // type:function size:0xAF4
+executeLightningStrike__14dAcBlastboss_cFv = .text:0x00009610; // type:function size:0xAF4
setLightningTimerMaybe__14dAcBlastboss_cFl = .text:0x0000A110; // type:function size:0xBC
vt_0x88__11dAcEnBase_cFi = .text:0x0000A1D0; // type:function size:0x8
vt_0x84__11dAcEnBase_cFv = .text:0x0000A1E0; // type:function size:0x4
diff --git a/include/d/a/b/d_a_b_lastboss.h b/include/d/a/b/d_a_b_lastboss.h
index 2a82df80..057ba894 100644
--- a/include/d/a/b/d_a_b_lastboss.h
+++ b/include/d/a/b/d_a_b_lastboss.h
@@ -255,21 +255,21 @@ class dAcBlastboss_c : public dAcEnBase_c {
GUARD_BT, // not sure
};
- enum DemoState_e {
- DEMO_STATE_NONE = 0,
+ enum LightningState_e {
+ LIGHTNING_STRIKE_STATE_NONE = 0,
- DEMO_STATE_1 = 1,
- DEMO_STATE_2,
- DEMO_STATE_3,
+ LIGHTNING_STRIKE_START_DEMO = 1,
+ LIGHTNING_STRIKE_DEMO,
+ LIGHTNING_STRIKE_WAIT,
- DEMO_STATE_100 = 100,
- DEMO_STATE_101,
+ LIGHTNING_STRIKE_TRIGGER_END = 100,
+ LIGHTNING_STRIKE_ENDING,
- DEMO_STATE_200 = 200,
- DEMO_STATE_201,
- DEMO_STATE_2XX_LAST = 299,
+ LIGHTNING_STRIKE_TRIGGER_START = 200,
+ LIGHTNING_STRIKE_START,
+ LIGHTNING_STRIKE_START_LAST = 299,
- DEMO_STATE_1000 = 1000,
+ LIGHTNING_STRIKE_FINISH = 1000,
};
public:
@@ -312,7 +312,7 @@ private:
void updateHairTransform(s32 level);
bool checkForLinkSwordBySwordHit();
u8 classifyAttackDirection(s32 attackDir);
- void executeDemo();
+ void executeLightningStrike();
void setLightningTimerMaybe(s32);
/* 0x0378 */ d3d::AnmMdlWrapper mMdl;
@@ -355,11 +355,11 @@ private:
/* 0x1146 */ bool mIsSwordEmpowered;
/* 0x1147 */ u8 field_0x1147;
/* 0x1148 */ u8 field_0x1148;
- /* 0x1149 */ s8 field_0x1149;
+ /* 0x1149 */ s8 mIsPhaseTwo;
/* 0x114A */ u8 field_0x114A;
/* 0x114B */ u8 field_0x114B;
/* 0x114C */ u8 field_0x114C;
- /* 0x114D */ u8 field_0x114D;
+ /* 0x114D */ bool mInBossRush;
/* 0x114E */ u8 field_0x114E;
/* 0x114F */ u8 field_0x114F;
/* 0x1150 */ u8 field_0x1150;
@@ -438,7 +438,7 @@ private:
/* 0x2C68 */ dEmitter_c mEmitter6;
/* 0x2C9C */ dEmitter_c mEmitter7;
/* 0x2CD0 */ LIGHT_INFLUENCE mLightInfo;
- /* 0x2CEC */ s16 mDemoState;
+ /* 0x2CEC */ s16 mLightingStrikeState;
/* 0x2CEE */ s16 field_0x2CEE;
/* 0x2CF0 */ s16 field_0x2CF0;
/* 0x2CF4 */ f32 field_0x2CF4;
diff --git a/src/REL/d/a/b/d_a_b_lastboss.cpp b/src/REL/d/a/b/d_a_b_lastboss.cpp
index 2ac38087..4cb77297 100644
--- a/src/REL/d/a/b/d_a_b_lastboss.cpp
+++ b/src/REL/d/a/b/d_a_b_lastboss.cpp
@@ -172,7 +172,7 @@ bool dAcBlastboss_c::createHeap() {
int dAcBlastboss_c::create() {
field_0x1130 = getFromParams(0, 0xFF);
if (MinigameManager::GetInstance()->checkInBossRush()) {
- field_0x114D = 1;
+ mInBossRush = true;
}
CREATE_ALLOCATOR(dAcBlastboss_c);
@@ -235,8 +235,8 @@ int dAcBlastboss_c::create() {
dLightEnv_c::GetPInstance()->plight_set(&mLightInfo);
setLightningTimerMaybe(100);
- if (!field_0x114D) {
- mDemoState = DEMO_STATE_200;
+ if (!mInBossRush) {
+ mLightingStrikeState = LIGHTNING_STRIKE_TRIGGER_START;
setActorProperty(AC_PROP_0x4);
}
@@ -252,7 +252,7 @@ int dAcBlastboss_c::doDelete() {
}
int dAcBlastboss_c::actorExecute() {
- if (field_0x114D && mpSwordBattleGame == nullptr) {
+ if (mInBossRush && mpSwordBattleGame == nullptr) {
mpSwordBattleGame = static_cast<dTgSwordBattleGame_c *>(
fManager_c::searchBaseByProfName(fProfile::TAG_SWORD_BATTLE_GAME, mpSwordBattleGame)
);
@@ -638,8 +638,8 @@ int dAcBlastboss_c::actorExecute() {
}
}
- if (field_0x1149 != 0) {
- if (!link->checkSwordAndMoreStates(0x400000) && (field_0x1149 < 0 || !mIsSwordEmpowered)) {
+ if (mIsPhaseTwo != 0) {
+ if (!link->checkSwordAndMoreStates(0x400000) && (mIsPhaseTwo < 0 || !mIsSwordEmpowered)) {
if (mLightningTimerMaybe == 0) {
if (dLightEnv_c::GetPInstance()->getField_0x38DC() == 0) {
dLightEnv_c::GetPInstance()->setField_0x38DC(1);
@@ -749,7 +749,7 @@ int dAcBlastboss_c::actorExecute() {
);
}
}
- executeDemo();
+ executeLightningStrike();
SceneflagManager *mgr = SceneflagManager::sInstance;
if (mgr != nullptr) {
@@ -760,7 +760,7 @@ int dAcBlastboss_c::actorExecute() {
}
}
- if (field_0x1149 != 0) {
+ if (mIsPhaseTwo != 0) {
// "Target lock: Demise" (Phase 2)
mTargetFiTextID = 0x38;
} else {
@@ -945,7 +945,7 @@ void dAcBlastboss_c::initializeState_Fight() {
mAnmRate = 1.0f;
mSubState = SUB_STATE_0;
field_0x118A = 0;
- if (field_0x1149 == 0) {
+ if (mIsPhaseTwo == 0) {
mTimers[TIMER_2] = cM::rndF(50.0f) + 50.0f;
} else {
mTimers[TIMER_2] = cM::rndF(20.0f) + 10.0f;
@@ -962,7 +962,7 @@ void dAcBlastboss_c::executeState_Fight() {
bool b = false;
s16 diff = mAngle.y - mYAngleToLink;
- if (mDemoState >= DEMO_STATE_200 && mDemoState <= DEMO_STATE_2XX_LAST) {
+ if (mLightingStrikeState >= LIGHTNING_STRIKE_TRIGGER_START && mLightingStrikeState <= LIGHTNING_STRIKE_START_LAST) {
puVar2 = -100.0f;
mTimers[TIMER_2] = cM::rndF(50.0f) + 100.0f;
}
@@ -1027,7 +1027,7 @@ void dAcBlastboss_c::executeState_Fight() {
}
if (mXZDistanceToLink < puVar2 + 400.0f) {
mSubState = SUB_STATE_0;
- if (field_0x1149 == 0) {
+ if (mIsPhaseTwo == 0) {
mTimers[TIMER_2] = cM::rndF(50.0f) + 50.0f;
} else {
mTimers[TIMER_2] = cM::rndF(20.0f) + 10.0f;
@@ -1081,7 +1081,7 @@ void dAcBlastboss_c::executeState_Fight() {
field_0x1172 = diff / 2;
// TODO what is this constant
sLib::addCalcScaledDiff(&mMdlCallback.field_0x30, diff * (1.0f / 409.59937f), 0.5f, 1.0f);
- if (mDemoState == DEMO_STATE_NONE && !link->isUsingShield() && link->isUsingSword()) {
+ if (mLightingStrikeState == LIGHTNING_STRIKE_STATE_NONE && !link->isUsingShield() && link->isUsingSword()) {
mMtx_c rotMtx;
rotMtx.YrotS(-mYAngleToLink);
mVec3_c v = mVec3_c(link->getSwordPos() - mPosition);
@@ -1193,11 +1193,11 @@ void dAcBlastboss_c::executeState_Attack() {
}
mSpeed = speed;
- if (!field_0x1149 && link->checkCurrentAction(/* BACKFLIP */ 0x62)) {
+ if (!mIsPhaseTwo && link->checkCurrentAction(/* BACKFLIP */ 0x62)) {
field_0x113E = 20;
}
if (field_0x113E != 0) {
- if (field_0x1149) {
+ if (mIsPhaseTwo) {
mSubState = SUB_STATE_0;
mStateMgr.changeState(StateID_CounterAttack);
return;
@@ -1679,7 +1679,7 @@ void dAcBlastboss_c::executeState_Damage() {
mTimers[TIMER_2] = 0;
}
field_0x113E = 0;
- if (field_0x1149 == 0 && !link->isAttackingSpin()) {
+ if (mIsPhaseTwo == 0 && !link->isAttackingSpin()) {
mCc1.SetTgFlag_0xA(0x1FF);
}
checkForCounter();
@@ -1805,7 +1805,7 @@ void dAcBlastboss_c::executeState_Down() {
if (mMdl.getAnm().isStop()) {
setAnm("DownLoop", 0.0f);
mSubState = SUB_STATE_3;
- if (field_0x113B >= 3 || mDemoState != DEMO_STATE_NONE) {
+ if (field_0x113B >= 3 || mLightingStrikeState != LIGHTNING_STRIKE_STATE_NONE) {
mTimers[TIMER_0] = 70;
} else if (field_0x113B == 2) {
mTimers[TIMER_0] = 40;
@@ -1829,13 +1829,13 @@ void dAcBlastboss_c::executeState_Down() {
if (checkInteractionFlags(INTERACT_0x1000)) {
setAnm("End", 3.0f);
mSubState = SUB_STATE_50;
- mDemoState = DEMO_STATE_100;
+ mLightingStrikeState = LIGHTNING_STRIKE_TRIGGER_END;
startSound(SE_BLasBos_LastHit);
field_0x114F = 1;
resetInteractionFlags(INTERACT_0x1000);
resetInteractionFlags(INTERACT_0x1);
} else if (mTimers[TIMER_0] == 0) {
- if (cM::rnd() < 0.5f || mDemoState != DEMO_STATE_NONE) {
+ if (cM::rnd() < 0.5f || mLightingStrikeState != LIGHTNING_STRIKE_STATE_NONE) {
setAnm("DownEscapeR", 10.0f);
} else {
setAnm("DownEscapeL", 10.0f);
@@ -1844,8 +1844,8 @@ void dAcBlastboss_c::executeState_Down() {
mSubState = SUB_STATE_5;
field_0x11C8 = 0.0f;
resetInteractionFlags(INTERACT_0x1);
- if (mDemoState != DEMO_STATE_NONE) {
- mDemoState = DEMO_STATE_3;
+ if (mLightingStrikeState != LIGHTNING_STRIKE_STATE_NONE) {
+ mLightingStrikeState = LIGHTNING_STRIKE_WAIT;
field_0x2D00 = 0.0f;
dLightEnv_c::GetPInstance()->setField_0x38DC(1);
}
@@ -1887,7 +1887,7 @@ void dAcBlastboss_c::executeState_Down() {
mPosition.z += v.z;
if (mMdl.getAnm().isStop()) {
- if (mDemoState != DEMO_STATE_NONE) {
+ if (mLightingStrikeState != LIGHTNING_STRIKE_STATE_NONE) {
setAnm("ThunderDemo", 10.0f);
mSubState = SUB_STATE_20;
} else {
@@ -1923,7 +1923,7 @@ void dAcBlastboss_c::executeState_Down() {
if (mMdl.getAnm().isStop()) {
mStateMgr.changeState(StateID_Fight);
mTimers[TIMER_4] = 15;
- mDemoState = DEMO_STATE_1000;
+ mLightingStrikeState = LIGHTNING_STRIKE_FINISH;
}
break;
}
@@ -2219,11 +2219,11 @@ bool dAcBlastboss_c::checkDamage() {
dSndBgmMgr_c::GetInstance()->fn_80372D70(3);
}
- if (field_0x1149 >= 0) {
+ if (mIsPhaseTwo >= 0) {
if (field_0x1152 == 30) {
dStageMgr_c::GetInstance()->fn_80199B60(4);
mStateMgr.changeState(StateID_Down);
- mDemoState = DEMO_STATE_1;
+ mLightingStrikeState = LIGHTNING_STRIKE_START_DEMO;
startSound(SE_BLasBos_DownHit);
break;
}
@@ -2242,7 +2242,7 @@ bool dAcBlastboss_c::checkDamage() {
break;
}
- if (field_0x113E != 0 && field_0x1149 != 0) {
+ if (field_0x113E != 0 && mIsPhaseTwo != 0) {
field_0x1188 = 10;
break;
}
@@ -2285,12 +2285,12 @@ bool dAcBlastboss_c::checkDamage() {
mChanceAttackCounter++;
if (mChanceAttackCounter >= 5 && mChanceCounter >= 3) {
- if (field_0x1149 >= 0) {
+ if (mIsPhaseTwo >= 0) {
mChanceAttackCounter = 0;
field_0x1152 = 30;
dStageMgr_c::GetInstance()->fn_80199B60(4);
mStateMgr.changeState(StateID_Down);
- mDemoState = DEMO_STATE_1;
+ mLightingStrikeState = LIGHTNING_STRIKE_START_DEMO;
startSound(SE_BLasBos_DownHit);
break;
}
@@ -2396,7 +2396,7 @@ bool dAcBlastboss_c::checkForCloseRangeAttack() {
bool ret = false;
if (mXZDistanceToLink < 500.0f) {
- if (field_0x1149 != 0) {
+ if (mIsPhaseTwo != 0) {
if (mTimers[TIMER_2] == 0) {
mStateMgr.changeState(StateID_Attack);
ret = true;
@@ -2435,13 +2435,13 @@ bool dAcBlastboss_c::checkForRangeAttack() {
bool ret = false;
- if (field_0x1149 != 0 && !link->isRecovering() && mStunCounter != 0 && link->getSwordPos().y > 270.0f) {
+ if (mIsPhaseTwo != 0 && !link->isRecovering() && mStunCounter != 0 && link->getSwordPos().y > 270.0f) {
field_0x1162++;
} else {
field_0x1162 = 0;
}
- if (field_0x1149 != 0) {
+ if (mIsPhaseTwo != 0) {
if (field_0x1162 >= 20) {
mStateMgr.changeState(StateID_DashAttack);
return true;
@@ -2515,7 +2515,7 @@ bool dAcBlastboss_c::checkForCounter() {
mStateMgr.changeState(StateID_Guard);
mSubState = SUB_STATE_10;
} else {
- if ((field_0x1149 > 0 || mXZDistanceToLink < 200.0f) && mNumConsecutiveOppositeDirectionAttacks < 1) {
+ if ((mIsPhaseTwo > 0 || mXZDistanceToLink < 200.0f) && mNumConsecutiveOppositeDirectionAttacks < 1) {
mNumConsecutiveOppositeDirectionAttacks = 1;
}
@@ -2585,7 +2585,7 @@ void dAcBlastboss_c::updateMainNodeTransforms() {
sLib::addCalcAngle(mMdlCallback.field_0x0C.ref(), field_0x1170, 8, 0x200);
} else {
mMdlCallback.field_0x06 = mMdlCallback.field_0x0A = mMdlCallback.field_0x0C = 0;
- if (mDemoState == DEMO_STATE_101) {
+ if (mLightingStrikeState == LIGHTNING_STRIKE_ENDING) {
mMdlCallback.field_0x0A = 2000;
}
}
@@ -2654,7 +2654,7 @@ void dAcBlastboss_c::updateSkirtHairTransforms() {
};
static const s16 sAngs[] = {
- 0x2000, 0x4000, 0x6000, 0x8000, 0xA000, 0xC000, 0xE000,
+ 0x2000, 0x2000, 0x4000, 0x6000, 0x8000, 0xA000, 0xC000, 0xE000,
};
f32 f = 80.0f;
@@ -2990,7 +2990,7 @@ u8 dAcBlastboss_c::classifyAttackDirection(s32 attackDir) {
}
}
-void dAcBlastboss_c::executeDemo() {
+void dAcBlastboss_c::executeLightningStrike() {
dCamera_c *cam = dScGame_c::getCamera();
dAcPy_c *link = dAcPy_c::GetLinkM();
@@ -3004,8 +3004,8 @@ void dAcBlastboss_c::executeDemo() {
bool spawnEffect = false;
dLightEnv_c &lightEnv = dLightEnv_c::GetInstance();
- switch (mDemoState) {
- case DEMO_STATE_1: {
+ switch (mLightingStrikeState) {
+ case LIGHTNING_STRIKE_START_DEMO: {
{
// this works but I don't like it
static volatile u32 FLAGS_1 = 0x00000001;
@@ -3019,7 +3019,7 @@ void dAcBlastboss_c::executeDemo() {
field_0x2CEE = 0;
field_0x2D00 = 0.0f;
field_0x2CFC = 60.0f;
- mDemoState = DEMO_STATE_2;
+ mLightingStrikeState = LIGHTNING_STRIKE_DEMO;
// huh
field_0x2D10.x = cam->getField_0x78().x;
field_0x2D10.y = cam->getField_0x78().y;
@@ -3027,13 +3027,13 @@ void dAcBlastboss_c::executeDemo() {
field_0x2D04.x = cam->getPositionMaybe().x;
field_0x2D04.y = cam->getPositionMaybe().y;
field_0x2D04.z = cam->getPositionMaybe().z;
- field_0x1149 = -1;
+ mIsPhaseTwo = -1;
// fall-through
} else {
break;
}
}
- case DEMO_STATE_2: {
+ case LIGHTNING_STRIKE_DEMO: {
if (field_0x2CEE < 30) {
b2 = true;
}
@@ -3048,7 +3048,7 @@ void dAcBlastboss_c::executeDemo() {
}
// fall-through
}
- case DEMO_STATE_3: {
+ case LIGHTNING_STRIKE_WAIT: {
b1 = true;
if (field_0x2CEE > 205) {
sLib::addCalcScaledDiff(&field_0x2D00, 1.0f, 1.0f, 0.1f);
@@ -3084,7 +3084,7 @@ void dAcBlastboss_c::executeDemo() {
}
break;
}
- case DEMO_STATE_100: {
+ case LIGHTNING_STRIKE_TRIGGER_END: {
{
// this works but I don't like it
static volatile u32 FLAGS_1 = 0x00000001;
@@ -3098,7 +3098,7 @@ void dAcBlastboss_c::executeDemo() {
field_0x2CEE = 0;
field_0x2D00 = 0.0f;
field_0x2CFC = 50.0f;
- mDemoState = DEMO_STATE_101;
+ mLightingStrikeState = LIGHTNING_STRIKE_ENDING;
link->onFlags_0x360(0x200);
if (mpSwordBattleGame != nullptr) {
mpSwordBattleGame->notifyBossDeath(false);
@@ -3110,7 +3110,7 @@ void dAcBlastboss_c::executeDemo() {
break;
}
}
- case DEMO_STATE_101: {
+ case LIGHTNING_STRIKE_ENDING: {
b1 = true;
if (field_0x2CEE < 30) {
b2 = true;
@@ -3146,7 +3146,7 @@ void dAcBlastboss_c::executeDemo() {
}
if (field_0x2CEE == 270 && mpSwordBattleGame != nullptr) {
- mDemoState = DEMO_STATE_1000;
+ mLightingStrikeState = LIGHTNING_STRIKE_FINISH;
} else {
lightEnv.setField_0x5D48(field_0x11C4);
if (field_0x2CEE == 360) {
@@ -3155,7 +3155,7 @@ void dAcBlastboss_c::executeDemo() {
}
break;
}
- case DEMO_STATE_200: {
+ case LIGHTNING_STRIKE_TRIGGER_START: {
{
// this works but I don't like it
static volatile u32 FLAGS_1 = 0x00000001;
@@ -3169,7 +3169,7 @@ void dAcBlastboss_c::executeDemo() {
field_0x2CEE = 0;
field_0x2D00 = 0.0f;
field_0x2CFC = 60.0f;
- mDemoState = DEMO_STATE_201;
+ mLightingStrikeState = LIGHTNING_STRIKE_START;
field_0x2D10.set(0.0f, 200.0f, -587.0f);
field_0x2D04.set(0.0f, 197.0f, -207.0f);
dAcPy_c::GetLinkM()->vt_0x2AC();
@@ -3179,7 +3179,7 @@ void dAcBlastboss_c::executeDemo() {
break;
}
}
- case DEMO_STATE_201: {
+ case LIGHTNING_STRIKE_START: {
b1 = true;
sLib::addCalcScaledDiff(&field_0x2D00, 1.0f, 1.0f, 0.05f);
cLib::addCalcPos2(&field_0x2D10, mVec3_c(-2.6f, 118.0f, 298.0f), 0.1f, field_0x2D00 * 80.0f);
@@ -3200,15 +3200,15 @@ void dAcBlastboss_c::executeDemo() {
if (field_0x2CEE >= 140) {
EventManager::finishEvent(this, nullptr);
dScGame_c::getCamera()->fn_8019EA70(true);
- mDemoState = DEMO_STATE_NONE;
+ mLightingStrikeState = LIGHTNING_STRIKE_STATE_NONE;
unsetActorProperty(AC_PROP_0x4);
}
break;
}
- case DEMO_STATE_1000: {
+ case LIGHTNING_STRIKE_FINISH: {
EventManager::finishEvent(this, nullptr);
dScGame_c::getCamera()->fn_8019EA70(true);
- mDemoState = DEMO_STATE_NONE;
+ mLightingStrikeState = LIGHTNING_STRIKE_STATE_NONE;
break;
}
}