New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for multi game XCIs (second try) #6515
base: master
Are you sure you want to change the base?
Conversation
XCI files with multiple games are loading fine. However it seems there is an issue when the game is bundled with multiple DLCs. The regular Ryujinx loads fine all 10 DLCs, but the emulator crashes when right click> Manage DLC. |
Thank you, it should hopefully detect all of them now! |
Everything seems to be working just fine for me! I only have one game to test this with though, and that's Pikmin 1+2. It's working fine. Both games load and play, and their updates apply as well. Though, I'm having sound issues with 1, and 2's title screen doesn't show up. I cannot tell if this is a bug with this feature or bugs with the games themselves, as these are the only copies of the game I have to test. Hoping for the reviews and merge soon :) |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as off-topic.
This comment was marked as off-topic.
Can it parse complex XCI files similar to Yuzu, including game updates, DLC, MODs, and cheats within the XCI file? It seems the official release doesn't support this yet. Is there a compiled win64 version .exe file included in this PR? I'd like to test whether it can handle complex XCI files. |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as resolved.
This comment was marked as resolved.
5c315fd
to
3dce544
Compare
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
3dce544
to
9298999
Compare
Shortcuts are working fine now, Thank you! I tested a few more games (over 40 games) including multi-games.xci, single-game.xci and game.nsp and they all loaded fine, except 4 of them. These four games are single-game.xci:
All of these games load normally in the latest official version of Ryujinx. I also noticed that with this PR the title-IDs of these four games are detected incorrectly: I don't know if this issue occurs with any other untested game. |
@frafes I hope this is fixed with my latest commit.
|
Move SaveDataOwnerId check to the top, since it seems to be more reliable.
This commit reverts some parts of 61615b8. Since the issue wasn't actually related to the application id in CMNTs, we can remove the wrong assumptions.
Thank you! All those games are loading fine. While testing some more games I found a new issue: When adding a game directory path to Ryujinx, the first game listed in that folder (in alphabetical order) cannot be launched either via command line or shortcut.
However, if I remove the game directory path from Ryujinx (either in the GUI or by editing the PRConfig.json file), all games launch successfully via the command line or shortcut. Tested both GTK and Avalonia versions, this issue occurs just with the Avalonia version. The latest official Ryujinx Avalonia version doesn't have this issue. |
the log file you provided says it's being used by another process |
Do you get an exception and a stacktrace? If so could you post it? |
No, I don’t get an exception and a stacktrace, sorry. Is there a way I can get it? |
Odd, are you able to reproduce this on the command line, so you get to see everything? |
Seems like you are running multiple instances at once, or something else is accessing the files. Doesn't look like an issue I could address here. |
No problem. Thank you so much for all your hard work! P.S.: I don't know if it's related, but when I try to sort the game list by "name" in the GUI, Ryujinx crashes. All other sort options work fine. |
Does that happen on master as well? |
It doesn't happen on master. |
Looks like I'll need to investigate then, thank you! |
Finally, it should be fixed now! Anything else that came up during testing? :D |
Thank you :) About that issue, it also happens on Linux. It's odd because that issue doesn't happen on master. |
As the exception says, the file is used by another process. Make sure there is nothing else accessing the file and try again. |
Unfortunately I couldn't find what is causing this. Anyway, if I find something new, I'll let you know. Thank you! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should double check if Title
is replaced by Application
. I know there are a bunch of TitleUpdate
even in windows. Maybe that could be renamed later here because it's out of scope here.
Let's do that in a separate PR, since this one is already large enough and I would need to change more strings than currently affected by this PR. |
I rebased this branch and fixed an issue that I saw. I mainly need more testing to make sure GTK and Ava are both working fine with these changes.
Note
I added a new command line argument (
-i
or--application-id
) for Avalonia and GTK, which allows to launch a specific application from a multi game XCI.This argument will be ignored if the specified application is not an XCI or if no application was specified on the command line.
What needs to be tested
For GTK and Avalonia I'd like to know if the following things work:
File > Load Application from File
)?Fixes #6158
Fixes #6740
Fixes #6761
Original PR description from #5638
Huge thank you to @piplup55 for his patience and the large amount of testing he did for me while I was trying to make this work!
This PR refactors a lot of the code used for application loading to use
.cnmt.nca
files.Before we needed a lot more logic for checks that can now be reduced to simple reads of values in the
cnmt
files.I wrapped
Cnmt
in aContentCollection
class which can also get the referencedNCAs
, so that should be pretty simple now as well.Eventually we should also replace all
ProgramIndex
logic with reads fromNACP
, but that's for another PR.Fixes #3234
Closes #1852