mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 10:44:49 +01:00 
			
		
		
		
	HLE/APT: Always return an error from PrepareToStartNewestHomeMenu so that the Home Menu doesn't try to reboot the system.
As per 3dbrew: "During Home Menu start-up it uses APT:PrepareToStartNewestHomeMenu. If that doesn't return an error(normally NS returns 0xC8A0CFFC for that), Home Menu starts a hardware reboot with APT:StartNewestHomeMenu etc. "
This commit is contained in:
		
							parent
							
								
									b57d58c0dc
								
							
						
					
					
						commit
						7096f01c14
					
				| @ -776,6 +776,20 @@ void PrepareToStartLibraryApplet(Service::Interface* self) { | ||||
|     LOG_DEBUG(Service_APT, "called applet_id=%08X", applet_id); | ||||
| } | ||||
| 
 | ||||
| void PrepareToStartNewestHomeMenu(Service::Interface* self) { | ||||
|     IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x1A, 0, 0); // 0x1A0000
 | ||||
|     IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); | ||||
| 
 | ||||
|     // TODO(Subv): This command can only be called by a System Applet (return 0xC8A0CC04 otherwise).
 | ||||
| 
 | ||||
|     // This command must return an error when called, otherwise the Home Menu will try to reboot the
 | ||||
|     // system.
 | ||||
|     rb.Push(ResultCode(ErrorDescription::AlreadyExists, ErrorModule::Applet, | ||||
|                        ErrorSummary::InvalidState, ErrorLevel::Status)); | ||||
| 
 | ||||
|     LOG_DEBUG(Service_APT, "called"); | ||||
| } | ||||
| 
 | ||||
| void PreloadLibraryApplet(Service::Interface* self) { | ||||
|     IPC::RequestParser rp(Kernel::GetCommandBuffer(), 0x16, 1, 0); // 0x160040
 | ||||
|     AppletId applet_id = static_cast<AppletId>(rp.Pop<u32>()); | ||||
|  | ||||
| @ -419,6 +419,16 @@ void GetAppCpuTimeLimit(Service::Interface* self); | ||||
|  */ | ||||
| void PrepareToStartLibraryApplet(Service::Interface* self); | ||||
| 
 | ||||
| /**
 | ||||
|  * APT::PrepareToStartNewestHomeMenu service function | ||||
|  *  Inputs: | ||||
|  *      0 : Command header [0x001A0000] | ||||
|  *  Outputs: | ||||
|  *      0 : Return header | ||||
|  *      1 : Result of function | ||||
|  */ | ||||
| void PrepareToStartNewestHomeMenu(Service::Interface* self); | ||||
| 
 | ||||
| /**
 | ||||
|  * APT::PreloadLibraryApplet service function | ||||
|  *  Inputs: | ||||
|  | ||||
| @ -17,7 +17,7 @@ const Interface::FunctionInfo FunctionTable[] = { | ||||
|     {0x00060040, GetAppletInfo, "GetAppletInfo"}, | ||||
|     {0x00070000, nullptr, "GetLastSignaledAppletId"}, | ||||
|     {0x00080000, nullptr, "CountRegisteredApplet"}, | ||||
|     {0x00090040, nullptr, "IsRegistered"}, | ||||
|     {0x00090040, IsRegistered, "IsRegistered"}, | ||||
|     {0x000A0040, nullptr, "GetAttribute"}, | ||||
|     {0x000B0040, InquireNotification, "InquireNotification"}, | ||||
|     {0x000C0104, nullptr, "SendParameter"}, | ||||
| @ -34,7 +34,7 @@ const Interface::FunctionInfo FunctionTable[] = { | ||||
|     {0x00170040, nullptr, "FinishPreloadingLibraryApplet"}, | ||||
|     {0x00180040, PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"}, | ||||
|     {0x00190040, nullptr, "PrepareToStartSystemApplet"}, | ||||
|     {0x001A0000, nullptr, "PrepareToStartNewestHomeMenu"}, | ||||
|     {0x001A0000, PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"}, | ||||
|     {0x001B00C4, nullptr, "StartApplication"}, | ||||
|     {0x001C0000, nullptr, "WakeupApplication"}, | ||||
|     {0x001D0000, nullptr, "CancelApplication"}, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user