mirror of
https://github.com/StudentBlake/XCI-Explorer
synced 2024-11-10 14:44:16 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
ee7864e453
3 changed files with 27 additions and 17 deletions
26
README.md
26
README.md
|
@ -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.
|
||||||
|
|
|
@ -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>
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue