mirror of
https://github.com/jakcron/nstool
synced 2024-12-25 14:11:14 +00:00
[nstool] Add NRO HB extention AssetHeader support.
This commit is contained in:
parent
b41434375c
commit
4ef93db423
2 changed files with 35 additions and 0 deletions
|
@ -46,7 +46,12 @@ void CodeObjectProcess::process()
|
|||
if (mObjType == OBJ_NSO)
|
||||
displayNsoHeader();
|
||||
else if (mObjType == OBJ_NRO)
|
||||
{
|
||||
displayNroHeader();
|
||||
if (mIsHomebrewNro)
|
||||
displayNroAssetHeader();
|
||||
}
|
||||
|
||||
}
|
||||
displayRoMetaData();
|
||||
}
|
||||
|
@ -139,6 +144,18 @@ void CodeObjectProcess::importHeader()
|
|||
mFile->read(scratch.getBytes(), 0, scratch.getSize());
|
||||
|
||||
mNroHdr.importBinary(scratch.getBytes(), scratch.getSize());
|
||||
|
||||
nx::sNroHeader* raw_hdr = (nx::sNroHeader*)scratch.getBytes();
|
||||
|
||||
if (((le_uint64_t*)raw_hdr->reserved_0)->get() == nx::nro::kNroHomebrewSig)
|
||||
{
|
||||
mIsHomebrewNro = true;
|
||||
scratch.alloc(sizeof(nx::sNroAssetHeader));
|
||||
mFile->read(scratch.getBytes(), mNroHdr.getNroSize(), scratch.getSize());
|
||||
mNroAssetHdr.importBinary(scratch.getBytes(), scratch.getSize());
|
||||
}
|
||||
else
|
||||
mIsHomebrewNro = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -393,6 +410,20 @@ void CodeObjectProcess::displayNroHeader()
|
|||
#undef _HEXDUMP_L
|
||||
}
|
||||
|
||||
void CodeObjectProcess::displayNroAssetHeader()
|
||||
{
|
||||
printf("[ASET Header]\n");
|
||||
printf(" Icon:\n");
|
||||
printf(" Offset: 0x%" PRIx64 "\n", mNroAssetHdr.getIconInfo().offset);
|
||||
printf(" Size: 0x%" PRIx64 "\n", mNroAssetHdr.getIconInfo().size);
|
||||
printf(" NACP:\n");
|
||||
printf(" Offset: 0x%" PRIx64 "\n", mNroAssetHdr.getNacpInfo().offset);
|
||||
printf(" Size: 0x%" PRIx64 "\n", mNroAssetHdr.getNacpInfo().size);
|
||||
printf(" RomFS:\n");
|
||||
printf(" Offset: 0x%" PRIx64 "\n", mNroAssetHdr.getRomfsInfo().offset);
|
||||
printf(" Size: 0x%" PRIx64 "\n", mNroAssetHdr.getRomfsInfo().size);
|
||||
}
|
||||
|
||||
void CodeObjectProcess::displayRoMetaData()
|
||||
{
|
||||
if (mApiList.size() > 0 && (mListApi || mCliOutputType > OUTPUT_NORMAL))
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <nx/npdm.h>
|
||||
#include <nx/NsoHeader.h>
|
||||
#include <nx/NroHeader.h>
|
||||
#include <nx/NroAssetHeader.h>
|
||||
|
||||
#include "nstool.h"
|
||||
#include "SdkApiString.h"
|
||||
|
@ -57,6 +58,8 @@ private:
|
|||
|
||||
nx::NsoHeader mNsoHdr;
|
||||
nx::NroHeader mNroHdr;
|
||||
bool mIsHomebrewNro;
|
||||
nx::NroAssetHeader mNroAssetHdr;
|
||||
fnd::MemoryBlob mTextBlob, mRoBlob, mDataBlob;
|
||||
std::vector<SdkApiString> mApiList;
|
||||
DynamicSymbolParser mDynSymbolList;
|
||||
|
@ -66,6 +69,7 @@ private:
|
|||
void importApiList();
|
||||
void displayNsoHeader();
|
||||
void displayNroHeader();
|
||||
void displayNroAssetHeader();
|
||||
void displayRoMetaData();
|
||||
|
||||
const char* getApiTypeStr(SdkApiString::ApiType type) const;
|
||||
|
|
Loading…
Reference in a new issue