Merge branch 'master' into master

This commit is contained in:
StudentBlake 2018-06-25 21:47:05 -04:00 committed by GitHub
commit ee7864e453
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 17 deletions

View file

@ -2,26 +2,32 @@
[Original Release](https://www.maxconsole.com/threads/exclusive-xci-explorer-released-for-switch-game-cartridge-backups.47046/) [Original Release](https://www.maxconsole.com/threads/exclusive-xci-explorer-released-for-switch-game-cartridge-backups.47046/)
View contents of XCI files and more View contents of XCI files and more!
## Features ## Features
* View info * View metadata
* View partitions * Explore partitions
* Check NCA hashes
* Extract NCA * Extract NCA
* Modify cert * Modify cert
## Requirements ## Requirements
* Visual Studio 2015+ * Visual Studio 2017
* [Hactool](https://github.com/SciresM/hactool/releases) (provided in Releases) * [Hactool](https://github.com/SciresM/hactool/releases) ([optional](https://github.com/StudentBlake/XCI-Explorer/releases/download/v1.0.0.0/hactool.zip))
* [Dumped keys](https://gbatemp.net/threads/how-to-get-switch-keys-for-hactool-xci-decrypting.506978/) (provided in Releases) * [Dumped keys](https://gbatemp.net/threads/how-to-get-switch-keys-for-hactool-xci-decrypting.506978/) ([optional](https://github.com/StudentBlake/XCI-Explorer/releases/download/v1.0.0.0/hactool.zip))
![program](https://i.imgur.com/xt6VpN7.jpg)
Main Tab Metadata/Cert/Trimming | Partitions Tab NCA Extract/Hash Check
:-------------------------:|:-------------------------:
![main](https://imgur.com/NdYOcgW.jpg) | ![partitions](https://imgur.com/ehPoPWB.jpg)
## Build Instructions ## Build Instructions
* Open XCI Explorer.sln/.csproj * Open `XCI Explorer.sln`
* Build -> Build Solution * Build -> Build Solution
* Add hactool + dependencies + keys.txt to `XCI-Explorer/bin/Debug/` folder * Add hactool.exe + dependencies + keys.txt to `XCI-Explorer/bin/Debug/` folder
* Run `XCI-Explorer.exe`
## Special Thanks
Addition of CARD2 and hash support provided by klks
## Disclaimer ## Disclaimer
This is not my original work. I just decompiled the rogue executable floating around and made minor changes. This is not my original work. I just decompiled the rogue executable floating around and made minor changes.

View file

@ -72,10 +72,5 @@
<Compile Include="XTSSharp\XtsSectorStream.cs" /> <Compile Include="XTSSharp\XtsSectorStream.cs" />
<Compile Include="XTSSharp\XtsStream.cs" /> <Compile Include="XTSSharp\XtsStream.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="XCI_Explorer\MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>

View file

@ -290,7 +290,7 @@ namespace XCI_Explorer
catch catch
{ {
// using bad coding practices as a temporary fix until someone can figure out the problem // using bad coding practices as a temporary fix until someone can figure out the problem
// Problem: Doesn't find icon dat for some supported languages (info located somewhere else?) // Problem: Doesn't find icon dat for some supported languages (info located somewhere else?) [1-2 Switch]
CB_RegionName.Items.Remove(Language[i]); CB_RegionName.Items.Remove(Language[i]);
} }
PB_GameIcon.BackgroundImage = Icons[i]; PB_GameIcon.BackgroundImage = Icons[i];
@ -457,7 +457,16 @@ namespace XCI_Explorer
fileStream.Read(array3, 0, 16); fileStream.Read(array3, 0, 16);
PFS0.PFS0_Headers[0] = new PFS0.PFS0_Header(array3); PFS0.PFS0_Headers[0] = new PFS0.PFS0_Header(array3);
PFS0.PFS0_Entry[] array8; PFS0.PFS0_Entry[] array8;
array8 = new PFS0.PFS0_Entry[PFS0.PFS0_Headers[0].FileCount]; try
{
array8 = new PFS0.PFS0_Entry[PFS0.PFS0_Headers[0].FileCount];
}
catch
{
//Problem: Some games cause an overflow [Rocket League]
//This ruins the boot.psf0 entry in partitions
array8 = new PFS0.PFS0_Entry[2];
}
for (int m = 0; m < PFS0.PFS0_Headers[0].FileCount; m++) for (int m = 0; m < PFS0.PFS0_Headers[0].FileCount; m++)
{ {
fileStream.Position = PFS0Offset + 16 + 24 * m; fileStream.Position = PFS0Offset + 16 + 24 * m;