From 1a5f045e0a4c384089b994a9f70d5086991aa7cb Mon Sep 17 00:00:00 2001 From: jakcron Date: Fri, 18 May 2018 17:08:48 +0800 Subject: [PATCH] [nstool] Show pfs and romfs file offsets from the base offsets. --- programs/nstool/source/PfsProcess.cpp | 6 ++++-- programs/nstool/source/PfsProcess.h | 1 + programs/nstool/source/RomfsProcess.cpp | 4 +++- programs/nstool/source/RomfsProcess.h | 2 ++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/programs/nstool/source/PfsProcess.cpp b/programs/nstool/source/PfsProcess.cpp index b108c2c..ae2d3e4 100644 --- a/programs/nstool/source/PfsProcess.cpp +++ b/programs/nstool/source/PfsProcess.cpp @@ -20,9 +20,9 @@ void PfsProcess::displayFs() if (mCliOutputType >= OUTPUT_VERBOSE) { if (mPfs.getFsType() == mPfs.TYPE_PFS0) - printf(" (offset=0x%" PRIx64 ", size=0x%" PRIx64 ")\n", mPfs.getFileList()[i].offset, mPfs.getFileList()[i].size); + printf(" (offset=0x%" PRIx64 ", size=0x%" PRIx64 ")\n", mBaseOffset + mPfs.getFileList()[i].offset, mPfs.getFileList()[i].size); else - printf(" (offset=0x%" PRIx64 ", size=0x%" PRIx64 ", hash_protected_size=0x%" PRIx64 ")\n", mPfs.getFileList()[i].offset, mPfs.getFileList()[i].size, mPfs.getFileList()[i].hash_protected_size); + printf(" (offset=0x%" PRIx64 ", size=0x%" PRIx64 ", hash_protected_size=0x%" PRIx64 ")\n", mBaseOffset + mPfs.getFileList()[i].offset, mPfs.getFileList()[i].size, mPfs.getFileList()[i].hash_protected_size); } else { @@ -105,6 +105,7 @@ PfsProcess::PfsProcess() : mReader(nullptr), mCliOutputType(OUTPUT_NORMAL), mVerify(false), + mBaseOffset(0), mExtractPath(), mExtract(false), mMountName(), @@ -157,6 +158,7 @@ void PfsProcess::process() void PfsProcess::setInputFile(fnd::IFile* file, size_t offset, size_t size) { mReader = new OffsetAdjustedIFile(file, offset, size); + mBaseOffset = offset; } void PfsProcess::setCliOutputMode(CliOutputType type) diff --git a/programs/nstool/source/PfsProcess.h b/programs/nstool/source/PfsProcess.h index e099ef4..9439eae 100644 --- a/programs/nstool/source/PfsProcess.h +++ b/programs/nstool/source/PfsProcess.h @@ -34,6 +34,7 @@ private: CliOutputType mCliOutputType; bool mVerify; + size_t mBaseOffset; std::string mExtractPath; bool mExtract; diff --git a/programs/nstool/source/RomfsProcess.cpp b/programs/nstool/source/RomfsProcess.cpp index 1a0f8a3..c11e46c 100644 --- a/programs/nstool/source/RomfsProcess.cpp +++ b/programs/nstool/source/RomfsProcess.cpp @@ -18,7 +18,7 @@ void RomfsProcess::displayFile(const sFile& file, size_t tab) const printf("%s", file.name.c_str()); if (mCliOutputType >= OUTPUT_VERBOSE) { - printf(" (offset=0x%" PRIx64 ", size=0x%" PRIx64 ")", file.offset, file.size); + printf(" (offset=0x%" PRIx64 ", size=0x%" PRIx64 ")", mBaseOffset + file.offset, file.size); } putchar('\n'); } @@ -226,6 +226,7 @@ RomfsProcess::RomfsProcess() : mReader(nullptr), mCliOutputType(OUTPUT_NORMAL), mVerify(false), + mBaseOffset(0), mExtractPath(), mExtract(false), mMountName(), @@ -266,6 +267,7 @@ void RomfsProcess::process() void RomfsProcess::setInputFile(fnd::IFile* file, size_t offset, size_t size) { mReader = new OffsetAdjustedIFile(file, offset, size); + mBaseOffset = offset; } void RomfsProcess::setCliOutputMode(CliOutputType type) diff --git a/programs/nstool/source/RomfsProcess.h b/programs/nstool/source/RomfsProcess.h index 89d9702..5a839ae 100644 --- a/programs/nstool/source/RomfsProcess.h +++ b/programs/nstool/source/RomfsProcess.h @@ -112,6 +112,8 @@ private: CliOutputType mCliOutputType; bool mVerify; + size_t mBaseOffset; + std::string mExtractPath; bool mExtract; std::string mMountName;