From 97e956d782d86d6ba6bf17d1552752ea1c891b31 Mon Sep 17 00:00:00 2001 From: jakcron Date: Wed, 30 Mar 2022 14:26:56 +0800 Subject: [PATCH] [BugFix] Honour exheader code compressed flag. --- ctrtool/src/NcchProcess.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ctrtool/src/NcchProcess.cpp b/ctrtool/src/NcchProcess.cpp index bc3596e..d3ab007 100644 --- a/ctrtool/src/NcchProcess.cpp +++ b/ctrtool/src/NcchProcess.cpp @@ -790,6 +790,17 @@ void ctrtool::NcchProcess::processRegions() } if (mRegionInfo[NcchRegion_ExeFs].size != 0 && mRegionInfo[NcchRegion_ExeFs].ready_stream != nullptr) { + // prior to reading exefs, check compressed flag in exheader + if (mRegionInfo[NcchRegion_ExHeader].size > 0 && mRegionInfo[NcchRegion_ExHeader].ready_stream != nullptr) + { + // import exheader + ntd::n3ds::ExtendedHeader exheader; + mRegionInfo[NcchRegion_ExHeader].ready_stream->seek(0, tc::io::SeekOrigin::Begin); + mRegionInfo[NcchRegion_ExHeader].ready_stream->read((byte_t*)&exheader, sizeof(ntd::n3ds::ExtendedHeader)); + + mDecompressExeFsCode = exheader.system_control_info.flags.bitarray.test(ntd::n3ds::SystemControlInfo::Flags_CompressExefsPartition0); + } + ctrtool::ExeFsProcess proc; proc.setInputStream(mRegionInfo[NcchRegion_ExeFs].ready_stream); proc.setCliOutputMode(mRegionOpt[NcchRegion_ExeFs].show_info, mRegionOpt[NcchRegion_ExeFs].show_fs);