-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
ES: Make it fail on unsupported installed IOSes #6374
Conversation
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.
Sounds fine to me. Even though technically homebrew should be able to handle ES_Launch failure properly (which can fail), it looks like some of them assume that if ES_GetTicketViews works then the launch will also succeed.
There are some minor changes to make, though.
Source/Core/Core/IOS/ES/Views.cpp
Outdated
@@ -41,6 +42,15 @@ static bool ShouldReturnFakeViewsForIOSes(u64 title_id, const TitleContext& cont | |||
(ios && SConfig::GetInstance().m_disc_booted_from_game_list && disc_title); | |||
} | |||
|
|||
// Prevent to load installed IOSes that are not emulated. |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
Source/Core/Core/IOS/ES/Views.cpp
Outdated
if (IsUnsupportedIOS(TitleID)) | ||
{ | ||
ERROR_LOG(IOS_ES, "GetViews: Dolphin doesn't emulate IOS title %016" PRIx64, TitleID); | ||
return GetDefaultReply(ES_EINVAL); |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
@leoetlino You'll find in attachment the result of my hardware tests and the source code (based on libogc) + ELF. |
This PR is a response to: #5225
Rather than handling IOSes that Dolphin doesn't emulate, let's pretend that they don't exist. Otherwise, it creates a weird behaviour where libogc believes that the context is acceptable for running functions like
ES_GetNumTicketViews
andES_GetTicketViews
.This PR fixes homebrew not booting while relying on IOS reloading of an (custom) IOS that isn't emulated by Dolphin but present in the NAND. These homebrew were blocked into an infinite loop during the
IOS_ReloadIOS
call.I did some hardware tests too. If the app files are made empty or deleted, ditto for the TMD or the data/content is deleted, calling
IOS_ReloadIOS
will result in a black screen (no trace, no stack dump message or whatsoever). I assume, the console didn't like that at all. It was tested on a 3.2E Wii with a simple homebrew which callsIOS_ReloadIOS
.Ready to be reviewed.