mirror of
https://github.com/projectPiki/pikmin2.git
synced 2024-11-23 13:29:55 +00:00
Link Frog.cpp
This commit is contained in:
parent
1086641c63
commit
93a2a95703
File diff suppressed because it is too large
Load Diff
@ -1063,7 +1063,7 @@ LIBS = [
|
||||
"plugProjectNishimuraU/FrogState",
|
||||
["plugProjectNishimuraU/FrogAnimator", True],
|
||||
["plugProjectNishimuraU/FrogMgr", True],
|
||||
"plugProjectNishimuraU/Frog",
|
||||
["plugProjectNishimuraU/Frog", True],
|
||||
["plugProjectNishimuraU/UjibMgr", True],
|
||||
"plugProjectNishimuraU/Ujib",
|
||||
"plugProjectNishimuraU/UjibState",
|
||||
|
@ -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/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/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/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 |
|
||||
@ -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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/BigTreasureAttack.cpp">BigTreasureAttack.cpp</a> | 100795 | | |
|
||||
|
||||
### <section id="plugProjectOgawaU">plugProjectOgawaU</section>
|
||||
| File | Size (bytes) | File | Size (bytes) |
|
||||
|
@ -66,7 +66,7 @@ struct Obj : public EnemyBase {
|
||||
virtual void doStartMovie(); // _2F0
|
||||
virtual void doEndMovie(); // _2F4
|
||||
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)
|
||||
//////////////// VTABLE END
|
||||
|
||||
@ -87,7 +87,7 @@ struct Obj : public EnemyBase {
|
||||
// _00-_2BC = EnemyBase
|
||||
FSM* mFsm; // _2BC
|
||||
f32 mAirTimer; // _2C0
|
||||
f32 _2C4; // _2C4
|
||||
f32 mAlertTimer; // _2C4
|
||||
Vector3f mTargetPosition; // _2C8
|
||||
StateID mNextState; // _2D4
|
||||
bool mIsInAir; // _2D8
|
||||
|
@ -221,7 +221,7 @@ struct Obj : public EnemyBase {
|
||||
|
||||
// _00 = VTBL
|
||||
// _00-_2BC = EnemyBase
|
||||
Vector3f _2BC; // _2BC
|
||||
Vector3f mGoalPosition; // _2BC
|
||||
StateID mNextState; // _2C8
|
||||
MouthSlots mMouthSlots; // _2CC
|
||||
SysShape::Joint* mHeadJoint; // _2D4
|
||||
|
@ -178,6 +178,8 @@ struct Vector3 {
|
||||
|
||||
// Squared magnitude
|
||||
inline f32 sqrMagnitude() const { return x * x + y * y + z * z; }
|
||||
// 2D magnitude
|
||||
inline f32 sqrMagnitude2D() const { return x * x + z * z; }
|
||||
// Quick length
|
||||
inline f32 qLength() { return pikmin2_sqrtf(sqrMagnitude()); }
|
||||
|
||||
@ -186,6 +188,8 @@ struct Vector3 {
|
||||
f32 sqrDistance(Vector3&);
|
||||
f32 distance(JGeometry::TVec3f&);
|
||||
f32 normalise();
|
||||
f32 length2D() const;
|
||||
f32 normalise2D();
|
||||
|
||||
void read(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 <>
|
||||
inline f32 Vector3f::normalise()
|
||||
{
|
||||
@ -264,6 +280,21 @@ inline f32 Vector3f::normalise()
|
||||
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)
|
||||
{
|
||||
Vector2f sqr(vec.z * vec.z, vec.x * vec.x + vec.y * vec.y);
|
||||
|
@ -7,8 +7,8 @@
|
||||
|
||||
namespace efx {
|
||||
struct TUmiAttack : public TSimpleMtx1 {
|
||||
inline TUmiAttack()
|
||||
: TSimpleMtx1(nullptr, PID_UmiAttack)
|
||||
inline TUmiAttack(Matrixf* mtx)
|
||||
: TSimpleMtx1(mtx, PID_UmiAttack)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,8 @@
|
||||
#include "JSystem/J3D/J3DMtxBuffer.h"
|
||||
#include "Game/EnemyFunc.h"
|
||||
#include "JSystem/JMath.h"
|
||||
#include "Dolphin/rand.h"
|
||||
#include "PS.h"
|
||||
|
||||
namespace Game {
|
||||
namespace UmiMushi {
|
||||
@ -98,17 +100,17 @@ void Obj::onInit(CreatureInitArg* initArg)
|
||||
disableEvent(0, EB_DeathEffectEnabled);
|
||||
mHeadJoint = mModel->getJoint("head_joint1");
|
||||
P2ASSERTLINE(124, mHeadJoint);
|
||||
mTargetNavi = nullptr;
|
||||
_2BC = mHomePosition;
|
||||
_2E0 = 0;
|
||||
_2E4 = mHomePosition;
|
||||
_2F0 = 0;
|
||||
_2F4 = 0;
|
||||
_2FC = 0.0f;
|
||||
mTargetNavi = nullptr; // second null initialization of targetNavi
|
||||
_2DC = 0;
|
||||
_300 = 0;
|
||||
mNextState = UMIMUSHI_NULL;
|
||||
mTargetNavi = nullptr;
|
||||
mGoalPosition = mHomePosition;
|
||||
_2E0 = 0;
|
||||
_2E4 = mHomePosition;
|
||||
_2F0 = 0;
|
||||
_2F4 = 0;
|
||||
_2FC = 0.0f;
|
||||
mTargetNavi = nullptr; // second null initialization of targetNavi
|
||||
_2DC = 0;
|
||||
_300 = 0;
|
||||
mNextState = UMIMUSHI_NULL;
|
||||
|
||||
mNormalColor2.r = -25;
|
||||
mNormalColor2.g = -100;
|
||||
@ -641,7 +643,7 @@ bool Obj::isReachToGoal(f32 radius)
|
||||
_2F4 = 0;
|
||||
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()
|
||||
{
|
||||
f32 faceDirRads;
|
||||
f32 speed = C_PARMS->mGeneral.mMoveSpeed.mValue;
|
||||
f32 inA1C = C_PARMS->_A1C;
|
||||
f32 rotationAccel = C_PARMS->mGeneral.mRotationalAccel.mValue;
|
||||
@ -667,43 +670,20 @@ void Obj::walkFunc()
|
||||
rotationDelta = 0.0f;
|
||||
}
|
||||
|
||||
mFaceDir = _2F8;
|
||||
f32 faceDirRads = rotationDelta * PI * DEG2RAD;
|
||||
Vector3f position = getPosition();
|
||||
Vector2f positionDiff = Vector2f(position.x - _2BC.x, position.z - _2BC.z);
|
||||
faceDirRads = TORADIANS(rotationDelta);
|
||||
mFaceDir = _2F8;
|
||||
turnToTarget2(mGoalPosition, rotationAccel, rotationSpeed);
|
||||
|
||||
f32 targetRotation = JMath::atanTable_.atan2_(positionDiff.x, positionDiff.y);
|
||||
targetRotation = roundAng(targetRotation);
|
||||
f32 deltaFaceDir = mFaceDir + faceDirRads;
|
||||
|
||||
f32 faceDir = getFaceDir();
|
||||
angDist(targetRotation, faceDir);
|
||||
f32 x = pikmin2_sinf(deltaFaceDir) * speed;
|
||||
f32 y = getTargetVelocity().y;
|
||||
f32 z = pikmin2_cosf(deltaFaceDir);
|
||||
|
||||
f32 totalRotation = targetRotation * rotationAccel;
|
||||
f32 maxRotationSpeedRadians = rotationSpeed * PI * DEG2RAD;
|
||||
f32 rotationAmount = totalRotation;
|
||||
if (maxRotationSpeedRadians < FABS(totalRotation)) {
|
||||
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);
|
||||
_2F8 = mFaceDir;
|
||||
f32 faceDirOffset = roundAng(faceDirRads);
|
||||
updateFaceDir(mFaceDir + faceDirOffset);
|
||||
mTargetVelocity = Vector3f(x, y, speed * z); // sure
|
||||
|
||||
_2F0++;
|
||||
|
||||
@ -711,7 +691,7 @@ void Obj::walkFunc()
|
||||
if (sqrDistanceXZ(mPosition, _2E4) < SQUARE(30.0f)) {
|
||||
_2E0 = 120;
|
||||
mTargetCreature = nullptr;
|
||||
_2BC = mHomePosition;
|
||||
mGoalPosition = mHomePosition;
|
||||
}
|
||||
_2E4 = mPosition;
|
||||
_2F0 = 0;
|
||||
@ -726,100 +706,15 @@ void Obj::walkFunc()
|
||||
*/
|
||||
void Obj::setNextGoal()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x40(r1)
|
||||
mflr r0
|
||||
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)
|
||||
f32 rad = C_PARMS->mGeneral.mTerritoryRadius();
|
||||
if (gameSystem && gameSystem->mIsInCave) {
|
||||
rad = C_PROPERPARMS.mCaveTerritory();
|
||||
}
|
||||
|
||||
lbl_80384FD8:
|
||||
lfs f0, 0x198(r31)
|
||||
stfs f0, 0x2bc(r31)
|
||||
lfs f0, 0x19c(r31)
|
||||
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
|
||||
*/
|
||||
mGoalPosition = mHomePosition;
|
||||
f32 randAngle = TAU * randFloat();
|
||||
mGoalPosition.x += rad * pikmin2_sinf(randAngle);
|
||||
mGoalPosition.z += rad * pikmin2_cosf(randAngle);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1392,6 +1287,7 @@ lbl_803858CC:
|
||||
*/
|
||||
void Obj::resetColor()
|
||||
{
|
||||
|
||||
/*
|
||||
stwu r1, -0x80(r1)
|
||||
mflr r0
|
||||
@ -1521,6 +1417,7 @@ lbl_803859AC:
|
||||
*/
|
||||
f32 Obj::turnFunc()
|
||||
{
|
||||
|
||||
/*
|
||||
stwu r1, -0x70(r1)
|
||||
mflr r0
|
||||
@ -2817,79 +2714,20 @@ void Obj::fadeColorEffect()
|
||||
*/
|
||||
void Obj::createColorEffect()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x20(r1)
|
||||
mflr r0
|
||||
stw r0, 0x24(r1)
|
||||
stw r31, 0x1c(r1)
|
||||
mr r31, r3
|
||||
lwz r0, 0x2d8(r3)
|
||||
cmplwi r0, 0
|
||||
beq lbl_80386D18
|
||||
lis r4, __vt__Q23efx3Arg@ha
|
||||
li r3, 0
|
||||
addi r4, r4, __vt__Q23efx3Arg@l
|
||||
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
|
||||
*/
|
||||
if (mTargetNavi) {
|
||||
efx::Arg fxArg(mPosition);
|
||||
_300 = 0;
|
||||
_2DC = true;
|
||||
if (mTargetNavi->mNaviIndex == NAVIID_Olimar) {
|
||||
mEfxWeakRed->create(&fxArg);
|
||||
mEfxEyeRed[0]->create(&fxArg);
|
||||
mEfxEyeRed[1]->create(&fxArg);
|
||||
} else {
|
||||
mEfxWeakBlue->create(&fxArg);
|
||||
mEfxEyeBlue[0]->create(&fxArg);
|
||||
mEfxEyeBlue[1]->create(&fxArg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2899,56 +2737,10 @@ lbl_80386D18:
|
||||
*/
|
||||
void Obj::attackEffect()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x40(r1)
|
||||
mflr r0
|
||||
lis r4, __vt__Q23efx5TBase@ha
|
||||
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
|
||||
*/
|
||||
efx::TUmiAttack attackFX(_388);
|
||||
efx::ArgScale fxArg(mPosition, mScaleModifier);
|
||||
|
||||
attackFX.create(&fxArg);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2958,56 +2750,11 @@ void Obj::attackEffect()
|
||||
*/
|
||||
void Obj::meltEffect()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x40(r1)
|
||||
mflr r0
|
||||
lis r5, __vt__Q23efx8TSimple1@ha
|
||||
lis r4, __vt__Q23efx5TBase@ha
|
||||
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
|
||||
*/
|
||||
efx::TUmiDeadmelt meltFX;
|
||||
efx::ArgScale fxArg(mHamonPosition, mScaleModifier);
|
||||
|
||||
meltFX.create(&fxArg);
|
||||
_2DD = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -3017,77 +2764,17 @@ void Obj::meltEffect()
|
||||
*/
|
||||
void Obj::flickEffect()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x50(r1)
|
||||
mflr r0
|
||||
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
|
||||
if (mWaterBox) {
|
||||
efx::TUmiFlick flickFX;
|
||||
efx::ArgScale fxArg(mHamonPosition, mScaleModifier);
|
||||
|
||||
lbl_80386FA4:
|
||||
lwz r0, 0x54(r1)
|
||||
lwz r31, 0x4c(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x50
|
||||
blr
|
||||
*/
|
||||
flickFX.create(&fxArg);
|
||||
|
||||
PSM::SeSound* sound = PSStartSoundVec(PSSE_EV_ITEM_LAND_WATER1_XL, (Vec*)&mHamonPosition);
|
||||
if (sound) {
|
||||
sound->setPitch(0.8f, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -732,7 +732,7 @@ void StateLost::exec(EnemyBase* enemy)
|
||||
{
|
||||
OBJ(enemy)->resetColor();
|
||||
if (enemy->mCurAnim->mIsPlaying && enemy->mCurAnim->mType == KEYEVENT_END) {
|
||||
OBJ(enemy)->_2BC = enemy->mHomePosition;
|
||||
OBJ(enemy)->mGoalPosition = enemy->mHomePosition;
|
||||
transit(enemy, UMIMUSHI_Walk, nullptr);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,10 @@
|
||||
#include "Game/Entities/Frog.h"
|
||||
#include "Game/CameraMgr.h"
|
||||
#include "Game/rumble.h"
|
||||
#include "Game/AIConstants.h"
|
||||
#include "Game/EnemyFunc.h"
|
||||
#include "efx/TFrog.h"
|
||||
#include "PS.h"
|
||||
#include "nans.h"
|
||||
|
||||
namespace Game {
|
||||
@ -34,11 +37,11 @@ void Obj::setInitialSetting(EnemyInitialParamBase*) { }
|
||||
void Obj::onInit(CreatureInitArg* initArg)
|
||||
{
|
||||
EnemyBase::onInit(initArg);
|
||||
_2C4 = 128.0f;
|
||||
mAirTimer = 0.0f;
|
||||
mNextState = FROG_NULL;
|
||||
mIsInAir = false;
|
||||
mIsFalling = false;
|
||||
mAlertTimer = 128.0f;
|
||||
mAirTimer = 0.0f;
|
||||
mNextState = FROG_NULL;
|
||||
mIsInAir = false;
|
||||
mIsFalling = false;
|
||||
setupEffect();
|
||||
mFsm->start(this, FROG_Wait, nullptr);
|
||||
}
|
||||
@ -72,193 +75,37 @@ void Obj::doUpdate()
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
stwu r1, -0x60(r1)
|
||||
mflr r0
|
||||
stw r0, 0x64(r1)
|
||||
stfd f31, 0x50(r1)
|
||||
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
|
||||
mCurrentVelocity.y -= step * _aiConstants->mGravity.mData;
|
||||
if (mCurrentVelocity.y > 0.0f) {
|
||||
turnToTarget2(mTargetPosition, C_PARMS->mGeneral.mRotationalAccel(), C_PARMS->mGeneral.mRotationalSpeed());
|
||||
} else {
|
||||
mCurrentVelocity.y = 0.0f;
|
||||
}
|
||||
|
||||
lbl_802587F4:
|
||||
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
|
||||
*/
|
||||
mAirTimer += sys->mDeltaTime;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -292,88 +139,34 @@ void Obj::setFSM(FSM* fsm)
|
||||
* Address: 80258A74
|
||||
* Size: 000110
|
||||
*/
|
||||
void Obj::getShadowParam(ShadowParam&)
|
||||
void Obj::getShadowParam(ShadowParam& param)
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x20(r1)
|
||||
mflr r0
|
||||
stw r0, 0x24(r1)
|
||||
stw r31, 0x1c(r1)
|
||||
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
|
||||
Sys::Sphere boundingSphere;
|
||||
getBoundingSphere(boundingSphere);
|
||||
param.mPosition.x = boundingSphere.mPosition.x;
|
||||
param.mPosition.y = 5.0f + mPosition.y;
|
||||
param.mPosition.z = boundingSphere.mPosition.z;
|
||||
|
||||
lbl_80258B04:
|
||||
lfs f0, lbl_8051AAE4@sda21(r2)
|
||||
stfs f0, 0x18(r31)
|
||||
b lbl_80258B50
|
||||
if (isAlive()) {
|
||||
if (mBounceTriangle) {
|
||||
if (isEvent(1, EB2_Earthquake)) {
|
||||
param.mBoundingSphere.mRadius = 75.0f;
|
||||
} else {
|
||||
param.mBoundingSphere.mRadius = 50.0f;
|
||||
}
|
||||
} else {
|
||||
if (getStateID() == FROG_JumpWait) {
|
||||
param.mPosition.y -= 17.5f;
|
||||
}
|
||||
|
||||
lbl_80258B10:
|
||||
mr r3, r30
|
||||
bl getStateID__Q24Game9EnemyBaseFv
|
||||
cmpwi r3, 4
|
||||
bne lbl_80258B30
|
||||
lfs f1, 4(r31)
|
||||
lfs f0, lbl_8051AAE8@sda21(r2)
|
||||
fsubs f0, f1, f0
|
||||
stfs f0, 4(r31)
|
||||
param.mBoundingSphere.mRadius = 0.75f * C_PROPERPARMS.mJumpSpeed();
|
||||
}
|
||||
} else {
|
||||
param.mBoundingSphere.mRadius = 22.5f;
|
||||
}
|
||||
|
||||
lbl_80258B30:
|
||||
lwz r3, 0xc0(r30)
|
||||
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
|
||||
*/
|
||||
param.mBoundingSphere.mPosition = Vector3f(0.0f, 1.0f, 0.0f);
|
||||
param.mSize = 17.5f;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -418,35 +211,12 @@ void Obj::doStartStoneState()
|
||||
*/
|
||||
void Obj::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
|
||||
EnemyBase::doFinishStoneState();
|
||||
|
||||
lbl_80258D0C:
|
||||
lwz r0, 0x14(r1)
|
||||
lwz r31, 0xc(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x10
|
||||
blr
|
||||
*/
|
||||
int stateID = getStateID();
|
||||
if (stateID >= FROG_Jump && stateID <= FROG_Attack) { // jump, jumpwait, fall, attack
|
||||
mFsm->transit(this, FROG_Turn, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -467,33 +237,10 @@ void Obj::doStartEarthquakeFitState()
|
||||
*/
|
||||
void Obj::doFinishEarthquakeFitState()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x10(r1)
|
||||
mflr r0
|
||||
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
|
||||
*/
|
||||
EnemyBase::doFinishEarthquakeFitState();
|
||||
if (getStateID() == FROG_Jump) {
|
||||
mFsm->transit(this, FROG_Turn, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -525,6 +272,13 @@ void Obj::doFinishWaitingBirthTypeDrop()
|
||||
*/
|
||||
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--
|
||||
* Address: 80258E5C
|
||||
@ -546,42 +300,12 @@ void Obj::doEndMovie() { effectDrawOn(); }
|
||||
*/
|
||||
Vector3f Obj::getOffsetForMapCollision()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x20(r1)
|
||||
mflr r0
|
||||
stw r0, 0x24(r1)
|
||||
stw r31, 0x1c(r1)
|
||||
mr r31, r4
|
||||
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
|
||||
*/
|
||||
Sys::Sphere boundingSphere;
|
||||
getBoundingSphere(boundingSphere);
|
||||
boundingSphere.mPosition.x -= mPosition.x;
|
||||
boundingSphere.mPosition.y = 0.0f;
|
||||
boundingSphere.mPosition.z -= mPosition.z;
|
||||
return boundingSphere.mPosition;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -589,31 +313,11 @@ Vector3f Obj::getOffsetForMapCollision()
|
||||
* Address: 80258F24
|
||||
* Size: 000054
|
||||
*/
|
||||
void Obj::getCommonEffectPos(Vector3f&)
|
||||
void Obj::getCommonEffectPos(Vector3f& effectPos)
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x20(r1)
|
||||
mflr r0
|
||||
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
|
||||
*/
|
||||
Sys::Sphere boundingSphere;
|
||||
getBoundingSphere(boundingSphere);
|
||||
effectPos = boundingSphere.mPosition;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -623,32 +327,13 @@ void Obj::getCommonEffectPos(Vector3f&)
|
||||
*/
|
||||
void Obj::updateCaution()
|
||||
{
|
||||
/*
|
||||
lwz r4, 0x1e0(r3)
|
||||
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
|
||||
if (isEvent(0, EB_Colliding) || isEvent(0, EB_TakingDamage) || mStuckPikminCount != 0) {
|
||||
mAlertTimer = 0.0f;
|
||||
}
|
||||
|
||||
lbl_80258F98:
|
||||
lfs f0, lbl_8051AACC@sda21(r2)
|
||||
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
|
||||
*/
|
||||
if (mAlertTimer < C_PARMS->mGeneral.mAlertDuration()) {
|
||||
mAlertTimer += sys->mDeltaTime;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -658,20 +343,10 @@ lbl_80258FA0:
|
||||
*/
|
||||
f32 Obj::getViewAngle()
|
||||
{
|
||||
// C_PARMS->
|
||||
/*
|
||||
lwz r4, 0xc0(r3)
|
||||
lfs f1, 0x2c4(r3)
|
||||
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
|
||||
*/
|
||||
if (mAlertTimer < C_PARMS->mGeneral.mAlertDuration()) {
|
||||
return 180.0f;
|
||||
}
|
||||
return C_PARMS->mGeneral.mViewAngle();
|
||||
}
|
||||
|
||||
/*
|
||||
@ -681,70 +356,17 @@ lbl_80258FE4:
|
||||
*/
|
||||
void Obj::startJumpAttack()
|
||||
{
|
||||
/*
|
||||
lwz r0, 0x1e0(r3)
|
||||
lfs f2, lbl_8051AACC@sda21(r2)
|
||||
ori r0, r0, 4
|
||||
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
|
||||
enableEvent(0, EB_Untargetable);
|
||||
mAirTimer = 0.0f;
|
||||
mCurrentVelocity.x = mTargetPosition.x - mPosition.x;
|
||||
mCurrentVelocity.z = mTargetPosition.z - mPosition.z;
|
||||
|
||||
lbl_80259054:
|
||||
fmr f1, f2
|
||||
f32 speed = mCurrentVelocity.normalise2D();
|
||||
|
||||
lbl_80259058:
|
||||
lfs f0, lbl_8051AACC@sda21(r2)
|
||||
fcmpo cr0, f1, f0
|
||||
ble lbl_80259080
|
||||
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
|
||||
*/
|
||||
f32 factor = (2.0f * speed) / C_PROPERPARMS.mAirTime();
|
||||
mCurrentVelocity.x *= factor;
|
||||
mCurrentVelocity.y = C_PROPERPARMS.mJumpSpeed();
|
||||
mCurrentVelocity.z *= factor;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -754,68 +376,10 @@ lbl_80259088:
|
||||
*/
|
||||
void Obj::resetHomePosition()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x20(r1)
|
||||
lfs f2, lbl_8051AB04@sda21(r2)
|
||||
lwz r4, 0xc0(r3)
|
||||
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
|
||||
*/
|
||||
f32 dist = 0.5f * C_PARMS->mGeneral.mHomeRadius();
|
||||
mHomePosition.x = dist * pikmin2_sinf(mFaceDir) + mPosition.x;
|
||||
mHomePosition.y = mPosition.y;
|
||||
mHomePosition.z = dist * pikmin2_cosf(mFaceDir) + mPosition.z;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -825,164 +389,41 @@ lbl_80259160:
|
||||
*/
|
||||
void Obj::pressOnGround()
|
||||
{
|
||||
/*
|
||||
stwu r1, -0x80(r1)
|
||||
mflr r0
|
||||
lfs f4, lbl_8051AB10@sda21(r2)
|
||||
li r4, 0
|
||||
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
|
||||
EnemyFunc::flickStickPikmin(this, C_PARMS->mGeneral.mShakeChance(), C_PARMS->mGeneral.mShakeKnockback(),
|
||||
C_PARMS->mGeneral.mShakeDamage(), FLICK_BACKWARD_ANGLE, nullptr);
|
||||
mFlickTimer = 0.0f;
|
||||
Sys::Sphere boundingSphere;
|
||||
getBoundingSphere(boundingSphere);
|
||||
|
||||
lbl_802592BC:
|
||||
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"
|
||||
Vector3f fxPos(boundingSphere.mPosition.x, mPosition.y, boundingSphere.mPosition.z);
|
||||
|
||||
lbl_80259344:
|
||||
lwz r3, cameraMgr__4Game@sda21(r13)
|
||||
addi r5, r1, 0x38
|
||||
li r4, 6
|
||||
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
|
||||
if (mWaterBox) {
|
||||
fxPos.y = *mWaterBox->getSeaHeightPtr();
|
||||
efx::Arg fxArg(fxPos);
|
||||
efx::TFrogDive diveFX;
|
||||
|
||||
lbl_802593A8:
|
||||
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
|
||||
diveFX.create(&fxArg);
|
||||
|
||||
lbl_802593D4:
|
||||
lwz r0, 0x84(r1)
|
||||
lwz r31, 0x7c(r1)
|
||||
mtlr r0
|
||||
addi r1, r1, 0x80
|
||||
blr
|
||||
*/
|
||||
PSStartEnemyDownWatSE(this, 1.0f);
|
||||
} else {
|
||||
fxPos.y = mPosition.y;
|
||||
|
||||
efx::Arg fxArg(fxPos);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -30,7 +30,7 @@ NISHIMURA_FILES:=\
|
||||
$(BUILD_DIR)/asm/plugProjectNishimuraU/FrogState.o\
|
||||
$(BUILD_DIR)/src/plugProjectNishimuraU/FrogAnimator.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)/asm/plugProjectNishimuraU/Ujib.o\
|
||||
$(BUILD_DIR)/asm/plugProjectNishimuraU/UjibState.o\
|
||||
|
@ -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
|
||||
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
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue
Block a user