mirror of https://github.com/AxioDL/metaforce.git
SpecMP3: Fix MP1 Wii fe extraction
This commit is contained in:
parent
25dabe8bc3
commit
b2573db3a3
|
@ -99,6 +99,7 @@ struct SpecMP3 : SpecBase {
|
||||||
|
|
||||||
hecl::ProjectPath m_workPath;
|
hecl::ProjectPath m_workPath;
|
||||||
hecl::ProjectPath m_cookPath;
|
hecl::ProjectPath m_cookPath;
|
||||||
|
hecl::ProjectPath m_outPath;
|
||||||
PAKRouter<DNAMP3::PAKBridge> m_pakRouter;
|
PAKRouter<DNAMP3::PAKBridge> m_pakRouter;
|
||||||
|
|
||||||
/* These are populated when extracting MPT's frontend (uses MP3's DataSpec) */
|
/* These are populated when extracting MPT's frontend (uses MP3's DataSpec) */
|
||||||
|
@ -109,6 +110,7 @@ struct SpecMP3 : SpecBase {
|
||||||
|
|
||||||
hecl::ProjectPath m_feWorkPath;
|
hecl::ProjectPath m_feWorkPath;
|
||||||
hecl::ProjectPath m_feCookPath;
|
hecl::ProjectPath m_feCookPath;
|
||||||
|
hecl::ProjectPath m_feOutPath;
|
||||||
PAKRouter<DNAMP3::PAKBridge> m_fePakRouter;
|
PAKRouter<DNAMP3::PAKBridge> m_fePakRouter;
|
||||||
|
|
||||||
SpecMP3(const hecl::Database::DataSpecEntry* specEntry, hecl::Database::Project& project, bool pc)
|
SpecMP3(const hecl::Database::DataSpecEntry* specEntry, hecl::Database::Project& project, bool pc)
|
||||||
|
@ -386,8 +388,8 @@ struct SpecMP3 : SpecBase {
|
||||||
hecl::ProjectPath outPath(m_project.getProjectWorkingPath(), _SYS_STR("out"));
|
hecl::ProjectPath outPath(m_project.getProjectWorkingPath(), _SYS_STR("out"));
|
||||||
outPath.makeDir();
|
outPath.makeDir();
|
||||||
disc.getDataPartition()->extractSysFiles(outPath.getAbsolutePath(), ctx);
|
disc.getDataPartition()->extractSysFiles(outPath.getAbsolutePath(), ctx);
|
||||||
hecl::ProjectPath mp3OutPath(outPath, m_standalone ? _SYS_STR("files") : _SYS_STR("files/MP3"));
|
m_outPath = {outPath, m_standalone ? _SYS_STR("files") : _SYS_STR("files/MP3")};
|
||||||
mp3OutPath.makeDirChain(true);
|
m_outPath.makeDirChain(true);
|
||||||
|
|
||||||
currentTarget = _SYS_STR("MP3 Root");
|
currentTarget = _SYS_STR("MP3 Root");
|
||||||
progress.print(currentTarget.c_str(), _SYS_STR(""), 0.0);
|
progress.print(currentTarget.c_str(), _SYS_STR(""), 0.0);
|
||||||
|
@ -396,7 +398,7 @@ struct SpecMP3 : SpecBase {
|
||||||
nodeCount = m_nonPaks.size();
|
nodeCount = m_nonPaks.size();
|
||||||
// TODO: Make this more granular
|
// TODO: Make this more granular
|
||||||
for (const nod::Node* node : m_nonPaks) {
|
for (const nod::Node* node : m_nonPaks) {
|
||||||
node->extractToDirectory(mp3OutPath.getAbsolutePath(), ctx);
|
node->extractToDirectory(m_outPath.getAbsolutePath(), ctx);
|
||||||
prog++;
|
prog++;
|
||||||
}
|
}
|
||||||
ctx.progressCB = nullptr;
|
ctx.progressCB = nullptr;
|
||||||
|
@ -438,8 +440,8 @@ struct SpecMP3 : SpecBase {
|
||||||
hecl::ProjectPath outPath(m_project.getProjectWorkingPath(), _SYS_STR("out"));
|
hecl::ProjectPath outPath(m_project.getProjectWorkingPath(), _SYS_STR("out"));
|
||||||
outPath.makeDir();
|
outPath.makeDir();
|
||||||
disc.getDataPartition()->extractSysFiles(outPath.getAbsolutePath(), ctx);
|
disc.getDataPartition()->extractSysFiles(outPath.getAbsolutePath(), ctx);
|
||||||
hecl::ProjectPath feOutPath(outPath, m_standalone ? _SYS_STR("files") : _SYS_STR("files/fe"));
|
m_feOutPath = {outPath, _SYS_STR("files/fe")};
|
||||||
feOutPath.makeDirChain(true);
|
m_feOutPath.makeDirChain(true);
|
||||||
|
|
||||||
currentTarget = _SYS_STR("fe Root");
|
currentTarget = _SYS_STR("fe Root");
|
||||||
progress.print(currentTarget.c_str(), _SYS_STR(""), 0.0);
|
progress.print(currentTarget.c_str(), _SYS_STR(""), 0.0);
|
||||||
|
@ -448,7 +450,7 @@ struct SpecMP3 : SpecBase {
|
||||||
|
|
||||||
// TODO: Make this more granular
|
// TODO: Make this more granular
|
||||||
for (const nod::Node* node : m_feNonPaks) {
|
for (const nod::Node* node : m_feNonPaks) {
|
||||||
node->extractToDirectory(feOutPath.getAbsolutePath(), ctx);
|
node->extractToDirectory(m_feOutPath.getAbsolutePath(), ctx);
|
||||||
prog++;
|
prog++;
|
||||||
}
|
}
|
||||||
progress.print(currentTarget.c_str(), _SYS_STR(""), 1.0);
|
progress.print(currentTarget.c_str(), _SYS_STR(""), 1.0);
|
||||||
|
@ -475,18 +477,22 @@ struct SpecMP3 : SpecBase {
|
||||||
process.waitUntilComplete();
|
process.waitUntilComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Extract part of .dol for RandomStatic entropy */
|
|
||||||
hecl::ProjectPath noAramPath(m_project.getProjectWorkingPath(), _SYS_STR("MP3/URDE"));
|
|
||||||
/* Generate Texture Cache containing meta data for every texture file */
|
/* Generate Texture Cache containing meta data for every texture file */
|
||||||
|
if (doMP3) {
|
||||||
|
hecl::ProjectPath noAramPath(m_workPath, _SYS_STR("URDE"));
|
||||||
TextureCache::Generate(m_pakRouter, m_project, noAramPath);
|
TextureCache::Generate(m_pakRouter, m_project, noAramPath);
|
||||||
/* Write version data */
|
|
||||||
hecl::ProjectPath versionPath;
|
|
||||||
if (m_standalone) {
|
|
||||||
versionPath = hecl::ProjectPath(m_project.getProjectWorkingPath(), _SYS_STR("out/files"));
|
|
||||||
} else {
|
|
||||||
versionPath = hecl::ProjectPath(m_project.getProjectWorkingPath(), _SYS_STR("out/files/MP3"));
|
|
||||||
}
|
}
|
||||||
WriteVersionInfo(m_project, versionPath);
|
if (doMPTFE) {
|
||||||
|
hecl::ProjectPath noAramPath(m_feWorkPath, _SYS_STR("URDE"));
|
||||||
|
TextureCache::Generate(m_fePakRouter, m_project, noAramPath);
|
||||||
|
}
|
||||||
|
/* Write version data */
|
||||||
|
if (doMP3) {
|
||||||
|
WriteVersionInfo(m_project, m_outPath);
|
||||||
|
}
|
||||||
|
if (doMPTFE) {
|
||||||
|
WriteVersionInfo(m_project, m_feOutPath);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue