mirror of
https://github.com/jakcron/nstool
synced 2024-11-15 02:06:40 +00:00
[xcitool] Fix typo and add VS project files.
This commit is contained in:
parent
08de2c4abc
commit
b5c6cf6cb4
5 changed files with 233 additions and 17 deletions
18
NXTools.sln
18
NXTools.sln
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 14.0.25420.1
|
VisualStudioVersion = 15.0.27428.2015
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfnd", "lib\libfnd\fnd.vcxproj", "{4D27EDB9-5110-44FE-8CE2-D46C5AD3C55B}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfnd", "lib\libfnd\fnd.vcxproj", "{4D27EDB9-5110-44FE-8CE2-D46C5AD3C55B}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -36,6 +36,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libes", "lib\libes\es.vcxpr
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiktool", "programs\tiktool\tiktool.vcxproj", "{2200B834-F15A-4C6E-9DDB-6012B9A5C246}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiktool", "programs\tiktool\tiktool.vcxproj", "{2200B834-F15A-4C6E-9DDB-6012B9A5C246}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xcitool", "programs\xcitool\xcitool.vcxproj", "{007FF616-7B99-4CB3-84CD-39C47F64FC7E}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
|
@ -108,6 +110,14 @@ Global
|
||||||
{2200B834-F15A-4C6E-9DDB-6012B9A5C246}.Release|x64.Build.0 = Release|x64
|
{2200B834-F15A-4C6E-9DDB-6012B9A5C246}.Release|x64.Build.0 = Release|x64
|
||||||
{2200B834-F15A-4C6E-9DDB-6012B9A5C246}.Release|x86.ActiveCfg = Release|Win32
|
{2200B834-F15A-4C6E-9DDB-6012B9A5C246}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{2200B834-F15A-4C6E-9DDB-6012B9A5C246}.Release|x86.Build.0 = Release|Win32
|
{2200B834-F15A-4C6E-9DDB-6012B9A5C246}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E}.Release|x64.Build.0 = Release|x64
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E}.Release|x86.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -121,5 +131,9 @@ Global
|
||||||
{BC2F2D07-BAB3-469C-9C25-8CC54F96F7AB} = {E0863FCC-8E72-490D-BE1B-458F12CA8298}
|
{BC2F2D07-BAB3-469C-9C25-8CC54F96F7AB} = {E0863FCC-8E72-490D-BE1B-458F12CA8298}
|
||||||
{7BE99936-0D40-410D-944B-4513C2EFF8DC} = {170B4A09-1B67-4A62-93AB-116EBCFF4A8C}
|
{7BE99936-0D40-410D-944B-4513C2EFF8DC} = {170B4A09-1B67-4A62-93AB-116EBCFF4A8C}
|
||||||
{2200B834-F15A-4C6E-9DDB-6012B9A5C246} = {E0863FCC-8E72-490D-BE1B-458F12CA8298}
|
{2200B834-F15A-4C6E-9DDB-6012B9A5C246} = {E0863FCC-8E72-490D-BE1B-458F12CA8298}
|
||||||
|
{007FF616-7B99-4CB3-84CD-39C47F64FC7E} = {E0863FCC-8E72-490D-BE1B-458F12CA8298}
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {07DCCACC-D10D-47C9-85AE-FB9C54DB7D62}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
@ -30,9 +30,10 @@ enum CardClockRate
|
||||||
};
|
};
|
||||||
|
|
||||||
static const size_t kXciPageSize = 0x200;
|
static const size_t kXciPageSize = 0x200;
|
||||||
static const size_t kXciHeaderEncOffset = 0xA0;
|
static const size_t kXciHeaderEncOffset = 0x90;
|
||||||
static const size_t kXciHeaderEncSize = 0x70;
|
static const size_t kXciHeaderEncSize = 0x70;
|
||||||
|
|
||||||
|
#pragma pack (push, 1)
|
||||||
struct sXciHeader
|
struct sXciHeader
|
||||||
{
|
{
|
||||||
char signature[4]; // 0x00 // "HEAD"
|
char signature[4]; // 0x00 // "HEAD"
|
||||||
|
@ -86,13 +87,15 @@ struct sKeyDataArea
|
||||||
byte_t reserved_01[0x100];
|
byte_t reserved_01[0x100];
|
||||||
}; // sizeof() = 512*8 (8 pages)
|
}; // sizeof() = 512*8 (8 pages)
|
||||||
|
|
||||||
static struct sXciKeyData
|
#pragma pack (pop)
|
||||||
|
|
||||||
|
struct sXciKeyData
|
||||||
{
|
{
|
||||||
crypto::aes::sAes128Key xci_header_encryption_key;
|
crypto::aes::sAes128Key xci_header_encryption_key;
|
||||||
crypto::aes::sAes128Key initial_data_key;
|
crypto::aes::sAes128Key initial_data_key;
|
||||||
crypto::rsa::sRsa2048Key xci_header_signer_key;
|
crypto::rsa::sRsa2048Key xci_header_signer_key;
|
||||||
crypto::rsa::sRsa2048Key card_key_area_oeap_key;
|
crypto::rsa::sRsa2048Key card_key_area_oeap_key;
|
||||||
} key_data;
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void getTitleKeyFromInitialData(const byte_t* initialData, crypto::aes::sAes128Key& titleKey)
|
void getTitleKeyFromInitialData(const byte_t* initialData, crypto::aes::sAes128Key& titleKey)
|
||||||
|
@ -116,7 +119,7 @@ inline const char* getBoolStr(bool isTrue)
|
||||||
|
|
||||||
inline const char* getRomSizeStr(byte_t rom_size)
|
inline const char* getRomSizeStr(byte_t rom_size)
|
||||||
{
|
{
|
||||||
char* str = "unknown";
|
const char* str = "unknown";
|
||||||
switch (rom_size)
|
switch (rom_size)
|
||||||
{
|
{
|
||||||
case (ROM_SIZE_1GB) :
|
case (ROM_SIZE_1GB) :
|
||||||
|
@ -143,7 +146,7 @@ inline const char* getRomSizeStr(byte_t rom_size)
|
||||||
|
|
||||||
inline const char* getCardClockRate(uint32_t acc_ctrl_1)
|
inline const char* getCardClockRate(uint32_t acc_ctrl_1)
|
||||||
{
|
{
|
||||||
char* str = "unknown";
|
const char* str = "unknown";
|
||||||
switch (acc_ctrl_1)
|
switch (acc_ctrl_1)
|
||||||
{
|
{
|
||||||
case (CLOCK_RATE_25) :
|
case (CLOCK_RATE_25) :
|
||||||
|
@ -157,13 +160,47 @@ inline const char* getCardClockRate(uint32_t acc_ctrl_1)
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dumpHxdStyleSector(byte_t* out, size_t len)
|
||||||
|
{
|
||||||
|
// iterate over 0x10 blocks
|
||||||
|
for (size_t i = 0; i < (len / crypto::aes::kAesBlockSize); i++)
|
||||||
|
{
|
||||||
|
// for block i print each byte
|
||||||
|
for (size_t j = 0; j < crypto::aes::kAesBlockSize; j++)
|
||||||
|
{
|
||||||
|
printf("%02X ", out[i*crypto::aes::kAesBlockSize + j]);
|
||||||
|
}
|
||||||
|
printf(" ");
|
||||||
|
for (size_t j = 0; j < crypto::aes::kAesBlockSize; j++)
|
||||||
|
{
|
||||||
|
printf("%c", isalnum(out[i*crypto::aes::kAesBlockSize + j]) ? out[i*crypto::aes::kAesBlockSize + j] : '.');
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
for (size_t i = 0; i < len % crypto::aes::kAesBlockSize; i++)
|
||||||
|
{
|
||||||
|
printf("%02X ", out[(len / crypto::aes::kAesBlockSize)*crypto::aes::kAesBlockSize + i]);
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < crypto::aes::kAesBlockSize - (len % crypto::aes::kAesBlockSize); i++)
|
||||||
|
{
|
||||||
|
printf(" ");
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < len % crypto::aes::kAesBlockSize; i++)
|
||||||
|
{
|
||||||
|
printf("%c", out[(len / crypto::aes::kAesBlockSize)*crypto::aes::kAesBlockSize + i]);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
void printXciHeader(const sXciHeader& hdr, bool is_decrypted)
|
void printXciHeader(const sXciHeader& hdr, bool is_decrypted)
|
||||||
{
|
{
|
||||||
be_uint64_t *aes_iv, *hash;
|
be_uint64_t *aes_iv, *hash;
|
||||||
|
|
||||||
printf("[XCI HEADER]\n");
|
printf("[XCI HEADER]\n");
|
||||||
printf(" Magic: HEAD\n");
|
printf(" Magic: HEAD\n");
|
||||||
printf(" RomAreaStartPage: 0x%0x (0x" PRIx64 ")\n", hdr.rom_area_start_page.get(), blockToAddr(hdr.rom_area_start_page.get()));
|
printf(" RomAreaStartPage: 0x%0x (0x%" PRIx64 ")\n", hdr.rom_area_start_page.get(), blockToAddr(hdr.rom_area_start_page.get()));
|
||||||
printf(" BackupAreaStartPage: 0x%0x\n", hdr.backup_area_start_page.get());
|
printf(" BackupAreaStartPage: 0x%0x\n", hdr.backup_area_start_page.get());
|
||||||
printf(" KeyFlag: 0x%x\n", hdr.key_flag);
|
printf(" KeyFlag: 0x%x\n", hdr.key_flag);
|
||||||
printf(" KekIndex: %d\n", hdr.key_flag & 7);
|
printf(" KekIndex: %d\n", hdr.key_flag & 7);
|
||||||
|
@ -176,15 +213,15 @@ void printXciHeader(const sXciHeader& hdr, bool is_decrypted)
|
||||||
printf(" PackageId: 0x%" PRIx64 "\n", hdr.package_id.get());
|
printf(" PackageId: 0x%" PRIx64 "\n", hdr.package_id.get());
|
||||||
printf(" ValidDataEndPage: 0x%x (0x%" PRIx64 ")\n", hdr.valid_data_end_page.get(), blockToAddr(hdr.valid_data_end_page.get()));
|
printf(" ValidDataEndPage: 0x%x (0x%" PRIx64 ")\n", hdr.valid_data_end_page.get(), blockToAddr(hdr.valid_data_end_page.get()));
|
||||||
aes_iv = (be_uint64_t*)hdr.encryption_iv;
|
aes_iv = (be_uint64_t*)hdr.encryption_iv;
|
||||||
printf(" AesIv: %" PRIX64 "%" PRIX64"\n", aes_iv[0].get(), aes_iv[1].get());
|
printf(" AesIv: %016" PRIX64 "%016" PRIX64"\n", aes_iv[0].get(), aes_iv[1].get());
|
||||||
printf(" PartitionFs:\n");
|
printf(" PartitionFs:\n");
|
||||||
printf(" Offset: 0x%" PRIx64 "\n", hdr.partition_fs_header_address.get());
|
printf(" Offset: 0x%" PRIx64 "\n", hdr.partition_fs_header_address.get());
|
||||||
printf(" Size: 0x%" PRIx64 "\n", hdr.partition_fs_header_size.get());
|
printf(" Size: 0x%" PRIx64 "\n", hdr.partition_fs_header_size.get());
|
||||||
hash = (be_uint64_t*)hdr.partition_fs_header_hash;
|
hash = (be_uint64_t*)hdr.partition_fs_header_hash;
|
||||||
printf(" Hash: %" PRIX64 "%" PRIX64 "%" PRIX64 "%" PRIX64"\n", hash[0].get(),hash[1].get(),hash[2].get(),hash[3].get());
|
printf(" Hash: %016" PRIX64 "%016" PRIX64 "%016" PRIX64 "%016" PRIX64"\n", hash[0].get(),hash[1].get(),hash[2].get(),hash[3].get());
|
||||||
printf(" InitialData:\n");
|
printf(" InitialData:\n");
|
||||||
hash = (be_uint64_t*)hdr.initial_data_hash;
|
hash = (be_uint64_t*)hdr.initial_data_hash;
|
||||||
printf(" Hash: %" PRIX64 "%" PRIX64 "%" PRIX64 "%" PRIX64"\n", hash[0].get(),hash[1].get(),hash[2].get(),hash[3].get());
|
printf(" Hash: %016" PRIX64 "%016" PRIX64 "%016" PRIX64 "%016" PRIX64"\n", hash[0].get(),hash[1].get(),hash[2].get(),hash[3].get());
|
||||||
printf(" SelSec: 0x%x\n", hdr.sel_sec.get());
|
printf(" SelSec: 0x%x\n", hdr.sel_sec.get());
|
||||||
printf(" SelT1Key: 0x%x\n", hdr.sel_t1_key.get());
|
printf(" SelT1Key: 0x%x\n", hdr.sel_t1_key.get());
|
||||||
printf(" SelKey: 0x%x\n", hdr.sel_key.get());
|
printf(" SelKey: 0x%x\n", hdr.sel_key.get());
|
||||||
|
@ -192,7 +229,7 @@ void printXciHeader(const sXciHeader& hdr, bool is_decrypted)
|
||||||
|
|
||||||
if (is_decrypted == true)
|
if (is_decrypted == true)
|
||||||
{
|
{
|
||||||
printf(" FwVersion: v%d.%d\n", hdr.fw_version[0].get(), hdr.fw_version[1].get());
|
printf(" FwVersion: v%d.%d\n", hdr.fw_version[1].get(), hdr.fw_version[0].get());
|
||||||
printf(" AccCtrl1: 0x%x\n", hdr.acc_ctrl_1.get());
|
printf(" AccCtrl1: 0x%x\n", hdr.acc_ctrl_1.get());
|
||||||
printf(" CardClockRate: %s\n", getCardClockRate(hdr.acc_ctrl_1.get()));
|
printf(" CardClockRate: %s\n", getCardClockRate(hdr.acc_ctrl_1.get()));
|
||||||
printf(" Wait1TimeRead: 0x%x\n", hdr.wait_1_time_read.get());
|
printf(" Wait1TimeRead: 0x%x\n", hdr.wait_1_time_read.get());
|
||||||
|
@ -202,15 +239,21 @@ void printXciHeader(const sXciHeader& hdr, bool is_decrypted)
|
||||||
printf(" FwMode: 0x%x\n", hdr.fw_mode.get());
|
printf(" FwMode: 0x%x\n", hdr.fw_mode.get());
|
||||||
printf(" CupVersion: %d\n", hdr.cup_version.get());
|
printf(" CupVersion: %d\n", hdr.cup_version.get());
|
||||||
hash = (be_uint64_t*)hdr.upp_hash;
|
hash = (be_uint64_t*)hdr.upp_hash;
|
||||||
printf(" UppHash: %" PRIX64 "\n", hash[0].get());
|
printf(" UppHash: %016" PRIX64 "\n", hash[0].get());
|
||||||
printf(" CupId: %" PRIx64 "\n", hdr.cup_id.get());
|
printf(" CupId: %016" PRIx64 "\n", hdr.cup_id.get());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void decryptXciHeader(const byte_t* src, byte_t* dst)
|
void decryptXciHeader(const byte_t* src, byte_t* dst)
|
||||||
{
|
{
|
||||||
|
const byte_t* src_iv = ((const sXciHeader*)src)->encryption_iv;
|
||||||
byte_t iv[crypto::aes::kAesBlockSize];
|
byte_t iv[crypto::aes::kAesBlockSize];
|
||||||
memcpy(iv, ((const sXciHeader*)src)->encryption_iv, crypto::aes::kAesBlockSize);
|
|
||||||
|
for (int i = 0; i < crypto::aes::kAesBlockSize; i++)
|
||||||
|
{
|
||||||
|
iv[i] = src_iv[15 - i];
|
||||||
|
}
|
||||||
|
|
||||||
// copy plain
|
// copy plain
|
||||||
memcpy(dst, src, kXciHeaderEncOffset);
|
memcpy(dst, src, kXciHeaderEncOffset);
|
130
programs/xcitool/xcitool.vcxproj
Normal file
130
programs/xcitool/xcitool.vcxproj
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.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">
|
||||||
|
<VCProjectVersion>15.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{007FF616-7B99-4CB3-84CD-39C47F64FC7E}</ProjectGuid>
|
||||||
|
<RootNamespace>xcitool</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</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 />
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>..\..\lib\libfnd\include;..\..\lib\libcrypto\include;..\..\lib\libnx\include;</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>..\..\lib\libfnd\include;..\..\lib\libcrypto\include;..\..\lib\libnx\include;</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>..\..\lib\libfnd\include;..\..\lib\libcrypto\include;..\..\lib\libnx\include;</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>..\..\lib\libfnd\include;..\..\lib\libcrypto\include;..\..\lib\libnx\include;</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="makefile" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="source\main.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
25
programs/xcitool/xcitool.vcxproj.filters
Normal file
25
programs/xcitool/xcitool.vcxproj.filters
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?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;ipp;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>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="makefile" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="source\main.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
4
programs/xcitool/xcitool.vcxproj.user
Normal file
4
programs/xcitool/xcitool.vcxproj.user
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup />
|
||||||
|
</Project>
|
Loading…
Reference in a new issue