Skip to content

Commit

Permalink
UI: Fix sections extraction
Browse files Browse the repository at this point in the history
There is currently an issue when the update NCA doesn't contains the section we want to extract, this is fixed by adding a check.
I have fixed the inverted handler of ExeFs/Logo introduced in Ryujinx#4755.

Fixes Ryujinx#4521
  • Loading branch information
AcK77 committed May 5, 2023
1 parent 9ff21f9 commit 0d8e00e
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 11 deletions.
11 changes: 8 additions & 3 deletions src/Ryujinx.Ava/Common/ApplicationHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -233,9 +233,14 @@ public static async Task ExtractSection(NcaSectionType ncaSectionType, string ti
try
{
IFileSystem ncaFileSystem = patchNca != null
? mainNca.OpenFileSystemWithPatch(patchNca, index, IntegrityCheckLevel.ErrorOnInvalid)
: mainNca.OpenFileSystem(index, IntegrityCheckLevel.ErrorOnInvalid);
bool isSectionExistInPatch = false;
if (patchNca != null)
{
isSectionExistInPatch = patchNca.CanOpenSection(index);
}
IFileSystem ncaFileSystem = isSectionExistInPatch ? mainNca.OpenFileSystemWithPatch(patchNca, index, IntegrityCheckLevel.ErrorOnInvalid)
: mainNca.OpenFileSystem(index, IntegrityCheckLevel.ErrorOnInvalid);
FileSystemClient fsClient = _horizonClient.Fs;
Expand Down
4 changes: 2 additions & 2 deletions src/Ryujinx.Ava/UI/Controls/ApplicationContextMenu.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,15 @@
</MenuItem>
<MenuItem Header="{locale:Locale GameListContextMenuExtractData}">
<MenuItem
Click="ExtractApplicationLogo_Click"
Click="ExtractApplicationExeFs_Click"
Header="{locale:Locale GameListContextMenuExtractDataExeFS}"
ToolTip.Tip="{locale:Locale GameListContextMenuExtractDataExeFSToolTip}" />
<MenuItem
Click="ExtractApplicationRomFs_Click"
Header="{locale:Locale GameListContextMenuExtractDataRomFS}"
ToolTip.Tip="{locale:Locale GameListContextMenuExtractDataRomFSToolTip}" />
<MenuItem
Click="ExtractApplicationExeFs_Click"
Click="ExtractApplicationLogo_Click"
Header="{locale:Locale GameListContextMenuExtractDataLogo}"
ToolTip.Tip="{locale:Locale GameListContextMenuExtractDataLogoToolTip}" />
</MenuItem>
Expand Down
8 changes: 4 additions & 4 deletions src/Ryujinx.Ava/UI/Controls/ApplicationContextMenu.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -289,13 +289,13 @@ public void OpenShaderCacheDirectory_Click(object sender, RoutedEventArgs args)
}
}

public async void ExtractApplicationLogo_Click(object sender, RoutedEventArgs args)
public async void ExtractApplicationExeFs_Click(object sender, RoutedEventArgs args)
{
var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;

if (viewModel?.SelectedApplication != null)
{
await ApplicationHelper.ExtractSection(NcaSectionType.Logo, viewModel.SelectedApplication.Path, viewModel.SelectedApplication.TitleName);
await ApplicationHelper.ExtractSection(NcaSectionType.Code, viewModel.SelectedApplication.Path, viewModel.SelectedApplication.TitleName);
}
}

Expand All @@ -309,13 +309,13 @@ public async void ExtractApplicationRomFs_Click(object sender, RoutedEventArgs a
}
}

public async void ExtractApplicationExeFs_Click(object sender, RoutedEventArgs args)
public async void ExtractApplicationLogo_Click(object sender, RoutedEventArgs args)
{
var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;

if (viewModel?.SelectedApplication != null)
{
await ApplicationHelper.ExtractSection(NcaSectionType.Code, viewModel.SelectedApplication.Path, viewModel.SelectedApplication.TitleName);
await ApplicationHelper.ExtractSection(NcaSectionType.Logo, viewModel.SelectedApplication.Path, viewModel.SelectedApplication.TitleName);
}
}
}
Expand Down
10 changes: 8 additions & 2 deletions src/Ryujinx/Ui/Widgets/GameTableContextMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,14 @@ private void ExtractSection(NcaSectionType ncaSectionType, int programIndex = 0)
int index = Nca.GetSectionIndexFromType(ncaSectionType, mainNca.Header.ContentType);
IFileSystem ncaFileSystem = patchNca != null ? mainNca.OpenFileSystemWithPatch(patchNca, index, IntegrityCheckLevel.ErrorOnInvalid)
: mainNca.OpenFileSystem(index, IntegrityCheckLevel.ErrorOnInvalid);
bool isSectionExistInPatch = false;
if (patchNca != null)
{
isSectionExistInPatch = patchNca.CanOpenSection(index);
}
IFileSystem ncaFileSystem = isSectionExistInPatch ? mainNca.OpenFileSystemWithPatch(patchNca, index, IntegrityCheckLevel.ErrorOnInvalid)
: mainNca.OpenFileSystem(index, IntegrityCheckLevel.ErrorOnInvalid);
FileSystemClient fsClient = _horizonClient.Fs;
Expand Down

0 comments on commit 0d8e00e

Please sign in to comment.