This commit is contained in:
shy
2025-07-29 01:10:45 -04:00
parent 1133717c81
commit 022e990b32
8 changed files with 241 additions and 241 deletions

View File

@@ -2715,7 +2715,7 @@ func_86B0B810 = 0x86B0B810; // type:func
func_86B0B8DC = 0x86B0B8DC; // type:func
func_86B0BA18 = 0x86B0BA18; // type:func
func_86C00020 = 0x86C00020; // type:func
func_86C00090 = 0x86C00090; // type:func
miniDiglettGoldCheck = 0x86C00090; // type:func
func_86C00110 = 0x86C00110; // type:func
func_86C00368 = 0x86C00368; // type:func
func_86C003AC = 0x86C003AC; // type:func
@@ -2767,13 +2767,13 @@ func_86C035E0 = 0x86C035E0; // type:func
func_86C03608 = 0x86C03608; // type:func
func_86C03AB8 = 0x86C03AB8; // type:func
miniEkansDrawCountdown = 0x86C03BE8; // type:func
fixSkansMinigameHUD = 0x86C03C64; // type:func
miniEkansDrawHub = 0x86C03C64; // type:func
func_86C03E4C = 0x86C03E4C; // type:func
func_86C03E8C = 0x86C03E8C; // type:func
func_86C03ED4 = 0x86C03ED4; // type:func
func_86C040B4 = 0x86C040B4; // type:func
initEkansMinigameAssets = 0x86C04170; // type:func
showTutorialScreenEkansMinigame = 0x86C041E8; // type:func
miniEkansTutoScreenControls = 0x86C041E8; // type:func
ekansMinigameUpdate = 0x86C043C4; // type:func
func_86C044B4 = 0x86C044B4; // type:func
ekansMinigameLoad = 0x86C046B0; // type:func

View File

@@ -1580,8 +1580,8 @@ static Color_RGB8 playerColors[] = {
{ 0, 0, 0 }, { 0x11, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
};
s32 func_86C00020(MiniActor* arg0) {
f32 tmp = arg0->unk_274;
s32 func_86C00020(MiniActor* ekans) {
f32 tmp = ekans->unk_274;
s32 var_v1 = 0;
if (tmp > 58.0f) {
@@ -1595,13 +1595,13 @@ s32 func_86C00020(MiniActor* arg0) {
return var_v1;
}
void func_86C00090(s16 nDiglett, s32* arg1, s32* arg2) {
void miniDiglettGoldCheck(s16 nDiglett, s32* isGold, s32* arg2) {
s16 ActiveDiglettId = activeDigletts[nDiglett].diglettId;
if (miniDigletts[ActiveDiglettId].unk_29C != 0) {
*arg1 = 1;
if ( miniDigletts[ActiveDiglettId].diglettIsGold ) {
*isGold = 1;
} else {
*arg1 = 0;
*isGold = 0;
}
*arg2 = D_86C0E0AC[ActiveDiglettId];
@@ -1609,13 +1609,13 @@ void func_86C00090(s16 nDiglett, s32* arg1, s32* arg2) {
void func_86C00110(s16 arg0, s16 arg1) {
s32 var_s0;
s32 sp30;
s32 isGold;
s32 sp2C;
UNUSED s32 pad[2];
var_s0 = 0;
sp2C = 0;
sp30 = 0;
isGold = 0;
switch (arg0) {
case 1:
@@ -1628,37 +1628,37 @@ void func_86C00110(s16 arg0, s16 arg1) {
case 3:
var_s0 = 0xA0003;
sp30 = arg1;
isGold = arg1;
sp2C = func_86C00020(&miniEkanses[arg1]);
break;
case 4:
var_s0 = 0xA0007;
sp30 = arg1;
isGold = arg1;
break;
case 5: // arg1 = diglett
func_86C00090(arg1, &sp30, &sp2C);
case 5:
miniDiglettGoldCheck(arg1, &isGold, &sp2C);
var_s0 = 0xA0011;
break;
case 6:
func_86C00090(arg1, &sp30, &sp2C);
miniDiglettGoldCheck(arg1, &isGold, &sp2C);
var_s0 = 0xA0012;
break;
case 7:
func_86C00090(arg1, &sp30, &sp2C);
miniDiglettGoldCheck(arg1, &isGold, &sp2C);
var_s0 = 0xA0008;
break;
case 8: // arg1 = playerId
func_86C00090(arg1, &sp30, &sp2C);
case 8:
miniDiglettGoldCheck(arg1, &isGold, &sp2C);
var_s0 = 0xA000B;
break;
case 9:
func_86C00090(arg1, &sp30, &sp2C);
miniDiglettGoldCheck(arg1, &isGold, &sp2C);
var_s0 = 0xA000A;
break;
@@ -1711,7 +1711,7 @@ void func_86C00110(s16 arg0, s16 arg1) {
if (var_s0 != 0) {
D_87903DBC++;
func_8004D9B0(var_s0, sp30, sp2C);
func_8004D9B0(var_s0, isGold, sp2C);
}
}
@@ -1750,8 +1750,8 @@ void initEkans(MiniActor* ekans, s16 player) {
ekans->unk_28C = 140.0f;
ekans->unk_21C = -0x8000;
ekans->unk_25C = 0x64;
ekans->health = ekans->unk_25C;
ekans->miniMaxHealth = 0x64;
ekans->miniHealth = ekans->miniMaxHealth;
func_8001BD04(&ekans->unk_000, 0);
@@ -1852,7 +1852,7 @@ void humanEkansControls(MiniActor* ekans) {
stickMagnitude = miniControllerPtr->stickMag;
stickY = miniControllerPtr->stickY;
if (ekans->unk_23E == 0) {
if (ekans->mainState == 0) {
if (BTN_IS_DOWN(miniControllerPtr, BTN_DLEFT)) {
direction = 1;
} else if (BTN_IS_DOWN(miniControllerPtr, BTN_DRIGHT)) {
@@ -1888,7 +1888,7 @@ void humanEkansControls(MiniActor* ekans) {
stickMagnitude = 0.0f;
}
if (ekans->unk_23E == 0) {
if (ekans->mainState == 0) {
var_v0 = 0;
var_ft4 = 0.0f;
temp_fv1 = ekans->unk_280 - stickMagnitude;
@@ -1933,7 +1933,7 @@ void humanEkansControls(MiniActor* ekans) {
ekans->unk_280 = 0.0f;
ekans->globalPos.x = 0.0f;
ekans->globalPos.z = 0.0f;
ekans->unk_23E = 1;
ekans->mainState = 1;
}
ekans->unk_284 = ekans->unk_280;
@@ -1947,7 +1947,7 @@ void func_86C00AA4(void) {
for (i = 0; i < 4; i++) {
if (ekans->isComp != false) {
ekans->unk_242 = 1;
ekans->compState = 1;
}
ekans++;
}
@@ -1958,9 +1958,9 @@ s32 func_86C00B0C(MiniActor* ekans) {
s32 idx = ekans->playerId;
s32 i;
if ((miniDigletts[activeDigletts[idx].diglettId].unk_29C == 0) && (ekans->unk_2AE == 1)) {
if ((miniDigletts[activeDigletts[idx].diglettId].diglettIsGold == 0) && (ekans->unk_2AE == 1)) {
for (i = 0; i < 3; i++) {
if ((activeDigletts[i].state == 6) && (miniDigletts[activeDigletts[i].diglettId].unk_29C != 0)) {
if ((activeDigletts[i].state == 6) && (miniDigletts[activeDigletts[i].diglettId].diglettIsGold != 0)) {
ret = 1;
break;
}
@@ -2005,7 +2005,7 @@ s16 func_86C00C40(MiniActor* arg0) {
}
for (i = 0; i < 3; i++) {
if ((activeDigletts[i].state == 6) && (miniDigletts[activeDigletts[i].diglettId].unk_29C != 0)) {
if ((activeDigletts[i].state == 6) && (miniDigletts[activeDigletts[i].diglettId].diglettIsGold != 0)) {
sp1E = i;
sp18 = 1;
break;
@@ -2235,31 +2235,31 @@ s16 func_86C014A0(void) {
}
void compEkansControls(MiniActor* ekans) {
switch (ekans->unk_242) {
switch (ekans->compState) {
case 1:
if (func_86C00EF8(ekans) >= 0) {
func_86C00F70(ekans);
ekans->unk_242++;
ekans->compState++;
}
break;
case 2: // comp L R
if (func_86C00B0C(ekans) != 0) {
ekans->unk_242 = 1;
ekans->compState = 1;
} else if (func_81400550(&ekans->unk_228, ekans->unk_222, ekans->unk_22E) != 0) {
ekans->unk_29E = func_86C01408();
ekans->unk_242++;
ekans->compState++;
}
break;
case 3: // comp holding back
if (func_86C00B0C(ekans) != 0) {
ekans->unk_242 = 1;
ekans->compState = 1;
} else {
ekans->unk_29E--;
if (ekans->unk_29E <= 0) {
miniEkansCompGetForce(ekans);
ekans->unk_242++;
ekans->compState++;
}
}
break;
@@ -2268,29 +2268,29 @@ void compEkansControls(MiniActor* ekans) {
if (func_81400760(&ekans->unk_274, ekans->unk_280, 8.0f) != 0) {
ekans->globalPos.z = ekans->globalPos.x = 0.0f;
ekans->unk_280 = 0;
ekans->unk_23E = 1;
ekans->unk_242++;
ekans->mainState = 1;
ekans->compState++;
}
break;
case 5: // comp launch force
if (ekans->unk_23E == 0) {
if (ekans->mainState == 0) {
ekans->unk_29E = func_86C014A0();
ekans->unk_242++;
ekans->compState++;
}
break;
case 6: // repeat
ekans->unk_29E--;
if (ekans->unk_29E <= 0) {
ekans->unk_242 = 1;
ekans->compState = 1;
}
break;
}
}
void func_86C016C8(MiniActor* ekans) {
ekans->unk_210 = 1.0f;
ekans->weight = 1.0f;
ekans->unk_1F8 = (SINS(ekans->totalRot.y) * (26.0f + ekans->unk_274)) / 10.0f;
ekans->unk_1FC = (ekans->unk_274 + 70.0f) * 0.125f;
ekans->unk_200 = (COSS(ekans->totalRot.y) * (26.0f + ekans->unk_274)) / 10.0f;
@@ -2343,7 +2343,7 @@ void checkCollitionWithDigletts(MiniActor* ekans, s32 nPlayer) {
ekans->ekansAbbleToHoop = false;
func_80015390(&ekans->unk_000, 0xA, &tempEkansHitboxPos);
if ((ekans->unk_262 != 0) && (ekans->unk_260 < 2)) {
if ( ( ekans->ekansIsMidAir ) && (ekans->midAirState < 2)) {
for (i = 0; i < 3; i++) {
if ((activeDigletts[i].unk_06 != 0) && (activeDigletts[i].gotHoop == false)) {
func_80015390(&miniDigletts[activeDigletts[i].diglettId].unk_000, 0xA, &tempDiglettHitboxPos);
@@ -2358,8 +2358,8 @@ void checkCollitionWithDigletts(MiniActor* ekans, s32 nPlayer) {
ekans->ekansAbbleToHoop = true;
ekans->playerIdBuffer = ekans->playerId;
ekans->playerId = i;
} else if (ekans->unk_260 == 0) {
ekans->unk_260 = 1;
} else if (ekans->midAirState == 0) {
ekans->midAirState = 1;
ekansFixDirToDiglett(ekans, nPlayer, i, zDist, xDist, yDist);
}
}
@@ -2401,7 +2401,7 @@ void func_86C01AF8(void) {
if (ekans->ekansAbbleToHoop) {
ekans->ekansAbbleToHoop = false;
ekans->unk_260 = 2;
ekans->midAirState = 2;
}
}
}
@@ -2416,7 +2416,7 @@ void func_86C01D2C(MiniActor* ekans, s32 nPlayer) {
MiniActor* diglett;
ActiveDiglettInfo* activeDiglett;
if (ekans->unk_260 != 2) {
if (ekans->midAirState != 2) {
return;
}
@@ -2446,23 +2446,23 @@ void func_86C01D2C(MiniActor* ekans, s32 nPlayer) {
ekans->unk_000.unk_000.unk_02 &= 0xFFDF;
if ((zDist > 15.0f) || (zDist < -15.0f)) {
ekans->unk_1D4 = 4.0f;
ekans->dist2DiglettLevelZ = 4.0f;
} else if ((zDist > 5.0f) || (zDist < -5.0f)) {
ekans->unk_1D4 = 2.0f;
ekans->dist2DiglettLevelZ = 2.0f;
} else {
ekans->unk_1D4 = 1.0f;
ekans->dist2DiglettLevelZ = 1.0f;
}
if ((xDist > 15.0f) || (xDist < -15.0f)) {
ekans->unk_1CC = 4.0f;
ekans->dist2DiglettLevelX = 4.0f;
} else if ((xDist > 5.0f) || (xDist < -5.0f)) {
ekans->unk_1CC = 2.0f;
ekans->dist2DiglettLevelX = 2.0f;
} else {
ekans->unk_1CC = 1.0f;
ekans->dist2DiglettLevelX = 1.0f;
}
ekans->unk_260 = 3;
if (diglett->unk_29C != 0) {
ekans->midAirState = 3;
if ( diglett->diglettIsGold ) {
ekans->ekansDiglettHitScore = 2;
} else {
ekans->ekansDiglettHitScore = 1;
@@ -2473,15 +2473,15 @@ void func_86C01D2C(MiniActor* ekans, s32 nPlayer) {
D_86C12040[activeDiglett->diglettId][nPlayer] = 1;
ekans->unk_296 = 1;
if (ekans->unk_260 == 0) {
if (ekans->midAirState == 0) {
ekans->unk_298 = 1;
}
}
void func_86C01FAC(MiniActor* ekans, s32 nPlayer) {
if (ekans->unk_260 == 3) {
func_81400760(&ekans->localOrigin.x, ekans->unk_1B4.x, ekans->unk_1CC);
func_81400760(&ekans->localOrigin.z, ekans->unk_1B4.z, ekans->unk_1D4);
if (ekans->midAirState == 3) {
func_81400760(&ekans->localOrigin.x, ekans->unk_1B4.x, ekans->dist2DiglettLevelX);
func_81400760(&ekans->localOrigin.z, ekans->unk_1B4.z, ekans->dist2DiglettLevelZ);
}
if (ekans->unk_298 != 0) {
@@ -2491,30 +2491,30 @@ void func_86C01FAC(MiniActor* ekans, s32 nPlayer) {
ekans->unk_296 = 0;
}
if (ekans->unk_260 < 5) {
if (ekans->midAirState < 5) {
if (ekans->globalPos.y <= -50.0f) {
ekans->globalPos.y = -50.0f;
ekans->unk_1F8 = 0.0f;
ekans->unk_200 = 0.0f;
if (ekans->unk_260 == 3) {
if (ekans->midAirState == 3) {
ekans->unk_29E = 0x1E;
ekans->unk_260 = 5;
ekans->midAirState = 5;
ekans->unk_1FC *= -0.25f;
} else {
ekans->unk_29E = 0xF;
ekans->unk_22E = 0x1000;
ekans->unk_260 = 6;
ekans->midAirState = 6;
ekans->unk_1FC *= -0.5f;
func_86C00368(4, nPlayer);
}
ekans->unk_000.unk_000.unk_02 &= ~0x20;
ekans->unk_2A2 += ekans->ekansDiglettHitScore;
ekans->ekansScore += ekans->ekansDiglettHitScore;
ekans->ekansDiglettHitScore = 0;
}
} else {
if ((ekans->globalPos.y <= -50.0f) && (ekans->unk_260 >= 5)) {
if ((ekans->globalPos.y <= -50.0f) && (ekans->midAirState >= 5)) {
ekans->globalPos.y = -50.0f;
ekans->unk_210 = 0.0f;
ekans->weight = 0.0f;
ekans->unk_1FC = 0.0f;
func_81400550(&ekans->unk_22E, 0, 0x100);
}
@@ -2529,7 +2529,7 @@ void func_86C01FAC(MiniActor* ekans, s32 nPlayer) {
ekans->unk_29E--;
if (ekans->unk_29E <= 0) {
if ((ekans->unk_260 == 5) && (ekans->isComp != 0)) {
if ((ekans->midAirState == 5) && (ekans->isComp)) {
if (ekans->playerIdBuffer == ekans->playerId) {
ekans->playerId = -1;
} else {
@@ -2541,9 +2541,9 @@ void func_86C01FAC(MiniActor* ekans, s32 nPlayer) {
ekans->unk_000.unk_01D = 0xFF;
ekans->unk_234 = 0;
ekans->unk_22E = 0;
ekans->unk_260 = 0;
ekans->unk_262 = 0;
ekans->unk_23E++;
ekans->midAirState = 0;
ekans->ekansIsMidAir = 0;
ekans->mainState++;
}
}
@@ -2571,7 +2571,7 @@ void anyEkansControls(MiniActor* ekans) {
}
void miniEkansCompStateMachine(MiniActor* ekans, s32 nPlayer) {
switch (ekans->unk_23E) {
switch (ekans->mainState) {
case 0x0: // pull back
func_86C021FC(ekans);
break;
@@ -2579,13 +2579,13 @@ void miniEkansCompStateMachine(MiniActor* ekans, s32 nPlayer) {
case 0x1: // on ekans launch
func_86C016C8(ekans);
miniChangeActorAnim(ekans, 1, -1, 0);
ekans->unk_262 = 1;
ekans->unk_260 = 0;
ekans->ekansIsMidAir = 1;
ekans->midAirState = 0;
func_86C00368(3, nPlayer);
ekans->unk_23E++;
ekans->mainState++;
break;
case 0x2:
case 0x2: // on freefall
func_86C01D2C(ekans, nPlayer);
func_86C01FAC(ekans, nPlayer);
break;
@@ -2593,7 +2593,7 @@ void miniEkansCompStateMachine(MiniActor* ekans, s32 nPlayer) {
case 0x3: // on ekans return ?
miniChangeActorAnim(ekans, 0, -1, 1);
func_86C003AC(ekans);
ekans->unk_23E++;
ekans->mainState++;
break;
case 0x4:
@@ -2602,12 +2602,12 @@ void miniEkansCompStateMachine(MiniActor* ekans, s32 nPlayer) {
ekans->unk_298 = 0;
ekans->unk_296 = 0;
ekans->unk_280 = 0.0f;
ekans->unk_23E++;
ekans->mainState++;
break;
case 0x5:
if (func_81400760(&ekans->globalPos.y, 10.0f, 4.0f) != 0) {
ekans->unk_23E = 0;
ekans->mainState = 0;
}
break;
@@ -2615,7 +2615,7 @@ void miniEkansCompStateMachine(MiniActor* ekans, s32 nPlayer) {
func_81400760(&ekans->globalPos.x, 0.0f, 4.0f);
func_81400760(&ekans->globalPos.z, 0.0f, 4.0f);
if (func_81400550(&ekans->unk_228, -0x8000, 0x400) != 0) {
ekans->unk_23E++;
ekans->mainState++;
func_8001BD04(&ekans->unk_000, 2);
}
break;
@@ -2640,7 +2640,7 @@ void miniEkansPhysics(void) {
for (i = 0; i < 4; i++) {
anyEkansControls(miniEkansPtr);
if (miniEkansPtr->unk_262 != 0) {
if (miniEkansPtr->ekansIsMidAir) {
func_879005C4(miniEkansPtr); // ekans movement
checkCollitionWithDigletts(miniEkansPtr, i);
}
@@ -2676,7 +2676,7 @@ void initDiglett(MiniActor* diglett, s32 nDiglett) {
diglett->unk_288 = diglettActorInfo[nDiglett].unk_12;
diglett->unk_28C = diglettActorInfo[nDiglett].unk_14;
diglett->health = diglett->unk_25C = 0x64;
diglett->miniHealth = diglett->miniMaxHealth = 0x64;
diglett->unk_1E4 = diglett->unk_28C * 0.5f;
func_8001BD04(&diglett->unk_000, 1);
@@ -2830,7 +2830,7 @@ void func_86C02A1C(MiniActor* diglett) {
if (sp18 != 0) {
D_86C12034 += 1;
diglett->unk_29C = 1;
diglett->diglettIsGold = true;
diglett->unk_000.unk_01C = 1;
}
}
@@ -2942,7 +2942,7 @@ void miniDiglettStateMachine(void) {
miniDiglettPtr->unk_000.unk_000.unk_01 &= ~1;
activeDigletts[i].timer = 1;
activeDigletts[i].state = 9;
miniDiglettPtr->unk_29C = 0;
miniDiglettPtr->diglettIsGold = false;
miniDiglettPtr->unk_000.unk_01C = 0;
}
break;
@@ -2991,7 +2991,7 @@ s32 func_86C030EC(void) {
s32 i;
for (i = 0; i < 4; i++, ekans++) {
if (ekans->unk_23E != 0) {
if (ekans->mainState != 0) {
ret = 0;
break;
}
@@ -3006,18 +3006,18 @@ void func_86C03128(void) {
var_s2 = -1;
for (i = 0, ekans = miniEkanses; i < 4; i++, ekans++) {
if (var_s2 < ekans->unk_2A2) {
var_s2 = ekans->unk_2A2;
if (var_s2 < ekans->ekansScore) {
var_s2 = ekans->ekansScore;
}
}
if (var_s2 != 0) {
ekans = miniEkanses;
for (i = 0; i < 4; i++, ekans++) {
if (var_s2 == ekans->unk_2A2) {
if (var_s2 == ekans->ekansScore) {
func_87802F00(i);
ekans->unk_2A8 = 1;
ekans->unk_23E = 0x64;
ekans->mainState = 0x64;
}
}
}
@@ -3244,7 +3244,7 @@ void miniEkansDrawCountdown(void) {
func_8001F1E8(0xAA, 0x14, "%d", miniEkansCountdown);
}
void fixSkansMinigameHUD(void) {
void miniEkansDrawHub(void) {
MiniActor* ekans = miniEkanses;
s32 i;
@@ -3273,7 +3273,7 @@ void fixSkansMinigameHUD(void) {
} else {
func_87801644(i, tmp, 0xCC, 0.75f);
}
func_8001F1E8(tmp + 0x14, 0xCC, " %d", miniEkanses[i].unk_2A2);
func_8001F1E8(tmp + 0x14, 0xCC, " %d", miniEkanses[i].ekansScore);
}
gSPDisplayList(gDisplayListHead++, D_8006F630);
@@ -3283,14 +3283,14 @@ void func_86C03E4C(void) {
func_87903260();
func_86C03AB8();
if (miniShowHUB != 0) {
fixSkansMinigameHUD();
if (miniShowHUB) {
miniEkansDrawHub();
}
}
void func_86C03E8C(s32 arg0) {
if (D_8780FC98 == 0) {
func_86C03E4C();
func_86C03E4C(); // HUB
}
if (ekansMinigameCountdownStarted == false) {
@@ -3313,7 +3313,7 @@ void func_86C03ED4(void) {
func_8140419C(ekansShadowTexture, 0x40, 0x40);
for (i = 0; i < 4; i++, ekans++) {
if (ekans->unk_23E == 2) {
if (ekans->mainState == 2) {
gSPDisplayList(gDisplayListHead++, D_8140DD58);
func_81405B70(playerColors[i].r, playerColors[i].g, playerColors[i].b, (ekans->unk_000.unk_01D / 2) & 0xFF);
@@ -3340,11 +3340,11 @@ void func_86C040B4(s32 arg0) {
func_87901C98();
func_86C03ED4();
if (miniDebugMode == 0) {
if (miniDebugMode == false) {
func_86C03E8C(arg0);
}
if (miniDebugMode != 0) {
if (miniDebugMode) {
showDebuggCameraInfo();
showDebuggJoystickInfo();
}
@@ -3372,22 +3372,22 @@ void initEkansMinigameAssets(void) {
}
}
void showTutorialScreenEkansMinigame(void) {
void miniEkansTutoScreenControls(void) {
s32 var_s1 = 1;
while (var_s1 != 0) {
func_87900528(); // input
if ((miniDebugMode == 0) && (func_80007604() == 0)) {
if ((miniDebugMode == false) && (func_80007604() == 0)) {
if (ekansMinigameCountdownStarted) {
if ((gPlayer1Controller->buttonPressed != 0) || (miniEkansCountdown == 0x28)) {
func_87802EB8(2); // D_8780FC92 = 1
}
} else if (miniShowHUB == 0) {
} else if (miniShowHUB == false) {
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_START)) {
miniTutoScreenState = 1; // changing this makes the tutorial screen stay on
miniTutoScreenState = 1;
minigameState = 1;
miniShowHUB = 1;
miniShowHUB = true;
func_86C00368(0x10, 0);
} else if ((D_8780FA2A == 0) && (BTN_IS_PRESSED(gPlayer1Controller, BTN_B))) {
func_86C00368(0x11, 0);
@@ -3404,7 +3404,7 @@ void showTutorialScreenEkansMinigame(void) {
func_86C035E0();
}
if ((miniDebugMode == 0) && ((D_87903DAC != 0) || (D_8780FC92 != 0))) {
if ((miniDebugMode == false) && ((D_87903DAC != 0) || (D_8780FC92 != 0))) {
var_s1 = 0;
}
@@ -3513,7 +3513,7 @@ s32 ekansMinigameLoad(s32 arg0, UNUSED s32 arg1) {
func_86C044B4(); // memory
func_80007678(sp24);
initEkansMinigameAssets();
showTutorialScreenEkansMinigame();
miniEkansTutoScreenControls();
ekansMinigameUpdate();
func_800076C0();
func_8001E9CC(); // main_pool_try_free(D_800AC870);

View File

@@ -5,7 +5,7 @@
#include "src/fragments/3/fragment3.h"
s32 func_86C00020(MiniActor* arg0);
void func_86C00090(s16 arg0, s32* arg1, s32* arg2);
void miniDiglettGoldCheck(s16 arg0, s32* arg1, s32* arg2);
void func_86C00110(s16 arg0, s16 arg1);
void func_86C00368(s16 arg0, s16 arg1);
void func_86C003AC(MiniActor* arg0);
@@ -62,13 +62,13 @@ void func_86C035E0(void);
void func_86C03608(void);
void func_86C03AB8(void);
void miniEkansDrawCountdown(void);
void fixSkansMinigameHUD(void);
void miniEkansDrawHub(void);
void func_86C03E4C(void);
void func_86C03E8C(s32 arg0);
void func_86C03ED4(void);
void func_86C040B4(s32 arg0);
void initEkansMinigameAssets(void);
void showTutorialScreenEkansMinigame(void);
void miniEkansTutoScreenControls(void);
void ekansMinigameUpdate(void);
void func_86C044B4(void);
s32 ekansMinigameLoad(s32 arg0, UNUSED s32 arg1);

View File

@@ -586,8 +586,8 @@ void func_86E001E4(MiniActor* metapod, s32 arg1) {
metapod->unk_21A = 0;
metapod->unk_21C = 0;
metapod->unk_21E = 0;
metapod->unk_25C = 0x190;
metapod->health = metapod->unk_25C;
metapod->miniMaxHealth = 0x190;
metapod->miniHealth = metapod->miniMaxHealth;
metapod->unk_2A6 = 5;
metapod->unk_1E4 = metapod->unk_28C * 0.5f;
@@ -609,7 +609,7 @@ void initMetapodPlayers(void) {
}
void func_86E0034C(MiniActor* metapod) {
metapod->unk_25A++;
metapod->damageTimer++;
metapod->unk_272 = 4;
metapod->unk_000.unk_01C = 1;
}
@@ -619,17 +619,17 @@ void miniMetapodHumanControls(MiniActor* metapod) {
metapod->metapodInputLockTimer--;
}
if ((BTN_IS_DOWN(miniControllerPtr, BTN_A)) && (metapod->unk_23E == 0) && (metapod->unk_240 == 0) &&
if ((BTN_IS_DOWN(miniControllerPtr, BTN_A)) && (metapod->mainState == 0) && (metapod->unk_240 == 0) &&
(metapod->unk_2AA == 0) && (metapod->metapodInputLockTimer == 0)) {
metapod->unk_23E = 1;
metapod->mainState = 1;
}
switch (metapod->unk_23E) {
switch (metapod->mainState) {
case 1:
func_86E0034C(metapod);
miniChangeActorAnim(metapod, 1, -1, 1);
func_81407D48(1.0f, metapod->unk_190, metapod->totalRot, func_879029F0, &D_87903E40, 4);
metapod->unk_23E++;
metapod->mainState++;
break;
case 2:
@@ -638,7 +638,7 @@ void miniMetapodHumanControls(MiniActor* metapod) {
}
if (!(BTN_IS_DOWN(miniControllerPtr, BTN_A)) || (metapod->unk_2AA != 0)) {
metapod->unk_23E = 0;
metapod->mainState = 0;
metapod->unk_000.unk_000.unk_02 |= 0x20;
} else if (BTN_IS_DOWN(miniControllerPtr, BTN_A)) {
func_86E0034C(metapod);
@@ -650,7 +650,7 @@ void miniMetapodHumanControls(MiniActor* metapod) {
void func_86E004FC(MiniActor* metapod) {
if (metapod->isComp) {
metapod->unk_244 = 0;
metapod->unk_242 = 0;
metapod->compState = 0;
}
}
@@ -778,10 +778,10 @@ void func_86E0073C(MiniActor* arg0, s32 arg1) {
arg0->unk_2B2 = var_a2;
}
void func_86E007BC(MiniActor* arg0, s32 arg1) {
arg0->unk_244 = arg1;
arg0->unk_29E = 0;
arg0->unk_2B2 = 0;
void func_86E007BC(MiniActor* metapod, s32 arg1) {
metapod->unk_244 = arg1;
metapod->unk_29E = 0;
metapod->unk_2B2 = 0;
}
void func_86E007CC(MiniActor* metapod, s32 player) {
@@ -823,7 +823,7 @@ void func_86E007CC(MiniActor* metapod, s32 player) {
if (sp20 < 0) {
sp20 = 0;
}
metapod->unk_242 = 1;
metapod->compState = 1;
switch (func_86E00518(metapod, sp20)) {
case 0:
@@ -843,26 +843,26 @@ void func_86E007CC(MiniActor* metapod, s32 player) {
}
void miniMetapodCompControls(MiniActor* metapod, s32 nPlayer) {
if (metapod->unk_242 == 0) {
if (metapod->compState == 0) {
func_86E007CC(metapod, nPlayer);
}
switch (metapod->unk_242) {
switch (metapod->compState) {
case 0x1:
metapod->unk_244--;
if (metapod->unk_244 < 0) {
if ((metapod->unk_2AA == 0) && (metapod->unk_240 == 0)) {
if (metapod->unk_29E > 0) {
miniChangeActorAnim(metapod, 1, -1, 1);
metapod->unk_23E = 1;
metapod->mainState = 1;
metapod->unk_272 = 4;
metapod->unk_242++;
metapod->compState++;
func_81407D48(1.0f, metapod->unk_190, metapod->totalRot, func_879029F0, &D_87903E40, 4);
} else {
metapod->unk_242 = 0x64;
metapod->compState = 0x64;
}
} else {
metapod->unk_242 = 0;
metapod->compState = 0;
}
}
break;
@@ -871,11 +871,11 @@ void miniMetapodCompControls(MiniActor* metapod, s32 nPlayer) {
metapod->unk_29E--;
if (metapod->unk_29E < 0) {
metapod->unk_000.unk_000.unk_02 |= 0x20;
metapod->unk_242 = 0x64;
metapod->compState = 0x64;
return;
}
metapod->unk_25A++;
metapod->damageTimer++;
metapod->unk_272 = 4;
metapod->unk_000.unk_01C = 1;
if (func_80017484(&metapod->unk_000, 5) != 0) {
@@ -886,8 +886,8 @@ void miniMetapodCompControls(MiniActor* metapod, s32 nPlayer) {
case 0x64:
metapod->unk_2B2--;
if (metapod->unk_2B2 <= 0) {
metapod->unk_23E = 0;
metapod->unk_242 = 0;
metapod->mainState = 0;
metapod->compState = 0;
}
break;
}
@@ -927,7 +927,7 @@ s32 func_86E00C34(s32 nPlayer) {
s32 sp1C = 0;
if (metapodRockCollisionCheck_void() != 0) {
miniMetapodPtr->unk_260 = 1;
miniMetapodPtr->midAirState = 1;
if (miniMetapodPtr->unk_272 != 0) { // if hardened ? colliding ?
func_86E001A0(7, nPlayer);
sp1C = 1;
@@ -947,10 +947,10 @@ void func_86E00CAC(UNUSED MiniActor* metapod, s32 nPlayer) {
miniRockPtr = miniMetapodRocks;
for (i = 0; i < 20; i++) {
if ((miniRockPtr->unk_270 != 0) && (nPlayer == miniRockPtr->playerId) && (miniRockPtr->unk_260 == 0)) {
if ((miniRockPtr->unk_270 != 0) && (nPlayer == miniRockPtr->playerId) && (miniRockPtr->midAirState == 0)) {
colliding = func_86E00C34(nPlayer);
if (colliding) {
miniRockPtr->unk_260 = 1;
miniRockPtr->midAirState = 1;
if (colliding == 1) {
miniRockPtr->unk_272 = 1;
} else {
@@ -964,21 +964,21 @@ void func_86E00CAC(UNUSED MiniActor* metapod, s32 nPlayer) {
}
void func_86E00D78(MiniActor* metapod, s32 nPlayer) {
if ((miniMetapodPtr->unk_25A > 0) && (metapod->unk_2A8 == 0)) {
if (miniMetapodPtr->unk_25A >= 0x28) {
miniMetapodPtr->health -= miniMetapodPtr->unk_25A;
miniMetapodPtr->unk_25A = 0;
if ((miniMetapodPtr->damageTimer > 0) && (metapod->unk_2A8 == 0)) {
if (miniMetapodPtr->damageTimer >= 0x28) {
miniMetapodPtr->miniHealth -= miniMetapodPtr->damageTimer;
miniMetapodPtr->damageTimer = 0;
} else {
miniMetapodPtr->unk_25A--;
miniMetapodPtr->health--;
miniMetapodPtr->damageTimer--;
miniMetapodPtr->miniHealth--;
}
if (miniMetapodPtr->health < 0) {
miniMetapodPtr->health = 0;
if (miniMetapodPtr->miniHealth < 0) {
miniMetapodPtr->miniHealth = 0;
}
}
if (miniMetapodPtr->health == 0) {
if (miniMetapodPtr->miniHealth == 0) {
if (miniMetapodPtr->unk_2A4 == 0) {
func_86E001A0(9, nPlayer);
miniChangeActorAnim(miniMetapodPtr, 3, 1, 0); // dead animation
@@ -988,14 +988,14 @@ void func_86E00D78(MiniActor* metapod, s32 nPlayer) {
} else {
switch (miniMetapodPtr->unk_240) {
case 1:
miniMetapodPtr->unk_25A += 0x1E;
miniMetapodPtr->damageTimer += 0x1E;
miniChangeActorAnim(miniMetapodPtr, 2, 0, 1);
func_86E001A0(8, nPlayer);
miniMetapodPtr->unk_240++;
break;
case 2:
if (miniMetapodPtr->unk_248 == 0) {
if (miniMetapodPtr->isIdle == 0) {
miniMetapodPtr->unk_240 = 0;
}
break;
@@ -1117,7 +1117,7 @@ void func_86E01188(void) {
for (j = 0; j < D_86E04B24; j++) {
func_86E0103C(miniRockPtr, i);
miniRockPtr->unk_23E = 1;
miniRockPtr->mainState = 1;
miniRockPtr->unk_29E = var_s1;
var_s1 += var_s5;
@@ -1134,9 +1134,9 @@ void func_86E01310(MiniActor* rock) {
rock->unk_29E = temp_v1 - 1;
rock->localOrigin.y += D_86E04BFC[temp_a1].unk_00.y + miniMetapods[temp_a1].unk_28C;
rock->unk_210 = 0.7f;
rock->weight = 0.7f;
rock->unk_1F8 = 0.0f;
rock->unk_1FC = temp_v1 * rock->unk_210 * 0.5f;
rock->unk_1FC = temp_v1 * rock->weight * 0.5f;
rock->unk_200 =
((miniMetapods[temp_a1].localOrigin.z + (miniMetapods[temp_a1].unk_288 * 0.5f)) - rock->localOrigin.z) / temp_v1;
@@ -1147,7 +1147,7 @@ void func_86E01310(MiniActor* rock) {
}
void func_86E01414(MiniActor* rock) {
rock->unk_23E = 0;
rock->mainState = 0;
rock->unk_000.unk_000.unk_01 &= ~1;
}
@@ -1156,26 +1156,26 @@ void func_86E01428(MiniActor* rock) {
s16 temp_a1 = rock->playerId;
Vec3f sp3C;
if ((D_87903DA8 != 0) || (miniMetapods[temp_a1].health == 0)) {
switch (rock->unk_23E) {
if ((D_87903DA8 != 0) || (miniMetapods[temp_a1].miniHealth == 0)) {
switch (rock->mainState) {
case 1:
rock->unk_23E = 0;
rock->mainState = 0;
break;
case 2:
rock->unk_270 = 0;
rock->unk_23E = 0x64;
rock->mainState = 0x64;
break;
}
}
switch (rock->unk_23E) {
switch (rock->mainState) {
case 0x1:
rock->unk_29E--;
if (rock->unk_29E <= 0) {
func_86E001A0(5, temp_a1);
func_86E01310(rock);
rock->unk_23E++;
rock->mainState++;
}
break;
@@ -1185,7 +1185,7 @@ void func_86E01428(MiniActor* rock) {
rock->unk_29E = 0;
}
if (rock->unk_260 != 0) {
if (rock->midAirState != 0) {
rock->unk_270 = 0;
if (rock->unk_272 != 0) {
rock->unk_1FC = 5.0f;
@@ -1193,7 +1193,7 @@ void func_86E01428(MiniActor* rock) {
func_86E01414(rock);
func_81407D48(1.0f, rock->unk_190, rock->totalRot, func_87901F04, &D_87903E28, 4);
} else {
rock->unk_23E++;
rock->mainState++;
}
}
break;
@@ -1207,7 +1207,7 @@ void func_86E01428(MiniActor* rock) {
sp3C.z = rock->unk_190.z;
func_81407D48(1.0f, sp3C, rock->totalRot, func_87902068, &D_87903E10, 4);
rock->unk_23E++;
rock->mainState++;
break;
case 0x4:
@@ -1235,9 +1235,9 @@ void func_86E016EC(MiniActor* arg0) {
}
void func_86E0172C(MiniActor* rock) {
if (rock->unk_23E != 0) {
if (rock->mainState != 0) {
rock->unk_1F8 += rock->unk_204;
rock->unk_1FC += rock->unk_208 - rock->unk_210;
rock->unk_1FC += rock->unk_208 - rock->weight;
rock->unk_200 += rock->unk_20C;
rock->globalPos.x += rock->unk_1F8;
rock->globalPos.y += rock->unk_1FC;
@@ -1331,7 +1331,7 @@ void func_86E019F4(void) {
case 2:
var_a2 = 1;
for (i = 0; i < 20; i++) {
if (miniRockPtr->unk_23E != 0) {
if (miniRockPtr->mainState != 0) {
var_a2 = 0;
break;
}
@@ -1500,7 +1500,7 @@ s32 func_86E01F50(void) {
MiniActor* var_v0 = miniMetapodRocks;
for (i = 0; i < 20; i++, var_v0++) {
if (var_v0->unk_23E != 0) {
if (var_v0->mainState != 0) {
ret = 0;
break;
}
@@ -1578,7 +1578,7 @@ void miniDrawMetapodHealth(void) {
s32 i;
for (i = 0; i < 4; i++) {
func_8780024C(0x1A + i * 0x4A, 0xD0, 0x32, miniMetapods[i].health, miniMetapods[i].unk_25C);
func_8780024C(0x1A + i * 0x4A, 0xD0, 0x32, miniMetapods[i].miniHealth, miniMetapods[i].miniMaxHealth);
}
}
@@ -1737,7 +1737,7 @@ void miniMetapodTutoScreenControls(void) {
void func_86E02A28(void) {
MiniActor* metapod = miniMetapods;
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_A) && (metapod->unk_23E == 0)) {
if (BTN_IS_PRESSED(gPlayer1Controller, BTN_A) && (metapod->mainState == 0)) {
metapod->metapodInputLockTimer = 4;
}
}

View File

@@ -1620,13 +1620,13 @@ void initSandshrew(MiniActor* sandshrew, s32 player) {
sandshrew->totalRot.y = sandshrew->unk_21C = 0;
sandshrew->totalRot.z = sandshrew->unk_21E = 0;
sandshrew->health = sandshrew->unk_25C = 0x64;
sandshrew->miniHealth = sandshrew->miniMaxHealth = 0x64;
sandshrew->unk_238 = sandshrew->unk_23A = 0;
func_8001BD04(&sandshrew->unk_000, 0);
sandshrew->unk_290 = 0;
sandshrew->unk_23E = 0;
sandshrew->mainState = 0;
sandshrew->unk_240 = 0;
sandshrew->isComp = D_879060C4[player];
@@ -1685,7 +1685,7 @@ void func_86F0048C(MiniActor* sandshrew, s32 arg1) {
} else if (arg1 == 1) {
sandshrew->unk_2A0 = 0x14;
sandshrew->unk_2B0 = 3;
sandshrew->unk_23E = 1;
sandshrew->mainState = 1;
sandshrew->unk_280 = 10.0f;
sandshrew->unk_27C = 10.0f;
} else {
@@ -1714,7 +1714,7 @@ void sandshrewPlayerInput(MiniActor* sandshrew) {
dir = 1;
}
if (sandshrew->unk_23E == 0) { // on iddle animation
if (sandshrew->mainState == 0) { // on iddle animation
if ((sandshrew->sandshrewLastDir == 0) && ((dir == 1) || (dir == 2))) {
func_86F0048C(sandshrew, 1);
sandshrew->sandshrewLastDir = dir;
@@ -1783,8 +1783,8 @@ void sandshrewCompControls(MiniActor* arg0) {
}
arg0->unk_274 += arg0->unk_27C;
if ((arg0->unk_23E == 0) && (arg0->unk_27C != 0.0f)) {
arg0->unk_23E = 1;
if ((arg0->mainState == 0) && (arg0->unk_27C != 0.0f)) {
arg0->mainState = 1;
}
}
@@ -1793,10 +1793,10 @@ void func_86F00920(MiniActor* sandshrew) {
Vec3f sp48;
f32 holeDeepeness;
switch (sandshrew->unk_23E) {
switch (sandshrew->mainState) {
case 0x1: // geiser coming out of the ground
func_86F003FC(sandshrew, 1);
sandshrew->unk_23E++;
sandshrew->mainState++;
break;
case 0x2: // on geiser loop
@@ -1804,7 +1804,7 @@ void func_86F00920(MiniActor* sandshrew) {
func_86F003FC(sandshrew, 2);
func_80017454(&sandshrew->unk_000, 0);
sandshrew->unk_22E = 0;
sandshrew->unk_23E++;
sandshrew->mainState++;
}
break;
@@ -1844,14 +1844,14 @@ void func_86F00920(MiniActor* sandshrew) {
func_80017464(&sandshrew->unk_000, 0);
func_80017454(&sandshrew->unk_000, 0x10000);
func_86F00188(4, sandshrew - miniSandshrews);
sandshrew->unk_23E++;
sandshrew->mainState++;
}
break;
case 0x4: // on stop diggin
if (func_800174E4(&sandshrew->unk_000) != 0) {
func_8001BD04(&sandshrew->unk_000, 0);
sandshrew->unk_23E = 0;
sandshrew->mainState = 0;
}
break;
@@ -1860,7 +1860,7 @@ void func_86F00920(MiniActor* sandshrew) {
func_800173DC(&sandshrew->unk_000, 0, sandshrew->unk_000.unk_040.unk_04, 0x10000);
func_80017464(&sandshrew->unk_000, 0);
func_80017454(&sandshrew->unk_000, 0x10000);
sandshrew->unk_23E++;
sandshrew->mainState++;
sandshrew->globalPos.y += 15.0f;
break;
@@ -1923,11 +1923,11 @@ void initSandshrewHole(MiniActor* a0, s32 arg1) {
sandshrewHole->globalPos.y = 0.0f;
sandshrewHole->globalPos.z = 0.0f;
sandshrewHole->health = sandshrewHole->unk_25C = 0x64;
sandshrewHole->miniHealth = sandshrewHole->miniMaxHealth = 0x64;
sandshrewHole->unk_272 = 0;
sandshrewHole->unk_2A4 = 0;
sandshrewHole->unk_23E = 0;
sandshrewHole->mainState = 0;
sandshrewHole->unk_24A = 0;
sandshrewHole->unk_000.unk_000.unk_01 &= ~1;
@@ -1946,13 +1946,13 @@ void initSandshrewHoles(void) {
void func_86F00F68(MiniActor* sandshrewHole, MiniActor* sandshrewPlayer) {
s32 var_a1;
if ((sandshrewPlayer->unk_274 > 300.0f) && (sandshrewHole->unk_23E == 0)) {
if ((sandshrewPlayer->unk_274 > 300.0f) && (sandshrewHole->mainState == 0)) {
func_86F003FC(sandshrewHole, 0);
sandshrewHole->unk_000.unk_000.unk_01 |= 1;
sandshrewHole->unk_23E = 1;
sandshrewHole->mainState = 1;
}
if (sandshrewHole->unk_23E != 0) {
if (sandshrewHole->mainState != 0) {
if (sandshrewPlayer->unk_274 > 400.0f) {
var_a1 = 0x5000;
} else {
@@ -1997,11 +1997,11 @@ void initSandshrewWaterGeiser(MiniActor* arg0, s32 arg1) {
geiser->globalPos.y = 0.0f;
geiser->globalPos.z = 0.0f;
geiser->health = geiser->unk_25C = 0x64;
geiser->miniHealth = geiser->miniMaxHealth = 0x64;
geiser->unk_272 = 0;
geiser->unk_2A4 = 0;
geiser->unk_23E = 0;
geiser->mainState = 0;
geiser->unk_24A = 0;
geiser->unk_000.unk_000.unk_01 &= ~1;
@@ -2019,21 +2019,21 @@ void initSandshrewWaterGeisers(void) {
}
void func_86F011E8(MiniActor* geiser) {
switch (geiser->unk_23E) {
switch (geiser->mainState) {
case 1:
func_86F003FC(geiser, 0);
geiser->unk_000.unk_000.unk_01 |= 1;
geiser->unk_23E++;
geiser->mainState++;
break;
case 2: // first geiser animation ends
if (func_80017514(&miniSandshrewGeiserPtr->unk_000) != 0) {
func_86F003FC(geiser, 1);
geiser->unk_23E++;
geiser->mainState++;
}
break;
}
if ((geiser->unk_23E >= 2) && (D_8140E6CC == 0)) {
if ((geiser->mainState >= 2) && (D_8140E6CC == 0)) {
func_81407F24(&geiser->unk_000, func_87902C9C, &D_87903E58, 4, 0xA);
}
}
@@ -2128,8 +2128,8 @@ s32 func_86F014F8(void) {
miniSandshrewPtr->unk_2A8 = 1;
var_s7 = 1;
var_s4 += 1;
miniSandshrewPtr->unk_23E = 0x64;
miniSandshrewGeiserPtr->unk_23E = 1;
miniSandshrewPtr->mainState = 0x64;
miniSandshrewGeiserPtr->mainState = 1;
func_86F00188(5, i);
func_87802F00(i);
}

View File

@@ -14,11 +14,11 @@ typedef struct MiniActor {
/* 0x190 */ Vec3f unk_190; // global position ?
/* 0x19C */ Vec3f unk_19C; // position ? ** metapod only
/* 0x1A8 */ Vec3f localOrigin; // origin position
/* 0x1B4 */ Vec3f unk_1B4; // related to angle ** ekans only
/* 0x1B4 */ Vec3f unk_1B4; // ??? ** ekans only
/* 0x1C0 */ Vec3f globalPos;
/* 0x1CC */ f32 unk_1CC; // ??? ** ekans only
/* 0x1D0 */ f32 unk_1D0; // unused ?
/* 0x1D4 */ f32 unk_1D4; // ??? ** ekans only
/* 0x1CC */ f32 dist2DiglettLevelX; // 1,2,4 ** ekans only
/* 0x1D0 */ f32 dist2DiglettLevelY; // unused
/* 0x1D4 */ f32 dist2DiglettLevelZ; // 1,2,4 ** ekans only
/* 0x1D8 */ Vec3f unk_1D8; // also position, never used
/* 0x1E4 */ f32 unk_1E4; // botton of the hitbox ? half of 28C
/* 0x1E8 */ char unk1E8[0x4]; // unused ?
@@ -31,14 +31,14 @@ typedef struct MiniActor {
/* 0x204 */ f32 unk_204; // x acceleration on metapod ** metapod only
/* 0x208 */ f32 unk_208; // y acceleration on metapod ** metapod only
/* 0x20C */ f32 unk_20C; // z acceleration on metapod ** metapod only
/* 0x210 */ f32 unk_210; // weight? gravity ? y acceleration ? on ekans and metapod
/* 0x210 */ f32 weight; // weight? gravity ? y acceleration ? on ekans and metapod
/* 0x214 */ Vec3s totalRot; // total rotation
/* 0x21A */ s16 unk_21A; // x rotation 1, always zero
/* 0x21C */ s16 unk_21C; // y rotation 1 on ekans
/* 0x21C */ s16 unk_21C; // y rotation 1
/* 0x21E */ s16 unk_21E; // z rotation 1 ? always zero
/* 0x220 */ s16 unk_220; // x something, always zero
/* 0x222 */ s16 unk_222; // y something, always zero
/* 0x224 */ s16 unk_224; // z something, always zero
/* 0x220 */ s16 unk_220; // x something
/* 0x222 */ s16 unk_222; // y something
/* 0x224 */ s16 unk_224; // z something
/* 0x226 */ s16 unk_226; // x rotation 2
/* 0x228 */ s16 unk_228; // y rotation 2 (throwing direction on ekans)
/* 0x22A */ s16 unk_22A; // z rotation 2
@@ -50,23 +50,23 @@ typedef struct MiniActor {
/* 0x236 */ s16 unk_236; // z rotation 3 always zero
/* 0x238 */ s16 unk_238; // always zero
/* 0x23A */ s16 unk_23A; // always zero
/* 0x23C */ s16 unk_23C; // ???
/* 0x23E */ s16 unk_23E; // animation id
/* 0x23C */ s16 unk_23C; // ??? some value to send to unk_000->unk_018
/* 0x23E */ s16 mainState; // animation id or state
/* 0x240 */ s16 unk_240; // metapod got rock squashed
/* 0x242 */ s16 unk_242; // comp state on ekans ;
/* 0x242 */ s16 compState;
/* 0x244 */ s16 unk_244; // ?
/* 0x246 */ char unk246[0x2]; // unused
/* 0x248 */ s16 unk_248; // 0,1,2 - is colliding? visibility?
/* 0x248 */ s16 isIdle; // 0,1,2 - is colliding? visibility?
/* 0x24A */ s16 unk_24A; // animation id ?
/* 0x24C */ s16 unk_24C; // texture animation ?
/* 0x24E */ char unk24E[0x6]; // unused
/* 0x254 */ s32 unk_254; // always zero
/* 0x258 */ s16 health; // health on metapod ; ??? on ekans and sandsrew
/* 0x25A */ s16 unk_25A; // something animation on metapod ** metapod only
/* 0x25C */ s16 unk_25C; // max health on metapod, different on sandshrew and ekans
/* 0x25E */ s16 ekansAbbleToHoop; // ** ekans only
/* 0x260 */ s16 unk_260; // rock got blocked on metapod ;
/* 0x262 */ s16 unk_262; // can ekans peg a digglet ? ** ekans only
/* 0x258 */ s16 miniHealth; // health, used only on metapod
/* 0x25A */ s16 damageTimer; // ** metapod only
/* 0x25C */ s16 miniMaxHealth; // 400 instead of 100 on metapod
/* 0x25E */ s16 ekansAbbleToHoop; // ** ekans only
/* 0x260 */ s16 midAirState; // mid air state, ekanses and falling rocks
/* 0x262 */ s16 ekansIsMidAir; // ekans is in mid air ** ekans only
/* 0x264 */ s16 unk_264; // always zero
/* 0x266 */ s16 playerId;
/* 0x268 */ s16 playerIdBuffer; // ekans only
@@ -75,18 +75,18 @@ typedef struct MiniActor {
/* 0x26E */ s16 unk_26E; // animation something, always zero
/* 0x270 */ s16 unk_270;
/* 0x272 */ s16 unk_272; // colliding with a rock on metapod's minigame ?
/* 0x274 */ f32 unk_274; //
/* 0x274 */ f32 unk_274; // ???
/* 0x278 */ char unk278[0x4]; // unused
/* 0x27C */ f32 unk_27C; //
/* 0x280 */ f32 unk_280; // stick magnitude on ekans? ; digging/animation speed on sandshrew
/* 0x284 */ f32 unk_284;
/* 0x284 */ f32 unk_284; // launch forse on ekans
/* 0x288 */ f32 unk_288; // bottom of the hitbox / bounding box ?
/* 0x28C */ f32 unk_28C; // top of the hitbox ? / bounding box ? ; double of 1E4
/* 0x290 */ s16 unk_290;
/* 0x292 */ s16 unk_292;
/* 0x294 */ s16 unk_294;
/* 0x290 */ s16 unk_290; // always zero
/* 0x292 */ s16 unk_292; // always zero
/* 0x294 */ s16 unk_294; // always zero
/* 0x296 */ s16 unk_296;
/* 0x298 */ s16 unk_298;
/* 0x298 */ s16 unk_298; // diglett bounceness on ekans ?
/* 0x29A */ union {
s16 unk_29A;
s16 sandshrewLastDir;
@@ -94,10 +94,10 @@ typedef struct MiniActor {
s16 metapodInputLockTimer;
};
/* 0x29C */ s16 unk_29C;
/* 0x29E */ s16 unk_29E; // respawn time after landing on ekans ; something related with comp animation on metapod
/* 0x2A0 */ s16 unk_2A0; // ammount of frames L/R was pressed on sandshrew?
/* 0x2A2 */ s16 unk_2A2; // score on skans' minigame
/* 0x29C */ s16 diglettIsGold; // ** diglett only
/* 0x29E */ s16 unk_29E; // respawn time after landing on ekans ; something comp animation on metapod
/* 0x2A0 */ s16 unk_2A0; // ammount of frames L/R DL/DR was pressed on sandshrew and ekans
/* 0x2A2 */ s16 ekansScore; // ** ekans only
/* 0x2A4 */ s16 unk_2A4;
/* 0x2A6 */ s16 unk_2A6; // metapod state ?
/* 0x2A8 */ s16 unk_2A8;

View File

@@ -100,17 +100,17 @@ s32 metapodRockCollisionCheck(MiniActor* fallingRock, MiniActor* metapod) {
}
void miniChangeActorAnim(MiniActor* poke, s16 anim, s16 arg2, s16 arg3) {
poke->unk_248 = 1; // animation flag ?
poke->isIdle = 1;
poke->unk_24A = anim;
poke->unk_24C = arg2;
poke->unk_26A = arg3;
poke->unk_26C = 0; // animation flag ?
poke->unk_26C = 0;
poke->unk_26E = 0;
}
// unused
void miniChangeActorAnim_alt1(MiniActor* arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) {
arg0->unk_248 = 1;
arg0->isIdle = 1;
arg0->unk_24A = arg1;
arg0->unk_24C = arg2;
arg0->unk_26A = arg3;
@@ -119,7 +119,7 @@ void miniChangeActorAnim_alt1(MiniActor* arg0, s16 arg1, s16 arg2, s16 arg3, s16
}
void miniChangeActorAnim_alt2(MiniActor* diglett, s16 anim, s16 arg2, s16 arg3) {
diglett->unk_248 = 1;
diglett->isIdle = 1;
diglett->unk_24A = anim;
diglett->unk_24C = arg2;
diglett->unk_26A = arg3;
@@ -129,14 +129,14 @@ void miniChangeActorAnim_alt2(MiniActor* diglett, s16 anim, s16 arg2, s16 arg3)
s32 miniPokeIsIdleCheck(MiniActor* arg0) {
s32 var_v1 = 0;
if (arg0->unk_248 == 0) {
if (arg0->isIdle == 0) {
var_v1 = 1;
}
return var_v1;
}
void func_879003A0(MiniActor* poke) {
switch (poke->unk_248) {
switch (poke->isIdle) {
case 1:
func_8001BD04(&poke->unk_000, poke->unk_24A);
if (poke->unk_26C != 0) {
@@ -151,17 +151,17 @@ void func_879003A0(MiniActor* poke) {
func_80017804(&poke->unk_000, poke->unk_26E);
}
}
poke->unk_248++;
poke->isIdle++;
break;
case 2:
if (poke->unk_26C == 0) {
if (func_800174E4(&poke->unk_000) != 0) {
poke->unk_248++;
poke->isIdle++;
}
} else {
if (poke->unk_000.unk_040.unk_08 == 0) {
poke->unk_248++;
poke->isIdle++;
}
}
break;
@@ -170,7 +170,7 @@ void func_879003A0(MiniActor* poke) {
if (poke->unk_26A != 0) {
func_8001BD04(&poke->unk_000, 0);
}
poke->unk_248 = 0;
poke->isIdle = 0;
break;
}
}
@@ -216,9 +216,9 @@ void func_879005AC(MiniActor* arg0) {
}
void func_879005C4(MiniActor* ekans) {
ekans->unk_1FC = ekans->unk_1FC - ekans->unk_210;
ekans->unk_1FC = ekans->unk_1FC - ekans->weight;
ekans->globalPos.x = ekans->globalPos.x + ekans->unk_1F8;
ekans->globalPos.y = ekans->globalPos.y + (ekans->unk_1FC - ekans->unk_210);
ekans->globalPos.y = ekans->globalPos.y + (ekans->unk_1FC - ekans->weight);
ekans->globalPos.z = ekans->globalPos.z + ekans->unk_200;
}
@@ -229,18 +229,18 @@ void func_8790060C(MiniActor* actor) {
actor->unk_226 = actor->unk_228 = actor->unk_22A = 0;
actor->unk_22C = actor->unk_22E = actor->unk_230 = 0;
actor->unk_232 = actor->unk_234 = actor->unk_236 = 0;
actor->unk_23E = actor->unk_240 = actor->unk_242 = actor->unk_248 = 0;
actor->mainState = actor->unk_240 = actor->compState = actor->isIdle = 0;
actor->unk_254 = 0;
actor->unk_272 = 0;
actor->unk_238 = 0;
actor->unk_25A = 0;
actor->damageTimer = 0;
actor->unk_2A8 = 0;
actor->unk_2A4 = 0;
actor->unk_2A2 = 0;
actor->ekansScore = 0;
actor->unk_29A = 0;
actor->unk_2AA = 0;
actor->unk_29C = 0;
actor->diglettIsGold = 0;
actor->unk_2A0 = 0;
actor->unk_29E = 0;
actor->unk_296 = 0;
@@ -255,11 +255,11 @@ void func_8790060C(MiniActor* actor) {
actor->unk_1B4.x = 0.0f;
actor->globalPos.x = actor->globalPos.y = actor->globalPos.z = 0.0f;
actor->unk_1D4 = 0.0f;
actor->unk_1D0 = 0.0f;
actor->unk_1CC = 0.0f;
actor->dist2DiglettLevelZ = 0.0f;
actor->dist2DiglettLevelY = 0.0f;
actor->dist2DiglettLevelX = 0.0f;
actor->unk_1E4 = 0.0f;
actor->unk_210 = 0.0f;
actor->weight = 0.0f;
actor->unk_20C = 0.0f;
actor->unk_208 = 0.0f;
actor->unk_204 = 0.0f;
@@ -274,7 +274,7 @@ void func_8790060C(MiniActor* actor) {
actor->unk_27C = 0.0f;
actor->unk_274 = 0.0f;
actor->unk_260 = actor->unk_262 = actor->unk_264 = actor->playerId = 0;
actor->midAirState = actor->ekansIsMidAir = actor->unk_264 = actor->playerId = 0;
actor->unk_290 = actor->unk_292 = actor->unk_294 = 0;
}

View File

@@ -24,10 +24,10 @@ void func_87903600(void) {
}
void func_879036B4(MiniActor* arg0) {
if (arg0->unk_23E == 1) {
if (arg0->mainState == 1) {
arg0->unk_000.unk_000.unk_01 |= 1;
miniChangeActorAnim(arg0, 0, -1, 0);
arg0->unk_23E++;
arg0->mainState++;
}
}
@@ -58,7 +58,7 @@ void func_87903778(MiniActor* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s16
arg0->unk_21C = arg6;
arg0->unk_21E = arg7;
arg0->playerId = arg8;
arg0->unk_23E = 1;
arg0->mainState = 1;
}
void func_879037D0(f32 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, s16 arg5, s16 arg6) {