mirror of https://github.com/AxioDL/metaforce.git
Initial cook tool update
This commit is contained in:
parent
eed44c8230
commit
5f68a2a992
|
@ -6,7 +6,7 @@ namespace Retro
|
||||||
|
|
||||||
static LogVisor::LogModule Log("Retro::SpecBase");
|
static LogVisor::LogModule Log("Retro::SpecBase");
|
||||||
|
|
||||||
bool SpecBase::canExtract(const ExtractPassInfo& info, std::vector<ExtractReport>& reps)
|
bool SpecBase::canExtract(const ExtractPassInfo& info, std::list<ExtractReport>& reps)
|
||||||
{
|
{
|
||||||
m_disc = NOD::OpenDiscFromImage(info.srcpath.c_str(), m_isWii);
|
m_disc = NOD::OpenDiscFromImage(info.srcpath.c_str(), m_isWii);
|
||||||
if (!m_disc)
|
if (!m_disc)
|
||||||
|
@ -45,7 +45,7 @@ bool SpecBase::canExtract(const ExtractPassInfo& info, std::vector<ExtractReport
|
||||||
return checkFromTrilogyDisc(*m_disc, *regstr, info.extractArgs, reps);
|
return checkFromTrilogyDisc(*m_disc, *regstr, info.extractArgs, reps);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpecBase::doExtract(const ExtractPassInfo& info, FExtractProgress progress)
|
void SpecBase::doExtract(const ExtractPassInfo& info, FProgress progress)
|
||||||
{
|
{
|
||||||
if (!Blender::BuildMasterShader(m_masterShader))
|
if (!Blender::BuildMasterShader(m_masterShader))
|
||||||
Log.report(LogVisor::FatalError, "Unable to build master shader blend");
|
Log.report(LogVisor::FatalError, "Unable to build master shader blend");
|
||||||
|
@ -85,12 +85,12 @@ void SpecBase::doExtract(const ExtractPassInfo& info, FExtractProgress progress)
|
||||||
extractFromDisc(*m_disc, info.force, progress);
|
extractFromDisc(*m_disc, info.force, progress);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SpecBase::canCook(const CookTaskInfo& info)
|
bool SpecBase::canCook(const HECL::ProjectPath& path)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpecBase::doCook(const CookTaskInfo& info)
|
void SpecBase::doCook(const HECL::ProjectPath& path, const HECL::ProjectPath& cookedPath)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,11 @@ namespace Retro
|
||||||
|
|
||||||
struct SpecBase : HECL::Database::IDataSpec
|
struct SpecBase : HECL::Database::IDataSpec
|
||||||
{
|
{
|
||||||
bool canExtract(const ExtractPassInfo& info, std::vector<ExtractReport>& reps);
|
bool canExtract(const ExtractPassInfo& info, std::list<ExtractReport>& reps);
|
||||||
void doExtract(const ExtractPassInfo& info, FExtractProgress progress);
|
void doExtract(const ExtractPassInfo& info, FProgress progress);
|
||||||
|
|
||||||
bool canCook(const CookTaskInfo& info);
|
bool canCook(const HECL::ProjectPath& path);
|
||||||
void doCook(const CookTaskInfo& info);
|
void doCook(const HECL::ProjectPath& path, const HECL::ProjectPath& cookedPath);
|
||||||
|
|
||||||
bool canPackage(const PackagePassInfo& info);
|
bool canPackage(const PackagePassInfo& info);
|
||||||
void gatherDependencies(const PackagePassInfo& info,
|
void gatherDependencies(const PackagePassInfo& info,
|
||||||
|
@ -25,31 +25,17 @@ struct SpecBase : HECL::Database::IDataSpec
|
||||||
virtual bool checkStandaloneID(const char* id) const=0;
|
virtual bool checkStandaloneID(const char* id) const=0;
|
||||||
virtual bool checkFromStandaloneDisc(NOD::DiscBase& disc,
|
virtual bool checkFromStandaloneDisc(NOD::DiscBase& disc,
|
||||||
const HECL::SystemString& regstr,
|
const HECL::SystemString& regstr,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
std::vector<ExtractReport>& reps)=0;
|
std::list<ExtractReport>& reps)=0;
|
||||||
virtual bool checkFromTrilogyDisc(NOD::DiscBase& disc,
|
virtual bool checkFromTrilogyDisc(NOD::DiscBase& disc,
|
||||||
const HECL::SystemString& regstr,
|
const HECL::SystemString& regstr,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
std::vector<ExtractReport>& reps)=0;
|
std::list<ExtractReport>& reps)=0;
|
||||||
virtual bool extractFromDisc(NOD::DiscBase& disc, bool force,
|
virtual bool extractFromDisc(NOD::DiscBase& disc, bool force,
|
||||||
FExtractProgress progress)=0;
|
FProgress progress)=0;
|
||||||
|
|
||||||
virtual bool checkFromProject()=0;
|
|
||||||
virtual bool readFromProject()=0;
|
|
||||||
|
|
||||||
virtual bool visitGameObjects(std::function<bool(const HECL::Database::ObjectBase&)>)=0;
|
const HECL::ProjectPath& getMasterShaderPath() const {return m_masterShader;}
|
||||||
struct ILevelSpec
|
|
||||||
{
|
|
||||||
virtual bool visitLevelObjects(std::function<bool(const HECL::Database::ObjectBase&)>)=0;
|
|
||||||
struct IAreaSpec
|
|
||||||
{
|
|
||||||
virtual bool visitAreaObjects(std::function<bool(const HECL::Database::ObjectBase&)>)=0;
|
|
||||||
};
|
|
||||||
virtual bool visitAreas(std::function<bool(const IAreaSpec&)>)=0;
|
|
||||||
};
|
|
||||||
virtual bool visitLevels(std::function<bool(const ILevelSpec&)>)=0;
|
|
||||||
|
|
||||||
inline const HECL::ProjectPath& getMasterShaderPath() const {return m_masterShader;}
|
|
||||||
|
|
||||||
SpecBase(HECL::Database::Project& project)
|
SpecBase(HECL::Database::Project& project)
|
||||||
: m_project(project),
|
: m_project(project),
|
||||||
|
|
|
@ -35,7 +35,7 @@ struct SpecMP1 : SpecBase
|
||||||
m_pakRouter(*this, m_workPath, m_cookPath) {}
|
m_pakRouter(*this, m_workPath, m_cookPath) {}
|
||||||
|
|
||||||
void buildPaks(NOD::DiscBase::IPartition::Node& root,
|
void buildPaks(NOD::DiscBase::IPartition::Node& root,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
ExtractReport& rep)
|
ExtractReport& rep)
|
||||||
{
|
{
|
||||||
m_nonPaks.clear();
|
m_nonPaks.clear();
|
||||||
|
@ -118,8 +118,8 @@ struct SpecMP1 : SpecBase
|
||||||
|
|
||||||
bool checkFromStandaloneDisc(NOD::DiscBase& disc,
|
bool checkFromStandaloneDisc(NOD::DiscBase& disc,
|
||||||
const HECL::SystemString& regstr,
|
const HECL::SystemString& regstr,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
std::vector<ExtractReport>& reps)
|
std::list<ExtractReport>& reps)
|
||||||
{
|
{
|
||||||
NOD::DiscGCN::IPartition* partition = disc.getDataPartition();
|
NOD::DiscGCN::IPartition* partition = disc.getDataPartition();
|
||||||
std::unique_ptr<uint8_t[]> dolBuf = partition->getDOLBuf();
|
std::unique_ptr<uint8_t[]> dolBuf = partition->getDOLBuf();
|
||||||
|
@ -149,10 +149,10 @@ struct SpecMP1 : SpecBase
|
||||||
|
|
||||||
bool checkFromTrilogyDisc(NOD::DiscBase& disc,
|
bool checkFromTrilogyDisc(NOD::DiscBase& disc,
|
||||||
const HECL::SystemString& regstr,
|
const HECL::SystemString& regstr,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
std::vector<ExtractReport>& reps)
|
std::list<ExtractReport>& reps)
|
||||||
{
|
{
|
||||||
std::vector<HECL::SystemString> mp1args;
|
std::list<HECL::SystemString> mp1args;
|
||||||
bool doExtract = false;
|
bool doExtract = false;
|
||||||
if (args.size())
|
if (args.size())
|
||||||
{
|
{
|
||||||
|
@ -208,7 +208,7 @@ struct SpecMP1 : SpecBase
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool extractFromDisc(NOD::DiscBase&, bool force, FExtractProgress progress)
|
bool extractFromDisc(NOD::DiscBase&, bool force, FProgress progress)
|
||||||
{
|
{
|
||||||
NOD::ExtractionContext ctx = {true, force, nullptr};
|
NOD::ExtractionContext ctx = {true, force, nullptr};
|
||||||
|
|
||||||
|
@ -259,42 +259,6 @@ struct SpecMP1 : SpecBase
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool checkFromProject()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
bool readFromProject()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool visitGameObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
struct LevelSpec : public ILevelSpec
|
|
||||||
{
|
|
||||||
bool visitLevelObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
struct AreaSpec : public IAreaSpec
|
|
||||||
{
|
|
||||||
bool visitAreaObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
bool visitAreas(std::function<bool(const IAreaSpec&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
bool visitLevels(std::function<bool(const ILevelSpec&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
HECL::Database::DataSpecEntry SpecEntMP1 =
|
HECL::Database::DataSpecEntry SpecEntMP1 =
|
||||||
|
|
|
@ -33,7 +33,7 @@ struct SpecMP2 : SpecBase
|
||||||
m_pakRouter(*this, m_workPath, m_cookPath) {}
|
m_pakRouter(*this, m_workPath, m_cookPath) {}
|
||||||
|
|
||||||
void buildPaks(NOD::DiscBase::IPartition::Node& root,
|
void buildPaks(NOD::DiscBase::IPartition::Node& root,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
ExtractReport& rep)
|
ExtractReport& rep)
|
||||||
{
|
{
|
||||||
m_nonPaks.clear();
|
m_nonPaks.clear();
|
||||||
|
@ -115,8 +115,8 @@ struct SpecMP2 : SpecBase
|
||||||
|
|
||||||
bool checkFromStandaloneDisc(NOD::DiscBase& disc,
|
bool checkFromStandaloneDisc(NOD::DiscBase& disc,
|
||||||
const HECL::SystemString& regstr,
|
const HECL::SystemString& regstr,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
std::vector<ExtractReport>& reps)
|
std::list<ExtractReport>& reps)
|
||||||
{
|
{
|
||||||
NOD::DiscGCN::IPartition* partition = disc.getDataPartition();
|
NOD::DiscGCN::IPartition* partition = disc.getDataPartition();
|
||||||
std::unique_ptr<uint8_t[]> dolBuf = partition->getDOLBuf();
|
std::unique_ptr<uint8_t[]> dolBuf = partition->getDOLBuf();
|
||||||
|
@ -142,10 +142,10 @@ struct SpecMP2 : SpecBase
|
||||||
|
|
||||||
bool checkFromTrilogyDisc(NOD::DiscBase& disc,
|
bool checkFromTrilogyDisc(NOD::DiscBase& disc,
|
||||||
const HECL::SystemString& regstr,
|
const HECL::SystemString& regstr,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
std::vector<ExtractReport>& reps)
|
std::list<ExtractReport>& reps)
|
||||||
{
|
{
|
||||||
std::vector<HECL::SystemString> mp2args;
|
std::list<HECL::SystemString> mp2args;
|
||||||
bool doExtract = false;
|
bool doExtract = false;
|
||||||
if (args.size())
|
if (args.size())
|
||||||
{
|
{
|
||||||
|
@ -201,7 +201,7 @@ struct SpecMP2 : SpecBase
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool extractFromDisc(NOD::DiscBase&, bool force, FExtractProgress progress)
|
bool extractFromDisc(NOD::DiscBase&, bool force, FProgress progress)
|
||||||
{
|
{
|
||||||
NOD::ExtractionContext ctx = {true, force, nullptr};
|
NOD::ExtractionContext ctx = {true, force, nullptr};
|
||||||
progress(_S("Indexing PAKs"), _S(""), 2, 0.0);
|
progress(_S("Indexing PAKs"), _S(""), 2, 0.0);
|
||||||
|
@ -251,42 +251,6 @@ struct SpecMP2 : SpecBase
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool checkFromProject()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
bool readFromProject()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool visitGameObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
struct LevelSpec : public ILevelSpec
|
|
||||||
{
|
|
||||||
bool visitLevelObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
struct AreaSpec : public IAreaSpec
|
|
||||||
{
|
|
||||||
bool visitAreaObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
bool visitAreas(std::function<bool(const IAreaSpec&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
bool visitLevels(std::function<bool(const ILevelSpec&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
HECL::Database::DataSpecEntry SpecEntMP2
|
HECL::Database::DataSpecEntry SpecEntMP2
|
||||||
|
|
|
@ -48,7 +48,7 @@ struct SpecMP3 : SpecBase
|
||||||
m_fePakRouter(*this, m_feWorkPath, m_feCookPath) {}
|
m_fePakRouter(*this, m_feWorkPath, m_feCookPath) {}
|
||||||
|
|
||||||
void buildPaks(NOD::DiscBase::IPartition::Node& root,
|
void buildPaks(NOD::DiscBase::IPartition::Node& root,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
ExtractReport& rep,
|
ExtractReport& rep,
|
||||||
bool fe)
|
bool fe)
|
||||||
{
|
{
|
||||||
|
@ -170,8 +170,8 @@ struct SpecMP3 : SpecBase
|
||||||
|
|
||||||
bool checkFromStandaloneDisc(NOD::DiscBase& disc,
|
bool checkFromStandaloneDisc(NOD::DiscBase& disc,
|
||||||
const HECL::SystemString& regstr,
|
const HECL::SystemString& regstr,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
std::vector<ExtractReport>& reps)
|
std::list<ExtractReport>& reps)
|
||||||
{
|
{
|
||||||
doMP3 = true;
|
doMP3 = true;
|
||||||
NOD::DiscGCN::IPartition* partition = disc.getDataPartition();
|
NOD::DiscGCN::IPartition* partition = disc.getDataPartition();
|
||||||
|
@ -202,11 +202,11 @@ struct SpecMP3 : SpecBase
|
||||||
|
|
||||||
bool checkFromTrilogyDisc(NOD::DiscBase& disc,
|
bool checkFromTrilogyDisc(NOD::DiscBase& disc,
|
||||||
const HECL::SystemString& regstr,
|
const HECL::SystemString& regstr,
|
||||||
const std::vector<HECL::SystemString>& args,
|
const std::list<HECL::SystemString>& args,
|
||||||
std::vector<ExtractReport>& reps)
|
std::list<ExtractReport>& reps)
|
||||||
{
|
{
|
||||||
std::vector<HECL::SystemString> mp3args;
|
std::list<HECL::SystemString> mp3args;
|
||||||
std::vector<HECL::SystemString> feargs;
|
std::list<HECL::SystemString> feargs;
|
||||||
if (args.size())
|
if (args.size())
|
||||||
{
|
{
|
||||||
/* Needs filter */
|
/* Needs filter */
|
||||||
|
@ -319,7 +319,7 @@ struct SpecMP3 : SpecBase
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool extractFromDisc(NOD::DiscBase&, bool force, FExtractProgress progress)
|
bool extractFromDisc(NOD::DiscBase&, bool force, FProgress progress)
|
||||||
{
|
{
|
||||||
int compIdx = 2;
|
int compIdx = 2;
|
||||||
HECL::SystemString currentTarget = _S("");
|
HECL::SystemString currentTarget = _S("");
|
||||||
|
@ -430,42 +430,6 @@ struct SpecMP3 : SpecBase
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool checkFromProject()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
bool readFromProject()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool visitGameObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
struct LevelSpec : public ILevelSpec
|
|
||||||
{
|
|
||||||
bool visitLevelObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
struct AreaSpec : public IAreaSpec
|
|
||||||
{
|
|
||||||
bool visitAreaObjects(std::function<bool(const HECL::Database::ObjectBase&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
bool visitAreas(std::function<bool(const IAreaSpec&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
bool visitLevels(std::function<bool(const ILevelSpec&)>)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
HECL::Database::DataSpecEntry SpecEntMP3
|
HECL::Database::DataSpecEntry SpecEntMP3
|
||||||
|
|
2
hecl
2
hecl
|
@ -1 +1 @@
|
||||||
Subproject commit a0f708ae8990798380ce5ef8c5d24290bac5035c
|
Subproject commit aae0f7390ff6a7fcf81df423a7fe66091713b7da
|
Loading…
Reference in New Issue