diff --git a/docs/recommended_todo.md b/docs/recommended_todo.md index 55681c2f3..fdd319875 100644 --- a/docs/recommended_todo.md +++ b/docs/recommended_todo.md @@ -90,7 +90,7 @@ | aiTeki.cpp | 5858 | pelletNumber.cpp | 6199 | | gamePelletList.cpp | 8282 | mapMgrTraceMove.cpp | 9030 | | cellIterator.cpp | 9434 | itemHole.cpp | 11676 | -| itemBigFountain.cpp | 12679 | itemHoney.cpp | 12872 | +| itemHoney.cpp | 12300 | itemBigFountain.cpp | 12679 | | aiRescue.cpp | 13908 | texCaster.cpp | 13913 | | aiBreakGate.cpp | 13918 | creatureLOD.cpp | 14136 | | flockMgr.cpp | 14542 | naviWhistle.cpp | 16714 | diff --git a/include/PSAutoBgm/AutoBgm.h b/include/PSAutoBgm/AutoBgm.h index e36eb504f..6c47afcf0 100644 --- a/include/PSAutoBgm/AutoBgm.h +++ b/include/PSAutoBgm/AutoBgm.h @@ -4,10 +4,7 @@ #include "PSSystem/SeqTrack.h" #include "types.h" #include "PSSystem/PSBgm.h" -#include "PSSystem/Seq.h" #include "PSSystem/PSBgmTask.h" -#include "JSystem/JAudio/JAI/JAInter.h" -#include "JSystem/JAudio/JAD/JADUtility.h" #include "PSAutoBgm/Conductor.h" #include "PSAutoBgm/MeloArr.h" @@ -30,16 +27,27 @@ struct AutoBgm : public PSSystem::DirectedBgm { void loadConductor(PSSystem::TaskChecker*); void loadedCallback(u32, u32); + void setPikiMaskNum(u8* cond) + { + int num = 0; + for (int i = 0; i < 16; i++) { + if (cond[i]) { + num++; + } + } + mPikiMaskNum = num; + } + // _00-_10 = JSULink // _10 = VTABLE // _14-_B8 = DirectedBgm ConductorMgr _B8; // _B8 u8 _328[0x8]; // _328 - unknown - char* _330; // _330 - cnd file name? + char* mConductorFilePath; // _330 (.cnd) PSSystem::TaskChecker* _334; // _334 u8* _338; // _338 - str? MeloArrMgr _33C; // _33C - u16 _34C; // _34C - unknown + u16 mPikiMaskNum; // _34C - unknown u8 _34E; // _34E - unknown u8 _34F; // _34F - might be padding }; diff --git a/include/PSGame/PikScene.h b/include/PSGame/PikScene.h index 63438df0e..f133392d7 100644 --- a/include/PSGame/PikScene.h +++ b/include/PSGame/PikScene.h @@ -3,7 +3,7 @@ #include "types.h" #include "PSSystem/PSScene.h" -#include "PSSystem/Director.h" +#include "PSSystem/PSSeq.h" #include "PSSystem/PSBgm.h" #include "PSGame/SceneInfo.h" #include "JSystem/JAudio/JAI/JAInter.h" @@ -43,7 +43,7 @@ struct PikSceneMgr : public PSSystem::SceneMgr { virtual void newAutoBgm(const char*, const char*, JAInter::SoundInfo&, JADUtility::AccessMode, SceneInfo&, PSSystem::DirectorMgrBase*) = 0; // _1C - virtual void curSceneIsBigBossFloor(); // _20 (weak) + virtual bool curSceneIsBigBossFloor(); // _20 (weak) virtual void newGameScene(u8, SceneInfo*) = 0; // _24 PSSystem::BgmSeq* newBgmSeq(const char*, JAInter::SoundInfo&); diff --git a/include/PSM/BgmTrackMap.h b/include/PSM/BgmTrackMap.h index 747a45879..29496f1eb 100644 --- a/include/PSM/BgmTrackMap.h +++ b/include/PSM/BgmTrackMap.h @@ -23,6 +23,28 @@ struct BgmTrackMap { strcpy(mFileName, ""); }; + inline int getPikNum() + { + int num = 0; + for (int i = 0; i < 16; i++) { + if (mPikNum[i]) { + num++; + } + } + return num; + } + + inline int getPikMaskNum() + { + int num = 0; + for (int i = 0; i < 8; i++) { + if (mPikMask[i]) { + num++; + } + } + return num; + } + char mFileName[32]; // _00 u8 mBasicTrackCount; // _20 u8 mEventTrackCount; // _21 @@ -34,13 +56,13 @@ struct BgmTrackMap { u8 mPikMask[8]; // _36 }; -struct BgmTrackMapFile : public PSSystem::TextDataBase, public PSSystem::SingletonBase { +struct BgmTrackMapFile : public ::PSSystem::TextDataBase, public ::PSSystem::SingletonBase { BgmTrackMapFile(bool flag); virtual ~BgmTrackMapFile() { } // _08 (weak) virtual bool read(Stream& input); // _0C - void readTrackMap(const char*); + BgmTrackMap readTrackMap(const char*); // _00 = VTBL 1 // _1C = VTBL 2 diff --git a/include/PSM/BossBgmFader.h b/include/PSM/BossBgmFader.h index 5a760cdb7..2b75a2c44 100644 --- a/include/PSM/BossBgmFader.h +++ b/include/PSM/BossBgmFader.h @@ -24,18 +24,18 @@ struct TypedProc { void getBossFadeVolume(); // _00 VTBL - f32 _04; // _04 - f32 _08; // _08 - f32 _0C; // _0C - f32 _10; // _10 - u32 _14; // _14, unknown - u32 _18; // _18, unknown - u32 _1C; // _1C, unknown - u32 _20; // _20 - PSM::DirectorUpdator* mDirectorUpdator; // _24 - u8 _28; // _28 - u8 _29[0x3]; // _29, unknown/padding - f32 _2C; // _2C + f32 _04; // _04 + f32 _08; // _08 + f32 _0C; // _0C + f32 _10; // _10 + u32 _14; // _14, unknown + u32 _18; // _18, unknown + u32 _1C; // _1C, unknown + u32 _20; // _20 + DirectorUpdator* mDirectorUpdator; // _24 + u8 _28; // _28 + u8 _29[0x3]; // _29, unknown/padding + f32 _2C; // _2C }; /** @@ -51,23 +51,30 @@ struct TypedProc_MidBoss : public TypedProc { // _00 = VTBL // _00-_30 = TypedProc - PSM::DirectorUpdator* _30; // _30 + DirectorUpdator* mBossUpdator; // _30 }; /** * @size{0x44} */ -struct Mgr : PSSystem::SingletonBase { +struct Mgr : ::PSSystem::SingletonBase { Mgr(); virtual ~Mgr(); // _08 (weak) - void appendTarget(JSULink*); + void appendTarget(JSULink*); void exec(); + inline void setUpdator(::PSSystem::DirectorBase* director) + { + if (mEnemyBossList.mLinkCount) { + mTypedProc.mBossUpdator = new DirectorUpdator(director, mEnemyBossList.mLinkCount, DirectorUpdator::TYPE_0); + } + } + // _00 VTBL - JSUList mEnemyBossList; // _04 - TypedProc_MidBoss mTypedProc; // _10 + JSUList mEnemyBossList; // _04 + TypedProc_MidBoss mTypedProc; // _10 }; } // namespace BossBgmFader } // namespace PSM diff --git a/include/PSM/Director.h b/include/PSM/Director.h index cc18da23a..975647e79 100644 --- a/include/PSM/Director.h +++ b/include/PSM/Director.h @@ -2,7 +2,7 @@ #define _PSM_DIRECTOR_H #include "Dolphin/os.h" -#include "PSSystem/Director.h" +#include "PSSystem/PSSeq.h" struct JASTrack; @@ -18,9 +18,9 @@ struct SeqTrackBase; } // namespace PSSystem namespace PSM { -struct OneShotDirector : public PSSystem::OneShotDirector { +struct OneShotDirector : public ::PSSystem::OneShotDirector { inline OneShotDirector() - : PSSystem::OneShotDirector() + : ::PSSystem::OneShotDirector() , mActor(nullptr) { } @@ -29,7 +29,7 @@ struct OneShotDirector : public PSSystem::OneShotDirector { // _00 = VTBL // _00-_48 = PSSystem::OneShotDirector - PSSystem::DirectorCopyActor* mActor; // _48 + ::PSSystem::DirectorCopyActor* mActor; // _48 }; /** @@ -38,9 +38,9 @@ struct OneShotDirector : public PSSystem::OneShotDirector { struct DamageDirector : public OneShotDirector { DamageDirector(); - virtual ~DamageDirector(); // _08 (weak) - virtual void execInner(); // _1C - virtual void directOnTrack(PSSystem::SeqTrackBase&); // _20 + virtual ~DamageDirector(); // _08 (weak) + virtual void execInner(); // _1C + virtual void directOnTrack(::PSSystem::SeqTrackBase&); // _20 // _00 = VTBL // _00-_48 = OneShotDirector @@ -49,48 +49,48 @@ struct DamageDirector : public OneShotDirector { u32 _54; // _54 }; -struct SwitcherDirector : public PSSystem::SwitcherDirector { +struct SwitcherDirector : public ::PSSystem::SwitcherDirector { inline SwitcherDirector(int p1, const char* p2) - : PSSystem::SwitcherDirector(p1, p2) + : ::PSSystem::SwitcherDirector(p1, p2) { } - virtual ~SwitcherDirector(); // _08 (weak) + virtual ~SwitcherDirector() { } // _08 (weak) // _00 = VTBL // _00-_48 = PSSystem::SwitcherDirector }; struct PikminNumberDirector : public SwitcherDirector { - PikminNumberDirector(int, u8, PSSystem::DirectedBgm&); + PikminNumberDirector(int, u8, ::PSSystem::DirectedBgm&); - virtual ~PikminNumberDirector(); // _08 (weak) - virtual void execInner(); // _1C - virtual void directOnTrack(PSSystem::SeqTrackBase&); // _20 - virtual void directOffTrack(PSSystem::SeqTrackBase&); // _24 + virtual ~PikminNumberDirector(); // _08 (weak) + virtual void execInner(); // _1C + virtual void directOnTrack(::PSSystem::SeqTrackBase&); // _20 + virtual void directOffTrack(::PSSystem::SeqTrackBase&); // _24 // _00 = VTBL // _00-_48 = SwitcherDirector - PSSystem::DirectorCopyActor* mActor; // _48 - u8 _4C; // _4C + ::PSSystem::DirectorCopyActor* mActor; // _48 + u8 _4C; // _4C }; /** * @size{0x54} */ struct PikminNumberDirector_AutoBgm : public PikminNumberDirector { - PikminNumberDirector_AutoBgm(int, u8, PSSystem::DirectedBgm&); + PikminNumberDirector_AutoBgm(int, u8, ::PSSystem::DirectedBgm&); - virtual ~PikminNumberDirector_AutoBgm(); // _08 (weak) - virtual void directOnTrack(PSSystem::SeqTrackBase&); // _20 - virtual void directOffTrack(PSSystem::SeqTrackBase&); // _24 + virtual ~PikminNumberDirector_AutoBgm(); // _08 (weak) + virtual void directOnTrack(::PSSystem::SeqTrackBase&); // _20 + virtual void directOffTrack(::PSSystem::SeqTrackBase&); // _24 - void getTrack(PSSystem::SeqTrackBase&); + void getTrack(::PSSystem::SeqTrackBase&); // _00 = VTBL // _00-_4C = PikminNumberDirector - u8 _4C; // _4C - PSSystem::DirectedBgm* mDirectedBgm; // _50 + u8 _4C; // _4C + ::PSSystem::DirectedBgm* mDirectedBgm; // _50 }; struct TempoChangeDirectorBase : public SwitcherDirector { @@ -101,15 +101,15 @@ struct TempoChangeDirectorBase : public SwitcherDirector { , mActor(nullptr) { } - virtual ~TempoChangeDirectorBase(); // _08 (weak) - virtual void directOnTrack(PSSystem::SeqTrackBase&); // _20 - virtual void directOffTrack(PSSystem::SeqTrackBase&); // _24 + virtual ~TempoChangeDirectorBase(); // _08 (weak) + virtual void directOnTrack(::PSSystem::SeqTrackBase&); // _20 + virtual void directOffTrack(::PSSystem::SeqTrackBase&); // _24 // _00 = VTBL // _00-_48 = SwitcherDirector f32 _48; u32 _4C; - PSSystem::DirectorCopyActor* mActor; + ::PSSystem::DirectorCopyActor* mActor; }; /** @@ -129,10 +129,10 @@ struct ActorDirector_TempoChange : public TempoChangeDirectorBase { struct TrackOnDirectorBase : public SwitcherDirector { TrackOnDirectorBase(int, const char*, long, long); - virtual ~TrackOnDirectorBase(); // _08 (weak) - virtual void directOnTrack(PSSystem::SeqTrackBase&); // _20 - virtual void directOffTrack(PSSystem::SeqTrackBase&); // _24 - virtual void onPlayInit(JASTrack*); // _2C + virtual ~TrackOnDirectorBase() { } // _08 (weak) + virtual void directOnTrack(::PSSystem::SeqTrackBase&); // _20 + virtual void directOffTrack(::PSSystem::SeqTrackBase&); // _24 + virtual void onPlayInit(JASTrack*); // _2C // _00 = VTBL // _00-_48 = SwitcherDirector @@ -147,7 +147,7 @@ struct TrackOnDirectorBase : public SwitcherDirector { struct PikAttackDirector : public TrackOnDirectorBase { PikAttackDirector(int); - virtual ~PikAttackDirector(); // _08 (weak) + virtual ~PikAttackDirector() { } // _08 (weak) // _00 = VTBL // _00-_54 = TrackOnDirectorBase @@ -170,19 +170,23 @@ struct TrackOnDirector_Scaled : public TrackOnDirectorBase { // _00 = VTBL // _00-_54 = TrackOnDirectorBase - f32 _54; // _54 - f32 _58; // _58 - f32 _5C; // _5C - u32 _60; // _60 - PSSystem::DirectorCopyActor* mActor; // _64 + f32 _54; // _54 + f32 _58; // _58 + f32 _5C; // _5C + u32 _60; // _60 + ::PSSystem::DirectorCopyActor* mActor; // _64 }; /** * @size{0x58} */ struct TrackOnDirector_Voting : public TrackOnDirectorBase { - virtual ~TrackOnDirector_Voting(); // _08 (weak) - virtual void execInner(); // _1C + TrackOnDirector_Voting(int track, const char* name, int p1, int p2) + : TrackOnDirectorBase(track, name, p1, p2) + { + } + virtual ~TrackOnDirector_Voting() { } // _08 (weak) + virtual void execInner(); // _1C // _00 = VTBL // _00-_54 = TrackOnDirectorBase @@ -195,7 +199,7 @@ struct TrackOnDirector_Voting : public TrackOnDirectorBase { struct ExiteDirector : public TrackOnDirectorBase { ExiteDirector(int); - virtual ~ExiteDirector(); // _08 (weak) + virtual ~ExiteDirector() { } // _08 (weak) // _00 = VTBL // _00-_54 = TrackOnDirectorBase @@ -207,21 +211,26 @@ struct ExiteDirector : public TrackOnDirectorBase { struct ActorDirector_TrackOn : public TrackOnDirectorBase { ActorDirector_TrackOn(const char*, int, long, long); - virtual ~ActorDirector_TrackOn(); // _08 (weak) - virtual void execInner(); // _1C + virtual ~ActorDirector_TrackOn() { } // _08 (weak) + virtual void execInner(); // _1C // _00 = VTBL // _00-_54 = TrackOnDirectorBase - PSSystem::DirectorCopyActor* mActor; // _54 + ::PSSystem::DirectorCopyActor* mActor; // _54 }; /** * @size{0x58} */ struct GroundDirector_Cave : public ActorDirector_TrackOn { - virtual ~GroundDirector_Cave(); // _08 (weak) - virtual void directOn(); // _10 (weak) - virtual void directOff(); // _14 (weak) + GroundDirector_Cave(const char* name, int tracks, long a1, long a2) + : ActorDirector_TrackOn(name, tracks, a1, a2) + { + } + + virtual ~GroundDirector_Cave() { } // _08 (weak) + virtual void directOn() { } // _10 (weak) + virtual void directOff() { } // _14 (weak) // _00 = VTBL // _00-_58 = ActorDirector_TrackOn @@ -263,6 +272,11 @@ struct ActorDirector_Enemy : public ActorDirector_Scaled { * @size{0x6C} */ struct ActorDirector_Battle : public ActorDirector_Enemy { + ActorDirector_Battle(const char* name, int tracks, long a1, long a2, u32 a3) + : ActorDirector_Enemy(name, tracks, a1, a2, a3) + { + } + virtual ~ActorDirector_Battle(); // _08 (weak) virtual f64 getVolZeroDist(Game::EnemyBase*); // _40 virtual f64 getVolMaxDist(Game::EnemyBase*); // _44 @@ -275,6 +289,11 @@ struct ActorDirector_Battle : public ActorDirector_Enemy { * @size{0x6C} */ struct ActorDirector_Kehai : public ActorDirector_Enemy { + ActorDirector_Kehai(const char* name, int tracks, long a1, long a2, u32 a3) + : ActorDirector_Enemy(name, tracks, a1, a2, a3) + { + } + virtual ~ActorDirector_Kehai(); // _08 (weak) virtual f64 getVolZeroDist(Game::EnemyBase*); // _40 virtual f64 getVolMaxDist(Game::EnemyBase*); // _44 @@ -289,24 +308,29 @@ struct ActorDirector_Kehai : public ActorDirector_Enemy { struct DirectorUpdator { enum Type { TYPE_0 }; - DirectorUpdator(PSSystem::DirectorBase*, u8, Type); + DirectorUpdator(::PSSystem::DirectorBase*, u8, Type); void directOn(u8); void directOff(u8); void frameEndWork(); - u8 _00; // _00 - Type mType; // _04 - u8 _08; // _08 - u8 _09; // _09 - PSSystem::DirectorBase* mDirector; // _0C + u8 _00; // _00 + Type mType; // _04 + u8 _08; // _08 + u8 _09; // _09 + ::PSSystem::DirectorBase* mDirector; // _0C }; -struct ListDirectorActor : public PSSystem::DirectorCopyActor { +struct ListDirectorActor : public ::PSSystem::DirectorCopyActor { + ListDirectorActor() + : ::PSSystem::DirectorCopyActor(nullptr, nullptr) + { + } virtual void onUpdateFromMasterD(); // _0C // _00 = VTBL // _00-_0C = PSSystem::DirectorCopyActor + JSUPtrList mPtrList; // _0C }; } // namespace PSM diff --git a/include/PSM/DirectorMgr.h b/include/PSM/DirectorMgr.h index cc9cefd50..4548a5662 100644 --- a/include/PSM/DirectorMgr.h +++ b/include/PSM/DirectorMgr.h @@ -2,47 +2,57 @@ #define _PSM_DIRECTORMGR_H #include "types.h" -#include "PSSystem/Director.h" +#include "PSSystem/PSSeq.h" #include "PSM/Director.h" #include "PSM/BgmTrackMap.h" namespace PSM { -struct DirectorMgr_Scene : public PSSystem::DirectorMgrBase, public JKRDisposer { +struct DirectorMgr_Scene : public ::PSSystem::DirectorMgrBase, public JKRDisposer { + + enum DirectorType { + Director_Working = 0, + Director_Treasure = 1, + Director_EnemyNear = 2, + Director_Battle = 3, + Director_Ground = 4, // aka spiderworts + Director_Pikmin = 5, // missing notes when pikmin die + Director_Damage = 6, // distortion when getting hit + Director_Tempo = 7, // slow music when low health + }; + DirectorMgr_Scene(DirectorMgr_Scene*, u8); - virtual ~DirectorMgr_Scene(); // _08 (weak) - virtual void newDirector(u8, PSSystem::DirectedBgm&); // _0C - virtual void isSlave(); // _1C (weak) - virtual void newPikminNumberDirector(int, u8, PSSystem::DirectedBgm&); // _20 + virtual ~DirectorMgr_Scene(); // _08 (weak) + virtual ::PSSystem::DirectorBase* newDirector(u8, ::PSSystem::DirectedBgm&); // _0C + virtual bool isSlave() { return mOwner; } // _1C (weak) + virtual PikminNumberDirector* newPikminNumberDirector(int, u8, ::PSSystem::DirectedBgm&); // _20 - void initTrackMap(PSSystem::DirectedBgm&); - void adaptDirectorActor(PSSystem::DirectorBase*, u8); + void initTrackMap(::PSSystem::DirectedBgm&); + void adaptDirectorActor(::PSSystem::DirectorBase*, u8); // _00 = VTBL 1 (DirectorMgrBase) // _0C = VTBL 2 (JKRDisposer + Self) // _00-_0C = PSSystem::DirectorMgrBase // _0C-_24 = JKRDisposer - PSSystem::DirectorCopyActor* _24[4]; // _24 - ListDirectorActor* mListDirectorActor; // _34 - PSSystem::DirectorCopyActor* _38[3]; // _38 - DirectorMgr_Scene* mOwner; // _44 - BgmTrackMap mBgmTrackMap; // _48 + ::PSSystem::DirectorCopyActor* mCopyActorList[8]; // _24 + DirectorMgr_Scene* mOwner; // _44 + BgmTrackMap mBgmTrackMap; // _48 }; struct DirectorMgr_Scene_AutoBgm : public DirectorMgr_Scene { - virtual ~DirectorMgr_Scene_AutoBgm(); // _08 (weak) - virtual void newPikminNumberDirector(int, u8, PSSystem::DirectedBgm&); // _20 + virtual ~DirectorMgr_Scene_AutoBgm() { } // _08 (weak) + virtual PikminNumberDirector* newPikminNumberDirector(int, u8, ::PSSystem::DirectedBgm&); // _20 // _00 = VTBL 1 // _0C = VTBL 2 // _00-_88 = DirectorMgr_Scene }; -struct DirectorMgr_Battle : public PSSystem::DirectorMgrBase, public JKRDisposer { +struct DirectorMgr_Battle : public ::PSSystem::DirectorMgrBase, public JKRDisposer { DirectorMgr_Battle(); - virtual ~DirectorMgr_Battle(); // _08 (weak) - virtual void newDirector(u8, PSSystem::DirectedBgm&); // _0C + virtual ~DirectorMgr_Battle() { } // _08 (weak) + virtual ::PSSystem::DirectorBase* newDirector(u8, ::PSSystem::DirectedBgm&); // _0C // _00 = VTBL 1 (DirectorMgrBase) // _0C = VTBL 2 (JKRDisposer + Self) @@ -50,11 +60,23 @@ struct DirectorMgr_Battle : public PSSystem::DirectorMgrBase, public JKRDisposer // _0C-_24 = JKRDisposer }; -struct DirectorMgr_2PBattle : public PSSystem::DirectorMgrBase, public JKRDisposer { +struct DirectorMgr_2PBattle : public ::PSSystem::DirectorMgrBase, public JKRDisposer { + + enum DirectorType { + Director2P_Working = 0, + Director2P_EnemyNear = 1, + Director2P_Battle = 2, + Director2P_OlimarMarble = 3, + Director2P_LouieMarble = 4, + Director2P_OlimarIchou = 5, + Director2P_LouieIchou = 6, + Director2P_PikBattle = 7, + }; + DirectorMgr_2PBattle(); - virtual ~DirectorMgr_2PBattle(); // _08 (weak) - virtual void newDirector(u8, PSSystem::DirectedBgm&); // _0C + virtual ~DirectorMgr_2PBattle() { } // _08 (weak) + virtual ::PSSystem::DirectorBase* newDirector(u8, ::PSSystem::DirectedBgm&); // _0C // _00 = VTBL 1 (DirectorMgrBase) // _0C = VTBL 2 (JKRDisposer + Self) diff --git a/include/PSM/Scene.h b/include/PSM/Scene.h index 558a7cb96..80dd2bf07 100644 --- a/include/PSM/Scene.h +++ b/include/PSM/Scene.h @@ -52,7 +52,7 @@ struct SceneMgr : public PSGame::PikSceneMgr { virtual void newDirectedBgm(const char*, JAInter::SoundInfo&); // _18 virtual void newAutoBgm(const char*, const char*, JAInter::SoundInfo&, JADUtility::AccessMode, PSGame::SceneInfo&, PSSystem::DirectorMgrBase*); // _1C - virtual void curSceneIsBigBossFloor(); // _20 + virtual bool curSceneIsBigBossFloor(); // _20 virtual void newGameScene(u8, PSGame::SceneInfo*); // _24 void initEnvironmentSe(Scene_Game*); diff --git a/include/PSSystem/PSBgm.h b/include/PSSystem/PSBgm.h index 390a3e331..dba5ba6e7 100644 --- a/include/PSSystem/PSBgm.h +++ b/include/PSSystem/PSBgm.h @@ -34,6 +34,14 @@ struct BgmSeq : public SeqBase { * @size = 0xB8 */ struct DirectedBgm : public BgmSeq { + + enum CastType { + BgmType_NULL = 0, + BgmType_Battle = 2, + BgmType_Cave = 3, + BgmType_2PBattle = 8, + }; + DirectedBgm(const char* bmsFileName, const JAInter::SoundInfo& info, DirectorMgrBase* directorMgr); virtual ~DirectedBgm(); // _08 (weak) @@ -55,10 +63,10 @@ struct DirectedBgm : public BgmSeq { // _00-_10 = JSULink // _10 = VTABLE // _14-_6C = BgmSeq - DirectorMgrBase* mDirectorMgr; // _6C - SeqTrackRoot* _70; // _70 - SeqTrackChild* _74[16]; // _74 - u8 _B4; // _B4 - unknown + DirectorMgrBase* mDirectorMgr; // _6C + SeqTrackRoot* mRootTrack; // _70 + SeqTrackChild* mChildTracks[16]; // _74 + u8 _B4; // _B4 - unknown }; /** diff --git a/include/PSSystem/Director.h b/include/PSSystem/PSSeq.h similarity index 73% rename from include/PSSystem/Director.h rename to include/PSSystem/PSSeq.h index 74c86f05f..0de709b68 100644 --- a/include/PSSystem/Director.h +++ b/include/PSSystem/PSSeq.h @@ -31,6 +31,34 @@ struct DirectorBase : public JADHioNode { void directOffInner(); void powerOn(); + inline void setupTracks(int startID, int maxID, SeqTrackBase** tracks) + { + for (u8 i = 0; i < maxID; i++) { + int id = i + startID; + P2ASSERTLINE(419, id < 16); + setTrack(i, tracks[id]); + } + } + // there should only be a single inline judging by the line number, but i have no clue how to handle this condition check + inline void setupTracks(int startID, int maxID, SeqTrackBase** tracks, u8* cond) + { + for (int i = 0; i < maxID; i++) { + int id = i + startID; + if (cond[i]) { + P2ASSERTLINE(419, id < 16); + } + setTrack(i, tracks[id]); + } + } + + // this is supposed to be a function for BgmSeq or DirectedBGM, but those are in a different header, + // but the panic has to be in this file AAAAAAAAAAAAAAA + inline void isBgmTrackValid() + { + bool check = true; // _B4 && _70 + P2ASSERTLINE(415, check); + } + static u8 sToolMode; // _00 = VTBL @@ -67,7 +95,7 @@ struct SwitcherDirector : public DirectorBase { { } - virtual ~SwitcherDirector(); // _08 (weak) + virtual ~SwitcherDirector() { } // _08 (weak) virtual void directOnTrack(SeqTrackBase&) = 0; // _20 virtual void directOffTrack(SeqTrackBase&) = 0; // _24 virtual void doUpdateRequest(); // _28 @@ -90,15 +118,15 @@ struct DirectorCopyActor : public DirectorActorBase { virtual void onUpdateFromSlaveD(); // _10 (weak) // _00 = VTBL - DirectorBase* _04; // _04 - DirectorBase* _08; // _08 + DirectorBase* mDirectorChild; // _04 + DirectorBase* mDirectorParent; // _08 }; struct DirectorMgrBase : public JADHioNode { DirectorMgrBase(u8); - virtual ~DirectorMgrBase(); // _08 (weak) - virtual void newDirector(u8, DirectedBgm&) = 0; // _0C + virtual ~DirectorMgrBase() { } // _08 (weak) + virtual DirectorBase* newDirector(u8, DirectedBgm&) = 0; // _0C void initAndAdaptToBgm(DirectedBgm&); void playInit(JASTrack*); diff --git a/include/PSSystem/SeqTrack.h b/include/PSSystem/SeqTrack.h index ef72b8589..2a9e90329 100644 --- a/include/PSSystem/SeqTrack.h +++ b/include/PSSystem/SeqTrack.h @@ -3,7 +3,7 @@ #include "types.h" #include "PSSystem/PSBgmTask.h" -#include "PSSystem/Director.h" +#include "PSSystem/PSSeq.h" #include "JSystem/JAudio/JAS/JASTrack.h" #include "JSystem/JAudio/JAD/JADDataMgr.h" diff --git a/src/utilityU/PSMainSide_DirectorMgr.cpp b/src/utilityU/PSMainSide_DirectorMgr.cpp index 02112b153..a8191bf8c 100644 --- a/src/utilityU/PSMainSide_DirectorMgr.cpp +++ b/src/utilityU/PSMainSide_DirectorMgr.cpp @@ -1,174 +1,8 @@ #include "PSM/DirectorMgr.h" -#include "PSSystem/PSBgm.h" -#include "types.h" - -/* - Generated from dpostproc - - .section .rodata # 0x804732E0 - 0x8049E220 - lbl_8049DA80: - .asciz "PSMainSide_DirectorMgr.cpp" - .skip 1 - lbl_8049DA9C: - .asciz "P2Assert" - .skip 3 - .asciz "caveglass.bms" - .skip 2 - .asciz "caverelax.bms" - .skip 2 - .asciz "/user/Totaka/trackMap_Seq_T.txt" - .asciz "caveconc.bms" - .skip 3 - .asciz "/user/Totaka/trackMap_Cond_T.txt" - .skip 3 - .asciz "cavesoil.bms" - .skip 3 - .asciz "cavemetal.bms" - .skip 2 - .asciz "/user/Wakai/trackMap_Cond_W.txt" - .asciz "/user/Wakai/trackMap_Seq_W.txt" - .skip 1 - .asciz "track map is\nnot initialized\n" - .skip 2 - .asciz "kehaiD " - .skip 2 - .asciz "battleD " - .skip 2 - .asciz "OtakaraD" - .skip 3 - .asciz "GroundD " - .skip 2 - .asciz "PSGame.h" - .skip 3 - .asciz "PSCommon.h" - .skip 1 - .asciz "eventD " - .skip 2 - .asciz "OriBeedaD" - .skip 2 - .asciz "RugBeedaD" - .skip 2 - .asciz "OriIchouD" - .skip 2 - .asciz "RouIchouD" - .skip 2 - .asciz "PikBattlD" - .skip 2 - - .section .data, "wa" # 0x8049E220 - 0x804EFC20 - lbl_804EF880: - .4byte lbl_8046F928 - .4byte lbl_8046FB60 - .4byte lbl_8046F9D8 - .4byte lbl_8046FA98 - .4byte lbl_8046FC0C - .4byte lbl_8046FD34 - .4byte lbl_8046FEA8 - .4byte lbl_8046FF14 - lbl_804EF8A0: - .4byte lbl_80470060 - .4byte lbl_80470068 - .4byte lbl_80470070 - .4byte lbl_80470078 - .4byte lbl_80470080 - .4byte lbl_80470088 - .4byte lbl_80470090 - .4byte lbl_80470098 - lbl_804EF8C0: - .4byte lbl_80470518 - .4byte lbl_804705F8 - .4byte lbl_804706D4 - .4byte lbl_804707B0 - .4byte lbl_80470850 - .4byte lbl_804708F0 - .4byte lbl_804709C4 - .4byte lbl_80470A98 - .global __vt__Q23PSM20DirectorMgr_2PBattle - __vt__Q23PSM20DirectorMgr_2PBattle: - .4byte 0 - .4byte 0 - .4byte __dt__Q23PSM20DirectorMgr_2PBattleFv - .4byte - newDirector__Q23PSM20DirectorMgr_2PBattleFUcRQ28PSSystem11DirectedBgm .4byte - 0 .4byte 0 .4byte "@12@__dt__Q23PSM20DirectorMgr_2PBattleFv" .global - __vt__Q23PSM18DirectorMgr_Battle - __vt__Q23PSM18DirectorMgr_Battle: - .4byte 0 - .4byte 0 - .4byte __dt__Q23PSM18DirectorMgr_BattleFv - .4byte - newDirector__Q23PSM18DirectorMgr_BattleFUcRQ28PSSystem11DirectedBgm .4byte 0 - .4byte 0 - .4byte "@12@__dt__Q23PSM18DirectorMgr_BattleFv" - .global __vt__Q23PSM25DirectorMgr_Scene_AutoBgm - __vt__Q23PSM25DirectorMgr_Scene_AutoBgm: - .4byte 0 - .4byte 0 - .4byte __dt__Q23PSM25DirectorMgr_Scene_AutoBgmFv - .4byte - newDirector__Q23PSM17DirectorMgr_SceneFUcRQ28PSSystem11DirectedBgm .4byte 0 - .4byte 0 - .4byte "@12@__dt__Q23PSM25DirectorMgr_Scene_AutoBgmFv" - .4byte isSlave__Q23PSM17DirectorMgr_SceneFv - .4byte - newPikminNumberDirector__Q23PSM25DirectorMgr_Scene_AutoBgmFiUcRQ28PSSystem11DirectedBgm - .global __vt__Q23PSM19GroundDirector_Cave - __vt__Q23PSM19GroundDirector_Cave: - .4byte 0 - .4byte 0 - .4byte __dt__Q23PSM19GroundDirector_CaveFv - .4byte exec__Q28PSSystem12DirectorBaseFv - .4byte directOn__Q23PSM19GroundDirector_CaveFv - .4byte directOff__Q23PSM19GroundDirector_CaveFv - .4byte underDirection__Q28PSSystem12DirectorBaseFv - .4byte execInner__Q23PSM21ActorDirector_TrackOnFv - .4byte - directOnTrack__Q23PSM19TrackOnDirectorBaseFRQ28PSSystem12SeqTrackBase .4byte - directOffTrack__Q23PSM19TrackOnDirectorBaseFRQ28PSSystem12SeqTrackBase .4byte - doUpdateRequest__Q28PSSystem16SwitcherDirectorFv .4byte - onPlayInit__Q23PSM19TrackOnDirectorBaseFP8JASTrack .4byte - onDirectOn__Q28PSSystem12DirectorBaseFv .4byte - onDirectOff__Q28PSSystem12DirectorBaseFv .global - "__vt__Q28PSSystem38SingletonBase" - "__vt__Q28PSSystem38SingletonBase": - .4byte 0 - .4byte 0 - .4byte "__dt__Q28PSSystem38SingletonBaseFv" - .global __vt__Q23PSM17DirectorMgr_Scene - __vt__Q23PSM17DirectorMgr_Scene: - .4byte 0 - .4byte 0 - .4byte __dt__Q23PSM17DirectorMgr_SceneFv - .4byte - newDirector__Q23PSM17DirectorMgr_SceneFUcRQ28PSSystem11DirectedBgm .4byte 0 - .4byte 0 - .4byte "@12@__dt__Q23PSM17DirectorMgr_SceneFv" - .4byte isSlave__Q23PSM17DirectorMgr_SceneFv - .4byte - newPikminNumberDirector__Q23PSM17DirectorMgr_SceneFiUcRQ28PSSystem11DirectedBgm - .4byte 0 - - .section .sdata2, "a" # 0x80516360 - 0x80520E40 - lbl_80520D60: - .asciz "" - .skip 3 - lbl_80520D64: - .asciz "new_" - .skip 3 - lbl_80520D6C: - .asciz "eventD" - .skip 1 - lbl_80520D74: - .float 200.0 - lbl_80520D78: - .float 1500.0 - lbl_80520D7C: - .asciz "PSSeq.h" - lbl_80520D84: - .float 300.0 - lbl_80520D88: - .float 600.0 -*/ +#include "PSAutoBgm/AutoBgm.h" +#include "PSSystem/PSGame.h" +#include "PSGame/PikScene.h" +#include "PSM/BossBgmFader.h" namespace PSM { @@ -177,9 +11,39 @@ namespace PSM { * Address: 8046F2BC * Size: 0002D8 */ -DirectorMgr_Scene::DirectorMgr_Scene(PSM::DirectorMgr_Scene*, unsigned char p2) - : PSSystem::DirectorMgrBase(p2) +DirectorMgr_Scene::DirectorMgr_Scene(DirectorMgr_Scene* owner, u8 type) + : ::PSSystem::DirectorMgrBase(type) + , mOwner(owner) { + + if (!isSlave()) { + for (u8 i = 0; i < 8; i++) { + switch (i) { + case 0: + case 1: + case 2: + case 3: + mCopyActorList[i] = new ListDirectorActor; + break; + case 4: + mCopyActorList[i] = new ListDirectorActor; + break; + case 5: + case 6: + case 7: + mCopyActorList[i] = new ::PSSystem::DirectorCopyActor(nullptr, nullptr); + break; + default: + JUT_PANICLINE(60, "P2Assert"); + } + } + } else { + for (u8 i = 0; i < 8; i++) { + mCopyActorList[i] = mOwner->mCopyActorList[i]; + P2ASSERTLINE(69, mCopyActorList[i]); + } + } + /* stwu r1, -0x20(r1) mflr r0 @@ -410,248 +274,40 @@ __ct__Q28PSSystem17DirectorCopyActorFPQ28PSSystem12DirectorBasePQ28PSSystem12Dir * Address: 8046F594 * Size: 00008C */ -DirectorMgr_Scene::~DirectorMgr_Scene() -{ - /* - stwu r1, -0x10(r1) - mflr r0 - stw r0, 0x14(r1) - stw r31, 0xc(r1) - mr r31, r4 - stw r30, 8(r1) - or. r30, r3, r3 - beq lbl_8046F604 - lis r4, __vt__Q23PSM17DirectorMgr_Scene@ha - addi r3, r30, 0xc - addi r5, r4, __vt__Q23PSM17DirectorMgr_Scene@l - li r4, 0 - stw r5, 0(r30) - addi r0, r5, 0x10 - stw r0, 0xc(r30) - bl __dt__11JKRDisposerFv - cmplwi r30, 0 - beq lbl_8046F5F4 - lis r4, __vt__Q28PSSystem15DirectorMgrBase@ha - mr r3, r30 - addi r0, r4, __vt__Q28PSSystem15DirectorMgrBase@l - li r4, 0 - stw r0, 0(r30) - bl __dt__10JADHioNodeFv - -lbl_8046F5F4: - extsh. r0, r31 - ble lbl_8046F604 - mr r3, r30 - bl __dl__FPv - -lbl_8046F604: - lwz r0, 0x14(r1) - mr r3, r30 - lwz r31, 0xc(r1) - lwz r30, 8(r1) - mtlr r0 - addi r1, r1, 0x10 - blr - */ -} +DirectorMgr_Scene::~DirectorMgr_Scene() { } /* * --INFO-- * Address: 8046F620 * Size: 000294 */ -void DirectorMgr_Scene::initTrackMap(PSSystem::DirectedBgm&) +void DirectorMgr_Scene::initTrackMap(::PSSystem::DirectedBgm& bgm) { - /* - stwu r1, -0x90(r1) - mflr r0 - lis r5, lbl_8049DA80@ha - stw r0, 0x94(r1) - stmw r27, 0x7c(r1) - mr r31, r3 - mr r27, r4 - addi r3, r1, 0x48 - addi r30, r5, lbl_8049DA80@l - li r4, 0 - bl __ct__Q23PSM15BgmTrackMapFileFb - lwz r29, 0x14(r27) - addi r4, r30, 0x28 - mr r28, r29 - mr r3, r29 - bl strcmp - cmpwi r3, 0 - beq lbl_8046F67C - mr r3, r29 - addi r4, r30, 0x38 - bl strcmp - cmpwi r3, 0 - bne lbl_8046F684 - -lbl_8046F67C: - addi r29, r30, 0x48 - b lbl_8046F7A4 - -lbl_8046F684: - mr r3, r29 - addi r4, r30, 0x68 - bl strcmp - cmpwi r3, 0 - bne lbl_8046F6D8 - mr r3, r27 - addi r29, r30, 0x78 - lwz r12, 0x10(r27) - lwz r12, 0x24(r12) - mtctr r12 - bctrl - clrlwi r0, r3, 0x18 - cmplwi r0, 3 - beq lbl_8046F6D0 - addi r3, r30, 0 - addi r5, r30, 0x1c - li r4, 0x74 - crclr 6 - bl panic_f__12JUTExceptionFPCciPCce - -lbl_8046F6D0: - lwz r28, 0x330(r27) - b lbl_8046F7A4 - -lbl_8046F6D8: - addi r3, r2, lbl_80520D64@sda21 - bl strlen - mr r5, r3 - mr r4, r29 - addi r3, r2, lbl_80520D64@sda21 - bl strncmp - cmpwi r3, 0 - bne lbl_8046F738 - mr r3, r27 - addi r29, r30, 0x78 - lwz r12, 0x10(r27) - lwz r12, 0x24(r12) - mtctr r12 - bctrl - clrlwi r0, r3, 0x18 - cmplwi r0, 3 - beq lbl_8046F730 - addi r3, r30, 0 - addi r5, r30, 0x1c - li r4, 0x7e - crclr 6 - bl panic_f__12JUTExceptionFPCciPCce - -lbl_8046F730: - lwz r28, 0x330(r27) - b lbl_8046F7A4 - -lbl_8046F738: - mr r3, r29 - addi r4, r30, 0x9c - bl strcmp - cmpwi r3, 0 - beq lbl_8046F760 - mr r3, r29 - addi r4, r30, 0xac - bl strcmp - cmpwi r3, 0 - bne lbl_8046F7A0 - -lbl_8046F760: - mr r3, r27 - addi r29, r30, 0xbc - lwz r12, 0x10(r27) - lwz r12, 0x24(r12) - mtctr r12 - bctrl - clrlwi r0, r3, 0x18 - cmplwi r0, 3 - beq lbl_8046F798 - addi r3, r30, 0 - addi r5, r30, 0x1c - li r4, 0x8b - crclr 6 - bl panic_f__12JUTExceptionFPCciPCce - -lbl_8046F798: - lwz r28, 0x330(r27) - b lbl_8046F7A4 - -lbl_8046F7A0: - addi r29, r30, 0xdc - -lbl_8046F7A4: - mr r4, r29 - addi r3, r1, 0x48 - li r5, 2 - bl onlyLoad__Q28PSSystem12TextDataBaseFPCcQ212JKRDvdRipper15EAllocDirection - mr r5, r28 - addi r3, r1, 8 - addi r4, r1, 0x48 - bl readTrackMap__Q23PSM15BgmTrackMapFileFPCc - lwz r0, 8(r1) - lis r3, __vt__Q23PSM15BgmTrackMapFile@ha - lwz r4, 0xc(r1) - addic. r5, r1, 0x64 - addi r3, r3, __vt__Q23PSM15BgmTrackMapFile@l - stw r0, 0x48(r31) - addi r0, r3, 0x10 - stw r4, 0x4c(r31) - lwz r5, 0x10(r1) - lwz r4, 0x14(r1) - stw r5, 0x50(r31) - stw r4, 0x54(r31) - lwz r5, 0x18(r1) - lwz r4, 0x1c(r1) - stw r5, 0x58(r31) - stw r4, 0x5c(r31) - lwz r5, 0x20(r1) - lwz r4, 0x24(r1) - stw r5, 0x60(r31) - stw r4, 0x64(r31) - lbz r4, 0x28(r1) - stb r4, 0x68(r31) - lbz r4, 0x29(r1) - stb r4, 0x69(r31) - lbz r4, 0x2a(r1) - stb r4, 0x6a(r31) - lbz r4, 0x2b(r1) - stb r4, 0x6b(r31) - lbz r4, 0x2c(r1) - stb r4, 0x6c(r31) - lbz r4, 0x2d(r1) - stb r4, 0x6d(r31) - lwz r5, 0x2e(r1) - lwz r4, 0x32(r1) - stw r5, 0x6e(r31) - stw r4, 0x72(r31) - lwz r5, 0x36(r1) - lwz r4, 0x3a(r1) - stw r5, 0x76(r31) - stw r4, 0x7a(r31) - lwz r5, 0x3e(r1) - lwz r4, 0x42(r1) - stw r5, 0x7e(r31) - stw r4, 0x82(r31) - stw r3, 0x48(r1) - stw r0, 0x64(r1) - beq lbl_8046F894 - lis r3, "__vt__Q28PSSystem38SingletonBase"@ha - li r0, 0 - addi r3, r3, -"__vt__Q28PSSystem38SingletonBase"@l stw r0, -"sInstance__Q28PSSystem38SingletonBase"@sda21(r13) stw -r3, 0x64(r1) - -lbl_8046F894: - addi r3, r1, 0x48 - li r4, 0 - bl __dt__Q28PSSystem12TextDataBaseFv - lmw r27, 0x7c(r1) - lwz r0, 0x94(r1) - mtlr r0 - addi r1, r1, 0x90 - blr - */ + BgmTrackMapFile file(false); + char* path = bgm.mBmsFileName; + char* bms = path; + + // Determine what trackMap file to load, depending on bms/cnd file name + if (!strcmp(bms, "caveglass.bms") || (!strcmp(bms, "caverelax.bms"))) { + path = "/user/Totaka/trackMap_Seq_T.txt"; + } else if (!strcmp(bms, "caveconc.bms")) { + path = "/user/Totaka/trackMap_Cond_T.txt"; + P2ASSERTLINE(116, bgm.getCastType() == ::PSSystem::DirectedBgm::BgmType_Cave); + bms = static_cast(&bgm)->mConductorFilePath; + } else if (!strncmp("new_", bms, strlen("new_"))) { + path = "/user/Totaka/trackMap_Cond_T.txt"; + P2ASSERTLINE(126, bgm.getCastType() == ::PSSystem::DirectedBgm::BgmType_Cave); + bms = static_cast(&bgm)->mConductorFilePath; + } else if (!strcmp(bms, "cavesoil.bms") || (!strcmp(bms, "cavemetal.bms"))) { + path = "/user/Wakai/trackMap_Cond_W.txt"; + P2ASSERTLINE(139, bgm.getCastType() == ::PSSystem::DirectedBgm::BgmType_Cave); + bms = static_cast(&bgm)->mConductorFilePath; + } else { + path = "/user/Wakai/trackMap_Seq_W.txt"; + } + + file.onlyLoad(path, JKRDvdRipper::ALLOC_DIR_BOTTOM); + mBgmTrackMap = file.readTrackMap(bms); } /* @@ -659,8 +315,93 @@ r3, 0x64(r1) * Address: 8046F8B4 * Size: 000770 */ -void DirectorMgr_Scene::newDirector(unsigned char, PSSystem::DirectedBgm&) +::PSSystem::DirectorBase* DirectorMgr_Scene::newDirector(u8 type, ::PSSystem::DirectedBgm& bgm) { + JUT_ASSERTLINE(161, mBgmTrackMap.mBasicTrackCount, "track map is\nnot initialized\n"); + ::PSSystem::DirectorBase* actor = nullptr; + DamageDirector* damage = nullptr; + switch (type) { + case Director_Working: { + actor = new ActorDirector_Scaled("eventD", mBgmTrackMap.mEventTrackCount, 200.0, 1500.0, 100, 100, 100); + P2ASSERTLINE(173, actor); + actor->setupTracks(mBgmTrackMap.mBasicTrackCount, mBgmTrackMap.mEventTrackCount, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + } + case Director_EnemyNear: { + actor = new ActorDirector_Kehai("kehaiD ", mBgmTrackMap.mKehaiTrackCount, 100, 100, 100); + P2ASSERTLINE(188, actor); + actor->setupTracks(mBgmTrackMap.mBasicTrackCount + mBgmTrackMap.mEventTrackCount + mBgmTrackMap.mOtakaraTrackCount, + mBgmTrackMap.mKehaiTrackCount, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + } + case Director_Battle: { + actor = new ActorDirector_Battle("battleD ", mBgmTrackMap.mBattleTrackCount, 100, 100, 100); + P2ASSERTLINE(188, actor); + actor->setupTracks(mBgmTrackMap.mBasicTrackCount + mBgmTrackMap.mEventTrackCount + mBgmTrackMap.mOtakaraTrackCount + + mBgmTrackMap.mKehaiTrackCount, + mBgmTrackMap.mBattleTrackCount, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + } + case Director_Treasure: { + actor = new ActorDirector_TrackOn("OtakaraD", mBgmTrackMap.mOtakaraTrackCount, 100, 100); + P2ASSERTLINE(219, actor); + actor->setupTracks(mBgmTrackMap.mBasicTrackCount + mBgmTrackMap.mEventTrackCount, mBgmTrackMap.mOtakaraTrackCount, + (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + } + case Director_Ground: { + actor; + if (bgm.getCastType() == ::PSSystem::DirectedBgm::BgmType_Cave) { + actor = new GroundDirector_Cave("GroundD ", mBgmTrackMap.mGroundTrackCount, 100, 100); + } else { + actor = new ActorDirector_Scaled("GroundD ", mBgmTrackMap.mGroundTrackCount, 300.0f, 600.0f, 200, 200, 10); + } + P2ASSERTLINE(275, actor); + + actor->setupTracks(mBgmTrackMap.mBasicTrackCount + mBgmTrackMap.mEventTrackCount + mBgmTrackMap.mOtakaraTrackCount + + mBgmTrackMap.mKehaiTrackCount + mBgmTrackMap.mBattleTrackCount, + mBgmTrackMap.mBattleTrackCount, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + } + case Director_Pikmin: { + int pikNum = mBgmTrackMap.getPikNum(); + int mask = mBgmTrackMap.getPikMaskNum(); + actor = newPikminNumberDirector(pikNum, mask, bgm); + P2ASSERTLINE(290, actor); + actor->setupTracks(0, 16, (::PSSystem::SeqTrackBase**)bgm.mChildTracks, mBgmTrackMap.mPikNum); + if (bgm.getCastType() == 3) { + static_cast(&bgm)->setPikiMaskNum(mBgmTrackMap.mPikNum); + } + break; + } + case Director_Damage: { + damage = new DamageDirector; + damage->isBgmTrackValid(); + damage->setTrack(0, bgm.mRootTrack); + break; + case Director_Tempo: + actor = new ActorDirector_TempoChange; + actor->isBgmTrackValid(); + actor->setTrack(0, bgm.mRootTrack); + break; + } + } + + ::PSSystem::DirectorBase* ret; + if (actor || (!actor && damage)) { + ret = actor; + } + + P2ASSERTLINE(334, ret); + + ::PSSystem::DirectorCopyActor* obj = mCopyActorList[type]; + if (isSlave()) { + obj->mDirectorChild = ret; + } else { + obj->mDirectorParent = ret; + } + adaptDirectorActor(ret, type); + return ret; /* stwu r1, -0x30(r1) mflr r0 @@ -1269,57 +1010,37 @@ r3, r22 lmw r22, 8(r1) lwz r0, 0x34(r1) mtlr r0 addi r1, r1, * Address: 80470024 * Size: 0000A8 */ -void DirectorMgr_Scene::adaptDirectorActor(PSSystem::DirectorBase*, unsigned char) +void DirectorMgr_Scene::adaptDirectorActor(::PSSystem::DirectorBase* director, u8 type) { - /* - .loc_0x0: - stwu r1, -0x10(r1) - mflr r0 - rlwinm r6,r5,0,24,31 - stw r0, 0x14(r1) - rlwinm r0,r5,2,22,29 - add r3, r3, r0 - cmplwi r6, 0x7 - lwz r5, 0x24(r3) - bgt- .loc_0x7C - lis r3, 0x804F - rlwinm r0,r6,2,0,29 - subi r3, r3, 0x760 - lwzx r0, r3, r0 - mtctr r0 - bctr - stw r5, 0x64(r4) - b .loc_0x98 - stw r5, 0x54(r4) - b .loc_0x98 - stw r5, 0x64(r4) - b .loc_0x98 - stw r5, 0x64(r4) - b .loc_0x98 - stw r5, 0x64(r4) - b .loc_0x98 - stw r5, 0x48(r4) - b .loc_0x98 - stw r5, 0x48(r4) - b .loc_0x98 - stw r5, 0x50(r4) - b .loc_0x98 - - .loc_0x7C: - lis r3, 0x804A - lis r5, 0x804A - subi r3, r3, 0x2580 - li r4, 0x195 - subi r5, r5, 0x2564 - crclr 6, 0x6 - bl -0x445A78 - - .loc_0x98: - lwz r0, 0x14(r1) - mtlr r0 - addi r1, r1, 0x10 - blr - */ + ::PSSystem::DirectorCopyActor* actor = mCopyActorList[type]; + switch (type) { + case 0: + static_cast(director)->mActor = actor; + break; + case 1: + static_cast(director)->mActor = actor; + break; + case 2: + static_cast(director)->mActor = actor; + break; + case 3: + static_cast(director)->mActor = actor; + break; + case 4: + static_cast(director)->mActor = actor; + break; + case 5: + static_cast(director)->mActor = actor; + break; + case 6: + static_cast(director)->mActor = actor; + break; + case 7: + static_cast(director)->mActor = actor; + break; + default: + JUT_PANICLINE(405, "P2Assert"); + } } /* @@ -1327,52 +1048,11 @@ void DirectorMgr_Scene::adaptDirectorActor(PSSystem::DirectorBase*, unsigned cha * Address: 804700CC * Size: 000094 */ -void DirectorMgr_Scene::newPikminNumberDirector(int, unsigned char, PSSystem::DirectedBgm&) +PikminNumberDirector* DirectorMgr_Scene::newPikminNumberDirector(int pikNum, u8 pikMask, ::PSSystem::DirectedBgm& bgm) { - /* - .loc_0x0: - stwu r1, -0x20(r1) - mflr r0 - li r3, 0x50 - stw r0, 0x24(r1) - stw r31, 0x1C(r1) - stw r30, 0x18(r1) - mr r30, r6 - stw r29, 0x14(r1) - mr r29, r5 - stw r28, 0x10(r1) - mr r28, r4 - bl -0x44C254 - mr. r31, r3 - beq- .loc_0x4C - mr r4, r28 - mr r5, r29 - mr r6, r30 - bl -0x19278 - mr r31, r3 - - .loc_0x4C: - cmplwi r31, 0 - bne- .loc_0x70 - lis r3, 0x804A - lis r5, 0x804A - subi r3, r3, 0x2580 - li r4, 0x19C - subi r5, r5, 0x2564 - crclr 6, 0x6 - bl -0x445AF8 - - .loc_0x70: - lwz r0, 0x24(r1) - mr r3, r31 - lwz r31, 0x1C(r1) - lwz r30, 0x18(r1) - lwz r29, 0x14(r1) - lwz r28, 0x10(r1) - mtlr r0 - addi r1, r1, 0x20 - blr - */ + PikminNumberDirector* director = new PikminNumberDirector(pikNum, pikMask, bgm); + P2ASSERTLINE(412, director); + return director; } /* @@ -1380,8 +1060,11 @@ void DirectorMgr_Scene::newPikminNumberDirector(int, unsigned char, PSSystem::Di * Address: 80470160 * Size: 000090 */ -void DirectorMgr_Scene_AutoBgm::newPikminNumberDirector(int, unsigned char, PSSystem::DirectedBgm&) +PikminNumberDirector* DirectorMgr_Scene_AutoBgm::newPikminNumberDirector(int pikNum, u8 pikMask, ::PSSystem::DirectedBgm& bgm) { + PikminNumberDirector_AutoBgm* director = new PikminNumberDirector_AutoBgm(pikNum, pikMask, bgm); + P2ASSERTLINE(425, director); + return director; /* .loc_0x0: stwu r1, -0x20(r1) @@ -1433,30 +1116,8 @@ void DirectorMgr_Scene_AutoBgm::newPikminNumberDirector(int, unsigned char, PSSy * Size: 000050 */ DirectorMgr_Battle::DirectorMgr_Battle() - : PSSystem::DirectorMgrBase(2) + : ::PSSystem::DirectorMgrBase(::PSSystem::DirectedBgm::BgmType_Battle) { - /* - stwu r1, -0x10(r1) - mflr r0 - li r4, 2 - stw r0, 0x14(r1) - stw r31, 0xc(r1) - mr r31, r3 - bl __ct__Q28PSSystem15DirectorMgrBaseFUc - addi r3, r31, 0xc - bl __ct__11JKRDisposerFv - lis r4, __vt__Q23PSM18DirectorMgr_Battle@ha - mr r3, r31 - addi r4, r4, __vt__Q23PSM18DirectorMgr_Battle@l - stw r4, 0(r31) - addi r0, r4, 0x10 - stw r0, 0xc(r31) - lwz r31, 0xc(r1) - lwz r0, 0x14(r1) - mtlr r0 - addi r1, r1, 0x10 - blr - */ } /* @@ -1464,8 +1125,45 @@ DirectorMgr_Battle::DirectorMgr_Battle() * Address: 80470240 * Size: 000244 */ -void DirectorMgr_Battle::newDirector(unsigned char, PSSystem::DirectedBgm&) +::PSSystem::DirectorBase* DirectorMgr_Battle::newDirector(u8 flag, ::PSSystem::DirectedBgm& bgm) { + ::PSSystem::DirectorBase* director = nullptr; + u8 tracks = 255; + u8 info = 255; + + PSGame::PikSceneMgr* mgr = static_cast(::PSSystem::getSceneMgr()); + ::PSSystem::checkSceneMgr(mgr); + bool boss = mgr->curSceneIsBigBossFloor(); + switch (flag) { + case 0: + if (boss) { + info = 14; + tracks = 1; + } else { + info = 10; + tracks = 1; + } + director = new PikAttackDirector(tracks); + BossBgmFader::Mgr* boss = ::PSSystem::SingletonBase::getInstance(); + boss->setUpdator(director); + break; + case 1: + if (boss) { + info = 11; + tracks = 1; + } else { + info = 15; + tracks = 1; + } + director = new ExiteDirector(tracks); + break; + } + + P2ASSERTLINE(495, tracks != 255); + P2ASSERTLINE(496, info != 255); + P2ASSERTLINE(497, director); + director->setupTracks(0, tracks, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + return director; /* stwu r1, -0x30(r1) mflr r0 @@ -1649,30 +1347,8 @@ __ct__Q23PSM15DirectorUpdatorFPQ28PSSystem12DirectorBaseUcQ33PSM15DirectorUpdato * Size: 000050 */ DirectorMgr_2PBattle::DirectorMgr_2PBattle() - : PSSystem::DirectorMgrBase(8) + : ::PSSystem::DirectorMgrBase(::PSSystem::DirectedBgm::BgmType_2PBattle) { - /* - stwu r1, -0x10(r1) - mflr r0 - li r4, 8 - stw r0, 0x14(r1) - stw r31, 0xc(r1) - mr r31, r3 - bl __ct__Q28PSSystem15DirectorMgrBaseFUc - addi r3, r31, 0xc - bl __ct__11JKRDisposerFv - lis r4, __vt__Q23PSM20DirectorMgr_2PBattle@ha - mr r3, r31 - addi r4, r4, __vt__Q23PSM20DirectorMgr_2PBattle@l - stw r4, 0(r31) - addi r0, r4, 0x10 - stw r0, 0xc(r31) - lwz r31, 0xc(r1) - lwz r0, 0x14(r1) - mtlr r0 - addi r1, r1, 0x10 - blr - */ } /* @@ -1680,8 +1356,67 @@ DirectorMgr_2PBattle::DirectorMgr_2PBattle() * Address: 804704D4 * Size: 0006B8 */ -void DirectorMgr_2PBattle::newDirector(unsigned char, PSSystem::DirectedBgm&) +::PSSystem::DirectorBase* DirectorMgr_2PBattle::newDirector(u8 type, ::PSSystem::DirectedBgm& bgm) { + ::PSSystem::DirectorBase* actor = nullptr; + switch (type) { + case Director2P_Working: { + actor = new ActorDirector_Scaled("eventD ", 1, 200.0, 1500.0, 100, 100, 100); + P2ASSERTLINE(615, actor); + actor->setupTracks(0, 1, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + } + case Director2P_EnemyNear: { + actor = new ActorDirector_Kehai("kehaiD ", 1, 100, 100, 100); + P2ASSERTLINE(627, actor); + actor->setupTracks(0, 1, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + static_cast(actor)->mActor = new ListDirectorActor; + break; + } + case Director2P_Battle: { + actor = new ActorDirector_Battle("battleD ", 1, 100, 100, 100); + P2ASSERTLINE(639, actor); + actor->setupTracks(0, 1, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + static_cast(actor)->mActor = new ListDirectorActor; + break; + } + case Director2P_OlimarMarble: { + actor = new ActorDirector_TrackOn("OriBeedaD", 1, 100, 100); + P2ASSERTLINE(662, actor); + actor->setupTracks(0, 1, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + } + case Director2P_LouieMarble: { + actor = new ActorDirector_TrackOn("RugBeedaD", 1, 100, 100); + P2ASSERTLINE(699, actor); + actor->setupTracks(0, 1, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + } + case Director2P_OlimarIchou: { + actor = new ActorDirector_TrackOn("OriIchouD", 1, 100, 100); + P2ASSERTLINE(729, actor); + actor->setupTracks(0, 1, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + static_cast(actor)->mActor = new ListDirectorActor; + break; + } + case Director2P_LouieIchou: { + actor = new ActorDirector_TrackOn("RouIchouD", 1, 100, 100); + P2ASSERTLINE(757, actor); + actor->setupTracks(0, 1, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + static_cast(actor)->mActor = new ListDirectorActor; + break; + case Director2P_PikBattle: + actor = new TrackOnDirector_Voting(1, "PikBattlD", 100, 100); + P2ASSERTLINE(757, actor); + actor->setupTracks(0, 1, (::PSSystem::SeqTrackBase**)bgm.mChildTracks); + break; + default: + JUT_PANICLINE(791, "P2Assert"); + } + } + + P2ASSERTLINE(797, actor); + return actor; /* stwu r1, -0x20(r1) mflr r0 @@ -2233,389 +1968,4 @@ __ct__Q28PSSystem17DirectorCopyActorFPQ28PSSystem12DirectorBasePQ28PSSystem12Dir */ } -/* - * --INFO-- - * Address: 80470B8C - * Size: 00008C - */ -DirectorMgr_2PBattle::~DirectorMgr_2PBattle() -{ - /* - stwu r1, -0x10(r1) - mflr r0 - stw r0, 0x14(r1) - stw r31, 0xc(r1) - mr r31, r4 - stw r30, 8(r1) - or. r30, r3, r3 - beq lbl_80470BFC - lis r4, __vt__Q23PSM20DirectorMgr_2PBattle@ha - addi r3, r30, 0xc - addi r5, r4, __vt__Q23PSM20DirectorMgr_2PBattle@l - li r4, 0 - stw r5, 0(r30) - addi r0, r5, 0x10 - stw r0, 0xc(r30) - bl __dt__11JKRDisposerFv - cmplwi r30, 0 - beq lbl_80470BEC - lis r4, __vt__Q28PSSystem15DirectorMgrBase@ha - mr r3, r30 - addi r0, r4, __vt__Q28PSSystem15DirectorMgrBase@l - li r4, 0 - stw r0, 0(r30) - bl __dt__10JADHioNodeFv - -lbl_80470BEC: - extsh. r0, r31 - ble lbl_80470BFC - mr r3, r30 - bl __dl__FPv - -lbl_80470BFC: - lwz r0, 0x14(r1) - mr r3, r30 - lwz r31, 0xc(r1) - lwz r30, 8(r1) - mtlr r0 - addi r1, r1, 0x10 - blr - */ -} - -/* - * --INFO-- - * Address: 80470C18 - * Size: 00008C - */ -DirectorMgr_Battle::~DirectorMgr_Battle() -{ - /* - stwu r1, -0x10(r1) - mflr r0 - stw r0, 0x14(r1) - stw r31, 0xc(r1) - mr r31, r4 - stw r30, 8(r1) - or. r30, r3, r3 - beq lbl_80470C88 - lis r4, __vt__Q23PSM18DirectorMgr_Battle@ha - addi r3, r30, 0xc - addi r5, r4, __vt__Q23PSM18DirectorMgr_Battle@l - li r4, 0 - stw r5, 0(r30) - addi r0, r5, 0x10 - stw r0, 0xc(r30) - bl __dt__11JKRDisposerFv - cmplwi r30, 0 - beq lbl_80470C78 - lis r4, __vt__Q28PSSystem15DirectorMgrBase@ha - mr r3, r30 - addi r0, r4, __vt__Q28PSSystem15DirectorMgrBase@l - li r4, 0 - stw r0, 0(r30) - bl __dt__10JADHioNodeFv - -lbl_80470C78: - extsh. r0, r31 - ble lbl_80470C88 - mr r3, r30 - bl __dl__FPv - -lbl_80470C88: - lwz r0, 0x14(r1) - mr r3, r30 - lwz r31, 0xc(r1) - lwz r30, 8(r1) - mtlr r0 - addi r1, r1, 0x10 - blr - */ -} - -/* - * --INFO-- - * Address: 80470CA4 - * Size: 0000A4 - */ -DirectorMgr_Scene_AutoBgm::~DirectorMgr_Scene_AutoBgm() -{ - /* - stwu r1, -0x10(r1) - mflr r0 - stw r0, 0x14(r1) - stw r31, 0xc(r1) - mr r31, r4 - stw r30, 8(r1) - or. r30, r3, r3 - beq lbl_80470D2C - lis r3, __vt__Q23PSM25DirectorMgr_Scene_AutoBgm@ha - addi r3, r3, __vt__Q23PSM25DirectorMgr_Scene_AutoBgm@l - stw r3, 0(r30) - addi r0, r3, 0x10 - stw r0, 0xc(r30) - beq lbl_80470D1C - lis r4, __vt__Q23PSM17DirectorMgr_Scene@ha - addi r3, r30, 0xc - addi r5, r4, __vt__Q23PSM17DirectorMgr_Scene@l - li r4, 0 - stw r5, 0(r30) - addi r0, r5, 0x10 - stw r0, 0xc(r30) - bl __dt__11JKRDisposerFv - cmplwi r30, 0 - beq lbl_80470D1C - lis r4, __vt__Q28PSSystem15DirectorMgrBase@ha - mr r3, r30 - addi r0, r4, __vt__Q28PSSystem15DirectorMgrBase@l - li r4, 0 - stw r0, 0(r30) - bl __dt__10JADHioNodeFv - -lbl_80470D1C: - extsh. r0, r31 - ble lbl_80470D2C - mr r3, r30 - bl __dl__FPv - -lbl_80470D2C: - lwz r0, 0x14(r1) - mr r3, r30 - lwz r31, 0xc(r1) - lwz r30, 8(r1) - mtlr r0 - addi r1, r1, 0x10 - blr - */ -} - -/* - * --INFO-- - * Address: 80470D48 - * Size: 000014 - */ -void DirectorMgr_Scene::isSlave() -{ - /* - lwz r3, 0x44(r3) - neg r0, r3 - or r0, r0, r3 - srwi r3, r0, 0x1f - blr - */ -} - -/* - * --INFO-- - * Address: 80470D5C - * Size: 000088 - */ -// BgmTrackMapFile::~BgmTrackMapFile() -// { -// /* -// stwu r1, -0x10(r1) -// mflr r0 -// stw r0, 0x14(r1) -// stw r31, 0xc(r1) -// mr r31, r4 -// stw r30, 8(r1) -// or. r30, r3, r3 -// beq lbl_80470DC8 -// lis r3, __vt__Q23PSM15BgmTrackMapFile@ha -// addic. r0, r30, 0x1c -// addi r3, r3, __vt__Q23PSM15BgmTrackMapFile@l -// stw r3, 0(r30) -// addi r0, r3, 0x10 -// stw r0, 0x1c(r30) -// beq lbl_80470DAC -// lis r3, "__vt__Q28PSSystem38SingletonBase"@ha -// li r0, 0 -// addi r3, r3, -// "__vt__Q28PSSystem38SingletonBase"@l stw r3, -// 0x1c(r30) stw r0, -// "sInstance__Q28PSSystem38SingletonBase"@sda21(r13) - -// lbl_80470DAC: -// mr r3, r30 -// li r4, 0 -// bl __dt__Q28PSSystem12TextDataBaseFv -// extsh. r0, r31 -// ble lbl_80470DC8 -// mr r3, r30 -// bl __dl__FPv - -// lbl_80470DC8: -// lwz r0, 0x14(r1) -// mr r3, r30 -// lwz r31, 0xc(r1) -// lwz r30, 8(r1) -// mtlr r0 -// addi r1, r1, 0x10 -// blr -// */ -// } - -/* - * --INFO-- - * Address: 80470DE4 - * Size: 0000B0 - */ -GroundDirector_Cave::~GroundDirector_Cave() -{ - /* - stwu r1, -0x10(r1) - mflr r0 - stw r0, 0x14(r1) - stw r31, 0xc(r1) - mr r31, r4 - stw r30, 8(r1) - or. r30, r3, r3 - beq lbl_80470E78 - lis r4, __vt__Q23PSM19GroundDirector_Cave@ha - addi r0, r4, __vt__Q23PSM19GroundDirector_Cave@l - stw r0, 0(r30) - beq lbl_80470E68 - lis r4, __vt__Q23PSM21ActorDirector_TrackOn@ha - addi r0, r4, __vt__Q23PSM21ActorDirector_TrackOn@l - stw r0, 0(r30) - beq lbl_80470E68 - lis r4, __vt__Q23PSM19TrackOnDirectorBase@ha - addi r0, r4, __vt__Q23PSM19TrackOnDirectorBase@l - stw r0, 0(r30) - beq lbl_80470E68 - lis r4, __vt__Q23PSM16SwitcherDirector@ha - addi r0, r4, __vt__Q23PSM16SwitcherDirector@l - stw r0, 0(r30) - beq lbl_80470E68 - lis r4, __vt__Q28PSSystem16SwitcherDirector@ha - addi r0, r4, __vt__Q28PSSystem16SwitcherDirector@l - stw r0, 0(r30) - beq lbl_80470E68 - lis r5, __vt__Q28PSSystem12DirectorBase@ha - li r4, 0 - addi r0, r5, __vt__Q28PSSystem12DirectorBase@l - stw r0, 0(r30) - bl __dt__10JADHioNodeFv - -lbl_80470E68: - extsh. r0, r31 - ble lbl_80470E78 - mr r3, r30 - bl __dl__FPv - -lbl_80470E78: - lwz r0, 0x14(r1) - mr r3, r30 - lwz r31, 0xc(r1) - lwz r30, 8(r1) - mtlr r0 - addi r1, r1, 0x10 - blr - */ -} - -/* - * --INFO-- - * Address: 80470E94 - * Size: 000004 - */ -void GroundDirector_Cave::directOn() { } - -/* - * --INFO-- - * Address: 80470E98 - * Size: 000004 - */ -void GroundDirector_Cave::directOff() { } - -namespace PSSystem { - -} // namespace PSSystem - -/* - * --INFO-- - * Address: 80470E9C - * Size: 000050 - */ -// void SingletonBase::~SingletonBase() -// { -// /* -// stwu r1, -0x10(r1) -// mflr r0 -// stw r0, 0x14(r1) -// stw r31, 0xc(r1) -// or. r31, r3, r3 -// beq lbl_80470ED4 -// lis r5, "__vt__Q28PSSystem38SingletonBase"@ha -// extsh. r0, r4 -// addi r4, r5, -// "__vt__Q28PSSystem38SingletonBase"@l li r0, 0 stw -// r4, 0(r31) stw r0, -// "sInstance__Q28PSSystem38SingletonBase"@sda21(r13) ble -// lbl_80470ED4 bl __dl__FPv - -// lbl_80470ED4: -// lwz r0, 0x14(r1) -// mr r3, r31 -// lwz r31, 0xc(r1) -// mtlr r0 -// addi r1, r1, 0x10 -// blr -// */ -// } - -namespace PSM { - -/* - * --INFO-- - * Address: 80470EEC - * Size: 000008 - */ -// DirectorMgr_Scene::@12 @~DirectorMgr_Scene() -// { -// /* -// addi r3, r3, -12 -// b __dt__Q23PSM17DirectorMgr_SceneFv -// */ -// } - -/* - * --INFO-- - * Address: 80470EF4 - * Size: 000008 - */ -// DirectorMgr_Scene_AutoBgm::@12 @~DirectorMgr_Scene_AutoBgm() -// { -// /* -// addi r3, r3, -12 -// b __dt__Q23PSM25DirectorMgr_Scene_AutoBgmFv -// */ -// } - -/* - * --INFO-- - * Address: 80470EFC - * Size: 000008 - */ -// DirectorMgr_Battle::@12 @~DirectorMgr_Battle() -// { -// /* -// addi r3, r3, -12 -// b __dt__Q23PSM18DirectorMgr_BattleFv -// */ -// } - -/* - * --INFO-- - * Address: 80470F04 - * Size: 000008 - */ -// DirectorMgr_2PBattle::@12 @~DirectorMgr_2PBattle() -// { -// /* -// addi r3, r3, -12 -// b __dt__Q23PSM20DirectorMgr_2PBattleFv -// */ -// } -} // namespace PSM } // namespace PSM diff --git a/tools/progress.csv b/tools/progress.csv index 42c86e472..890c72b4a 100644 --- a/tools/progress.csv +++ b/tools/progress.csv @@ -595,3 +595,5 @@ You have 2814 out of 10000 Pokos and 83 out of 201 treasures.",2023-09-27 12:57: You have 2816 out of 10000 Pokos and 83 out of 201 treasures.",2023-09-27 14:49:41.379248 2823,1313596,0.2823509485094851,83,295822,0.4149814268239308," You have 2823 out of 10000 Pokos and 83 out of 201 treasures.",2023-09-28 17:16:18.816529 +2824,1314256,0.28249281223776707,83,295906,0.4150992626841887," +You have 2824 out of 10000 Pokos and 83 out of 201 treasures.",2023-09-28 23:28:22.205709