pikiMgr closer

This commit is contained in:
Evan 2024-04-30 21:41:59 -04:00
parent 7767bd2917
commit 6236bb6154
5 changed files with 90 additions and 355 deletions

View File

@ -33,11 +33,11 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAS/JASDSPChannel.cpp">JAudio//JAS/JASDSPChannel.cpp</a> | 11462 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAS/JASTaskThread.cpp">JAudio//JAS/JASTaskThread.cpp</a> | 12200 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAS/JASWSParser.cpp">JAudio//JAS/JASWSParser.cpp</a> | 12435 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DJoint.cpp">J3D/J3DJoint.cpp</a> | 13780 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JParticle/JPADynamicsBlock.cpp">JParticle/JPADynamicsBlock.cpp</a> | 13887 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAS/JASAiCtrl.cpp">JAudio//JAS/JASAiCtrl.cpp</a> | 14267 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JGadget/std-vector.cpp">JGadget/std-vector.cpp</a> | 16058 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio_JParticle/object-particle.cpp">JStudio_JParticle/object-particle.cpp</a> | 16762 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio/stb.cpp">JStudio/stb.cpp</a> | 16978 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio_JStage/object-camera.cpp">JStudio_JStage/object-camera.cpp</a> | 17767 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DCluster.cpp">J3D/J3DCluster.cpp</a> | 18124 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J2D/J2DTextBoxEx.cpp">J2D/J2DTextBoxEx.cpp</a> | 18983 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAI/JAISystemInterface.cpp">JAudio//JAI/JAISystemInterface.cpp</a> | 19058 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAS/JASChannel.cpp">JAudio//JAS/JASChannel.cpp</a> | 19166 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JMessage/resource.cpp">JMessage/resource.cpp</a> | 19364 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DShape.cpp">J3D/J3DShape.cpp</a> | 19482 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DShape.cpp">J3D/J3DShape.cpp</a> | 14992 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JGadget/std-vector.cpp">JGadget/std-vector.cpp</a> | 16058 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio_JParticle/object-particle.cpp">JStudio_JParticle/object-particle.cpp</a> | 16762 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio/stb.cpp">JStudio/stb.cpp</a> | 16978 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio_JStage/object-camera.cpp">JStudio_JStage/object-camera.cpp</a> | 17767 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DCluster.cpp">J3D/J3DCluster.cpp</a> | 18124 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J2D/J2DTextBoxEx.cpp">J2D/J2DTextBoxEx.cpp</a> | 18983 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAI/JAISystemInterface.cpp">JAudio//JAI/JAISystemInterface.cpp</a> | 19058 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAS/JASChannel.cpp">JAudio//JAS/JASChannel.cpp</a> | 19166 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JMessage/resource.cpp">JMessage/resource.cpp</a> | 19364 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAS/JASBNKParser.cpp">JAudio//JAS/JASBNKParser.cpp</a> | 19529 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DTevs.cpp">J3D/J3DTevs.cpp</a> | 20295 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/JStudio/fvb.cpp">JStudio/fvb.cpp</a> | 20306 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DModelLoaderCalcSize.cpp">J3D/J3DModelLoaderCalcSize.cpp</a> | 21199 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JSystem/J3D/J3DMaterial.cpp">J3D/J3DMaterial.cpp</a> | 21468 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/JAudio/JSystem/JAI/JAIAnimation.cpp">JAudio//JAI/JAIAnimation.cpp</a> | 21643 |
@ -73,7 +73,7 @@
| ---- | ---- | ---- | ---- |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectHikinoU/PSBnkMgr.cpp">PSBnkMgr.cpp</a> | 10222 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectHikinoU/PSSe.cpp">PSSe.cpp</a> | 22622 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectHikinoU/PSSeq.cpp">PSSeq.cpp</a> | 27120 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectHikinoU/PSAutoBgm.cpp">PSAutoBgm.cpp</a> | 53589 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectHikinoU/PSGame.cpp">PSGame.cpp</a> | 75602 | | |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectHikinoU/PSGame.cpp">PSGame.cpp</a> | 75560 | | |
### <section id="plugProjectKandoU">plugProjectKandoU</section>
| File | Size (bytes) | File | Size (bytes) |
@ -91,8 +91,8 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/itemGate.cpp">itemGate.cpp</a> | 32798 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gamePlayDataMemCard.cpp">gamePlayDataMemCard.cpp</a> | 36029 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/piki.cpp">piki.cpp</a> | 36278 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gamePlayData.cpp">gamePlayData.cpp</a> | 36923 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/routeMgr.cpp">routeMgr.cpp</a> | 39120 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/gameGeneratorCache.cpp">gameGeneratorCache.cpp</a> | 40204 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/mapMgr.cpp">mapMgr.cpp</a> | 41795 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/collinfo.cpp">collinfo.cpp</a> | 43421 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/pikiMgr.cpp">pikiMgr.cpp</a> | 47897 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/singleGS_CaveGame.cpp">singleGS_CaveGame.cpp</a> | 52772 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/pikiMgr.cpp">pikiMgr.cpp</a> | 41251 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/mapMgr.cpp">mapMgr.cpp</a> | 41795 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/collinfo.cpp">collinfo.cpp</a> | 43421 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/singleGS_CaveGame.cpp">singleGS_CaveGame.cpp</a> | 52772 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/cellPyramid.cpp">cellPyramid.cpp</a> | 52800 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/aiFormation.cpp">aiFormation.cpp</a> | 53092 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/navi_demoCheck.cpp">navi_demoCheck.cpp</a> | 57727 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/itemWeed.cpp">itemWeed.cpp</a> | 62058 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/pelletState.cpp">pelletState.cpp</a> | 63200 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectKandoU/itemUjamushi.cpp">itemUjamushi.cpp</a> | 63548 |

View File

@ -67,7 +67,7 @@ struct SeqTrackRoot : public SeqTrackBase {
f32 mSwingMagnitude; // _34, how significant the swing is (?)
int mSwingState; // _38, 0 = olimar, 1 = louie
BeatMgr mBeatMgr; // _3C
u16 mBeatInterval; // _3E
u16 mBeatInterval; // _3E, used to determine swing movement rate, usually 60
TaskEntry_Tempo mTempoTask; // _40, for low health
TaskEntry_OuterParam _100; // _100
TaskEntry_PitMod mPitchModTask; // _16C, for taking damage

View File

@ -8,12 +8,13 @@
#include "efx/Toe.h"
#include "BitFlag.h"
#define PKEFF_Light (0x1)
#define PKEFF_Doped (0x2)
#define PKEFF_Fire (0x4)
#define PKEFF_Gas (0x8)
#define PKEFF_Water (0x10)
#define PKEFF_Drown (0x20)
#define PKEFF_Light (0x1)
#define PKEFF_Doped (0x2)
#define PKEFF_Fire (0x4)
#define PKEFF_Gas (0x8)
#define PKEFF_Water (0x10)
#define PKEFF_Drown (0x20)
#define PKEFF_InMovieDraw (0x80000000)
namespace efx {
void createSimplePkAp(Vector3f&);
@ -272,10 +273,18 @@ struct TPkEffect {
inline bool isFlag(int flagID) { return mFlags.typeView & flagID; }
inline void clear()
// for start of cutscene, disable all effects
inline void killAllEffects()
{
mFlags.clear();
mBackupFlags.clear();
if (!isFlag(PKEFF_InMovieDraw)) {
mBackupFlags.typeView = mFlags.typeView;
mFlags.clear();
setFlag(PKEFF_InMovieDraw);
}
mNageBlur.forceKill();
mMoeA.forceKill();
mBlackDown.forceKill();
killKourin_();
killDoping_();
killNage_();
@ -290,13 +299,12 @@ struct TPkEffect {
inline void doDead()
{
clear();
killAllEffects();
createSimpleDead(*mHamonPosPtr, mPikiColor);
}
inline void doWaterEntry()
inline void doWaterEntry(bool flag)
{
bool flag = isFlag(PKEFF_Drown);
setFlag(PKEFF_Drown);
updateHamon_();
if (!flag) {
@ -304,6 +312,24 @@ struct TPkEffect {
}
}
inline void doCreateWater()
{
setFlag(PKEFF_Water);
createWater_(mAltStemPosition);
}
inline void doCreateChudoku()
{
setFlag(PKEFF_Gas);
createChudoku_(mStemPosition);
}
inline void doCreateMoe()
{
setFlag(PKEFF_Fire);
createMoe_(mStemPosition);
}
inline void doWaterExit()
{
resetFlag(PKEFF_Drown);
@ -341,11 +367,26 @@ struct TPkEffect {
killKourin_();
}
inline void setMovieDraw()
// for following movie draw, recreate all active effects
inline void createAllEffects()
{
doKillDoping();
doDoping();
// needs a lot more
if (isFlag(PKEFF_InMovieDraw)) {
mFlags.typeView = mBackupFlags.typeView;
resetFlag(PKEFF_InMovieDraw);
}
if (isFlag(PKEFF_Light))
doLightEffect();
if (isFlag(PKEFF_Doped))
doDoping();
if (isFlag(PKEFF_Fire))
doCreateMoe();
if (isFlag(PKEFF_Gas))
doCreateChudoku();
if (isFlag(PKEFF_Water))
doCreateWater();
if (isFlag(PKEFF_Drown))
doWaterEntry(isFlag(PKEFF_Drown));
}
BitFlag<u32> mFlags; // _00
@ -363,15 +404,14 @@ struct TPkEffect {
TPkMoeA mMoeA; // _48
TPkBlackDown mBlackDown; // _5C
ToeKourin mOeKourin; // _70
// u8 _8C[4]; // _8C, unknown
ToeDoping mOeDoping; // _90
ToeNagekira mOeNagekira; // _AC
ToeMoeBC mOeMoeBC; // _C8
ToeChudoku mOeChudoku; // _100
ToeWater mOeWater; // _11C
ToeHamonA mOeHamonA; // _154
ToeHamonB mOeHamonB; // _170
ToeMoeSmoke mOeMoeSmoke; // _18C
ToeDoping mOeDoping; // _90
ToeNagekira mOeNagekira; // _AC
ToeMoeBC mOeMoeBC; // _C8
ToeChudoku mOeChudoku; // _100
ToeWater mOeWater; // _11C
ToeHamonA mOeHamonA; // _154
ToeHamonB mOeHamonB; // _170
ToeMoeSmoke mOeMoeSmoke; // _18C
};
struct TPkEffectMgr : public JKRDisposer {

View File

@ -2204,9 +2204,9 @@ u16 seqCpuSync(JASTrack* track, u16 command)
case 0x600:
case 0x300:
case 0x800:
JADUtility::PrmSetRc<PSAutoBgm::Track>* prm = static_cast<PSAutoBgm::AutoBgm*>(seq)->mConductorMgr.mPrmSetRc;
PSAutoBgm::Conductor* prm = static_cast<PSAutoBgm::AutoBgm*>(seq)->mConductorMgr.mPrmSetRc;
P2ASSERTLINE(2128, prm);
return ((PSAutoBgm::Conductor*)prm)->seqCpuSync_AutoBgm(track, command, testID, root);
return prm->seqCpuSync_AutoBgm(track, command, testID, root);
default:
return 0;
}

View File

@ -257,201 +257,13 @@ void PikiMgr::setMovieDraw(bool drawOn)
if (!mOpenIds[i]) {
if (!mArray[i].isMovieActor()) {
if (drawOn) {
mArray[i].mEffectsObj->setMovieDraw();
mArray[i].mEffectsObj->createAllEffects();
} else {
mArray[i].mEffectsObj->clear();
mArray[i].mEffectsObj->killAllEffects();
}
}
}
}
/*
stwu r1, -0x20(r1)
mflr r0
stw r0, 0x24(r1)
clrlwi. r0, r4, 0x18
stmw r26, 8(r1)
mr r28, r4
mr r27, r3
bne lbl_8015EFB0
lbz r0, 0x39(r27)
ori r0, r0, 1
stb r0, 0x39(r27)
b lbl_8015EFBC
lbl_8015EFB0:
lbz r0, 0x39(r27)
rlwinm r0, r0, 0, 0x18, 0x1e
stb r0, 0x39(r27)
lbl_8015EFBC:
li r29, 0
li r30, 0
b lbl_8015F1E0
lbl_8015EFC8:
lwz r3, 0x2c(r27)
lbzx r0, r3, r29
cmplwi r0, 0
bne lbl_8015F1D8
lwz r0, 0x28(r27)
add r3, r0, r30
lwz r12, 0(r3)
lwz r12, 0xb8(r12)
mtctr r12
bctrl
clrlwi. r0, r3, 0x18
bne lbl_8015F1D8
clrlwi. r0, r28, 0x18
beq lbl_8015F110
lwz r3, 0x28(r27)
addi r0, r30, 0x258
lwzx r31, r3, r0
lwz r0, 0(r31)
rlwinm. r0, r0, 0, 0, 0
beq lbl_8015F02C
lwz r0, 4(r31)
stw r0, 0(r31)
lwz r0, 0(r31)
clrlwi r0, r0, 1
stw r0, 0(r31)
lbl_8015F02C:
lwz r3, 0(r31)
clrlwi. r0, r3, 0x1f
beq lbl_8015F058
ori r0, r3, 1
stw r0, 0(r31)
lwz r0, 0(r31)
rlwinm. r0, r0, 0, 0x1e, 0x1e
bne lbl_8015F058
lwz r4, 0xc(r31)
mr r3, r31
bl "createKourin___Q23efx9TPkEffectFP10Vector3<f>"
lbl_8015F058:
lwz r3, 0(r31)
rlwinm. r0, r3, 0, 0x1e, 0x1e
beq lbl_8015F080
ori r0, r3, 2
mr r3, r31
stw r0, 0(r31)
lwz r4, 0xc(r31)
bl "createDoping___Q23efx9TPkEffectFP10Vector3<f>"
mr r3, r31
bl killKourin___Q23efx9TPkEffectFv
lbl_8015F080:
lwz r3, 0(r31)
rlwinm. r0, r3, 0, 0x1d, 0x1d
beq lbl_8015F0A0
ori r0, r3, 4
mr r3, r31
stw r0, 0(r31)
lwz r4, 0xc(r31)
bl "createMoe___Q23efx9TPkEffectFP10Vector3<f>"
lbl_8015F0A0:
lwz r3, 0(r31)
rlwinm. r0, r3, 0, 0x1c, 0x1c
beq lbl_8015F0C0
ori r0, r3, 8
mr r3, r31
stw r0, 0(r31)
lwz r4, 0xc(r31)
bl "createChudoku___Q23efx9TPkEffectFP10Vector3<f>"
lbl_8015F0C0:
lwz r3, 0(r31)
rlwinm. r0, r3, 0, 0x1b, 0x1b
beq lbl_8015F0E0
ori r0, r3, 0x10
mr r3, r31
stw r0, 0(r31)
lwz r4, 0x14(r31)
bl "createWater___Q23efx9TPkEffectFP10Vector3<f>"
lbl_8015F0E0:
lwz r0, 0(r31)
rlwinm. r26, r0, 0, 0x1a, 0x1a
beq lbl_8015F1D8
ori r0, r0, 0x20
mr r3, r31
stw r0, 0(r31)
bl updateHamon___Q23efx9TPkEffectFv
cmplwi r26, 0
bne lbl_8015F1D8
addi r3, r31, 0x28
bl "createSimpleDive__3efxFR10Vector3<f>"
b lbl_8015F1D8
lbl_8015F110:
lwz r3, 0x28(r27)
addi r0, r30, 0x258
lwzx r31, r3, r0
lwz r3, 0(r31)
rlwinm. r0, r3, 0, 0, 0
bne lbl_8015F14C
stw r3, 4(r31)
li r0, 0
stb r0, 0(r31)
stb r0, 1(r31)
stb r0, 2(r31)
stb r0, 3(r31)
lwz r0, 0(r31)
oris r0, r0, 0x8000
stw r0, 0(r31)
lbl_8015F14C:
addi r3, r31, 0x34
lwz r12, 0x34(r31)
lwz r12, 0xc(r12)
mtctr r12
bctrl
addi r3, r31, 0x48
lwz r12, 0x48(r31)
lwz r12, 0xc(r12)
mtctr r12
bctrl
addi r3, r31, 0x5c
lwz r12, 0x5c(r31)
lwz r12, 0xc(r12)
mtctr r12
bctrl
mr r3, r31
bl killKourin___Q23efx9TPkEffectFv
mr r3, r31
bl killDoping___Q23efx9TPkEffectFv
mr r3, r31
bl killNage___Q23efx9TPkEffectFv
mr r3, r31
bl killMoe___Q23efx9TPkEffectFv
mr r3, r31
bl killChudoku___Q23efx9TPkEffectFv
mr r3, r31
bl killMoeSmoke___Q23efx9TPkEffectFv
mr r3, r31
bl killBlackDown___Q23efx9TPkEffectFv
mr r3, r31
bl killWater___Q23efx9TPkEffectFv
mr r3, r31
bl killHamonA___Q23efx9TPkEffectFv
mr r3, r31
bl killHamonB___Q23efx9TPkEffectFv
lbl_8015F1D8:
addi r30, r30, 0x2c8
addi r29, r29, 1
lbl_8015F1E0:
lwz r0, 0x24(r27)
cmpw r29, r0
blt lbl_8015EFC8
lmw r26, 8(r1)
lwz r0, 0x24(r1)
mtlr r0
addi r1, r1, 0x20
blr
*/
}
/**
@ -473,9 +285,10 @@ void PikiMgr::debugShapeDL(char* text)
*/
void PikiMgr::doSimpleDraw(Viewport* vp)
{
int vpid = vp->mVpId;
for (int i = 0; i < 5; i++) {
J3DModelData& modelData = *mHappaModel[i];
J3DMaterial* mat = modelData.mJointTree.mRootNode->mMaterial;
J3DMaterial* mat = (*modelData.mJointTree.mJoints)->mMaterial;
j3dSys.mVtxPos = modelData.getVertexData()->getVtxPosArray();
j3dSys.mVtxNorm = modelData.getVertexData()->getVtxNrmArray();
j3dSys.mVtxColor = modelData.getVertexData()->getVtxColorArray(0);
@ -487,19 +300,18 @@ void PikiMgr::doSimpleDraw(Viewport* vp)
if (!mOpenIds[j]) {
Piki* piki = &mArray[j];
if (piki->mLod.mFlags & 4) {
if (!piki->doped() && piki->mLod.mFlags & 0x10) {
if (!piki->doped() && piki->mLod.mFlags & 0x10 << vpid) {
int id = piki->getHappa();
// make purple and white pikmin use the red flower/bud
if ((piki->getKind() == Purple || piki->getKind() == White) && id != 0) {
if ((piki->getKind() == White || piki->getKind() == Purple) && id >= 1) {
id += 2;
}
if (i == id) {
Matrixf* mtx = piki->mLeafStemJoint->getWorldMatrix();
Matrixf* mtx2 = vp->getMatrix(1);
if (id == i) {
Mtx test;
PSMTXConcat(mtx->mMatrix.mtxView, mtx2->mMatrix.mtxView, test);
GXLoadPosMtxImm(test, 0);
Matrixf* mtx = piki->mLeafStemJoint->getWorldMatrix();
PSMTXConcat(vp->getMatrix(1)->mMatrix.mtxView, mtx->mMatrix.mtxView, test);
GXLoadPosMtxImm(test, 0);
GXLoadNrmMtxImm(test, 0);
mat->mShape->simpleDrawCache();
}
}
@ -508,126 +320,6 @@ void PikiMgr::doSimpleDraw(Viewport* vp)
}
}
}
/*
stwu r1, -0x60(r1)
mflr r0
stw r0, 0x64(r1)
stmw r22, 0x38(r1)
mr r23, r3
mr r24, r4
li r3, 0x10
mr r29, r23
li r27, 0
lhz r0, 0x18(r4)
lis r4, j3dSys@ha
addi r31, r4, j3dSys@l
slw r28, r3, r0
lbl_8015F2B8:
lwz r5, 0x58(r29)
li r0, 0
lwz r4, 0x28(r5)
lwz r3, 0xa0(r5)
lwz r4, 0(r4)
lwz r26, 0x58(r4)
stw r3, 0x10c(r31)
lwz r3, 0xa4(r5)
stw r3, 0x110(r31)
lwz r3, 0xac(r5)
stw r3, 0x114(r31)
stw r0, sOldVcdVatCmd__8J3DShape@sda21(r13)
b lbl_8015F3F0
lbl_8015F2EC:
mr r3, r26
lwz r12, 0(r26)
lwz r12, 0x1c(r12)
mtctr r12
bctrl
lwz r3, 8(r26)
bl loadPreDrawSetting__8J3DShapeCFv
li r25, 0
li r30, 0
b lbl_8015F3E0
lbl_8015F314:
lwz r3, 0x2c(r23)
lbzx r0, r3, r25
cmplwi r0, 0
bne lbl_8015F3D8
lwz r0, 0x28(r23)
add r22, r0, r30
lbz r0, 0xd8(r22)
rlwinm. r0, r0, 0, 0x1d, 0x1d
beq lbl_8015F3D8
mr r3, r22
bl doped__Q24Game4PikiFv
clrlwi. r0, r3, 0x18
bne lbl_8015F3D8
lbz r0, 0xd8(r22)
and. r0, r0, r28
beq lbl_8015F3D8
lbz r3, 0x2b8(r22)
lbz r0, 0x2b9(r22)
cmpwi r3, 4
mr r4, r0
beq lbl_8015F370
cmpwi r3, 3
bne lbl_8015F37C
lbl_8015F370:
cmpwi r0, 1
blt lbl_8015F37C
addi r4, r4, 2
lbl_8015F37C:
cmpw r4, r27
bne lbl_8015F3D8
lwz r3, 0x268(r22)
bl getWorldMatrix__Q28SysShape5JointFv
mr r0, r3
mr r3, r24
mr r22, r0
li r4, 1
bl getMatrix__8ViewportFb
mr r4, r22
addi r5, r1, 8
bl PSMTXConcat
addi r3, r1, 8
li r4, 0
bl GXLoadPosMtxImm
addi r3, r1, 8
li r4, 0
bl GXLoadNrmMtxImm
lwz r3, 8(r26)
lwz r12, 0(r3)
lwz r12, 0x14(r12)
mtctr r12
bctrl
lbl_8015F3D8:
addi r30, r30, 0x2c8
addi r25, r25, 1
lbl_8015F3E0:
lwz r0, 0x24(r23)
cmpw r25, r0
blt lbl_8015F314
lwz r26, 4(r26)
lbl_8015F3F0:
cmplwi r26, 0
bne lbl_8015F2EC
addi r27, r27, 1
addi r29, r29, 4
cmpwi r27, 5
blt lbl_8015F2B8
lmw r22, 0x38(r1)
lwz r0, 0x64(r1)
mtlr r0
addi r1, r1, 0x60
blr
*/
}
/**
@ -1939,13 +1631,16 @@ void PikiMgr::caveSaveFormationPikmins(bool doKill)
Piki* list[100];
CI_LOOP(iterator)
{
Piki* piki = *iterator;
if (piki->isAlive() && (piki->getCurrActionID() != 0 || (piki->mFakePikiFlags.typeView & 0x40))) {
list[i++] = piki;
}
}
if (i == 0) {
for (int j = 125; j > 0; j--) { }
}
for (int j = 0; j < i; j++) {
playData->mCaveSaveData.mCavePikis(list[j])++;
if (doKill) {