pelplant.cpp progress

one regswap remains.
This commit is contained in:
HeartPiece 2022-08-20 01:21:19 +10:00
parent 9ee4eea704
commit 5e7efaf4eb
5 changed files with 36 additions and 208 deletions

View File

@ -26,8 +26,7 @@ template <typename T> struct Parm : public BaseParm {
{
}
virtual int size();
// { return 0x4; }
virtual int size() { return sizeof(T); }
virtual void write(Stream&);
virtual void read(Stream&);
inline T operator()() { return m_value; }

View File

@ -112,7 +112,7 @@ struct EnemyMgrBase : public IEnemyMgrBase {
*/
virtual EnemyBase* get(void* index) // _58
{
return getEnemy((long)index);
return getEnemy((int)index);
}
/**
* @reifiedAddress{801074BC}

View File

@ -54,26 +54,18 @@ struct CreatureProperty {
: m_props() {};
Property m_props;
};
struct CreatureParms : public CreatureProperty {
CreatureParms()
: CreatureProperty() {};
struct CreatureParms {
CreatureParms() {};
CreatureProperty m_creatureProps;
virtual void read(Stream& input) // _00
{
m_props.read(input);
m_creatureProps.m_props.read(input);
};
};
// struct CreatureParms {
// CreatureParms()
// : m_props() {};
// virtual void read(Stream& input) // _00
// {
// m_props.read(input);
// };
// Property m_props;
// };
struct EnemyParmsBase : public CreatureParms {
struct Parms : public Parameters {
Parms()
@ -174,14 +166,9 @@ struct EnemyParmsBase : public CreatureParms {
};
EnemyParmsBase()
: CreatureParms()
, m_flags()
, m_general()
{
m_flags[0].byteView[0] = 0;
m_flags[0].byteView[1] = 0;
m_flags[1].byteView[0] = 0;
m_flags[1].byteView[1] = 0;
m_flags[0].clear();
m_flags[1].clear();
}
bool loadSettingFile(JKRArchive* archive, char* name);

View File

@ -56,13 +56,16 @@ struct Obj : public EnemyBase {
virtual void getShadowParam(ShadowParam&); // _12C
virtual void onStickStart(Creature*); // _150
// vtable 2 (MotionListener+EnemyBase+self)
virtual ~Obj() { } // _004
virtual void birth(Vector3f&, float); // _008
virtual void setInitialSetting(EnemyInitialParamBase*); // _00C
virtual void doUpdate(); // _014
virtual void doAnimationUpdateAnimator(); // _020
virtual void doDebugDraw(Graphics&); // _034
virtual EnemyTypeID::EEnemyTypeID getEnemyTypeID(); // _0A0
virtual ~Obj() { } // _004
virtual void birth(Vector3f&, float); // _008
virtual void setInitialSetting(EnemyInitialParamBase*); // _00C
virtual void doUpdate(); // _014
virtual void doAnimationUpdateAnimator(); // _020
virtual void doDebugDraw(Graphics&); // _034
virtual EnemyTypeID::EEnemyTypeID getEnemyTypeID() // _0A0
{
return EnemyTypeID::EnemyID_Pelplant;
}
virtual void doGetLifeGaugeParam(LifeGaugeParam&); // _0A8
virtual bool damageCallBack(Creature*, float, CollPart*); // _0C0
virtual bool farmCallBack(Creature*, float); // _0D8
@ -109,7 +112,7 @@ struct Mgr : public EnemyMgrBase {
virtual ~Mgr() { }
virtual EnemyBase* birth(EnemyBirthArg&);
virtual void createObj(int count) { m_objects = new Obj[count]; }
virtual EnemyBase* getEnemy(int);
virtual EnemyBase* getEnemy(int index) { return &m_objects[index]; }
virtual void doAlloc();
virtual EnemyTypeID::EEnemyTypeID getEnemyTypeID() { return EnemyTypeID::EnemyID_Pelplant; }
virtual void initStoneSetting() { }
@ -172,7 +175,7 @@ struct ProperAnimator : public EnemyBlendAnimatorBase {
* @reifiedAddress{8010A9E0}
* @reifiedFile{plugProjectYamashitaU/pelplant.cpp}
*/
virtual ~ProperAnimator() {}; // _00
virtual ~ProperAnimator() { } // _00
virtual void setAnimMgr(SysShape::AnimMgr*); // _04
virtual SysShape::Animator& getAnimator(); // _08
virtual SysShape::Animator& getAnimator(int); // _0C

View File

@ -1201,6 +1201,8 @@ void Obj::doDebugDraw(Graphics& graphics)
* Address: 80108B10
* Size: 0000C0
*/
// one. single. regswap.
// WIP: https://decomp.me/scratch/ewP6E
void Obj::getShadowParam(Game::ShadowParam& param)
{
param.m_position = m_position;
@ -1626,7 +1628,7 @@ Mgr::Mgr(int p1, unsigned char p2)
* Address: 801095A4
* Size: 000098
*/
// WEAK - need to move to header
// WEAK - in header
// EnemyMgrBase::~EnemyMgrBase() { }
/*
@ -1654,135 +1656,11 @@ void Mgr::doAlloc() { init(new Parms); }
* Address: 8010979C
* Size: 0001D4
*/
// WEAK - needs to go in header once matched
// WEAK - in header
// EnemyParmsBase::EnemyParmsBase()
// : CreatureParms()
// , m_flags()
// , m_general()
// {
// m_flags[0].byteView[0] = 0;
// m_flags[0].byteView[1] = 0;
// m_flags[1].byteView[0] = 0;
// m_flags[1].byteView[1] = 0;
// /*
// stwu r1, -0x10(r1)
// mflr r0
// lis r5, 0x73303030@ha
// lis r4, __vt__Q24Game13CreatureParms@ha
// stw r0, 0x14(r1)
// addi r0, r4, __vt__Q24Game13CreatureParms@l
// addi r5, r5, 0x73303030@l
// stw r31, 0xc(r1)
// mr r31, r3
// lis r3, lbl_8047A660@ha
// stw r30, 8(r1)
// addi r30, r3, lbl_8047A660@l
// li r3, 0
// mr r4, r31
// stw r0, 0xd8(r31)
// addi r0, r31, 0xd4
// addi r6, r30, 0x118
// stw r0, 0(r31)
// addi r0, r30, 0x104
// stw r3, 4(r31)
// addi r3, r31, 0xc
// stw r0, 8(r31)
// bl __ct__8BaseParmFP10ParametersUlPc
// lis r3, "__vt__7Parm<f>"@ha
// lis r5, 0x73303031@ha
// addi r0, r3, "__vt__7Parm<f>"@l
// lfs f0, lbl_80517864@sda21(r2)
// stw r0, 0xc(r31)
// mr r4, r31
// lfs f1, lbl_80517860@sda21(r2)
// addi r3, r31, 0x34
// stfs f0, 0x24(r31)
// addi r5, r5, 0x73303031@l
// lfs f0, lbl_80517868@sda21(r2)
// addi r6, r30, 0x12c
// stfs f1, 0x2c(r31)
// stfs f0, 0x30(r31)
// bl __ct__8BaseParmFP10ParametersUlPc
// lis r3, "__vt__7Parm<f>"@ha
// lis r5, 0x73303032@ha
// addi r0, r3, "__vt__7Parm<f>"@l
// lfs f0, lbl_80517864@sda21(r2)
// stw r0, 0x34(r31)
// mr r4, r31
// lfs f1, lbl_80517860@sda21(r2)
// addi r3, r31, 0x5c
// stfs f0, 0x4c(r31)
// addi r5, r5, 0x73303032@l
// lfs f0, lbl_80517868@sda21(r2)
// addi r6, r30, 0x13c
// stfs f1, 0x54(r31)
// stfs f0, 0x58(r31)
// bl __ct__8BaseParmFP10ParametersUlPc
// lis r3, "__vt__7Parm<f>"@ha
// lis r5, 0x73303033@ha
// addi r0, r3, "__vt__7Parm<f>"@l
// lfs f0, lbl_805178C4@sda21(r2)
// stw r0, 0x5c(r31)
// mr r4, r31
// lfs f1, lbl_80517860@sda21(r2)
// addi r3, r31, 0x84
// stfs f0, 0x74(r31)
// addi r5, r5, 0x73303033@l
// lfs f0, lbl_80517868@sda21(r2)
// addi r6, r2, lbl_805178C8@sda21
// stfs f1, 0x7c(r31)
// stfs f0, 0x80(r31)
// bl __ct__8BaseParmFP10ParametersUlPc
// lis r3, "__vt__7Parm<f>"@ha
// lis r5, 0x73303034@ha
// addi r0, r3, "__vt__7Parm<f>"@l
// lfs f0, lbl_805178D0@sda21(r2)
// stw r0, 0x84(r31)
// mr r4, r31
// lfs f1, lbl_805178D4@sda21(r2)
// addi r3, r31, 0xac
// stfs f0, 0x9c(r31)
// addi r5, r5, 0x73303034@l
// lfs f0, lbl_80517884@sda21(r2)
// addi r6, r30, 0x14c
// stfs f1, 0xa4(r31)
// stfs f0, 0xa8(r31)
// bl __ct__8BaseParmFP10ParametersUlPc
// lis r3, "__vt__7Parm<f>"@ha
// lfs f0, lbl_805178D8@sda21(r2)
// addi r0, r3, "__vt__7Parm<f>"@l
// lfs f1, lbl_805178D4@sda21(r2)
// stw r0, 0xac(r31)
// lis r5, __vt__Q24Game14EnemyParmsBase@ha
// addi r0, r5, __vt__Q24Game14EnemyParmsBase@l
// lis r3, "__ct__11BitFlag<Us>Fv"@ha
// stfs f0, 0xc4(r31)
// addi r4, r3, "__ct__11BitFlag<Us>Fv"@l
// lfs f0, lbl_80517884@sda21(r2)
// addi r3, r31, 0xdc
// stfs f1, 0xcc(r31)
// li r5, 0
// li r6, 2
// li r7, 2
// stfs f0, 0xd0(r31)
// stw r0, 0xd8(r31)
// bl __construct_array
// addi r3, r31, 0xe0
// li r4, 1
// bl __ct__Q34Game14EnemyParmsBase5ParmsFv
// li r0, 0
// mr r3, r31
// stb r0, 0xdc(r31)
// stb r0, 0xdd(r31)
// stb r0, 0xde(r31)
// stb r0, 0xdf(r31)
// lwz r31, 0xc(r1)
// lwz r30, 8(r1)
// lwz r0, 0x14(r1)
// mtlr r0
// addi r1, r1, 0x10
// blr
// */
// m_flags[0].clear();
// m_flags[1].clear();
// }
/*
@ -1908,6 +1786,9 @@ void Obj::doGetLifeGaugeParam(Game::LifeGaugeParam& param)
param._10 = 10.0f;
}
} // namespace Pelplant
} // namespace Game
/*
* __dt__Q34Game8Pelplant3MgrFv
* --INFO--
@ -1948,7 +1829,8 @@ void Obj::doGetLifeGaugeParam(Game::LifeGaugeParam& param)
* Address: 8010A76C
* Size: 000010
*/
EnemyBase* Pelplant::Mgr::getEnemy(int index) { return &m_objects[index]; }
// WEAK - in header
// EnemyBase* Pelplant::Mgr::getEnemy(int index) { return &m_objects[index]; }
/*
* --INFO--
@ -1964,6 +1846,7 @@ EnemyBase* Pelplant::Mgr::getEnemy(int index) { return &m_objects[index]; }
* Address: 8010A780
* Size: 00002C
*/
// WEAK - in header
// void EnemyMgrBase::get(void*)
// {
// }
@ -1998,8 +1881,6 @@ EnemyBase* Pelplant::Mgr::getEnemy(int index) { return &m_objects[index]; }
// {
// }
} // namespace Pelplant
/*
* doSimpleDraw__16GenericObjectMgrFP8Viewport
* --INFO--
@ -2048,8 +1929,6 @@ EnemyBase* Pelplant::Mgr::getEnemy(int index) { return &m_objects[index]; }
*/
// u32 GenericObjectMgr::getMatrixLoadType() { return 0x0; }
namespace Game {
/**
* getEnd__Q24Game12EnemyMgrBaseFv
* --INFO--
@ -2110,8 +1989,6 @@ namespace Game {
// {
// }
} // namespace Game
/*
* __dt__16GenericContainerFv
* --INFO--
@ -2122,8 +1999,6 @@ namespace Game {
// {
// }
namespace Game {
/*
* __dt__Q24Game13IEnemyMgrBaseFv
* --INFO--
@ -2142,39 +2017,6 @@ namespace Game {
*/
// Pelplant::ProperAnimator::~ProperAnimator()
// {
// /*
// stwu r1, -0x10(r1)
// mflr r0
// stw r0, 0x14(r1)
// stw r31, 0xc(r1)
// or. r31, r3, r3
// beq lbl_8010AA34
// lis r3, __vt__Q34Game8Pelplant14ProperAnimator@ha
// addi r0, r3, __vt__Q34Game8Pelplant14ProperAnimator@l
// stw r0, 0(r31)
// beq lbl_8010AA24
// lis r3, __vt__Q24Game22EnemyBlendAnimatorBase@ha
// addi r0, r3, __vt__Q24Game22EnemyBlendAnimatorBase@l
// stw r0, 0(r31)
// beq lbl_8010AA24
// lis r3, __vt__Q24Game17EnemyAnimatorBase@ha
// addi r0, r3, __vt__Q24Game17EnemyAnimatorBase@l
// stw r0, 0(r31)
// lbl_8010AA24:
// extsh. r0, r4
// ble lbl_8010AA34
// mr r3, r31
// bl __dl__FPv
// lbl_8010AA34:
// lwz r0, 0x14(r1)
// mr r3, r31
// lwz r31, 0xc(r1)
// mtlr r0
// addi r1, r1, 0x10
// blr
// */
// }
/*
@ -2203,11 +2045,8 @@ namespace Game {
* Address: 8010AA78
* Size: 000008
*/
EnemyTypeID::EEnemyTypeID Pelplant::Obj::getEnemyTypeID() { return EnemyTypeID::EnemyID_Pelplant; }
} // namespace Game
} // namespace Game
// WEAK - in header
// EnemyTypeID::EEnemyTypeID Pelplant::Obj::getEnemyTypeID() { return EnemyTypeID::EnemyID_Pelplant; }
/*
* size__7Parm<i>Fv