makerom: updated to latest SDK specs.

This commit is contained in:
jakcron
2015-09-14 23:48:59 +08:00
parent f8993e198a
commit e636db7397
10 changed files with 1008 additions and 36 deletions
+2 -2
View File
@@ -44,12 +44,12 @@ int accessdesc_SignWithKey(exheader_settings *exhdrset)
memcpy(&exhdrset->acexDesc->arm9AccessControlInfo,&exhdrset->exHdr->arm9AccessControlInfo,sizeof(exhdr_ARM9AccessControlInfo));
/* Adjust Data */
u8 *flag = &exhdrset->acexDesc->arm11SystemLocalCapabilities.flag;
u8 *flag = &exhdrset->acexDesc->arm11SystemLocalCapabilities.flag[2];
u8 SystemMode = (*flag>>4)&0xF;
u8 AffinityMask = (*flag>>2)&0x3;
u8 IdealProcessor = 1<<((*flag>>0)&0x3);
*flag = (u8)(SystemMode << 4 | AffinityMask << 2 | IdealProcessor);
exhdrset->acexDesc->arm11SystemLocalCapabilities.priority /= 2;
exhdrset->acexDesc->arm11SystemLocalCapabilities.flag[3] /= 2;
/* Sign AccessDesc */
return SignAccessDesc(exhdrset->acexDesc,exhdrset->keys);
+44 -8
View File
@@ -317,7 +317,34 @@ int SetARM11SystemLocalInfoFlags(exhdr_ARM11SystemLocalCapabilities *arm11, rsf_
return EXHDR_BAD_RSF_OPT;
}
/* Flag */
/* Flag[0] */
arm11->flag[0] |= rsf->AccessControlInfo.EnableL2Cache;
if (rsf->AccessControlInfo.CpuSpeed) {
if(strcasecmp(rsf->AccessControlInfo.CpuSpeed, "256mhz") == 0)
arm11->flag[0] |= cpuspeed_268MHz << 1;
else if(strcasecmp(rsf->AccessControlInfo.CpuSpeed, "804mhz") == 0)
arm11->flag[0] |= cpuspeed_804MHz << 1;
else {
fprintf(stderr, "[EXHEADER ERROR] Invalid cpu speed: 0x%s\n", rsf->AccessControlInfo.CpuSpeed);
return EXHDR_BAD_RSF_OPT;
}
}
else
arm11->flag[0] |= cpuspeed_268MHz << 1;
/* Flag[1] (SystemModeExt) */
u8 systemModeExt = 0;
if (rsf->AccessControlInfo.SystemModeExt) {
systemModeExt = strtol(rsf->AccessControlInfo.SystemModeExt, NULL, 0);
if (systemModeExt > 15) {
fprintf(stderr, "[EXHEADER ERROR] Unexpected SystemModeExt: 0x%x. Expected range: 0x0 - 0xf\n", systemModeExt);
return EXHDR_BAD_RSF_OPT;
}
arm11->flag[1] = systemModeExt & 0xf;
}
/* Flag[2] */
u8 affinityMask = 0;
u8 idealProcessor = 0;
u8 systemMode = 0;
@@ -343,9 +370,9 @@ int SetARM11SystemLocalInfoFlags(exhdr_ARM11SystemLocalCapabilities *arm11, rsf_
return EXHDR_BAD_RSF_OPT;
}
}
arm11->flag = (u8)(systemMode << 4 | affinityMask << 2 | idealProcessor);
arm11->flag[2] = (u8)(systemMode << 4 | affinityMask << 2 | idealProcessor);
/* Thread Priority */
/* flag[3] (Thread Priority) */
if(rsf->AccessControlInfo.Priority){
u8 priority = strtoul(rsf->AccessControlInfo.Priority,NULL,0);
if(GetAppType(rsf) == processtype_APPLICATION)
@@ -354,7 +381,7 @@ int SetARM11SystemLocalInfoFlags(exhdr_ARM11SystemLocalCapabilities *arm11, rsf_
fprintf(stderr,"[EXHEADER ERROR] Invalid Priority: %d\n",priority);
return EXHDR_BAD_RSF_OPT;
}
arm11->priority = priority;
arm11->flag[3] = priority;
}
else{
ErrorParamNotFound("AccessControlInfo/Priority");
@@ -479,8 +506,13 @@ void SetARM11StorageInfoSystemSaveDataId(exhdr_ARM11SystemLocalCapabilities *arm
void SetARM11StorageInfoExtSaveDataId(exhdr_ARM11SystemLocalCapabilities *arm11, rsf_settings *rsf)
{
if(rsf->AccessControlInfo.ExtSaveDataId)
u64_to_u8(arm11->storageInfo.extSavedataId, strtoull(rsf->AccessControlInfo.ExtSaveDataId,NULL,0), LE);
if (rsf->AccessControlInfo.UseExtSaveData || rsf->AccessControlInfo.ExtSaveDataId) {
if (rsf->AccessControlInfo.ExtSaveDataId)
u64_to_u8(arm11->storageInfo.extSavedataId, strtoull(rsf->AccessControlInfo.ExtSaveDataId, NULL, 0), LE);
else
u32_to_u8(arm11->storageInfo.extSavedataId, GetTidUniqueId(u8_to_u64(arm11->programId,LE)), LE);
}
}
void SetARM11StorageInfoOtherUserSaveData(exhdr_ARM11SystemLocalCapabilities *arm11, rsf_settings *rsf)
@@ -508,6 +540,10 @@ bool CheckCondiditionsForNewAccessibleSaveDataIds(rsf_settings *rsf)
fprintf(stderr,"[EXHEADER ERROR] Too many UniqueId in \"AccessibleSaveDataIds\".\n");
return false;
}
if (rsf->AccessControlInfo.UseExtSaveData) {
fprintf(stderr, "[EXHEADER ERROR] UseExtSaveData must be false if AccessibleSaveDataIds is specified.\n");
return false;
}
if (rsf->AccessControlInfo.ExtSaveDataId){
fprintf(stderr,"[EXHEADER ERROR] ExtSaveDataId is unavailable if AccessibleSaveDataIds is specified.\n");
return false;
@@ -561,8 +597,8 @@ void SetARM11StorageInfoAccessibleSaveDataIds(exhdr_ARM11SystemLocalCapabilities
int SetARM11ServiceAccessControl(exhdr_ARM11SystemLocalCapabilities *arm11, rsf_settings *rsf)
{
if(rsf->AccessControlInfo.ServiceAccessControl){
if(rsf->AccessControlInfo.ServiceAccessControlNum > 32){
fprintf(stderr,"[EXHEADER ERROR] Too Many Service Names, maximum is 32\n");
if(rsf->AccessControlInfo.ServiceAccessControlNum > 34){
fprintf(stderr,"[EXHEADER ERROR] Too Many Service Names, maximum is 34\n");
return EXHDR_BAD_RSF_OPT;
}
for(int i = 0; i < rsf->AccessControlInfo.ServiceAccessControlNum; i++){
+9 -5
View File
@@ -28,6 +28,12 @@ typedef enum
resrc_limit_OTHER
} resource_limit_category;
typedef enum
{
cpuspeed_268MHz,
cpuspeed_804MHz
};
typedef enum
{
othcap_PERMIT_DEBUG = (1 << 0),
@@ -127,13 +133,11 @@ typedef struct
{
u8 programId[8];
u8 coreVersion[4];
u8 padding0[2];
u8 flag;
u8 priority;
u8 flag[4];
u8 resourceLimitDescriptor[16][2];
exhdr_StorageInfo storageInfo;
u8 serviceAccessControl[32][8]; // Those char[8] server names
u8 padding1[0x1f];
u8 serviceAccessControl[34][8]; // Those char[8] server names
u8 padding1[0xf];
u8 resourceLimitCategory;
} exhdr_ARM11SystemLocalCapabilities;
+272
View File
@@ -0,0 +1,272 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{21926330-F5A5-4643-AD32-D4F167CE226B}</ProjectGuid>
<Keyword>MakeFileProj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<NMakeBuildCommandLine>make</NMakeBuildCommandLine>
<NMakeOutput>makerom.exe</NMakeOutput>
<NMakeCleanCommandLine>make clean</NMakeCleanCommandLine>
<NMakeReBuildCommandLine>make rebuild</NMakeReBuildCommandLine>
<NMakePreprocessorDefinitions>WIN32;_DEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<NMakeBuildCommandLine>make</NMakeBuildCommandLine>
<NMakeOutput>makerom.exe</NMakeOutput>
<NMakeCleanCommandLine>make clean</NMakeCleanCommandLine>
<NMakeReBuildCommandLine>make rebuild</NMakeReBuildCommandLine>
<NMakePreprocessorDefinitions>WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
</PropertyGroup>
<ItemDefinitionGroup>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="readme.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="accessdesc.h" />
<ClInclude Include="blz.h" />
<ClInclude Include="cardinfo.h" />
<ClInclude Include="certs.h" />
<ClInclude Include="cia.h" />
<ClInclude Include="cia_build.h" />
<ClInclude Include="cia_read.h" />
<ClInclude Include="crr.h" />
<ClInclude Include="crypto.h" />
<ClInclude Include="ctr_utils.h" />
<ClInclude Include="desc\dev_sigdata.h" />
<ClInclude Include="desc\presets.h" />
<ClInclude Include="desc\prod_sigdata.h" />
<ClInclude Include="dir.h" />
<ClInclude Include="elf.h" />
<ClInclude Include="elf_hdr.h" />
<ClInclude Include="exefs.h" />
<ClInclude Include="exefs_build.h" />
<ClInclude Include="exefs_read.h" />
<ClInclude Include="exheader.h" />
<ClInclude Include="exheader_build.h" />
<ClInclude Include="exheader_read.h" />
<ClInclude Include="keyset.h" />
<ClInclude Include="lib.h" />
<ClInclude Include="libyaml\yaml.h" />
<ClInclude Include="libyaml\yaml_private.h" />
<ClInclude Include="ncch.h" />
<ClInclude Include="ncch_build.h" />
<ClInclude Include="ncch_logo.h" />
<ClInclude Include="ncch_read.h" />
<ClInclude Include="ncsd.h" />
<ClInclude Include="ncsd_build.h" />
<ClInclude Include="ncsd_read.h" />
<ClInclude Include="pki\dev.h" />
<ClInclude Include="pki\dev_legacy.h" />
<ClInclude Include="pki\prod.h" />
<ClInclude Include="pki\prod_legacy.h" />
<ClInclude Include="pki\test.h" />
<ClInclude Include="polarssl\aes.h" />
<ClInclude Include="polarssl\arc4.h" />
<ClInclude Include="polarssl\asn1.h" />
<ClInclude Include="polarssl\asn1write.h" />
<ClInclude Include="polarssl\base64.h" />
<ClInclude Include="polarssl\bignum.h" />
<ClInclude Include="polarssl\blowfish.h" />
<ClInclude Include="polarssl\bn_mul.h" />
<ClInclude Include="polarssl\camellia.h" />
<ClInclude Include="polarssl\certs.h" />
<ClInclude Include="polarssl\cipher.h" />
<ClInclude Include="polarssl\cipher_wrap.h" />
<ClInclude Include="polarssl\config.h" />
<ClInclude Include="polarssl\ctr_drbg.h" />
<ClInclude Include="polarssl\debug.h" />
<ClInclude Include="polarssl\des.h" />
<ClInclude Include="polarssl\dhm.h" />
<ClInclude Include="polarssl\entropy.h" />
<ClInclude Include="polarssl\entropy_poll.h" />
<ClInclude Include="polarssl\error.h" />
<ClInclude Include="polarssl\gcm.h" />
<ClInclude Include="polarssl\havege.h" />
<ClInclude Include="polarssl\md.h" />
<ClInclude Include="polarssl\md2.h" />
<ClInclude Include="polarssl\md4.h" />
<ClInclude Include="polarssl\md5.h" />
<ClInclude Include="polarssl\md_wrap.h" />
<ClInclude Include="polarssl\net.h" />
<ClInclude Include="polarssl\openssl.h" />
<ClInclude Include="polarssl\padlock.h" />
<ClInclude Include="polarssl\pbkdf2.h" />
<ClInclude Include="polarssl\pem.h" />
<ClInclude Include="polarssl\pkcs11.h" />
<ClInclude Include="polarssl\pkcs12.h" />
<ClInclude Include="polarssl\pkcs5.h" />
<ClInclude Include="polarssl\rsa.h" />
<ClInclude Include="polarssl\sha1.h" />
<ClInclude Include="polarssl\sha2.h" />
<ClInclude Include="polarssl\sha4.h" />
<ClInclude Include="polarssl\ssl.h" />
<ClInclude Include="polarssl\ssl_cache.h" />
<ClInclude Include="polarssl\timing.h" />
<ClInclude Include="polarssl\version.h" />
<ClInclude Include="polarssl\x509.h" />
<ClInclude Include="polarssl\x509write.h" />
<ClInclude Include="polarssl\xtea.h" />
<ClInclude Include="romfs.h" />
<ClInclude Include="romfs_gen.h" />
<ClInclude Include="romfs_import.h" />
<ClInclude Include="rsf_settings.h" />
<ClInclude Include="srl.h" />
<ClInclude Include="tik.h" />
<ClInclude Include="tik_build.h" />
<ClInclude Include="tik_read.h" />
<ClInclude Include="titleid.h" />
<ClInclude Include="tmd.h" />
<ClInclude Include="tmd_build.h" />
<ClInclude Include="tmd_read.h" />
<ClInclude Include="types.h" />
<ClInclude Include="user_settings.h" />
<ClInclude Include="utf.h" />
<ClInclude Include="utils.h" />
<ClInclude Include="yaml_parser.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="accessdesc.c" />
<ClCompile Include="blz.c" />
<ClCompile Include="cardinfo.c" />
<ClCompile Include="certs.c" />
<ClCompile Include="cia.c" />
<ClCompile Include="crypto.c" />
<ClCompile Include="ctr_utils.c" />
<ClCompile Include="dir.c" />
<ClCompile Include="elf.c" />
<ClCompile Include="exefs.c" />
<ClCompile Include="exheader.c" />
<ClCompile Include="keyset.c" />
<ClCompile Include="libyaml\api.c" />
<ClCompile Include="libyaml\dumper.c" />
<ClCompile Include="libyaml\emitter.c" />
<ClCompile Include="libyaml\loader.c" />
<ClCompile Include="libyaml\parser.c" />
<ClCompile Include="libyaml\reader.c" />
<ClCompile Include="libyaml\scanner.c" />
<ClCompile Include="libyaml\writer.c" />
<ClCompile Include="makerom.c" />
<ClCompile Include="ncch.c" />
<ClCompile Include="ncsd.c" />
<ClCompile Include="polarssl\arc4.c" />
<ClCompile Include="polarssl\asn1parse.c" />
<ClCompile Include="polarssl\asn1write.c" />
<ClCompile Include="polarssl\base64.c" />
<ClCompile Include="polarssl\bignum.c" />
<ClCompile Include="polarssl\blowfish.c" />
<ClCompile Include="polarssl\camellia.c" />
<ClCompile Include="polarssl\certs.c" />
<ClCompile Include="polarssl\cipher.c" />
<ClCompile Include="polarssl\cipher_wrap.c" />
<ClCompile Include="polarssl\ctr_drbg.c" />
<ClCompile Include="polarssl\debug.c" />
<ClCompile Include="polarssl\des.c" />
<ClCompile Include="polarssl\dhm.c" />
<ClCompile Include="polarssl\entropy.c" />
<ClCompile Include="polarssl\entropy_poll.c" />
<ClCompile Include="polarssl\error.c" />
<ClCompile Include="polarssl\gcm.c" />
<ClCompile Include="polarssl\havege.c" />
<ClCompile Include="polarssl\md.c" />
<ClCompile Include="polarssl\md2.c" />
<ClCompile Include="polarssl\md4.c" />
<ClCompile Include="polarssl\md5.c" />
<ClCompile Include="polarssl\md_wrap.c" />
<ClCompile Include="polarssl\net.c" />
<ClCompile Include="polarssl\padlock.c" />
<ClCompile Include="polarssl\pbkdf2.c" />
<ClCompile Include="polarssl\pem.c" />
<ClCompile Include="polarssl\pkcs11.c" />
<ClCompile Include="polarssl\pkcs12.c" />
<ClCompile Include="polarssl\pkcs5.c" />
<ClCompile Include="polarssl\rsa.c" />
<ClCompile Include="polarssl\sha1.c" />
<ClCompile Include="polarssl\sha2.c" />
<ClCompile Include="polarssl\sha4.c" />
<ClCompile Include="polarssl\ssl_cache.c" />
<ClCompile Include="polarssl\ssl_cli.c" />
<ClCompile Include="polarssl\ssl_srv.c" />
<ClCompile Include="polarssl\ssl_tls.c" />
<ClCompile Include="polarssl\timing.c" />
<ClCompile Include="polarssl\version.c" />
<ClCompile Include="polarssl\x509parse.c" />
<ClCompile Include="polarssl\x509write.c" />
<ClCompile Include="polarssl\xtea.c" />
<ClCompile Include="romfs.c" />
<ClCompile Include="romfs_gen.c" />
<ClCompile Include="romfs_import.c" />
<ClCompile Include="rsf_settings.c" />
<ClCompile Include="tik.c" />
<ClCompile Include="titleid.c" />
<ClCompile Include="tmd.c" />
<ClCompile Include="user_settings.c" />
<ClCompile Include="utf.c" />
<ClCompile Include="utils.c" />
<ClCompile Include="yaml_parser.c" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+584
View File
@@ -0,0 +1,584 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Header Files\polarssl">
<UniqueIdentifier>{bab0486d-d6e9-48e4-b4a5-ab1c9a917a15}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\libyaml">
<UniqueIdentifier>{e3b6ff03-546a-4f9c-8246-ee2a5a6b5c20}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\libyaml">
<UniqueIdentifier>{2bf08da5-c0b2-4b6f-a07a-0f3a03b79f14}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\polarssl">
<UniqueIdentifier>{7545c89e-a9ce-4c04-989e-ae726a518efd}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files\PKI">
<UniqueIdentifier>{49964d4d-b429-41e6-a85f-e4d361de0faf}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files\DESC">
<UniqueIdentifier>{a0455bf4-2a1e-4ced-9d42-88d7ce131c22}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<Text Include="readme.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="accessdesc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="blz.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="cardinfo.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="certs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="cia.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="cia_build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="cia_read.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crr.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ctr_utils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="dir.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="elf.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="elf_hdr.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="exefs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="exefs_build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="exefs_read.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="exheader.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="exheader_build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="exheader_read.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="keyset.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="lib.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ncch.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ncch_build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ncch_logo.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ncch_read.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ncsd.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ncsd_build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ncsd_read.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="romfs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="romfs_gen.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="romfs_import.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="rsf_settings.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="srl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="tik.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="tik_build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="tik_read.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="titleid.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="tmd.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="tmd_build.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="tmd_read.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="types.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="user_settings.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="utf.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="utils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="yaml_parser.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="polarssl\aes.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\arc4.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\asn1.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\asn1write.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\base64.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\bignum.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\blowfish.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\bn_mul.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\camellia.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\certs.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\cipher.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\cipher_wrap.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\config.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\ctr_drbg.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\debug.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\des.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\dhm.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\entropy.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\entropy_poll.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\error.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\gcm.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\havege.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\md.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\md_wrap.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\md2.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\md4.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\md5.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\net.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\openssl.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\padlock.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\pbkdf2.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\pem.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\pkcs5.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\pkcs11.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\pkcs12.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\rsa.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\sha1.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\sha2.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\sha4.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\ssl.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\ssl_cache.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\timing.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\version.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\x509.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\x509write.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="polarssl\xtea.h">
<Filter>Header Files\polarssl</Filter>
</ClInclude>
<ClInclude Include="libyaml\yaml.h">
<Filter>Header Files\libyaml</Filter>
</ClInclude>
<ClInclude Include="libyaml\yaml_private.h">
<Filter>Header Files\libyaml</Filter>
</ClInclude>
<ClInclude Include="pki\dev.h">
<Filter>Resource Files\PKI</Filter>
</ClInclude>
<ClInclude Include="pki\dev_legacy.h">
<Filter>Resource Files\PKI</Filter>
</ClInclude>
<ClInclude Include="pki\prod.h">
<Filter>Resource Files\PKI</Filter>
</ClInclude>
<ClInclude Include="pki\prod_legacy.h">
<Filter>Resource Files\PKI</Filter>
</ClInclude>
<ClInclude Include="pki\test.h">
<Filter>Resource Files\PKI</Filter>
</ClInclude>
<ClInclude Include="desc\dev_sigdata.h">
<Filter>Resource Files\DESC</Filter>
</ClInclude>
<ClInclude Include="desc\presets.h">
<Filter>Resource Files\DESC</Filter>
</ClInclude>
<ClInclude Include="desc\prod_sigdata.h">
<Filter>Resource Files\DESC</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="accessdesc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="blz.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="cardinfo.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="certs.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="cia.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ctr_utils.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="dir.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="elf.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="exefs.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="exheader.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="keyset.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="makerom.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ncch.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ncsd.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="romfs.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="romfs_gen.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="romfs_import.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="rsf_settings.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="tik.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="titleid.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="tmd.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="user_settings.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="utf.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="utils.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="yaml_parser.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="libyaml\api.c">
<Filter>Source Files\libyaml</Filter>
</ClCompile>
<ClCompile Include="libyaml\dumper.c">
<Filter>Source Files\libyaml</Filter>
</ClCompile>
<ClCompile Include="libyaml\emitter.c">
<Filter>Source Files\libyaml</Filter>
</ClCompile>
<ClCompile Include="libyaml\loader.c">
<Filter>Source Files\libyaml</Filter>
</ClCompile>
<ClCompile Include="libyaml\parser.c">
<Filter>Source Files\libyaml</Filter>
</ClCompile>
<ClCompile Include="libyaml\reader.c">
<Filter>Source Files\libyaml</Filter>
</ClCompile>
<ClCompile Include="libyaml\scanner.c">
<Filter>Source Files\libyaml</Filter>
</ClCompile>
<ClCompile Include="libyaml\writer.c">
<Filter>Source Files\libyaml</Filter>
</ClCompile>
<ClCompile Include="polarssl\arc4.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\asn1parse.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\asn1write.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\base64.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\bignum.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\blowfish.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\camellia.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\certs.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\cipher.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\cipher_wrap.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\ctr_drbg.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\debug.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\des.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\dhm.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\entropy.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\entropy_poll.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\error.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\gcm.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\havege.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\md.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\md_wrap.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\md2.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\md4.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\md5.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\net.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\padlock.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\pbkdf2.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\pem.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\pkcs5.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\pkcs11.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\pkcs12.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\rsa.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\sha1.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\sha2.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\sha4.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\ssl_cache.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\ssl_cli.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\ssl_srv.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\ssl_tls.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\timing.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\version.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\x509parse.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\x509write.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
<ClCompile Include="polarssl\xtea.c">
<Filter>Source Files\polarssl</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="Makefile">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
</Project>
+32 -12
View File
@@ -626,28 +626,48 @@ int SetCommonHeaderBasicData(ncch_settings *set, ncch_hdr *hdr)
hdr->flags[ncchflag_CONTENT_BLOCK_SIZE] = GetCtrBlockSizeFlag(set->options.blockSize);
/* Setting ContentPlatform */
hdr->flags[ncchflag_CONTENT_PLATFORM] = 1; // CTR
if(set->rsfSet->TitleInfo.Platform){
if(strcasecmp(set->rsfSet->TitleInfo.Platform, "ctr") == 0)
hdr->flags[ncchflag_CONTENT_PLATFORM] = platform_CTR;
else if (strcasecmp(set->rsfSet->TitleInfo.Platform, "snake") == 0)
hdr->flags[ncchflag_CONTENT_PLATFORM] = platform_SNAKE;
else{
fprintf(stderr, "[NCCH ERROR] Invalid Platform '%s'\n", set->rsfSet->TitleInfo.Platform);
return NCCH_BAD_RSF_SET;
}
}
else
hdr->flags[ncchflag_CONTENT_PLATFORM] = platform_CTR;
/* Setting OtherFlag */
if(!set->options.UseRomFS)
hdr->flags[ncchflag_OTHER_FLAG] |= otherflag_NoMountRomFs;
/* Setting FormType */
hdr->flags[ncchflag_CONTENT_TYPE] = form_Unassigned;
if(set->options.IsCfa)
hdr->flags[ncchflag_CONTENT_TYPE] = form_SimpleContent;
else if (set->options.UseRomFS)
hdr->flags[ncchflag_CONTENT_TYPE] = form_Executable;
else
hdr->flags[ncchflag_CONTENT_TYPE] = form_ExecutableWithoutRomfs;
/* Setting ContentType */
hdr->flags[ncchflag_CONTENT_TYPE] = 0;
if(set->options.UseRomFS) hdr->flags[ncchflag_CONTENT_TYPE] |= content_Data;
if(!set->options.IsCfa) hdr->flags[ncchflag_CONTENT_TYPE] |= content_Executable;
if(set->rsfSet->BasicInfo.ContentType){
if(strcmp(set->rsfSet->BasicInfo.ContentType,"Application") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= 0;
else if(strcmp(set->rsfSet->BasicInfo.ContentType,"SystemUpdate") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= content_SystemUpdate;
else if(strcmp(set->rsfSet->BasicInfo.ContentType,"Manual") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= content_Manual;
else if(strcmp(set->rsfSet->BasicInfo.ContentType,"Child") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= content_Child;
else if(strcmp(set->rsfSet->BasicInfo.ContentType,"Trial") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= content_Trial;
if(strcmp(set->rsfSet->BasicInfo.ContentType,"Application") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= (content_Application << 2);
else if(strcmp(set->rsfSet->BasicInfo.ContentType,"SystemUpdate") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= (content_SystemUpdate << 2);
else if(strcmp(set->rsfSet->BasicInfo.ContentType,"Manual") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= (content_Manual << 2);
else if(strcmp(set->rsfSet->BasicInfo.ContentType,"Child") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= (content_Child << 2);
else if(strcmp(set->rsfSet->BasicInfo.ContentType,"Trial") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= (content_Trial << 2);
else if (strcmp(set->rsfSet->BasicInfo.ContentType, "ExtendedSystemUpdate") == 0) hdr->flags[ncchflag_CONTENT_TYPE] |= (content_ExtendedSystemUpdate << 2);
else{
fprintf(stderr,"[NCCH ERROR] Invalid ContentType '%s'\n",set->rsfSet->BasicInfo.ContentType);
return NCCH_BAD_RSF_SET;
}
}
else
hdr->flags[ncchflag_CONTENT_TYPE] |= (content_Application << 2);
return 0;
}
@@ -663,7 +683,7 @@ bool IsValidProductCode(char *ProductCode, bool FreeProductCode)
if(strlen(ProductCode) < 10)
return false;
if(strncmp(ProductCode,"CTR",3) != 0)
if(strncmp(ProductCode,"CTR",3) != 0 && strncmp(ProductCode, "KTR", 3) != 0)
return false;
for(int i = 3; i < 10; i++){
@@ -946,12 +966,12 @@ bool IsNcch(FILE *fp, u8 *buf)
bool IsCfa(ncch_hdr* hdr)
{
return (((hdr->flags[ncchflag_CONTENT_TYPE] & content_Data) == content_Data) && ((hdr->flags[ncchflag_CONTENT_TYPE] & content_Executable) != content_Executable));
return (hdr->flags[ncchflag_CONTENT_TYPE] & 3) == form_SimpleContent;
}
bool IsUpdateCfa(ncch_hdr* hdr)
{
return (((hdr->flags[ncchflag_CONTENT_TYPE] & content_SystemUpdate) == content_SystemUpdate) && ((hdr->flags[ncchflag_CONTENT_TYPE] & content_Child) != content_Child) && IsCfa(hdr));
return (hdr->flags[ncchflag_CONTENT_TYPE] >> 2) == content_SystemUpdate || (hdr->flags[ncchflag_CONTENT_TYPE] >> 2) == content_ExtendedSystemUpdate;
}
u32 GetNcchBlockSize(ncch_hdr* hdr)
+20 -6
View File
@@ -50,14 +50,28 @@ typedef enum
typedef enum
{
content_Data = 0x1,
content_Executable = 0x2,
content_SystemUpdate = 0x4,
content_Manual = 0x8,
content_Child = (0x4|0x8),
content_Trial = 0x10
form_Unassigned,
form_SimpleContent,
form_ExecutableWithoutRomfs,
form_Executable
};
typedef enum
{
content_Application,
content_SystemUpdate,
content_Manual,
content_Child,
content_Trial,
content_ExtendedSystemUpdate
} ncch_content_bitmask;
typedef enum
{
platform_CTR = 0x1,
platform_SNAKE = 0x2
} ncch_platform;
typedef struct
{
u16 formatVersion;
+29
View File
@@ -0,0 +1,29 @@
========================================================================
MAKEFILE PROJECT : makerom Project Overview
========================================================================
AppWizard has created this makerom project for you.
This file contains a summary of what you will find in each of the files that
make up your makerom project.
makerom.vcxproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
makerom.vcxproj.filters
This is the filters file for VC++ projects generated using an Application Wizard.
It contains information about the association between the files in your project
and the filters. This association is used in the IDE to show grouping of files with
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
"Source Files" filter).
This project allows you to build/clean/rebuild from within Visual Studio by calling the commands you have input
in the wizard. The build command can be nmake or any other tool you use.
This project does not contain any files, so there are none displayed in Solution Explorer.
/////////////////////////////////////////////////////////////////////////////
+10 -2
View File
@@ -102,12 +102,16 @@ void GET_AccessControlInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
else if(cmpYamlValue("UseOtherVariationSaveData",ctx)) SetBoolYAMLValue(&rsf->AccessControlInfo.UseOtherVariationSaveData,"UseOtherVariationSaveData",ctx);
else if(cmpYamlValue("RunnableOnSleep",ctx)) SetBoolYAMLValue(&rsf->AccessControlInfo.RunnableOnSleep,"RunnableOnSleep",ctx);
else if(cmpYamlValue("SpecialMemoryArrange",ctx)) SetBoolYAMLValue(&rsf->AccessControlInfo.SpecialMemoryArrange,"SpecialMemoryArrange",ctx);
else if(cmpYamlValue("UseExtSaveData", ctx)) SetBoolYAMLValue(&rsf->AccessControlInfo.UseExtSaveData, "UseExtSaveData", ctx);
else if(cmpYamlValue("EnableL2Cache", ctx)) SetBoolYAMLValue(&rsf->AccessControlInfo.EnableL2Cache, "EnableL2Cache", ctx);
else if(cmpYamlValue("IdealProcessor",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.IdealProcessor,"IdealProcessor",ctx,0);
else if(cmpYamlValue("Priority",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.Priority,"Priority",ctx,0);
else if(cmpYamlValue("MemoryType",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.MemoryType,"MemoryType",ctx,0);
else if(cmpYamlValue("SystemMode",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.SystemMode,"SystemMode",ctx,0);
else if(cmpYamlValue("SystemModeExt", ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.SystemModeExt, "SystemModeExt", ctx, 0);
else if(cmpYamlValue("CpuSpeed", ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.CpuSpeed, "CpuSpeed", ctx, 0);
else if(cmpYamlValue("CoreVersion",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.CoreVersion,"CoreVersion",ctx,0);
else if(cmpYamlValue("HandleTableSize",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.HandleTableSize,"HandleTableSize",ctx,0);
else if(cmpYamlValue("SystemSaveDataId1",ctx)) SetSimpleYAMLValue(&rsf->AccessControlInfo.SystemSaveDataId1,"SystemSaveDataId1",ctx,0);
@@ -279,7 +283,8 @@ void GET_TitleInfo(ctr_yaml_context *ctx, rsf_settings *rsf)
if(ctx->error || ctx->done) return;
// Handle childs
if(cmpYamlValue("Category",ctx)) SetSimpleYAMLValue(&rsf->TitleInfo.Category,"Category",ctx,0);
if (cmpYamlValue("Platform", ctx)) SetSimpleYAMLValue(&rsf->TitleInfo.Platform, "Platform", ctx, 0);
else if(cmpYamlValue("Category",ctx)) SetSimpleYAMLValue(&rsf->TitleInfo.Category,"Category",ctx,0);
else if(cmpYamlValue("UniqueId",ctx)) SetSimpleYAMLValue(&rsf->TitleInfo.UniqueId,"UniqueId",ctx,0);
else if(cmpYamlValue("Version",ctx)) SetSimpleYAMLValue(&rsf->TitleInfo.Version,"Version",ctx,0);
else if(cmpYamlValue("ContentsIndex",ctx)) SetSimpleYAMLValue(&rsf->TitleInfo.ContentsIndex,"ContentsIndex",ctx,0);
@@ -382,6 +387,8 @@ void free_RsfSettings(rsf_settings *set)
free(set->AccessControlInfo.Priority);
free(set->AccessControlInfo.MemoryType);
free(set->AccessControlInfo.SystemMode);
free(set->AccessControlInfo.SystemModeExt);
free(set->AccessControlInfo.CpuSpeed);
free(set->AccessControlInfo.CoreVersion);
free(set->AccessControlInfo.HandleTableSize);
free(set->AccessControlInfo.SystemSaveDataId1);
@@ -502,6 +509,7 @@ void free_RsfSettings(rsf_settings *set)
free(set->PlainRegion);
//TitleInfo
free(set->TitleInfo.Platform);
free(set->TitleInfo.Category);
free(set->TitleInfo.UniqueId);
free(set->TitleInfo.Version);
+6 -1
View File
@@ -86,12 +86,16 @@ typedef struct
bool UseOtherVariationSaveData;
bool RunnableOnSleep;
bool SpecialMemoryArrange;
bool UseExtSaveData;
bool EnableL2Cache;
// Strings
char *IdealProcessor;
char *Priority;
char *MemoryType;
char *SystemMode;
char *SystemModeExt;
char *CpuSpeed;
char *CoreVersion;
char *HandleTableSize;
char *SystemSaveDataId1;
@@ -178,6 +182,7 @@ typedef struct
struct{
// Strings
char *Platform;
char *Category;
char *UniqueId;
char *Version;