Link Frog.cpp

This commit is contained in:
HeartPiece 2023-10-28 17:21:45 +11:00
parent 1086641c63
commit 93a2a95703
12 changed files with 275 additions and 2804 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1063,7 +1063,7 @@ LIBS = [
"plugProjectNishimuraU/FrogState", "plugProjectNishimuraU/FrogState",
["plugProjectNishimuraU/FrogAnimator", True], ["plugProjectNishimuraU/FrogAnimator", True],
["plugProjectNishimuraU/FrogMgr", True], ["plugProjectNishimuraU/FrogMgr", True],
"plugProjectNishimuraU/Frog", ["plugProjectNishimuraU/Frog", True],
["plugProjectNishimuraU/UjibMgr", True], ["plugProjectNishimuraU/UjibMgr", True],
"plugProjectNishimuraU/Ujib", "plugProjectNishimuraU/Ujib",
"plugProjectNishimuraU/UjibState", "plugProjectNishimuraU/UjibState",

View File

@ -168,7 +168,7 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/panModokiState.cpp">panModokiState.cpp</a> | 27302 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/miulin.cpp">miulin.cpp</a> | 34423 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/panModokiState.cpp">panModokiState.cpp</a> | 27302 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/miulin.cpp">miulin.cpp</a> | 34423 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/jigumoState.cpp">jigumoState.cpp</a> | 39961 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/jigumo.cpp">jigumo.cpp</a> | 40314 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/jigumoState.cpp">jigumoState.cpp</a> | 39961 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/jigumo.cpp">jigumo.cpp</a> | 40314 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/shijimiChou.cpp">shijimiChou.cpp</a> | 43521 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/kingChappyState.cpp">kingChappyState.cpp</a> | 59800 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/shijimiChou.cpp">shijimiChou.cpp</a> | 43521 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/kingChappyState.cpp">kingChappyState.cpp</a> | 59800 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/umiMushi.cpp">umiMushi.cpp</a> | 77787 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/kingChappy.cpp">kingChappy.cpp</a> | 86616 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/umiMushi.cpp">umiMushi.cpp</a> | 70275 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/kingChappy.cpp">kingChappy.cpp</a> | 86616 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/panModoki.cpp">panModoki.cpp</a> | 99675 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/hiScore2D.cpp">hiScore2D.cpp</a> | 122691 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/panModoki.cpp">panModoki.cpp</a> | 99675 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/hiScore2D.cpp">hiScore2D.cpp</a> | 122691 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/blackMan.cpp">blackMan.cpp</a> | 129179 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/challengeResult2D.cpp">challengeResult2D.cpp</a> | 146750 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/blackMan.cpp">blackMan.cpp</a> | 129179 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/challengeResult2D.cpp">challengeResult2D.cpp</a> | 146750 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/challengeSelect2D.cpp">challengeSelect2D.cpp</a> | 169988 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/zukan2D.cpp">zukan2D.cpp</a> | 174267 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/challengeSelect2D.cpp">challengeSelect2D.cpp</a> | 169988 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectMorimuraU/zukan2D.cpp">zukan2D.cpp</a> | 174267 |
@ -186,28 +186,28 @@
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeWholeShadow.cpp">SnakeWholeShadow.cpp</a> | 16769 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeCrowShadow.cpp">SnakeCrowShadow.cpp</a> | 16878 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeWholeShadow.cpp">SnakeWholeShadow.cpp</a> | 16769 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeCrowShadow.cpp">SnakeCrowShadow.cpp</a> | 16878 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandMapMgr.cpp">RandMapMgr.cpp</a> | 17012 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Rock.cpp">Rock.cpp</a> | 19444 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandMapMgr.cpp">RandMapMgr.cpp</a> | 17012 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Rock.cpp">Rock.cpp</a> | 19444 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ImomushiState.cpp">ImomushiState.cpp</a> | 19656 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemMgr.cpp">IKSystemMgr.cpp</a> | 20392 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ImomushiState.cpp">ImomushiState.cpp</a> | 19656 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemMgr.cpp">IKSystemMgr.cpp</a> | 20392 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Frog.cpp">Frog.cpp</a> | 21042 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UjiaState.cpp">UjiaState.cpp</a> | 21062 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UjiaState.cpp">UjiaState.cpp</a> | 21062 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecHiba.cpp">ElecHiba.cpp</a> | 21837 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecHiba.cpp">ElecHiba.cpp</a> | 21837 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/QueenState.cpp">QueenState.cpp</a> | 22455 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/QueenState.cpp">QueenState.cpp</a> | 22455 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MiniHoudai.cpp">MiniHoudai.cpp</a> | 22848 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MiniHoudai.cpp">MiniHoudai.cpp</a> | 22848 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Ujia.cpp">Ujia.cpp</a> | 22963 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Ujia.cpp">Ujia.cpp</a> | 22963 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Ujib.cpp">Ujib.cpp</a> | 23599 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Ujib.cpp">Ujib.cpp</a> | 23599 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Queen.cpp">Queen.cpp</a> | 23631 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Queen.cpp">Queen.cpp</a> | 23631 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecBug.cpp">ElecBug.cpp</a> | 24348 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ElecBug.cpp">ElecBug.cpp</a> | 24348 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ArmorState.cpp">ArmorState.cpp</a> | 24884 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ArmorState.cpp">ArmorState.cpp</a> | 24884 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SaraiState.cpp">SaraiState.cpp</a> | 25019 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SaraiState.cpp">SaraiState.cpp</a> | 25019 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TobiState.cpp">TobiState.cpp</a> | 25154 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TobiState.cpp">TobiState.cpp</a> | 25154 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UjibState.cpp">UjibState.cpp</a> | 25669 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/UjibState.cpp">UjibState.cpp</a> | 25669 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Armor.cpp">Armor.cpp</a> | 25803 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Armor.cpp">Armor.cpp</a> | 25803 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Tobi.cpp">Tobi.cpp</a> | 25931 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Tobi.cpp">Tobi.cpp</a> | 25931 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemBase.cpp">IKSystemBase.cpp</a> | 29003 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/IKSystemBase.cpp">IKSystemBase.cpp</a> | 29003 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TankState.cpp">TankState.cpp</a> | 29156 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/TankState.cpp">TankState.cpp</a> | 29156 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/FrogState.cpp">FrogState.cpp</a> | 30741 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/FrogState.cpp">FrogState.cpp</a> | 30741 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/playCamera.cpp">playCamera.cpp</a> | 32486 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/playCamera.cpp">playCamera.cpp</a> | 32486 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BigTreasureShadow.cpp">BigTreasureShadow.cpp</a> | 32591 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BigTreasureShadow.cpp">BigTreasureShadow.cpp</a> | 32591 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/KabutoState.cpp">KabutoState.cpp</a> | 33219 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/KabutoState.cpp">KabutoState.cpp</a> | 33219 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MarState.cpp">MarState.cpp</a> | 33680 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MarState.cpp">MarState.cpp</a> | 33680 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Imomushi.cpp">Imomushi.cpp</a> | 34312 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Imomushi.cpp">Imomushi.cpp</a> | 34312 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeWholeState.cpp">SnakeWholeState.cpp</a> | 35428 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeWholeState.cpp">SnakeWholeState.cpp</a> | 35428 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BombSaraiState.cpp">BombSaraiState.cpp</a> | 36444 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BombSaraiState.cpp">BombSaraiState.cpp</a> | 36444 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeCrow.cpp">SnakeCrow.cpp</a> | 36617 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeCrow.cpp">SnakeCrow.cpp</a> | 36617 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandMapScore.cpp">RandMapScore.cpp</a> | 37055 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandMapScore.cpp">RandMapScore.cpp</a> | 37055 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Mar.cpp">Mar.cpp</a> | 38856 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Mar.cpp">Mar.cpp</a> | 38856 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Hanachirashi.cpp">Hanachirashi.cpp</a> | 39638 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/Hanachirashi.cpp">Hanachirashi.cpp</a> | 39638 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/HanachirashiState.cpp">HanachirashiState.cpp</a> | 40261 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/HanachirashiState.cpp">HanachirashiState.cpp</a> | 40261 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeCrowState.cpp">SnakeCrowState.cpp</a> | 41626 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeCrowState.cpp">SnakeCrowState.cpp</a> | 41626 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/DangoMushiState.cpp">DangoMushiState.cpp</a> | 41892 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/DangoMushiState.cpp">DangoMushiState.cpp</a> | 41892 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ShadowCylinder.cpp">ShadowCylinder.cpp</a> | 43882 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/ShadowCylinder.cpp">ShadowCylinder.cpp</a> | 43882 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/OniKurage.cpp">OniKurage.cpp</a> | 45267 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/OniKurage.cpp">OniKurage.cpp</a> | 45267 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeWhole.cpp">SnakeWhole.cpp</a> | 45683 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/SnakeWhole.cpp">SnakeWhole.cpp</a> | 45683 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MiniHoudaiShotGun.cpp">MiniHoudaiShotGun.cpp</a> | 46401 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MiniHoudaiShotGun.cpp">MiniHoudaiShotGun.cpp</a> | 46401 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/HoudaiShotGun.cpp">HoudaiShotGun.cpp</a> | 46865 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/HoudaiShotGun.cpp">HoudaiShotGun.cpp</a> | 46865 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/DangoMushi.cpp">DangoMushi.cpp</a> | 48515 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/DangoMushi.cpp">DangoMushi.cpp</a> | 48515 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/KumaKochappyState.cpp">KumaKochappyState.cpp</a> | 50578 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/KumaKochappyState.cpp">KumaKochappyState.cpp</a> | 50578 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandMapUnit.cpp">RandMapUnit.cpp</a> | 68659 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandMapUnit.cpp">RandMapUnit.cpp</a> | 68659 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandEnemyUnit.cpp">RandEnemyUnit.cpp</a> | 72778 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/RandEnemyUnit.cpp">RandEnemyUnit.cpp</a> | 72778 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/KumaChappyState.cpp">KumaChappyState.cpp</a> | 74762 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/KumaChappyState.cpp">KumaChappyState.cpp</a> | 74762 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MiniHoudaiState.cpp">MiniHoudaiState.cpp</a> | 94735 |
| <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/MiniHoudaiState.cpp">MiniHoudaiState.cpp</a> | 94735 | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BigTreasureAttack.cpp">BigTreasureAttack.cpp</a> | 100795 | | <a href="https://github.com/projectPiki/pikmin2/tree/main/src/plugProjectNishimuraU/BigTreasureAttack.cpp">BigTreasureAttack.cpp</a> | 100795 | | |
### <section id="plugProjectOgawaU">plugProjectOgawaU</section> ### <section id="plugProjectOgawaU">plugProjectOgawaU</section>
| File | Size (bytes) | File | Size (bytes) | | File | Size (bytes) | File | Size (bytes) |

View File

@ -66,7 +66,7 @@ struct Obj : public EnemyBase {
virtual void doStartMovie(); // _2F0 virtual void doStartMovie(); // _2F0
virtual void doEndMovie(); // _2F4 virtual void doEndMovie(); // _2F4
virtual void setFSM(FSM* fsm); // _2F8 virtual void setFSM(FSM* fsm); // _2F8
virtual Vector3f viewGetCollTreeOffset() { return Vector3f(20.0f, 15.0f, 0.0f); } // _2FC (weak) virtual Vector3f viewGetCollTreeOffset(); // _2FC
virtual void attackNaviPosition() { } // _300 (weak) virtual void attackNaviPosition() { } // _300 (weak)
//////////////// VTABLE END //////////////// VTABLE END
@ -87,7 +87,7 @@ struct Obj : public EnemyBase {
// _00-_2BC = EnemyBase // _00-_2BC = EnemyBase
FSM* mFsm; // _2BC FSM* mFsm; // _2BC
f32 mAirTimer; // _2C0 f32 mAirTimer; // _2C0
f32 _2C4; // _2C4 f32 mAlertTimer; // _2C4
Vector3f mTargetPosition; // _2C8 Vector3f mTargetPosition; // _2C8
StateID mNextState; // _2D4 StateID mNextState; // _2D4
bool mIsInAir; // _2D8 bool mIsInAir; // _2D8

View File

@ -221,7 +221,7 @@ struct Obj : public EnemyBase {
// _00 = VTBL // _00 = VTBL
// _00-_2BC = EnemyBase // _00-_2BC = EnemyBase
Vector3f _2BC; // _2BC Vector3f mGoalPosition; // _2BC
StateID mNextState; // _2C8 StateID mNextState; // _2C8
MouthSlots mMouthSlots; // _2CC MouthSlots mMouthSlots; // _2CC
SysShape::Joint* mHeadJoint; // _2D4 SysShape::Joint* mHeadJoint; // _2D4

View File

@ -178,6 +178,8 @@ struct Vector3 {
// Squared magnitude // Squared magnitude
inline f32 sqrMagnitude() const { return x * x + y * y + z * z; } inline f32 sqrMagnitude() const { return x * x + y * y + z * z; }
// 2D magnitude
inline f32 sqrMagnitude2D() const { return x * x + z * z; }
// Quick length // Quick length
inline f32 qLength() { return pikmin2_sqrtf(sqrMagnitude()); } inline f32 qLength() { return pikmin2_sqrtf(sqrMagnitude()); }
@ -186,6 +188,8 @@ struct Vector3 {
f32 sqrDistance(Vector3&); f32 sqrDistance(Vector3&);
f32 distance(JGeometry::TVec3f&); f32 distance(JGeometry::TVec3f&);
f32 normalise(); f32 normalise();
f32 length2D() const;
f32 normalise2D();
void read(Stream&); void read(Stream&);
void write(Stream&); void write(Stream&);
@ -249,6 +253,18 @@ inline f32 Vector3f::length() const
} }
} }
template <>
inline f32 Vector3f::length2D() const
{
if (sqrMagnitude2D() > 0.0f) {
Vector3f vec = Vector3f(x, y, z);
f32 sqrLen = SQUARE(vec.x) + SQUARE(z);
return sqrtf(sqrLen);
} else {
return 0.0f;
}
}
template <> template <>
inline f32 Vector3f::normalise() inline f32 Vector3f::normalise()
{ {
@ -264,6 +280,21 @@ inline f32 Vector3f::normalise()
return 0.0f; return 0.0f;
} }
template <>
inline f32 Vector3f::normalise2D()
{
f32 len = length2D();
if (len > 0.0f) {
x /= len;
z /= len;
} else {
x = z = 0.0f;
}
return len;
}
inline f32 _lenVec(Vector3f& vec) inline f32 _lenVec(Vector3f& vec)
{ {
Vector2f sqr(vec.z * vec.z, vec.x * vec.x + vec.y * vec.y); Vector2f sqr(vec.z * vec.z, vec.x * vec.x + vec.y * vec.y);

View File

@ -7,8 +7,8 @@
namespace efx { namespace efx {
struct TUmiAttack : public TSimpleMtx1 { struct TUmiAttack : public TSimpleMtx1 {
inline TUmiAttack() inline TUmiAttack(Matrixf* mtx)
: TSimpleMtx1(nullptr, PID_UmiAttack) : TSimpleMtx1(mtx, PID_UmiAttack)
{ {
} }

View File

@ -6,6 +6,8 @@
#include "JSystem/J3D/J3DMtxBuffer.h" #include "JSystem/J3D/J3DMtxBuffer.h"
#include "Game/EnemyFunc.h" #include "Game/EnemyFunc.h"
#include "JSystem/JMath.h" #include "JSystem/JMath.h"
#include "Dolphin/rand.h"
#include "PS.h"
namespace Game { namespace Game {
namespace UmiMushi { namespace UmiMushi {
@ -98,17 +100,17 @@ void Obj::onInit(CreatureInitArg* initArg)
disableEvent(0, EB_DeathEffectEnabled); disableEvent(0, EB_DeathEffectEnabled);
mHeadJoint = mModel->getJoint("head_joint1"); mHeadJoint = mModel->getJoint("head_joint1");
P2ASSERTLINE(124, mHeadJoint); P2ASSERTLINE(124, mHeadJoint);
mTargetNavi = nullptr; mTargetNavi = nullptr;
_2BC = mHomePosition; mGoalPosition = mHomePosition;
_2E0 = 0; _2E0 = 0;
_2E4 = mHomePosition; _2E4 = mHomePosition;
_2F0 = 0; _2F0 = 0;
_2F4 = 0; _2F4 = 0;
_2FC = 0.0f; _2FC = 0.0f;
mTargetNavi = nullptr; // second null initialization of targetNavi mTargetNavi = nullptr; // second null initialization of targetNavi
_2DC = 0; _2DC = 0;
_300 = 0; _300 = 0;
mNextState = UMIMUSHI_NULL; mNextState = UMIMUSHI_NULL;
mNormalColor2.r = -25; mNormalColor2.r = -25;
mNormalColor2.g = -100; mNormalColor2.g = -100;
@ -641,7 +643,7 @@ bool Obj::isReachToGoal(f32 radius)
_2F4 = 0; _2F4 = 0;
return true; return true;
} }
return sqrDistanceXZ(mPosition, _2BC) < SQUARE(radius); // how is this not matching >:O return sqrDistanceXZ(mPosition, mGoalPosition) < SQUARE(radius); // how is this not matching >:O
} }
/* /*
@ -651,6 +653,7 @@ bool Obj::isReachToGoal(f32 radius)
*/ */
void Obj::walkFunc() void Obj::walkFunc()
{ {
f32 faceDirRads;
f32 speed = C_PARMS->mGeneral.mMoveSpeed.mValue; f32 speed = C_PARMS->mGeneral.mMoveSpeed.mValue;
f32 inA1C = C_PARMS->_A1C; f32 inA1C = C_PARMS->_A1C;
f32 rotationAccel = C_PARMS->mGeneral.mRotationalAccel.mValue; f32 rotationAccel = C_PARMS->mGeneral.mRotationalAccel.mValue;
@ -667,43 +670,20 @@ void Obj::walkFunc()
rotationDelta = 0.0f; rotationDelta = 0.0f;
} }
mFaceDir = _2F8; faceDirRads = TORADIANS(rotationDelta);
f32 faceDirRads = rotationDelta * PI * DEG2RAD; mFaceDir = _2F8;
Vector3f position = getPosition(); turnToTarget2(mGoalPosition, rotationAccel, rotationSpeed);
Vector2f positionDiff = Vector2f(position.x - _2BC.x, position.z - _2BC.z);
f32 targetRotation = JMath::atanTable_.atan2_(positionDiff.x, positionDiff.y); f32 deltaFaceDir = mFaceDir + faceDirRads;
targetRotation = roundAng(targetRotation);
f32 faceDir = getFaceDir(); f32 x = pikmin2_sinf(deltaFaceDir) * speed;
angDist(targetRotation, faceDir); f32 y = getTargetVelocity().y;
f32 z = pikmin2_cosf(deltaFaceDir);
f32 totalRotation = targetRotation * rotationAccel; _2F8 = mFaceDir;
f32 maxRotationSpeedRadians = rotationSpeed * PI * DEG2RAD; f32 faceDirOffset = roundAng(faceDirRads);
f32 rotationAmount = totalRotation; updateFaceDir(mFaceDir + faceDirOffset);
if (maxRotationSpeedRadians < FABS(totalRotation)) { mTargetVelocity = Vector3f(x, y, speed * z); // sure
rotationAmount = maxRotationSpeedRadians;
if (totalRotation <= 0.0f) {
totalRotation = -totalRotation;
}
}
faceDir = getFaceDir();
mFaceDir = roundAng(faceDir + totalRotation);
mRotation.y = mFaceDir;
f32 deltaFaceDir = faceDirRads + mFaceDir;
f32 sinSmth = pikmin2_sinf(deltaFaceDir) * speed;
f32 cosSmth = pikmin2_cosf(deltaFaceDir) * speed;
_2F8 = mFaceDir;
mFaceDir += faceDirRads;
mRotation.y = mFaceDir;
mTargetVelocity = Vector3f(sinSmth, mTargetVelocity.y, cosSmth);
_2F0++; _2F0++;
@ -711,7 +691,7 @@ void Obj::walkFunc()
if (sqrDistanceXZ(mPosition, _2E4) < SQUARE(30.0f)) { if (sqrDistanceXZ(mPosition, _2E4) < SQUARE(30.0f)) {
_2E0 = 120; _2E0 = 120;
mTargetCreature = nullptr; mTargetCreature = nullptr;
_2BC = mHomePosition; mGoalPosition = mHomePosition;
} }
_2E4 = mPosition; _2E4 = mPosition;
_2F0 = 0; _2F0 = 0;
@ -726,100 +706,15 @@ void Obj::walkFunc()
*/ */
void Obj::setNextGoal() void Obj::setNextGoal()
{ {
/* f32 rad = C_PARMS->mGeneral.mTerritoryRadius();
stwu r1, -0x40(r1) if (gameSystem && gameSystem->mIsInCave) {
mflr r0 rad = C_PROPERPARMS.mCaveTerritory();
stw r0, 0x44(r1) }
stfd f31, 0x30(r1)
psq_st f31, 56(r1), 0, qr0
stw r31, 0x2c(r1)
mr r31, r3
lwz r3, gameSystem__4Game@sda21(r13)
lwz r4, 0xc0(r31)
cmplwi r3, 0
lfs f31, 0x35c(r4)
beq lbl_80384FD8
lbz r0, 0x48(r3)
cmplwi r0, 0
beq lbl_80384FD8
lfs f31, 0x934(r4)
lbl_80384FD8: mGoalPosition = mHomePosition;
lfs f0, 0x198(r31) f32 randAngle = TAU * randFloat();
stfs f0, 0x2bc(r31) mGoalPosition.x += rad * pikmin2_sinf(randAngle);
lfs f0, 0x19c(r31) mGoalPosition.z += rad * pikmin2_cosf(randAngle);
stfs f0, 0x2c0(r31)
lfs f0, 0x1a0(r31)
stfs f0, 0x2c4(r31)
bl rand
xoris r3, r3, 0x8000
lis r0, 0x4330
stw r3, 0xc(r1)
lfd f3, lbl_8051EDE8@sda21(r2)
stw r0, 8(r1)
lfs f2, lbl_8051EDE0@sda21(r2)
lfd f0, 8(r1)
lfs f1, lbl_8051EDE4@sda21(r2)
fsubs f3, f0, f3
lfs f0, lbl_8051EDA0@sda21(r2)
fdivs f2, f3, f2
fmuls f3, f1, f2
fcmpo cr0, f3, f0
bge lbl_80385058
lfs f0, lbl_8051EDD4@sda21(r2)
lis r3, sincosTable___5JMath@ha
addi r3, r3, sincosTable___5JMath@l
fmuls f0, f3, f0
fctiwz f0, f0
stfd f0, 0x10(r1)
lwz r0, 0x14(r1)
rlwinm r0, r0, 3, 0x12, 0x1c
lfsx f0, r3, r0
fneg f2, f0
b lbl_8038507C
lbl_80385058:
lfs f0, lbl_8051EDD8@sda21(r2)
lis r3, sincosTable___5JMath@ha
addi r3, r3, sincosTable___5JMath@l
fmuls f0, f3, f0
fctiwz f0, f0
stfd f0, 0x18(r1)
lwz r0, 0x1c(r1)
rlwinm r0, r0, 3, 0x12, 0x1c
lfsx f2, r3, r0
lbl_8038507C:
lfs f1, 0x2bc(r31)
lfs f0, lbl_8051EDA0@sda21(r2)
fmadds f1, f31, f2, f1
fcmpo cr0, f3, f0
stfs f1, 0x2bc(r31)
bge lbl_80385098
fneg f3, f3
lbl_80385098:
lfs f1, lbl_8051EDD8@sda21(r2)
lis r3, sincosTable___5JMath@ha
addi r3, r3, sincosTable___5JMath@l
lfs f0, 0x2c4(r31)
fmuls f1, f3, f1
fctiwz f1, f1
stfd f1, 0x20(r1)
lwz r0, 0x24(r1)
rlwinm r0, r0, 3, 0x12, 0x1c
add r3, r3, r0
lfs f1, 4(r3)
fmadds f0, f31, f1, f0
stfs f0, 0x2c4(r31)
psq_l f31, 56(r1), 0, qr0
lwz r0, 0x44(r1)
lfd f31, 0x30(r1)
lwz r31, 0x2c(r1)
mtlr r0
addi r1, r1, 0x40
blr
*/
} }
/* /*
@ -1392,6 +1287,7 @@ lbl_803858CC:
*/ */
void Obj::resetColor() void Obj::resetColor()
{ {
/* /*
stwu r1, -0x80(r1) stwu r1, -0x80(r1)
mflr r0 mflr r0
@ -1521,6 +1417,7 @@ lbl_803859AC:
*/ */
f32 Obj::turnFunc() f32 Obj::turnFunc()
{ {
/* /*
stwu r1, -0x70(r1) stwu r1, -0x70(r1)
mflr r0 mflr r0
@ -2817,79 +2714,20 @@ void Obj::fadeColorEffect()
*/ */
void Obj::createColorEffect() void Obj::createColorEffect()
{ {
/* if (mTargetNavi) {
stwu r1, -0x20(r1) efx::Arg fxArg(mPosition);
mflr r0 _300 = 0;
stw r0, 0x24(r1) _2DC = true;
stw r31, 0x1c(r1) if (mTargetNavi->mNaviIndex == NAVIID_Olimar) {
mr r31, r3 mEfxWeakRed->create(&fxArg);
lwz r0, 0x2d8(r3) mEfxEyeRed[0]->create(&fxArg);
cmplwi r0, 0 mEfxEyeRed[1]->create(&fxArg);
beq lbl_80386D18 } else {
lis r4, __vt__Q23efx3Arg@ha mEfxWeakBlue->create(&fxArg);
li r3, 0 mEfxEyeBlue[0]->create(&fxArg);
addi r4, r4, __vt__Q23efx3Arg@l mEfxEyeBlue[1]->create(&fxArg);
li r0, 1 }
stw r4, 8(r1) }
lfs f0, 0x18c(r31)
stfs f0, 0xc(r1)
lfs f0, 0x190(r31)
stfs f0, 0x10(r1)
lfs f0, 0x194(r31)
stfs f0, 0x14(r1)
stw r3, 0x300(r31)
stb r0, 0x2dc(r31)
lwz r3, 0x2d8(r31)
lhz r0, 0x2dc(r3)
cmplwi r0, 0
bne lbl_80386CD0
lwz r3, 0x368(r31)
addi r4, r1, 8
lwz r12, 0(r3)
lwz r12, 8(r12)
mtctr r12
bctrl
lwz r3, 0x370(r31)
addi r4, r1, 8
lwz r12, 0(r3)
lwz r12, 8(r12)
mtctr r12
bctrl
lwz r3, 0x374(r31)
addi r4, r1, 8
lwz r12, 0(r3)
lwz r12, 8(r12)
mtctr r12
bctrl
b lbl_80386D18
lbl_80386CD0:
lwz r3, 0x36c(r31)
addi r4, r1, 8
lwz r12, 0(r3)
lwz r12, 8(r12)
mtctr r12
bctrl
lwz r3, 0x378(r31)
addi r4, r1, 8
lwz r12, 0(r3)
lwz r12, 8(r12)
mtctr r12
bctrl
lwz r3, 0x37c(r31)
addi r4, r1, 8
lwz r12, 0(r3)
lwz r12, 8(r12)
mtctr r12
bctrl
lbl_80386D18:
lwz r0, 0x24(r1)
lwz r31, 0x1c(r1)
mtlr r0
addi r1, r1, 0x20
blr
*/
} }
/* /*
@ -2899,56 +2737,10 @@ lbl_80386D18:
*/ */
void Obj::attackEffect() void Obj::attackEffect()
{ {
/* efx::TUmiAttack attackFX(_388);
stwu r1, -0x40(r1) efx::ArgScale fxArg(mPosition, mScaleModifier);
mflr r0
lis r4, __vt__Q23efx5TBase@ha attackFX.create(&fxArg);
lis r5, __vt__Q23efx11TSimpleMtx1@ha
stw r0, 0x44(r1)
addi r0, r4, __vt__Q23efx5TBase@l
lis r4, __vt__Q23efx8TSimple1@ha
li r8, 0x1d3
lwz r9, 0x388(r3)
li r7, 0
stw r0, 0x14(r1)
addi r0, r4, __vt__Q23efx8TSimple1@l
lis r4, __vt__Q23efx10TUmiAttack@ha
stw r0, 0x14(r1)
addi r0, r5, __vt__Q23efx11TSimpleMtx1@l
addi r6, r4, __vt__Q23efx10TUmiAttack@l
lis r5, __vt__Q23efx3Arg@ha
stw r0, 0x14(r1)
lis r4, __vt__Q23efx8ArgScale@ha
addi r0, r4, __vt__Q23efx8ArgScale@l
addi r5, r5, __vt__Q23efx3Arg@l
sth r8, 0x18(r1)
addi r4, r1, 0x24
stw r7, 0x1c(r1)
stw r9, 0x20(r1)
stw r6, 0x14(r1)
lwz r8, 0x18c(r3)
lwz r7, 0x190(r3)
lwz r6, 0x194(r3)
lfs f3, 0x1f8(r3)
addi r3, r1, 0x14
stw r8, 8(r1)
stw r7, 0xc(r1)
lfs f2, 8(r1)
stw r6, 0x10(r1)
lfs f1, 0xc(r1)
stw r5, 0x24(r1)
lfs f0, 0x10(r1)
stfs f2, 0x28(r1)
stfs f1, 0x2c(r1)
stfs f0, 0x30(r1)
stw r0, 0x24(r1)
stfs f3, 0x34(r1)
bl create__Q23efx10TUmiAttackFPQ23efx3Arg
lwz r0, 0x44(r1)
mtlr r0
addi r1, r1, 0x40
blr
*/
} }
/* /*
@ -2958,56 +2750,11 @@ void Obj::attackEffect()
*/ */
void Obj::meltEffect() void Obj::meltEffect()
{ {
/* efx::TUmiDeadmelt meltFX;
stwu r1, -0x40(r1) efx::ArgScale fxArg(mHamonPosition, mScaleModifier);
mflr r0
lis r5, __vt__Q23efx8TSimple1@ha meltFX.create(&fxArg);
lis r4, __vt__Q23efx5TBase@ha _2DD = 1;
stw r0, 0x44(r1)
addi r0, r4, __vt__Q23efx5TBase@l
addi r6, r5, __vt__Q23efx8TSimple1@l
lis r4, __vt__Q23efx12TUmiDeadmelt@ha
stw r31, 0x3c(r1)
li r5, 0x1d5
mr r31, r3
lis r3, __vt__Q23efx3Arg@ha
stw r0, 0x14(r1)
li r0, 0
stw r6, 0x14(r1)
addi r6, r4, __vt__Q23efx12TUmiDeadmelt@l
lis r4, __vt__Q23efx8ArgScale@ha
sth r5, 0x18(r1)
addi r5, r3, __vt__Q23efx3Arg@l
addi r3, r1, 0x14
stw r0, 0x1c(r1)
addi r0, r4, __vt__Q23efx8ArgScale@l
addi r4, r1, 0x20
stw r6, 0x14(r1)
lwz r8, 0x38c(r31)
lwz r7, 0x390(r31)
lwz r6, 0x394(r31)
lfs f3, 0x1f8(r31)
stw r8, 8(r1)
stw r7, 0xc(r1)
lfs f2, 8(r1)
stw r6, 0x10(r1)
lfs f1, 0xc(r1)
stw r5, 0x20(r1)
lfs f0, 0x10(r1)
stfs f2, 0x24(r1)
stfs f1, 0x28(r1)
stfs f0, 0x2c(r1)
stw r0, 0x20(r1)
stfs f3, 0x30(r1)
bl create__Q23efx12TUmiDeadmeltFPQ23efx3Arg
li r0, 1
stb r0, 0x2dd(r31)
lwz r0, 0x44(r1)
lwz r31, 0x3c(r1)
mtlr r0
addi r1, r1, 0x40
blr
*/
} }
/* /*
@ -3017,77 +2764,17 @@ void Obj::meltEffect()
*/ */
void Obj::flickEffect() void Obj::flickEffect()
{ {
/* if (mWaterBox) {
stwu r1, -0x50(r1) efx::TUmiFlick flickFX;
mflr r0 efx::ArgScale fxArg(mHamonPosition, mScaleModifier);
stw r0, 0x54(r1)
stw r31, 0x4c(r1)
mr r31, r3
lwz r0, 0x280(r3)
cmplwi r0, 0
beq lbl_80386FA4
lis r3, __vt__Q23efx5TBase@ha
li r7, 0
addi r0, r3, __vt__Q23efx5TBase@l
lis r3, __vt__Q23efx8TSimple3@ha
stw r0, 0x28(r1)
addi r0, r3, __vt__Q23efx8TSimple3@l
lis r3, __vt__Q23efx9TUmiFlick@ha
li r4, 0x1db
stw r0, 0x28(r1)
addi r6, r3, __vt__Q23efx9TUmiFlick@l
li r0, 0x1dc
li r8, 0x1dd
sth r4, 0x2c(r1)
lis r5, __vt__Q23efx3Arg@ha
lis r4, __vt__Q23efx8ArgScale@ha
addi r3, r1, 0x28
sth r0, 0x2e(r1)
addi r5, r5, __vt__Q23efx3Arg@l
addi r0, r4, __vt__Q23efx8ArgScale@l
addi r4, r1, 0x14
sth r8, 0x30(r1)
stw r7, 0x34(r1)
stw r7, 0x38(r1)
stw r7, 0x3c(r1)
stw r6, 0x28(r1)
lwz r8, 0x38c(r31)
lwz r7, 0x390(r31)
lwz r6, 0x394(r31)
lfs f3, 0x1f8(r31)
stw r8, 8(r1)
stw r7, 0xc(r1)
lfs f2, 8(r1)
stw r6, 0x10(r1)
lfs f1, 0xc(r1)
stw r5, 0x14(r1)
lfs f0, 0x10(r1)
stfs f2, 0x18(r1)
stfs f1, 0x1c(r1)
stfs f0, 0x20(r1)
stw r0, 0x14(r1)
stfs f3, 0x24(r1)
bl create__Q23efx9TUmiFlickFPQ23efx3Arg
addi r4, r31, 0x38c
li r3, 0x3849
bl PSStartSoundVec__FUlP3Vec
cmplwi r3, 0
beq lbl_80386FA4
lwz r12, 0x10(r3)
li r4, 0
lfs f1, lbl_8051EE08@sda21(r2)
li r5, 0
lwz r12, 0x2c(r12)
mtctr r12
bctrl
lbl_80386FA4: flickFX.create(&fxArg);
lwz r0, 0x54(r1)
lwz r31, 0x4c(r1) PSM::SeSound* sound = PSStartSoundVec(PSSE_EV_ITEM_LAND_WATER1_XL, (Vec*)&mHamonPosition);
mtlr r0 if (sound) {
addi r1, r1, 0x50 sound->setPitch(0.8f, 0, 0);
blr }
*/ }
} }
/* /*

View File

@ -732,7 +732,7 @@ void StateLost::exec(EnemyBase* enemy)
{ {
OBJ(enemy)->resetColor(); OBJ(enemy)->resetColor();
if (enemy->mCurAnim->mIsPlaying && enemy->mCurAnim->mType == KEYEVENT_END) { if (enemy->mCurAnim->mIsPlaying && enemy->mCurAnim->mType == KEYEVENT_END) {
OBJ(enemy)->_2BC = enemy->mHomePosition; OBJ(enemy)->mGoalPosition = enemy->mHomePosition;
transit(enemy, UMIMUSHI_Walk, nullptr); transit(enemy, UMIMUSHI_Walk, nullptr);
} }
} }

View File

@ -1,7 +1,10 @@
#include "Game/Entities/Frog.h" #include "Game/Entities/Frog.h"
#include "Game/CameraMgr.h" #include "Game/CameraMgr.h"
#include "Game/rumble.h" #include "Game/rumble.h"
#include "Game/AIConstants.h"
#include "Game/EnemyFunc.h"
#include "efx/TFrog.h" #include "efx/TFrog.h"
#include "PS.h"
#include "nans.h" #include "nans.h"
namespace Game { namespace Game {
@ -34,11 +37,11 @@ void Obj::setInitialSetting(EnemyInitialParamBase*) { }
void Obj::onInit(CreatureInitArg* initArg) void Obj::onInit(CreatureInitArg* initArg)
{ {
EnemyBase::onInit(initArg); EnemyBase::onInit(initArg);
_2C4 = 128.0f; mAlertTimer = 128.0f;
mAirTimer = 0.0f; mAirTimer = 0.0f;
mNextState = FROG_NULL; mNextState = FROG_NULL;
mIsInAir = false; mIsInAir = false;
mIsFalling = false; mIsFalling = false;
setupEffect(); setupEffect();
mFsm->start(this, FROG_Wait, nullptr); mFsm->start(this, FROG_Wait, nullptr);
} }
@ -72,193 +75,37 @@ void Obj::doUpdate()
*/ */
void Obj::doSimulationFlying(f32 step) void Obj::doSimulationFlying(f32 step)
{ {
f32 remainingAirTime = C_PROPERPARMS.mAirTime() - mAirTimer;
if (remainingAirTime > 0.0f) {
Vector3f prevVel = mCurrentVelocity;
f32 speed = prevVel.length2D();
mCurrentVelocity.x = mTargetPosition.x - mPosition.x;
mCurrentVelocity.z = mTargetPosition.z - mPosition.z;
f32 newSpeed = mCurrentVelocity.length2D();
f32 norm = (2.0f * newSpeed) / remainingAirTime;
if (norm > speed) {
mCurrentVelocity.x = prevVel.x;
mCurrentVelocity.z = prevVel.z;
} else if (norm > 0.0f) {
mCurrentVelocity.x = norm * (mCurrentVelocity.x / newSpeed);
mCurrentVelocity.z = norm * (mCurrentVelocity.z / newSpeed);
} else {
mCurrentVelocity.z = 0.0f;
mCurrentVelocity.x = 0.0f;
}
} else {
mCurrentVelocity.z = 0.0f;
mCurrentVelocity.x = 0.0f;
}
/* mCurrentVelocity.y -= step * _aiConstants->mGravity.mData;
stwu r1, -0x60(r1) if (mCurrentVelocity.y > 0.0f) {
mflr r0 turnToTarget2(mTargetPosition, C_PARMS->mGeneral.mRotationalAccel(), C_PARMS->mGeneral.mRotationalSpeed());
stw r0, 0x64(r1) } else {
stfd f31, 0x50(r1) mCurrentVelocity.y = 0.0f;
psq_st f31, 88(r1), 0, qr0 }
stfd f30, 0x40(r1)
psq_st f30, 72(r1), 0, qr0
stfd f29, 0x30(r1)
psq_st f29, 56(r1), 0, qr0
stw r31, 0x2c(r1)
mr r31, r3
lfs f0, lbl_8051AACC@sda21(r2)
lwz r3, 0xc0(r3)
lfs f2, 0x2c0(r31)
lfs f3, 0x81c(r3)
fsubs f8, f3, f2
fcmpo cr0, f8, f0
ble lbl_802588AC
lfs f6, 0x1d0(r31)
lfs f5, 0x1c8(r31)
fmuls f2, f6, f6
fmadds f4, f5, f5, f2
fcmpo cr0, f4, f0
ble lbl_802587F4
ble lbl_802587F8
frsqrte f0, f4
fmuls f4, f0, f4
b lbl_802587F8
lbl_802587F4: mAirTimer += sys->mDeltaTime;
fmr f4, f0
lbl_802587F8:
lfs f3, 0x2c8(r31)
lfs f2, 0x18c(r31)
lfs f0, lbl_8051AACC@sda21(r2)
fsubs f2, f3, f2
stfs f2, 0x1c8(r31)
lfs f3, 0x2d0(r31)
lfs f2, 0x194(r31)
fsubs f2, f3, f2
stfs f2, 0x1d0(r31)
lfs f7, 0x1c8(r31)
lfs f3, 0x1d0(r31)
fmuls f2, f7, f7
fmuls f3, f3, f3
fadds f2, f2, f3
fcmpo cr0, f2, f0
ble lbl_80258850
fmadds f2, f7, f7, f3
fcmpo cr0, f2, f0
ble lbl_80258854
frsqrte f0, f2
fmuls f2, f0, f2
b lbl_80258854
lbl_80258850:
fmr f2, f0
lbl_80258854:
lfs f0, lbl_8051AAD0@sda21(r2)
fmuls f0, f0, f2
fdivs f3, f0, f8
fcmpo cr0, f3, f4
ble lbl_80258874
stfs f5, 0x1c8(r31)
stfs f6, 0x1d0(r31)
b lbl_802588B4
lbl_80258874:
lfs f0, lbl_8051AACC@sda21(r2)
fcmpo cr0, f3, f0
ble lbl_802588A0
fdivs f0, f7, f2
fmuls f0, f3, f0
stfs f0, 0x1c8(r31)
lfs f0, 0x1d0(r31)
fdivs f0, f0, f2
fmuls f0, f3, f0
stfs f0, 0x1d0(r31)
b lbl_802588B4
lbl_802588A0:
stfs f0, 0x1d0(r31)
stfs f0, 0x1c8(r31)
b lbl_802588B4
lbl_802588AC:
stfs f0, 0x1d0(r31)
stfs f0, 0x1c8(r31)
lbl_802588B4:
lwz r3, _aiConstants__4Game@sda21(r13)
lfs f2, 0x1cc(r31)
lfs f3, 0x28(r3)
lfs f0, lbl_8051AACC@sda21(r2)
fnmsubs f1, f1, f3, f2
stfs f1, 0x1cc(r31)
lfs f1, 0x1cc(r31)
fcmpo cr0, f1, f0
ble lbl_802589C0
mr r4, r31
lwz r5, 0xc0(r31)
lwz r12, 0(r31)
addi r3, r1, 0x14
lfs f30, 0x334(r5)
lwz r12, 8(r12)
lfs f31, 0x30c(r5)
mtctr r12
bctrl
lfs f5, 0x14(r1)
lis r3, atanTable___5JMath@ha
lfs f3, 0x1c(r1)
addi r3, r3, atanTable___5JMath@l
lfs f1, 0x2c8(r31)
lfs f0, 0x2d0(r31)
lfs f4, 0x18(r1)
fsubs f1, f1, f5
fsubs f2, f0, f3
stfs f5, 8(r1)
stfs f4, 0xc(r1)
stfs f3, 0x10(r1)
bl "atan2___Q25JMath18TAtanTable<1024,f>CFff"
bl roundAng__Ff
lwz r12, 0(r31)
fmr f29, f1
mr r3, r31
lwz r12, 0x64(r12)
mtctr r12
bctrl
fmr f2, f1
fmr f1, f29
bl angDist__Fff
fmuls f31, f1, f31
lfs f0, lbl_8051AAD8@sda21(r2)
lfs f1, lbl_8051AAD4@sda21(r2)
fmuls f0, f0, f30
fabs f2, f31
fmuls f1, f1, f0
frsp f0, f2
fcmpo cr0, f0, f1
ble lbl_80258994
lfs f0, lbl_8051AACC@sda21(r2)
fcmpo cr0, f31, f0
ble lbl_80258990
fmr f31, f1
b lbl_80258994
lbl_80258990:
fneg f31, f1
lbl_80258994:
mr r3, r31
lwz r12, 0(r31)
lwz r12, 0x64(r12)
mtctr r12
bctrl
fadds f1, f31, f1
bl roundAng__Ff
stfs f1, 0x1fc(r31)
lfs f0, 0x1fc(r31)
stfs f0, 0x1a8(r31)
b lbl_802589C4
lbl_802589C0:
stfs f0, 0x1cc(r31)
lbl_802589C4:
lwz r3, sys@sda21(r13)
lfs f1, 0x2c0(r31)
lfs f0, 0x54(r3)
fadds f0, f1, f0
stfs f0, 0x2c0(r31)
psq_l f31, 88(r1), 0, qr0
lfd f31, 0x50(r1)
psq_l f30, 72(r1), 0, qr0
lfd f30, 0x40(r1)
psq_l f29, 56(r1), 0, qr0
lfd f29, 0x30(r1)
lwz r0, 0x64(r1)
lwz r31, 0x2c(r1)
mtlr r0
addi r1, r1, 0x60
blr
*/
} }
/* /*
@ -292,88 +139,34 @@ void Obj::setFSM(FSM* fsm)
* Address: 80258A74 * Address: 80258A74
* Size: 000110 * Size: 000110
*/ */
void Obj::getShadowParam(ShadowParam&) void Obj::getShadowParam(ShadowParam& param)
{ {
/* Sys::Sphere boundingSphere;
stwu r1, -0x20(r1) getBoundingSphere(boundingSphere);
mflr r0 param.mPosition.x = boundingSphere.mPosition.x;
stw r0, 0x24(r1) param.mPosition.y = 5.0f + mPosition.y;
stw r31, 0x1c(r1) param.mPosition.z = boundingSphere.mPosition.z;
mr r31, r4
addi r4, r1, 8
stw r30, 0x18(r1)
mr r30, r3
lwz r12, 0(r3)
lwz r12, 0x10(r12)
mtctr r12
bctrl
lfs f0, 8(r1)
mr r3, r30
lfs f1, lbl_8051AADC@sda21(r2)
stfs f0, 0(r31)
lfs f0, 0x190(r30)
fadds f0, f1, f0
stfs f0, 4(r31)
lfs f0, 0x10(r1)
stfs f0, 8(r31)
lwz r12, 0(r30)
lwz r12, 0xa8(r12)
mtctr r12
bctrl
clrlwi. r0, r3, 0x18
beq lbl_80258B48
lwz r0, 0xc8(r30)
cmplwi r0, 0
beq lbl_80258B10
lwz r0, 0x1e4(r30)
clrlwi. r0, r0, 0x1f
beq lbl_80258B04
lfs f0, lbl_8051AAE0@sda21(r2)
stfs f0, 0x18(r31)
b lbl_80258B50
lbl_80258B04: if (isAlive()) {
lfs f0, lbl_8051AAE4@sda21(r2) if (mBounceTriangle) {
stfs f0, 0x18(r31) if (isEvent(1, EB2_Earthquake)) {
b lbl_80258B50 param.mBoundingSphere.mRadius = 75.0f;
} else {
param.mBoundingSphere.mRadius = 50.0f;
}
} else {
if (getStateID() == FROG_JumpWait) {
param.mPosition.y -= 17.5f;
}
lbl_80258B10: param.mBoundingSphere.mRadius = 0.75f * C_PROPERPARMS.mJumpSpeed();
mr r3, r30 }
bl getStateID__Q24Game9EnemyBaseFv } else {
cmpwi r3, 4 param.mBoundingSphere.mRadius = 22.5f;
bne lbl_80258B30 }
lfs f1, 4(r31)
lfs f0, lbl_8051AAE8@sda21(r2)
fsubs f0, f1, f0
stfs f0, 4(r31)
lbl_80258B30: param.mBoundingSphere.mPosition = Vector3f(0.0f, 1.0f, 0.0f);
lwz r3, 0xc0(r30) param.mSize = 17.5f;
lfs f1, lbl_8051AAEC@sda21(r2)
lfs f0, 0x844(r3)
fmuls f0, f1, f0
stfs f0, 0x18(r31)
b lbl_80258B50
lbl_80258B48:
lfs f0, lbl_8051AAF0@sda21(r2)
stfs f0, 0x18(r31)
lbl_80258B50:
lfs f2, lbl_8051AACC@sda21(r2)
lfs f1, lbl_8051AAF4@sda21(r2)
stfs f2, 0xc(r31)
lfs f0, lbl_8051AAE8@sda21(r2)
stfs f1, 0x10(r31)
stfs f2, 0x14(r31)
stfs f0, 0x1c(r31)
lwz r31, 0x1c(r1)
lwz r30, 0x18(r1)
lwz r0, 0x24(r1)
mtlr r0
addi r1, r1, 0x20
blr
*/
} }
/* /*
@ -418,35 +211,12 @@ void Obj::doStartStoneState()
*/ */
void Obj::doFinishStoneState() void Obj::doFinishStoneState()
{ {
/* EnemyBase::doFinishStoneState();
stwu r1, -0x10(r1)
mflr r0
stw r0, 0x14(r1)
stw r31, 0xc(r1)
mr r31, r3
bl doFinishStoneState__Q24Game9EnemyBaseFv
mr r3, r31
bl getStateID__Q24Game9EnemyBaseFv
cmpwi r3, 3
blt lbl_80258D0C
cmpwi r3, 6
bgt lbl_80258D0C
lwz r3, 0x2bc(r31)
mr r4, r31
li r5, 2
li r6, 0
lwz r12, 0(r3)
lwz r12, 0x14(r12)
mtctr r12
bctrl
lbl_80258D0C: int stateID = getStateID();
lwz r0, 0x14(r1) if (stateID >= FROG_Jump && stateID <= FROG_Attack) { // jump, jumpwait, fall, attack
lwz r31, 0xc(r1) mFsm->transit(this, FROG_Turn, nullptr);
mtlr r0 }
addi r1, r1, 0x10
blr
*/
} }
/* /*
@ -467,33 +237,10 @@ void Obj::doStartEarthquakeFitState()
*/ */
void Obj::doFinishEarthquakeFitState() void Obj::doFinishEarthquakeFitState()
{ {
/* EnemyBase::doFinishEarthquakeFitState();
stwu r1, -0x10(r1) if (getStateID() == FROG_Jump) {
mflr r0 mFsm->transit(this, FROG_Turn, nullptr);
stw r0, 0x14(r1) }
stw r31, 0xc(r1)
mr r31, r3
bl doFinishEarthquakeFitState__Q24Game9EnemyBaseFv
mr r3, r31
bl getStateID__Q24Game9EnemyBaseFv
cmpwi r3, 3
bne lbl_80258D9C
lwz r3, 0x2bc(r31)
mr r4, r31
li r5, 2
li r6, 0
lwz r12, 0(r3)
lwz r12, 0x14(r12)
mtctr r12
bctrl
lbl_80258D9C:
lwz r0, 0x14(r1)
lwz r31, 0xc(r1)
mtlr r0
addi r1, r1, 0x10
blr
*/
} }
/* /*
@ -525,6 +272,13 @@ void Obj::doFinishWaitingBirthTypeDrop()
*/ */
void Obj::startCarcassMotion() { EnemyBase::startMotion(FROGANIM_Carry, nullptr); } void Obj::startCarcassMotion() { EnemyBase::startMotion(FROGANIM_Carry, nullptr); }
/*
* --INFO--
* Address: 80258E18
* Size: 000028
*/
Vector3f Obj::viewGetCollTreeOffset() { return Vector3f(20.0f, -15.0f, 0.0f); }
/* /*
* --INFO-- * --INFO--
* Address: 80258E5C * Address: 80258E5C
@ -546,42 +300,12 @@ void Obj::doEndMovie() { effectDrawOn(); }
*/ */
Vector3f Obj::getOffsetForMapCollision() Vector3f Obj::getOffsetForMapCollision()
{ {
/* Sys::Sphere boundingSphere;
stwu r1, -0x20(r1) getBoundingSphere(boundingSphere);
mflr r0 boundingSphere.mPosition.x -= mPosition.x;
stw r0, 0x24(r1) boundingSphere.mPosition.y = 0.0f;
stw r31, 0x1c(r1) boundingSphere.mPosition.z -= mPosition.z;
mr r31, r4 return boundingSphere.mPosition;
addi r4, r1, 8
stw r30, 0x18(r1)
mr r30, r3
mr r3, r31
lwz r12, 0(r31)
lwz r12, 0x10(r12)
mtctr r12
bctrl
lfs f2, 8(r1)
lfs f1, 0x18c(r31)
lfs f0, lbl_8051AACC@sda21(r2)
fsubs f2, f2, f1
lfs f1, 0x10(r1)
stfs f0, 0xc(r1)
stfs f2, 8(r1)
lfs f0, 0x194(r31)
fsubs f0, f1, f0
stfs f0, 0x10(r1)
stfs f2, 0(r30)
lfs f0, 0xc(r1)
stfs f0, 4(r30)
lfs f0, 0x10(r1)
stfs f0, 8(r30)
lwz r31, 0x1c(r1)
lwz r30, 0x18(r1)
lwz r0, 0x24(r1)
mtlr r0
addi r1, r1, 0x20
blr
*/
} }
/* /*
@ -589,31 +313,11 @@ Vector3f Obj::getOffsetForMapCollision()
* Address: 80258F24 * Address: 80258F24
* Size: 000054 * Size: 000054
*/ */
void Obj::getCommonEffectPos(Vector3f&) void Obj::getCommonEffectPos(Vector3f& effectPos)
{ {
/* Sys::Sphere boundingSphere;
stwu r1, -0x20(r1) getBoundingSphere(boundingSphere);
mflr r0 effectPos = boundingSphere.mPosition;
stw r0, 0x24(r1)
stw r31, 0x1c(r1)
mr r31, r4
addi r4, r1, 8
lwz r12, 0(r3)
lwz r12, 0x10(r12)
mtctr r12
bctrl
lfs f0, 8(r1)
stfs f0, 0(r31)
lfs f0, 0xc(r1)
stfs f0, 4(r31)
lfs f0, 0x10(r1)
stfs f0, 8(r31)
lwz r31, 0x1c(r1)
lwz r0, 0x24(r1)
mtlr r0
addi r1, r1, 0x20
blr
*/
} }
/* /*
@ -623,32 +327,13 @@ void Obj::getCommonEffectPos(Vector3f&)
*/ */
void Obj::updateCaution() void Obj::updateCaution()
{ {
/* if (isEvent(0, EB_Colliding) || isEvent(0, EB_TakingDamage) || mStuckPikminCount != 0) {
lwz r4, 0x1e0(r3) mAlertTimer = 0.0f;
rlwinm. r0, r4, 0, 0x1b, 0x1b }
bne lbl_80258F98
rlwinm. r0, r4, 0, 0x1e, 0x1e
bne lbl_80258F98
lwz r0, 0x1f4(r3)
cmpwi r0, 0
beq lbl_80258FA0
lbl_80258F98: if (mAlertTimer < C_PARMS->mGeneral.mAlertDuration()) {
lfs f0, lbl_8051AACC@sda21(r2) mAlertTimer += sys->mDeltaTime;
stfs f0, 0x2c4(r3) }
lbl_80258FA0:
lwz r4, 0xc0(r3)
lfs f1, 0x2c4(r3)
lfs f0, 0x62c(r4)
fcmpo cr0, f1, f0
bgelr
lwz r4, sys@sda21(r13)
lfs f0, 0x54(r4)
fadds f0, f1, f0
stfs f0, 0x2c4(r3)
blr
*/
} }
/* /*
@ -658,20 +343,10 @@ lbl_80258FA0:
*/ */
f32 Obj::getViewAngle() f32 Obj::getViewAngle()
{ {
// C_PARMS-> if (mAlertTimer < C_PARMS->mGeneral.mAlertDuration()) {
/* return 180.0f;
lwz r4, 0xc0(r3) }
lfs f1, 0x2c4(r3) return C_PARMS->mGeneral.mViewAngle();
lfs f0, 0x62c(r4)
fcmpo cr0, f1, f0
bge lbl_80258FE4
lfs f1, lbl_8051AB00@sda21(r2)
blr
lbl_80258FE4:
lfs f1, 0x424(r4)
blr
*/
} }
/* /*
@ -681,70 +356,17 @@ lbl_80258FE4:
*/ */
void Obj::startJumpAttack() void Obj::startJumpAttack()
{ {
/* enableEvent(0, EB_Untargetable);
lwz r0, 0x1e0(r3) mAirTimer = 0.0f;
lfs f2, lbl_8051AACC@sda21(r2) mCurrentVelocity.x = mTargetPosition.x - mPosition.x;
ori r0, r0, 4 mCurrentVelocity.z = mTargetPosition.z - mPosition.z;
stw r0, 0x1e0(r3)
stfs f2, 0x2c0(r3)
lfs f1, 0x2c8(r3)
lfs f0, 0x18c(r3)
fsubs f0, f1, f0
stfs f0, 0x1c8(r3)
lfs f1, 0x2d0(r3)
lfs f0, 0x194(r3)
fsubs f0, f1, f0
stfs f0, 0x1d0(r3)
lfs f3, 0x1c8(r3)
lfs f1, 0x1d0(r3)
fmuls f0, f3, f3
fmuls f1, f1, f1
fadds f0, f0, f1
fcmpo cr0, f0, f2
ble lbl_80259054
fmadds f1, f3, f3, f1
fcmpo cr0, f1, f2
ble lbl_80259058
frsqrte f0, f1
fmuls f1, f0, f1
b lbl_80259058
lbl_80259054: f32 speed = mCurrentVelocity.normalise2D();
fmr f1, f2
lbl_80259058: f32 factor = (2.0f * speed) / C_PROPERPARMS.mAirTime();
lfs f0, lbl_8051AACC@sda21(r2) mCurrentVelocity.x *= factor;
fcmpo cr0, f1, f0 mCurrentVelocity.y = C_PROPERPARMS.mJumpSpeed();
ble lbl_80259080 mCurrentVelocity.z *= factor;
lfs f0, 0x1c8(r3)
fdivs f0, f0, f1
stfs f0, 0x1c8(r3)
lfs f0, 0x1d0(r3)
fdivs f0, f0, f1
stfs f0, 0x1d0(r3)
b lbl_80259088
lbl_80259080:
stfs f0, 0x1d0(r3)
stfs f0, 0x1c8(r3)
lbl_80259088:
lfs f0, lbl_8051AAD0@sda21(r2)
lwz r4, 0xc0(r3)
fmuls f2, f0, f1
lfs f0, 0x1c8(r3)
lfs f1, 0x81c(r4)
fdivs f1, f2, f1
fmuls f0, f0, f1
stfs f0, 0x1c8(r3)
lwz r4, 0xc0(r3)
lfs f0, 0x844(r4)
stfs f0, 0x1cc(r3)
lfs f0, 0x1d0(r3)
fmuls f0, f0, f1
stfs f0, 0x1d0(r3)
blr
*/
} }
/* /*
@ -754,68 +376,10 @@ lbl_80259088:
*/ */
void Obj::resetHomePosition() void Obj::resetHomePosition()
{ {
/* f32 dist = 0.5f * C_PARMS->mGeneral.mHomeRadius();
stwu r1, -0x20(r1) mHomePosition.x = dist * pikmin2_sinf(mFaceDir) + mPosition.x;
lfs f2, lbl_8051AB04@sda21(r2) mHomePosition.y = mPosition.y;
lwz r4, 0xc0(r3) mHomePosition.z = dist * pikmin2_cosf(mFaceDir) + mPosition.z;
lfs f3, 0x1fc(r3)
lfs f1, 0x384(r4)
lfs f0, lbl_8051AACC@sda21(r2)
fmuls f4, f2, f1
fcmpo cr0, f3, f0
bge lbl_80259114
lfs f0, lbl_8051AB08@sda21(r2)
lis r4, sincosTable___5JMath@ha
addi r4, r4, sincosTable___5JMath@l
fmuls f0, f3, f0
fctiwz f0, f0
stfd f0, 8(r1)
lwz r0, 0xc(r1)
rlwinm r0, r0, 3, 0x12, 0x1c
lfsx f0, r4, r0
fneg f2, f0
b lbl_80259138
lbl_80259114:
lfs f0, lbl_8051AB0C@sda21(r2)
lis r4, sincosTable___5JMath@ha
addi r4, r4, sincosTable___5JMath@l
fmuls f0, f3, f0
fctiwz f0, f0
stfd f0, 0x10(r1)
lwz r0, 0x14(r1)
rlwinm r0, r0, 3, 0x12, 0x1c
lfsx f2, r4, r0
lbl_80259138:
lfs f1, 0x18c(r3)
lfs f0, lbl_8051AACC@sda21(r2)
fmadds f1, f4, f2, f1
stfs f1, 0x198(r3)
lfs f1, 0x190(r3)
stfs f1, 0x19c(r3)
lfs f2, 0x1fc(r3)
fcmpo cr0, f2, f0
bge lbl_80259160
fneg f2, f2
lbl_80259160:
lfs f1, lbl_8051AB0C@sda21(r2)
lis r4, sincosTable___5JMath@ha
addi r4, r4, sincosTable___5JMath@l
lfs f0, 0x194(r3)
fmuls f1, f2, f1
fctiwz f1, f1
stfd f1, 0x18(r1)
lwz r0, 0x1c(r1)
rlwinm r0, r0, 3, 0x12, 0x1c
add r4, r4, r0
lfs f1, 4(r4)
fmadds f0, f4, f1, f0
stfs f0, 0x1a0(r3)
addi r1, r1, 0x20
blr
*/
} }
/* /*
@ -825,164 +389,41 @@ lbl_80259160:
*/ */
void Obj::pressOnGround() void Obj::pressOnGround()
{ {
/* EnemyFunc::flickStickPikmin(this, C_PARMS->mGeneral.mShakeChance(), C_PARMS->mGeneral.mShakeKnockback(),
stwu r1, -0x80(r1) C_PARMS->mGeneral.mShakeDamage(), FLICK_BACKWARD_ANGLE, nullptr);
mflr r0 mFlickTimer = 0.0f;
lfs f4, lbl_8051AB10@sda21(r2) Sys::Sphere boundingSphere;
li r4, 0 getBoundingSphere(boundingSphere);
stw r0, 0x84(r1)
stw r31, 0x7c(r1)
mr r31, r3
lwz r5, 0xc0(r3)
lfs f1, 0x53c(r5)
lfs f2, 0x4c4(r5)
lfs f3, 0x4ec(r5)
bl
"flickStickPikmin__Q24Game9EnemyFuncFPQ24Game8CreatureffffP23Condition<Q24Game4Piki>"
lfs f0, lbl_8051AACC@sda21(r2)
mr r3, r31
addi r4, r1, 0x44
stfs f0, 0x20c(r31)
lwz r12, 0(r31)
lwz r12, 0x10(r12)
mtctr r12
bctrl
lfs f2, 0x190(r31)
lfs f1, 0x44(r1)
lfs f0, 0x4c(r1)
stfs f1, 0x38(r1)
stfs f2, 0x3c(r1)
stfs f0, 0x40(r1)
lwz r3, 0x280(r31)
cmplwi r3, 0
beq lbl_802592BC
lwz r12, 0(r3)
lwz r12, 0x14(r12)
mtctr r12
bctrl
lfs f2, 0(r3)
lis r3, __vt__Q23efx5TBase@ha
addi r0, r3, __vt__Q23efx5TBase@l
li r5, 0
lis r3, __vt__Q23efx8TSimple4@ha
stw r0, 0x54(r1)
addi r0, r3, __vt__Q23efx8TSimple4@l
lfs f1, 0x38(r1)
lfs f0, 0x40(r1)
lis r4, __vt__Q23efx3Arg@ha
lis r3, __vt__Q23efx9TFrogDive@ha
li r9, 0x5c
addi r10, r4, __vt__Q23efx3Arg@l
li r8, 0x5d
li r7, 0x5e
li r6, 0x5f
stw r0, 0x54(r1)
addi r0, r3, __vt__Q23efx9TFrogDive@l
addi r3, r1, 0x54
addi r4, r1, 0x28
stfs f2, 0x3c(r1)
stw r10, 0x28(r1)
stfs f1, 0x2c(r1)
stfs f2, 0x30(r1)
stfs f0, 0x34(r1)
sth r9, 0x58(r1)
sth r8, 0x5a(r1)
sth r7, 0x5c(r1)
sth r6, 0x5e(r1)
stw r5, 0x60(r1)
stw r5, 0x64(r1)
stw r5, 0x68(r1)
stw r5, 0x6c(r1)
stw r0, 0x54(r1)
bl create__Q23efx8TSimple4FPQ23efx3Arg
lfs f1, lbl_8051AAF4@sda21(r2)
mr r3, r31
bl PSStartEnemyDownWatSE__FPQ24Game9EnemyBasef
b lbl_80259344
lbl_802592BC: Vector3f fxPos(boundingSphere.mPosition.x, mPosition.y, boundingSphere.mPosition.z);
lis r3, __vt__Q23efx5TBase@ha
li r5, 0
addi r0, r3, __vt__Q23efx5TBase@l
lis r3, __vt__Q23efx8TSimple2@ha
stw r0, 8(r1)
addi r0, r3, __vt__Q23efx8TSimple2@l
lis r4, __vt__Q23efx3Arg@ha
lis r3, __vt__Q23efx13TFrogLanddrop@ha
stw r0, 8(r1)
addi r8, r4, __vt__Q23efx3Arg@l
addi r0, r3, __vt__Q23efx13TFrogLanddrop@l
li r7, 0x60
li r6, 0x61
stfs f2, 0x3c(r1)
addi r3, r1, 8
addi r4, r1, 0x18
stw r8, 0x18(r1)
stfs f1, 0x1c(r1)
stfs f2, 0x20(r1)
stfs f0, 0x24(r1)
sth r7, 0xc(r1)
sth r6, 0xe(r1)
stw r5, 0x10(r1)
stw r5, 0x14(r1)
stw r0, 8(r1)
bl create__Q23efx8TSimple2FPQ23efx3Arg
mr r3, r31
lwz r12, 0(r31)
lwz r12, 0x2ec(r12)
mtctr r12
bctrl
mr r3, r31
addi r4, r1, 0x38
bl "createDropEffect__Q24Game9EnemyBaseFRC10Vector3<f>f"
lbl_80259344: if (mWaterBox) {
lwz r3, cameraMgr__4Game@sda21(r13) fxPos.y = *mWaterBox->getSeaHeightPtr();
addi r5, r1, 0x38 efx::Arg fxArg(fxPos);
li r4, 6 efx::TFrogDive diveFX;
li r6, 2
bl "startVibration__Q24Game9CameraMgrFiR10Vector3<f>i"
lwz r3, rumbleMgr__4Game@sda21(r13)
addi r5, r1, 0x38
li r4, 0xe
li r6, 2
bl "startRumble__Q24Game9RumbleMgrFiR10Vector3<f>i"
lwz r0, 0x280(r31)
cmplwi r0, 0
beq lbl_802593A8
mr r3, r31
lwz r12, 0(r31)
lwz r12, 0xf4(r12)
mtctr r12
bctrl
lwz r12, 0(r3)
li r4, 0x582d
li r5, 0
lwz r12, 0xc(r12)
mtctr r12
bctrl
b lbl_802593D4
lbl_802593A8: diveFX.create(&fxArg);
mr r3, r31
lwz r12, 0(r31)
lwz r12, 0xf4(r12)
mtctr r12
bctrl
lwz r12, 0(r3)
li r4, 0x5827
li r5, 0
lwz r12, 0xc(r12)
mtctr r12
bctrl
lbl_802593D4: PSStartEnemyDownWatSE(this, 1.0f);
lwz r0, 0x84(r1) } else {
lwz r31, 0x7c(r1) fxPos.y = mPosition.y;
mtlr r0
addi r1, r1, 0x80 efx::Arg fxArg(fxPos);
blr efx::TFrogLanddrop dropFX;
*/
dropFX.create(&fxArg);
createDropEffect(fxPos, getDownSmokeScale());
}
cameraMgr->startVibration(6, fxPos, 2);
rumbleMgr->startRumble(14, fxPos, 2);
if (mWaterBox) {
getJAIObject()->startSound(PSSE_EN_FROG_WATERLAND, 0);
} else {
getJAIObject()->startSound(PSSE_EN_FROG_LAND, 0);
}
} }
/* /*

View File

@ -30,7 +30,7 @@ NISHIMURA_FILES:=\
$(BUILD_DIR)/asm/plugProjectNishimuraU/FrogState.o\ $(BUILD_DIR)/asm/plugProjectNishimuraU/FrogState.o\
$(BUILD_DIR)/src/plugProjectNishimuraU/FrogAnimator.o\ $(BUILD_DIR)/src/plugProjectNishimuraU/FrogAnimator.o\
$(BUILD_DIR)/src/plugProjectNishimuraU/FrogMgr.o\ $(BUILD_DIR)/src/plugProjectNishimuraU/FrogMgr.o\
$(BUILD_DIR)/asm/plugProjectNishimuraU/Frog.o\ $(BUILD_DIR)/src/plugProjectNishimuraU/Frog.o\
$(BUILD_DIR)/src/plugProjectNishimuraU/UjibMgr.o\ $(BUILD_DIR)/src/plugProjectNishimuraU/UjibMgr.o\
$(BUILD_DIR)/asm/plugProjectNishimuraU/Ujib.o\ $(BUILD_DIR)/asm/plugProjectNishimuraU/Ujib.o\
$(BUILD_DIR)/asm/plugProjectNishimuraU/UjibState.o\ $(BUILD_DIR)/asm/plugProjectNishimuraU/UjibState.o\

View File

@ -719,3 +719,5 @@ You have 3192 out of 10000 Pokos and 86 out of 201 treasures.",2023-10-24 16:55:
You have 3209 out of 10000 Pokos and 87 out of 201 treasures.",2023-10-25 19:47:29.895863 You have 3209 out of 10000 Pokos and 87 out of 201 treasures.",2023-10-25 19:47:29.895863
3219,1498008,0.3219893937518055,87,309265,0.43383937288877417," 3219,1498008,0.3219893937518055,87,309265,0.43383937288877417,"
You have 3219 out of 10000 Pokos and 87 out of 201 treasures.",2023-10-28 15:27:57.089580 You have 3219 out of 10000 Pokos and 87 out of 201 treasures.",2023-10-28 15:27:57.089580
3229,1502700,0.32299791589286453,87,310297,0.43528707060051397,"
You have 3229 out of 10000 Pokos and 87 out of 201 treasures.",2023-10-28 17:21:03.128958

1 code_count_in_pokos code_completion_in_bytes code_completion_in_percentage data_count_in_treasures data_completion_in_bytes data_completion_in_percentage sentence created_at
719
720
721
722
723