mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	hle: Eliminate need to specify command headers for IPC. (#6678)
This commit is contained in:
		
							parent
							
								
									0bedb28bdc
								
							
						
					
					
						commit
						e043caac27
					
				
					 96 changed files with 2691 additions and 2707 deletions
				
			
		| 
						 | 
				
			
			@ -61,7 +61,7 @@ std::shared_ptr<Module> Module::NSInterface::GetModule() const {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::NSInterface::SetWirelessRebootInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x06, 1, 2); // 0x00060042
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto size = rp.Pop<u32>();
 | 
			
		||||
    const auto buffer = rp.PopStaticBuffer();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ void Module::NSInterface::SetWirelessRebootInfo(Kernel::HLERequestContext& ctx)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::NSInterface::ShutdownAsync(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0xE, 0, 0); // 0xE0000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_INFO(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +85,7 @@ void Module::NSInterface::ShutdownAsync(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::NSInterface::RebootSystem(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x10, 6, 0); // 0x100180
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto launch_title = rp.Pop<u8>() != 0;
 | 
			
		||||
    const auto title_id = rp.Pop<u64>();
 | 
			
		||||
    const auto media_type = static_cast<FS::MediaType>(rp.Pop<u8>());
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +104,7 @@ void Module::NSInterface::RebootSystem(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::NSInterface::RebootSystemClean(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x16, 0, 0); // 0x160000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_INFO(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +115,7 @@ void Module::NSInterface::RebootSystemClean(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::Initialize(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x2, 2, 0); // 0x20080
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto app_id = rp.PopEnum<AppletId>();
 | 
			
		||||
    const auto attributes = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -266,7 +266,7 @@ bool Module::LoadLegacySharedFont() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetSharedFont(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x44, 0, 0); // 0x00440000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 2);
 | 
			
		||||
 | 
			
		||||
    // Log in telemetry if the game uses the shared font
 | 
			
		||||
| 
						 | 
				
			
			@ -318,7 +318,7 @@ void Module::APTInterface::GetSharedFont(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetWirelessRebootInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x45, 1, 0); // 0x00450040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto size = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
    LOG_WARNING(Service_APT, "called size={:08X}", size);
 | 
			
		||||
| 
						 | 
				
			
			@ -329,7 +329,7 @@ void Module::APTInterface::GetWirelessRebootInfo(Kernel::HLERequestContext& ctx)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::NotifyToWait(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x43, 1, 0); // 0x430040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto app_id = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -339,7 +339,7 @@ void Module::APTInterface::NotifyToWait(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetLockHandle(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x1, 1, 0); // 0x10040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    // Bits [0:2] are the applet type (System, Library, etc)
 | 
			
		||||
    // Bit 5 tells the application that there's a pending APT parameter,
 | 
			
		||||
| 
						 | 
				
			
			@ -362,7 +362,7 @@ void Module::APTInterface::GetLockHandle(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::Enable(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x3, 1, 0); // 0x30040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto attributes = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called attributes={:#010X}", attributes);
 | 
			
		||||
| 
						 | 
				
			
			@ -372,7 +372,7 @@ void Module::APTInterface::Enable(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetAppletManInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x5, 1, 0); // 0x50040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    auto applet_pos = rp.PopEnum<AppletPos>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called, applet_pos={:08X}", applet_pos);
 | 
			
		||||
| 
						 | 
				
			
			@ -392,7 +392,7 @@ void Module::APTInterface::GetAppletManInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::IsRegistered(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x9, 1, 0); // 0x90040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto app_id = rp.PopEnum<AppletId>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -403,7 +403,7 @@ void Module::APTInterface::IsRegistered(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::InquireNotification(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0xB, 1, 0); // 0xB0040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto app_id = rp.PopEnum<AppletId>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called app_id={:#010X}", app_id);
 | 
			
		||||
| 
						 | 
				
			
			@ -420,7 +420,7 @@ void Module::APTInterface::InquireNotification(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::SendParameter(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0xC, 4, 4); // 0xC0104
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto src_app_id = rp.PopEnum<AppletId>();
 | 
			
		||||
    const auto dst_app_id = rp.PopEnum<AppletId>();
 | 
			
		||||
    const auto signal_type = rp.PopEnum<SignalType>();
 | 
			
		||||
| 
						 | 
				
			
			@ -444,7 +444,7 @@ void Module::APTInterface::SendParameter(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::ReceiveParameter(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0xD, 2, 0); // 0xD0080
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto app_id = rp.PopEnum<AppletId>();
 | 
			
		||||
    const auto buffer_size = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -470,7 +470,7 @@ void Module::APTInterface::ReceiveParameter(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GlanceParameter(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0xE, 2, 0); // 0xE0080
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto app_id = rp.PopEnum<AppletId>();
 | 
			
		||||
    const u32 buffer_size = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -496,7 +496,7 @@ void Module::APTInterface::GlanceParameter(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::CancelParameter(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0xF, 4, 0); // 0xF0100
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto check_sender = rp.Pop<bool>();
 | 
			
		||||
    const auto sender_appid = rp.PopEnum<AppletId>();
 | 
			
		||||
    const auto check_receiver = rp.Pop<bool>();
 | 
			
		||||
| 
						 | 
				
			
			@ -514,7 +514,7 @@ void Module::APTInterface::CancelParameter(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToDoApplicationJump(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x31, 4, 0); // 0x00310100
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    auto flags = rp.PopEnum<ApplicationJumpFlags>();
 | 
			
		||||
    u64 title_id = rp.Pop<u64>();
 | 
			
		||||
    u8 media_type = rp.Pop<u8>();
 | 
			
		||||
| 
						 | 
				
			
			@ -530,7 +530,7 @@ void Module::APTInterface::PrepareToDoApplicationJump(Kernel::HLERequestContext&
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::DoApplicationJump(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x32, 2, 4); // 0x00320084
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto param_size = rp.Pop<u32>();
 | 
			
		||||
    const auto hmac_size = rp.Pop<u32>();
 | 
			
		||||
    const auto param = rp.PopStaticBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -543,7 +543,7 @@ void Module::APTInterface::DoApplicationJump(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetProgramIdOnApplicationJump(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x33, 0, 0); // 0x00330000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -558,7 +558,7 @@ void Module::APTInterface::GetProgramIdOnApplicationJump(Kernel::HLERequestConte
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::ReceiveDeliverArg(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x35, 2, 0); // 0x00350080
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto param_size = rp.Pop<u32>();
 | 
			
		||||
    const auto hmac_size = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -577,7 +577,7 @@ void Module::APTInterface::ReceiveDeliverArg(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToStartApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x15, 5, 0); // 0x00150140
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto title_id = rp.Pop<u64>();
 | 
			
		||||
    const auto media_type = static_cast<FS::MediaType>(rp.Pop<u8>());
 | 
			
		||||
    rp.Skip(1, false); // Padding
 | 
			
		||||
| 
						 | 
				
			
			@ -591,7 +591,7 @@ void Module::APTInterface::PrepareToStartApplication(Kernel::HLERequestContext&
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::StartApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x1B, 3, 4); // 0x001B00C4
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto parameter_size = rp.Pop<u32>();
 | 
			
		||||
    const auto hmac_size = rp.Pop<u32>();
 | 
			
		||||
    const auto paused = rp.Pop<bool>();
 | 
			
		||||
| 
						 | 
				
			
			@ -606,7 +606,7 @@ void Module::APTInterface::StartApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::WakeupApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x1C, 0, 0); // 0x001C0000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -615,7 +615,7 @@ void Module::APTInterface::WakeupApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::CancelApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x1D, 0, 0); // 0x001D0000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -624,7 +624,7 @@ void Module::APTInterface::CancelApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::AppletUtility(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x4B, 3, 2); // 0x004B00C2
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    // These are from 3dbrew - I'm not really sure what they're used for.
 | 
			
		||||
    const auto utility_command = rp.Pop<u32>();
 | 
			
		||||
| 
						 | 
				
			
			@ -651,7 +651,7 @@ void Module::APTInterface::AppletUtility(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::SetAppCpuTimeLimit(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x4F, 2, 0); // 0x4F0080
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto must_be_one = rp.Pop<u32>();
 | 
			
		||||
    const auto value = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -667,7 +667,7 @@ void Module::APTInterface::SetAppCpuTimeLimit(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetAppCpuTimeLimit(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x50, 1, 0); // 0x500040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto must_be_one = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
    LOG_WARNING(Service_APT, "(STUBBED) called, must_be_one={}", must_be_one);
 | 
			
		||||
| 
						 | 
				
			
			@ -681,7 +681,7 @@ void Module::APTInterface::GetAppCpuTimeLimit(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToStartLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x18, 1, 0); // 0x180040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto applet_id = rp.PopEnum<AppletId>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called, applet_id={:08X}", applet_id);
 | 
			
		||||
| 
						 | 
				
			
			@ -691,7 +691,7 @@ void Module::APTInterface::PrepareToStartLibraryApplet(Kernel::HLERequestContext
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToStartSystemApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x19, 1, 0); // 0x190040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto applet_id = rp.PopEnum<AppletId>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called, applet_id={:08X}", applet_id);
 | 
			
		||||
| 
						 | 
				
			
			@ -701,7 +701,7 @@ void Module::APTInterface::PrepareToStartSystemApplet(Kernel::HLERequestContext&
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToStartNewestHomeMenu(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x1A, 0, 0); // 0x1A0000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
| 
						 | 
				
			
			@ -715,7 +715,7 @@ void Module::APTInterface::PrepareToStartNewestHomeMenu(Kernel::HLERequestContex
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PreloadLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x16, 1, 0); // 0x160040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto applet_id = rp.PopEnum<AppletId>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called, applet_id={:08X}", applet_id);
 | 
			
		||||
| 
						 | 
				
			
			@ -725,7 +725,7 @@ void Module::APTInterface::PreloadLibraryApplet(Kernel::HLERequestContext& ctx)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::FinishPreloadingLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x17, 1, 0); // 0x00170040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto applet_id = rp.PopEnum<AppletId>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -735,7 +735,7 @@ void Module::APTInterface::FinishPreloadingLibraryApplet(Kernel::HLERequestConte
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::StartLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x1E, 2, 4); // 0x1E0084
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto applet_id = rp.PopEnum<AppletId>();
 | 
			
		||||
    const auto buffer_size = rp.Pop<u32>();
 | 
			
		||||
    const auto object = rp.PopGenericObject();
 | 
			
		||||
| 
						 | 
				
			
			@ -748,7 +748,7 @@ void Module::APTInterface::StartLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::StartSystemApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x1F, 2, 4); // 0x1F0084
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto applet_id = rp.PopEnum<AppletId>();
 | 
			
		||||
    const auto buffer_size = rp.Pop<u32>();
 | 
			
		||||
    const auto object = rp.PopGenericObject();
 | 
			
		||||
| 
						 | 
				
			
			@ -761,7 +761,7 @@ void Module::APTInterface::StartSystemApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::OrderToCloseApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x21, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -770,7 +770,7 @@ void Module::APTInterface::OrderToCloseApplication(Kernel::HLERequestContext& ct
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToCloseApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x22, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto return_to_sys = rp.Pop<u8>() != 0;
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called return_to_sys={}", return_to_sys);
 | 
			
		||||
| 
						 | 
				
			
			@ -780,7 +780,7 @@ void Module::APTInterface::PrepareToCloseApplication(Kernel::HLERequestContext&
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::CloseApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x27, 1, 4);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto parameter_size = rp.Pop<u32>();
 | 
			
		||||
    const auto object = rp.PopGenericObject();
 | 
			
		||||
    const auto buffer = rp.PopStaticBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -792,7 +792,7 @@ void Module::APTInterface::CloseApplication(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::CancelLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x3B, 1, 0); // 0x003B0040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto app_exiting = rp.Pop<bool>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called app_exiting={}", app_exiting);
 | 
			
		||||
| 
						 | 
				
			
			@ -802,7 +802,7 @@ void Module::APTInterface::CancelLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToCloseLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x25, 3, 0); // 0x002500C0
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto not_pause = rp.Pop<bool>();
 | 
			
		||||
    const auto exiting = rp.Pop<bool>();
 | 
			
		||||
    const auto jump_to_home = rp.Pop<bool>();
 | 
			
		||||
| 
						 | 
				
			
			@ -815,7 +815,7 @@ void Module::APTInterface::PrepareToCloseLibraryApplet(Kernel::HLERequestContext
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToCloseSystemApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x26, 0, 0); // 0x260000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -824,7 +824,7 @@ void Module::APTInterface::PrepareToCloseSystemApplet(Kernel::HLERequestContext&
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::CloseLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x28, 1, 4); // 0x00280044
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto parameter_size = rp.Pop<u32>();
 | 
			
		||||
    const auto object = rp.PopGenericObject();
 | 
			
		||||
    const auto buffer = rp.PopStaticBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -836,7 +836,7 @@ void Module::APTInterface::CloseLibraryApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::CloseSystemApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x29, 1, 4); // 0x00280044
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto parameter_size = rp.Pop<u32>();
 | 
			
		||||
    const auto object = rp.PopGenericObject();
 | 
			
		||||
    const auto buffer = rp.PopStaticBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -848,7 +848,7 @@ void Module::APTInterface::CloseSystemApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::OrderToCloseSystemApplet(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x2A, 0, 0); // 0x2A0000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -857,7 +857,7 @@ void Module::APTInterface::OrderToCloseSystemApplet(Kernel::HLERequestContext& c
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToJumpToHomeMenu(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x2B, 0, 0); // 0x2B0000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -866,7 +866,7 @@ void Module::APTInterface::PrepareToJumpToHomeMenu(Kernel::HLERequestContext& ct
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::JumpToHomeMenu(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x2C, 1, 4); // 0x2C0044
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto parameter_size = rp.Pop<u32>();
 | 
			
		||||
    const auto object = rp.PopGenericObject();
 | 
			
		||||
    const auto buffer = rp.PopStaticBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -878,7 +878,7 @@ void Module::APTInterface::JumpToHomeMenu(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::PrepareToLeaveHomeMenu(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x2D, 0, 0); // 0x2D0000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -887,7 +887,7 @@ void Module::APTInterface::PrepareToLeaveHomeMenu(Kernel::HLERequestContext& ctx
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::LeaveHomeMenu(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x2E, 1, 4); // 0x2E0044
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto parameter_size = rp.Pop<u32>();
 | 
			
		||||
    const auto object = rp.PopGenericObject();
 | 
			
		||||
    const auto buffer = rp.PopStaticBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -899,7 +899,7 @@ void Module::APTInterface::LeaveHomeMenu(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::LoadSysMenuArg(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x36, 1, 0); // 0x00360040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto size = std::min(std::size_t{rp.Pop<u32>()}, SysMenuArgSize);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
| 
						 | 
				
			
			@ -914,7 +914,7 @@ void Module::APTInterface::LoadSysMenuArg(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::StoreSysMenuArg(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x37, 1, 2); // 0x00370042
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto size = std::min(std::size_t{rp.Pop<u32>()}, SysMenuArgSize);
 | 
			
		||||
    const auto& buffer = rp.PopStaticBuffer();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -928,7 +928,7 @@ void Module::APTInterface::StoreSysMenuArg(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::SendCaptureBufferInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x40, 1, 2); // 0x00400042
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    [[maybe_unused]] const auto size = rp.Pop<u32>();
 | 
			
		||||
    const auto buffer = rp.PopStaticBuffer();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -941,7 +941,7 @@ void Module::APTInterface::SendCaptureBufferInfo(Kernel::HLERequestContext& ctx)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::ReceiveCaptureBufferInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x41, 1, 0); // 0x00410040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto size = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
| 
						 | 
				
			
			@ -957,7 +957,7 @@ void Module::APTInterface::ReceiveCaptureBufferInfo(Kernel::HLERequestContext& c
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetCaptureInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x4A, 1, 0); // 0x004A0040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto size = rp.Pop<u32>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called");
 | 
			
		||||
| 
						 | 
				
			
			@ -973,7 +973,7 @@ void Module::APTInterface::GetCaptureInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::SetScreenCapPostPermission(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x55, 1, 0); // 0x00550040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called, screen_capture_post_permission={}",
 | 
			
		||||
              apt->screen_capture_post_permission);
 | 
			
		||||
| 
						 | 
				
			
			@ -985,7 +985,7 @@ void Module::APTInterface::SetScreenCapPostPermission(Kernel::HLERequestContext&
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetScreenCapPostPermission(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x56, 0, 0); // 0x00560000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "(STUBBED) called, screen_capture_post_permission={}",
 | 
			
		||||
              apt->screen_capture_post_permission);
 | 
			
		||||
| 
						 | 
				
			
			@ -996,7 +996,7 @@ void Module::APTInterface::GetScreenCapPostPermission(Kernel::HLERequestContext&
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetAppletInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x6, 1, 0); // 0x60040
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto app_id = rp.PopEnum<AppletId>();
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_APT, "called, app_id={:08X}", app_id);
 | 
			
		||||
| 
						 | 
				
			
			@ -1017,7 +1017,7 @@ void Module::APTInterface::GetAppletInfo(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::GetStartupArgument(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x51, 2, 0); // 0x00510080
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto parameter_size = rp.Pop<u32>();
 | 
			
		||||
    const auto startup_argument_type = static_cast<StartupArgumentType>(rp.Pop<u8>());
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1058,7 +1058,7 @@ void Module::APTInterface::GetStartupArgument(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::Wrap(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x46, 4, 4);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto output_size = rp.Pop<u32>();
 | 
			
		||||
    const auto input_size = rp.Pop<u32>();
 | 
			
		||||
    const auto nonce_offset = rp.Pop<u32>();
 | 
			
		||||
| 
						 | 
				
			
			@ -1103,7 +1103,7 @@ void Module::APTInterface::Wrap(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::Unwrap(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x47, 4, 4);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto output_size = rp.Pop<u32>();
 | 
			
		||||
    const auto input_size = rp.Pop<u32>();
 | 
			
		||||
    const auto nonce_offset = rp.Pop<u32>();
 | 
			
		||||
| 
						 | 
				
			
			@ -1155,7 +1155,7 @@ void Module::APTInterface::Unwrap(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::CheckNew3DSApp(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x101, 0, 0); // 0x01010000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_WARNING(Service_APT, "(STUBBED) called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1169,7 +1169,7 @@ void Module::APTInterface::CheckNew3DSApp(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::CheckNew3DS(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x102, 0, 0); // 0x01020000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
 | 
			
		||||
    LOG_WARNING(Service_APT, "(STUBBED) called");
 | 
			
		||||
| 
						 | 
				
			
			@ -1178,7 +1178,7 @@ void Module::APTInterface::CheckNew3DS(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::Unknown0x0103(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x103, 0, 0); // 0x01030000
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
 | 
			
		||||
    LOG_WARNING(Service_APT, "(STUBBED) called");
 | 
			
		||||
| 
						 | 
				
			
			@ -1188,7 +1188,7 @@ void Module::APTInterface::Unknown0x0103(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::APTInterface::IsTitleAllowed(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x105, 4, 0); // 0x01050100
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const auto program_id = rp.Pop<u64>();
 | 
			
		||||
    const auto media_type = static_cast<FS::MediaType>(rp.Pop<u8>());
 | 
			
		||||
    rp.Skip(1, false); // Padding
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,98 +11,98 @@ APT_A::APT_A(std::shared_ptr<Module> apt)
 | 
			
		|||
    : Module::APTInterface(std::move(apt), "APT:A", MaxAPTSessions) {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 1, 0), &APT_A::GetLockHandle, "GetLockHandle"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 2, 0), &APT_A::Initialize, "Initialize"},
 | 
			
		||||
        {IPC::MakeHeader(0x0003, 1, 0), &APT_A::Enable, "Enable"},
 | 
			
		||||
        {IPC::MakeHeader(0x0004, 1, 0), nullptr, "Finalize"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 1, 0), &APT_A::GetAppletManInfo, "GetAppletManInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 1, 0), &APT_A::GetAppletInfo, "GetAppletInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0007, 0, 0), nullptr, "GetLastSignaledAppletId"},
 | 
			
		||||
        {IPC::MakeHeader(0x0008, 0, 0), nullptr, "CountRegisteredApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0009, 1, 0), &APT_A::IsRegistered, "IsRegistered"},
 | 
			
		||||
        {IPC::MakeHeader(0x000A, 1, 0), nullptr, "GetAttribute"},
 | 
			
		||||
        {IPC::MakeHeader(0x000B, 1, 0), &APT_A::InquireNotification, "InquireNotification"},
 | 
			
		||||
        {IPC::MakeHeader(0x000C, 4, 4), &APT_A::SendParameter, "SendParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000D, 2, 0), &APT_A::ReceiveParameter, "ReceiveParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000E, 2, 0), &APT_A::GlanceParameter, "GlanceParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000F, 4, 0), &APT_A::CancelParameter, "CancelParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x0010, 3, 2), nullptr, "DebugFunc"},
 | 
			
		||||
        {IPC::MakeHeader(0x0011, 3, 0), nullptr, "MapProgramIdForDebug"},
 | 
			
		||||
        {IPC::MakeHeader(0x0012, 1, 0), nullptr, "SetHomeMenuAppletIdForDebug"},
 | 
			
		||||
        {IPC::MakeHeader(0x0013, 0, 0), nullptr, "GetPreparationState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0014, 1, 0), nullptr, "SetPreparationState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0015, 5, 0), &APT_A::PrepareToStartApplication, "PrepareToStartApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0016, 1, 0), &APT_A::PreloadLibraryApplet, "PreloadLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0017, 1, 0), &APT_A::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0018, 1, 0), &APT_A::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0019, 1, 0), &APT_A::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x001A, 0, 0), &APT_A::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x001B, 3, 4), &APT_A::StartApplication, "StartApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001C, 0, 0), &APT_A::WakeupApplication, "WakeupApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001D, 0, 0), nullptr, "CancelApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001E, 2, 4), &APT_A::StartLibraryApplet, "StartLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x001F, 2, 4), &APT_A::StartSystemApplet, "StartSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0020, 1, 4), nullptr, "StartNewestHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x0021, 0, 0), &APT_A::OrderToCloseApplication, "OrderToCloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0022, 1, 0), &APT_A::PrepareToCloseApplication, "PrepareToCloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0023, 1, 0), nullptr, "PrepareToJumpToApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0024, 1, 4), nullptr, "JumpToApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0025, 3, 0), &APT_A::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0026, 0, 0), &APT_A::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0027, 1, 4), &APT_A::CloseApplication, "CloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0028, 1, 4), &APT_A::CloseLibraryApplet, "CloseLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0029, 1, 4), &APT_A::CloseSystemApplet, "CloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x002A, 0, 0), &APT_A::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x002B, 0, 0), &APT_A::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002C, 1, 4), &APT_A::JumpToHomeMenu, "JumpToHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002D, 0, 0), &APT_A::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002E, 1, 4), &APT_A::LeaveHomeMenu, "LeaveHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002F, 1, 0), nullptr, "PrepareToLeaveResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0030, 1, 4), nullptr, "LeaveResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0031, 4, 0), &APT_A::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0032, 2, 4), &APT_A::DoApplicationJump, "DoApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0033, 0, 0), &APT_A::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0034, 2, 4), nullptr, "SendDeliverArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0035, 2, 0), &APT_A::ReceiveDeliverArg, "ReceiveDeliverArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0036, 1, 0), &APT_A::LoadSysMenuArg, "LoadSysMenuArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0037, 1, 2), &APT_A::StoreSysMenuArg, "StoreSysMenuArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0038, 1, 0), nullptr, "PreloadResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0039, 1, 0), nullptr, "PrepareToStartResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003A, 1, 4), nullptr, "StartResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003B, 1, 0), &APT_A::CancelLibraryApplet, "CancelLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003C, 1, 2), nullptr, "SendDspSleep"},
 | 
			
		||||
        {IPC::MakeHeader(0x003D, 1, 2), nullptr, "SendDspWakeUp"},
 | 
			
		||||
        {IPC::MakeHeader(0x003E, 2, 0), nullptr, "ReplySleepQuery"},
 | 
			
		||||
        {IPC::MakeHeader(0x003F, 1, 0), nullptr, "ReplySleepNotificationComplete"},
 | 
			
		||||
        {IPC::MakeHeader(0x0040, 1, 2), &APT_A::SendCaptureBufferInfo, "SendCaptureBufferInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0041, 1, 0), &APT_A::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0042, 2, 0), nullptr, "SleepSystem"},
 | 
			
		||||
        {IPC::MakeHeader(0x0043, 1, 0), &APT_A::NotifyToWait, "NotifyToWait"},
 | 
			
		||||
        {IPC::MakeHeader(0x0044, 0, 0), &APT_A::GetSharedFont, "GetSharedFont"},
 | 
			
		||||
        {IPC::MakeHeader(0x0045, 1, 0), &APT_A::GetWirelessRebootInfo, "GetWirelessRebootInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0046, 4, 4), &APT_A::Wrap, "Wrap"},
 | 
			
		||||
        {IPC::MakeHeader(0x0047, 4, 4), &APT_A::Unwrap, "Unwrap"},
 | 
			
		||||
        {IPC::MakeHeader(0x0048, 4, 0), nullptr, "GetProgramInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0049, 6, 0), nullptr, "Reboot"},
 | 
			
		||||
        {IPC::MakeHeader(0x004A, 1, 0), &APT_A::GetCaptureInfo, "GetCaptureInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x004B, 3, 2), &APT_A::AppletUtility, "AppletUtility"},
 | 
			
		||||
        {IPC::MakeHeader(0x004C, 0, 0), nullptr, "SetFatalErrDispMode"},
 | 
			
		||||
        {IPC::MakeHeader(0x004D, 2, 0), nullptr, "GetAppletProgramInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x004E, 0, 0), nullptr, "HardwareResetAsync"},
 | 
			
		||||
        {IPC::MakeHeader(0x004F, 2, 0), &APT_A::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"},
 | 
			
		||||
        {IPC::MakeHeader(0x0050, 1, 0), &APT_A::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"},
 | 
			
		||||
        {IPC::MakeHeader(0x0051, 2, 0), &APT_A::GetStartupArgument, "GetStartupArgument"},
 | 
			
		||||
        {IPC::MakeHeader(0x0052, 4, 4), nullptr, "Wrap1"},
 | 
			
		||||
        {IPC::MakeHeader(0x0053, 4, 4), nullptr, "Unwrap1"},
 | 
			
		||||
        {IPC::MakeHeader(0x0055, 1, 0), &APT_A::SetScreenCapPostPermission, "SetScreenCapPostPermission"},
 | 
			
		||||
        {IPC::MakeHeader(0x0056, 0, 0), &APT_A::GetScreenCapPostPermission, "GetScreenCapPostPermission"},
 | 
			
		||||
        {IPC::MakeHeader(0x0057, 1, 4), nullptr, "WakeupApplication2"},
 | 
			
		||||
        {IPC::MakeHeader(0x0058, 0, 2), nullptr, "GetProgramID"},
 | 
			
		||||
        {IPC::MakeHeader(0x0101, 0, 0), &APT_A::CheckNew3DSApp, "CheckNew3DSApp"},
 | 
			
		||||
        {IPC::MakeHeader(0x0102, 0, 0), &APT_A::CheckNew3DS, "CheckNew3DS"},
 | 
			
		||||
        {IPC::MakeHeader(0x0103, 0, 0), &APT_A::Unknown0x0103, "Unknown0x0103"},
 | 
			
		||||
        {IPC::MakeHeader(0x0104, 0, 0), nullptr, "IsStandardMemoryLayout"},
 | 
			
		||||
        {IPC::MakeHeader(0x0105, 4, 0), &APT_A::IsTitleAllowed, "IsTitleAllowed"},
 | 
			
		||||
        {0x0001, &APT_A::GetLockHandle, "GetLockHandle"},
 | 
			
		||||
        {0x0002, &APT_A::Initialize, "Initialize"},
 | 
			
		||||
        {0x0003, &APT_A::Enable, "Enable"},
 | 
			
		||||
        {0x0004, nullptr, "Finalize"},
 | 
			
		||||
        {0x0005, &APT_A::GetAppletManInfo, "GetAppletManInfo"},
 | 
			
		||||
        {0x0006, &APT_A::GetAppletInfo, "GetAppletInfo"},
 | 
			
		||||
        {0x0007, nullptr, "GetLastSignaledAppletId"},
 | 
			
		||||
        {0x0008, nullptr, "CountRegisteredApplet"},
 | 
			
		||||
        {0x0009, &APT_A::IsRegistered, "IsRegistered"},
 | 
			
		||||
        {0x000A, nullptr, "GetAttribute"},
 | 
			
		||||
        {0x000B, &APT_A::InquireNotification, "InquireNotification"},
 | 
			
		||||
        {0x000C, &APT_A::SendParameter, "SendParameter"},
 | 
			
		||||
        {0x000D, &APT_A::ReceiveParameter, "ReceiveParameter"},
 | 
			
		||||
        {0x000E, &APT_A::GlanceParameter, "GlanceParameter"},
 | 
			
		||||
        {0x000F, &APT_A::CancelParameter, "CancelParameter"},
 | 
			
		||||
        {0x0010, nullptr, "DebugFunc"},
 | 
			
		||||
        {0x0011, nullptr, "MapProgramIdForDebug"},
 | 
			
		||||
        {0x0012, nullptr, "SetHomeMenuAppletIdForDebug"},
 | 
			
		||||
        {0x0013, nullptr, "GetPreparationState"},
 | 
			
		||||
        {0x0014, nullptr, "SetPreparationState"},
 | 
			
		||||
        {0x0015, &APT_A::PrepareToStartApplication, "PrepareToStartApplication"},
 | 
			
		||||
        {0x0016, &APT_A::PreloadLibraryApplet, "PreloadLibraryApplet"},
 | 
			
		||||
        {0x0017, &APT_A::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"},
 | 
			
		||||
        {0x0018, &APT_A::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"},
 | 
			
		||||
        {0x0019, &APT_A::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"},
 | 
			
		||||
        {0x001A, &APT_A::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"},
 | 
			
		||||
        {0x001B, &APT_A::StartApplication, "StartApplication"},
 | 
			
		||||
        {0x001C, &APT_A::WakeupApplication, "WakeupApplication"},
 | 
			
		||||
        {0x001D, nullptr, "CancelApplication"},
 | 
			
		||||
        {0x001E, &APT_A::StartLibraryApplet, "StartLibraryApplet"},
 | 
			
		||||
        {0x001F, &APT_A::StartSystemApplet, "StartSystemApplet"},
 | 
			
		||||
        {0x0020, nullptr, "StartNewestHomeMenu"},
 | 
			
		||||
        {0x0021, &APT_A::OrderToCloseApplication, "OrderToCloseApplication"},
 | 
			
		||||
        {0x0022, &APT_A::PrepareToCloseApplication, "PrepareToCloseApplication"},
 | 
			
		||||
        {0x0023, nullptr, "PrepareToJumpToApplication"},
 | 
			
		||||
        {0x0024, nullptr, "JumpToApplication"},
 | 
			
		||||
        {0x0025, &APT_A::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"},
 | 
			
		||||
        {0x0026, &APT_A::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"},
 | 
			
		||||
        {0x0027, &APT_A::CloseApplication, "CloseApplication"},
 | 
			
		||||
        {0x0028, &APT_A::CloseLibraryApplet, "CloseLibraryApplet"},
 | 
			
		||||
        {0x0029, &APT_A::CloseSystemApplet, "CloseSystemApplet"},
 | 
			
		||||
        {0x002A, &APT_A::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"},
 | 
			
		||||
        {0x002B, &APT_A::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"},
 | 
			
		||||
        {0x002C, &APT_A::JumpToHomeMenu, "JumpToHomeMenu"},
 | 
			
		||||
        {0x002D, &APT_A::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"},
 | 
			
		||||
        {0x002E, &APT_A::LeaveHomeMenu, "LeaveHomeMenu"},
 | 
			
		||||
        {0x002F, nullptr, "PrepareToLeaveResidentApplet"},
 | 
			
		||||
        {0x0030, nullptr, "LeaveResidentApplet"},
 | 
			
		||||
        {0x0031, &APT_A::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"},
 | 
			
		||||
        {0x0032, &APT_A::DoApplicationJump, "DoApplicationJump"},
 | 
			
		||||
        {0x0033, &APT_A::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"},
 | 
			
		||||
        {0x0034, nullptr, "SendDeliverArg"},
 | 
			
		||||
        {0x0035, &APT_A::ReceiveDeliverArg, "ReceiveDeliverArg"},
 | 
			
		||||
        {0x0036, &APT_A::LoadSysMenuArg, "LoadSysMenuArg"},
 | 
			
		||||
        {0x0037, &APT_A::StoreSysMenuArg, "StoreSysMenuArg"},
 | 
			
		||||
        {0x0038, nullptr, "PreloadResidentApplet"},
 | 
			
		||||
        {0x0039, nullptr, "PrepareToStartResidentApplet"},
 | 
			
		||||
        {0x003A, nullptr, "StartResidentApplet"},
 | 
			
		||||
        {0x003B, &APT_A::CancelLibraryApplet, "CancelLibraryApplet"},
 | 
			
		||||
        {0x003C, nullptr, "SendDspSleep"},
 | 
			
		||||
        {0x003D, nullptr, "SendDspWakeUp"},
 | 
			
		||||
        {0x003E, nullptr, "ReplySleepQuery"},
 | 
			
		||||
        {0x003F, nullptr, "ReplySleepNotificationComplete"},
 | 
			
		||||
        {0x0040, &APT_A::SendCaptureBufferInfo, "SendCaptureBufferInfo"},
 | 
			
		||||
        {0x0041, &APT_A::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"},
 | 
			
		||||
        {0x0042, nullptr, "SleepSystem"},
 | 
			
		||||
        {0x0043, &APT_A::NotifyToWait, "NotifyToWait"},
 | 
			
		||||
        {0x0044, &APT_A::GetSharedFont, "GetSharedFont"},
 | 
			
		||||
        {0x0045, &APT_A::GetWirelessRebootInfo, "GetWirelessRebootInfo"},
 | 
			
		||||
        {0x0046, &APT_A::Wrap, "Wrap"},
 | 
			
		||||
        {0x0047, &APT_A::Unwrap, "Unwrap"},
 | 
			
		||||
        {0x0048, nullptr, "GetProgramInfo"},
 | 
			
		||||
        {0x0049, nullptr, "Reboot"},
 | 
			
		||||
        {0x004A, &APT_A::GetCaptureInfo, "GetCaptureInfo"},
 | 
			
		||||
        {0x004B, &APT_A::AppletUtility, "AppletUtility"},
 | 
			
		||||
        {0x004C, nullptr, "SetFatalErrDispMode"},
 | 
			
		||||
        {0x004D, nullptr, "GetAppletProgramInfo"},
 | 
			
		||||
        {0x004E, nullptr, "HardwareResetAsync"},
 | 
			
		||||
        {0x004F, &APT_A::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"},
 | 
			
		||||
        {0x0050, &APT_A::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"},
 | 
			
		||||
        {0x0051, &APT_A::GetStartupArgument, "GetStartupArgument"},
 | 
			
		||||
        {0x0052, nullptr, "Wrap1"},
 | 
			
		||||
        {0x0053, nullptr, "Unwrap1"},
 | 
			
		||||
        {0x0055, &APT_A::SetScreenCapPostPermission, "SetScreenCapPostPermission"},
 | 
			
		||||
        {0x0056, &APT_A::GetScreenCapPostPermission, "GetScreenCapPostPermission"},
 | 
			
		||||
        {0x0057, nullptr, "WakeupApplication2"},
 | 
			
		||||
        {0x0058, nullptr, "GetProgramID"},
 | 
			
		||||
        {0x0101, &APT_A::CheckNew3DSApp, "CheckNew3DSApp"},
 | 
			
		||||
        {0x0102, &APT_A::CheckNew3DS, "CheckNew3DS"},
 | 
			
		||||
        {0x0103, &APT_A::Unknown0x0103, "Unknown0x0103"},
 | 
			
		||||
        {0x0104, nullptr, "IsStandardMemoryLayout"},
 | 
			
		||||
        {0x0105, &APT_A::IsTitleAllowed, "IsTitleAllowed"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,98 +11,98 @@ APT_S::APT_S(std::shared_ptr<Module> apt)
 | 
			
		|||
    : Module::APTInterface(std::move(apt), "APT:S", MaxAPTSessions) {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 1, 0), &APT_S::GetLockHandle, "GetLockHandle"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 2, 0), &APT_S::Initialize, "Initialize"},
 | 
			
		||||
        {IPC::MakeHeader(0x0003, 1, 0), &APT_S::Enable, "Enable"},
 | 
			
		||||
        {IPC::MakeHeader(0x0004, 1, 0), nullptr, "Finalize"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 1, 0), &APT_S::GetAppletManInfo, "GetAppletManInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 1, 0), &APT_S::GetAppletInfo, "GetAppletInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0007, 0, 0), nullptr, "GetLastSignaledAppletId"},
 | 
			
		||||
        {IPC::MakeHeader(0x0008, 0, 0), nullptr, "CountRegisteredApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0009, 1, 0), &APT_S::IsRegistered, "IsRegistered"},
 | 
			
		||||
        {IPC::MakeHeader(0x000A, 1, 0), nullptr, "GetAttribute"},
 | 
			
		||||
        {IPC::MakeHeader(0x000B, 1, 0), &APT_S::InquireNotification, "InquireNotification"},
 | 
			
		||||
        {IPC::MakeHeader(0x000C, 4, 4), &APT_S::SendParameter, "SendParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000D, 2, 0), &APT_S::ReceiveParameter, "ReceiveParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000E, 2, 0), &APT_S::GlanceParameter, "GlanceParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000F, 4, 0), &APT_S::CancelParameter, "CancelParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x0010, 3, 2), nullptr, "DebugFunc"},
 | 
			
		||||
        {IPC::MakeHeader(0x0011, 3, 0), nullptr, "MapProgramIdForDebug"},
 | 
			
		||||
        {IPC::MakeHeader(0x0012, 1, 0), nullptr, "SetHomeMenuAppletIdForDebug"},
 | 
			
		||||
        {IPC::MakeHeader(0x0013, 0, 0), nullptr, "GetPreparationState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0014, 1, 0), nullptr, "SetPreparationState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0015, 5, 0), &APT_S::PrepareToStartApplication, "PrepareToStartApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0016, 1, 0), &APT_S::PreloadLibraryApplet, "PreloadLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0017, 1, 0), &APT_S::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0018, 1, 0), &APT_S::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0019, 1, 0), &APT_S::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x001A, 0, 0), &APT_S::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x001B, 3, 4), &APT_S::StartApplication, "StartApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001C, 0, 0), &APT_S::WakeupApplication, "WakeupApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001D, 0, 0), nullptr, "CancelApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001E, 2, 4), &APT_S::StartLibraryApplet, "StartLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x001F, 2, 4), &APT_S::StartSystemApplet, "StartSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0020, 1, 4), nullptr, "StartNewestHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x0021, 0, 0), &APT_S::OrderToCloseApplication, "OrderToCloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0022, 1, 0), &APT_S::PrepareToCloseApplication, "PrepareToCloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0023, 1, 0), nullptr, "PrepareToJumpToApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0024, 1, 4), nullptr, "JumpToApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0025, 3, 0), &APT_S::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0026, 0, 0), &APT_S::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0027, 1, 4), &APT_S::CloseApplication, "CloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0028, 1, 4), &APT_S::CloseLibraryApplet, "CloseLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0029, 1, 4), &APT_S::CloseSystemApplet, "CloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x002A, 0, 0), &APT_S::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x002B, 0, 0), &APT_S::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002C, 1, 4), &APT_S::JumpToHomeMenu, "JumpToHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002D, 0, 0), &APT_S::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002E, 1, 4), &APT_S::LeaveHomeMenu, "LeaveHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002F, 1, 0), nullptr, "PrepareToLeaveResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0030, 1, 4), nullptr, "LeaveResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0031, 4, 0), &APT_S::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0032, 2, 4), &APT_S::DoApplicationJump, "DoApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0033, 0, 0), &APT_S::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0034, 2, 4), nullptr, "SendDeliverArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0035, 2, 0), &APT_S::ReceiveDeliverArg, "ReceiveDeliverArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0036, 1, 0), &APT_S::LoadSysMenuArg, "LoadSysMenuArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0037, 1, 2), &APT_S::StoreSysMenuArg, "StoreSysMenuArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0038, 1, 0), nullptr, "PreloadResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0039, 1, 0), nullptr, "PrepareToStartResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003A, 1, 4), nullptr, "StartResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003B, 1, 0), &APT_S::CancelLibraryApplet, "CancelLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003C, 1, 2), nullptr, "SendDspSleep"},
 | 
			
		||||
        {IPC::MakeHeader(0x003D, 1, 2), nullptr, "SendDspWakeUp"},
 | 
			
		||||
        {IPC::MakeHeader(0x003E, 2, 0), nullptr, "ReplySleepQuery"},
 | 
			
		||||
        {IPC::MakeHeader(0x003F, 1, 0), nullptr, "ReplySleepNotificationComplete"},
 | 
			
		||||
        {IPC::MakeHeader(0x0040, 1, 2), &APT_S::SendCaptureBufferInfo, "SendCaptureBufferInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0041, 1, 0), &APT_S::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0042, 2, 0), nullptr, "SleepSystem"},
 | 
			
		||||
        {IPC::MakeHeader(0x0043, 1, 0), &APT_S::NotifyToWait, "NotifyToWait"},
 | 
			
		||||
        {IPC::MakeHeader(0x0044, 0, 0), &APT_S::GetSharedFont, "GetSharedFont"},
 | 
			
		||||
        {IPC::MakeHeader(0x0045, 1, 0), &APT_S::GetWirelessRebootInfo, "GetWirelessRebootInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0046, 4, 4), &APT_S::Wrap, "Wrap"},
 | 
			
		||||
        {IPC::MakeHeader(0x0047, 4, 4), &APT_S::Unwrap, "Unwrap"},
 | 
			
		||||
        {IPC::MakeHeader(0x0048, 4, 0), nullptr, "GetProgramInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0049, 6, 0), nullptr, "Reboot"},
 | 
			
		||||
        {IPC::MakeHeader(0x004A, 1, 0), &APT_S::GetCaptureInfo, "GetCaptureInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x004B, 3, 2), &APT_S::AppletUtility, "AppletUtility"},
 | 
			
		||||
        {IPC::MakeHeader(0x004C, 0, 0), nullptr, "SetFatalErrDispMode"},
 | 
			
		||||
        {IPC::MakeHeader(0x004D, 2, 0), nullptr, "GetAppletProgramInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x004E, 0, 0), nullptr, "HardwareResetAsync"},
 | 
			
		||||
        {IPC::MakeHeader(0x004F, 2, 0), &APT_S::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"},
 | 
			
		||||
        {IPC::MakeHeader(0x0050, 1, 0), &APT_S::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"},
 | 
			
		||||
        {IPC::MakeHeader(0x0051, 2, 0), &APT_S::GetStartupArgument, "GetStartupArgument"},
 | 
			
		||||
        {IPC::MakeHeader(0x0052, 4, 4), nullptr, "Wrap1"},
 | 
			
		||||
        {IPC::MakeHeader(0x0053, 4, 4), nullptr, "Unwrap1"},
 | 
			
		||||
        {IPC::MakeHeader(0x0055, 1, 0), &APT_S::SetScreenCapPostPermission, "SetScreenCapPostPermission"},
 | 
			
		||||
        {IPC::MakeHeader(0x0056, 0, 0), &APT_S::GetScreenCapPostPermission, "GetScreenCapPostPermission"},
 | 
			
		||||
        {IPC::MakeHeader(0x0057, 1, 4), nullptr, "WakeupApplication2"},
 | 
			
		||||
        {IPC::MakeHeader(0x0058, 0, 2), nullptr, "GetProgramID"},
 | 
			
		||||
        {IPC::MakeHeader(0x0101, 0, 0), &APT_S::CheckNew3DSApp, "CheckNew3DSApp"},
 | 
			
		||||
        {IPC::MakeHeader(0x0102, 0, 0), &APT_S::CheckNew3DS, "CheckNew3DS"},
 | 
			
		||||
        {IPC::MakeHeader(0x0103, 0, 0), &APT_S::Unknown0x0103, "Unknown0x0103"},
 | 
			
		||||
        {IPC::MakeHeader(0x0104, 0, 0), nullptr, "IsStandardMemoryLayout"},
 | 
			
		||||
        {IPC::MakeHeader(0x0105, 4, 0), &APT_S::IsTitleAllowed, "IsTitleAllowed"},
 | 
			
		||||
        {0x0001, &APT_S::GetLockHandle, "GetLockHandle"},
 | 
			
		||||
        {0x0002, &APT_S::Initialize, "Initialize"},
 | 
			
		||||
        {0x0003, &APT_S::Enable, "Enable"},
 | 
			
		||||
        {0x0004, nullptr, "Finalize"},
 | 
			
		||||
        {0x0005, &APT_S::GetAppletManInfo, "GetAppletManInfo"},
 | 
			
		||||
        {0x0006, &APT_S::GetAppletInfo, "GetAppletInfo"},
 | 
			
		||||
        {0x0007, nullptr, "GetLastSignaledAppletId"},
 | 
			
		||||
        {0x0008, nullptr, "CountRegisteredApplet"},
 | 
			
		||||
        {0x0009, &APT_S::IsRegistered, "IsRegistered"},
 | 
			
		||||
        {0x000A, nullptr, "GetAttribute"},
 | 
			
		||||
        {0x000B, &APT_S::InquireNotification, "InquireNotification"},
 | 
			
		||||
        {0x000C, &APT_S::SendParameter, "SendParameter"},
 | 
			
		||||
        {0x000D, &APT_S::ReceiveParameter, "ReceiveParameter"},
 | 
			
		||||
        {0x000E, &APT_S::GlanceParameter, "GlanceParameter"},
 | 
			
		||||
        {0x000F, &APT_S::CancelParameter, "CancelParameter"},
 | 
			
		||||
        {0x0010, nullptr, "DebugFunc"},
 | 
			
		||||
        {0x0011, nullptr, "MapProgramIdForDebug"},
 | 
			
		||||
        {0x0012, nullptr, "SetHomeMenuAppletIdForDebug"},
 | 
			
		||||
        {0x0013, nullptr, "GetPreparationState"},
 | 
			
		||||
        {0x0014, nullptr, "SetPreparationState"},
 | 
			
		||||
        {0x0015, &APT_S::PrepareToStartApplication, "PrepareToStartApplication"},
 | 
			
		||||
        {0x0016, &APT_S::PreloadLibraryApplet, "PreloadLibraryApplet"},
 | 
			
		||||
        {0x0017, &APT_S::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"},
 | 
			
		||||
        {0x0018, &APT_S::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"},
 | 
			
		||||
        {0x0019, &APT_S::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"},
 | 
			
		||||
        {0x001A, &APT_S::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"},
 | 
			
		||||
        {0x001B, &APT_S::StartApplication, "StartApplication"},
 | 
			
		||||
        {0x001C, &APT_S::WakeupApplication, "WakeupApplication"},
 | 
			
		||||
        {0x001D, nullptr, "CancelApplication"},
 | 
			
		||||
        {0x001E, &APT_S::StartLibraryApplet, "StartLibraryApplet"},
 | 
			
		||||
        {0x001F, &APT_S::StartSystemApplet, "StartSystemApplet"},
 | 
			
		||||
        {0x0020, nullptr, "StartNewestHomeMenu"},
 | 
			
		||||
        {0x0021, &APT_S::OrderToCloseApplication, "OrderToCloseApplication"},
 | 
			
		||||
        {0x0022, &APT_S::PrepareToCloseApplication, "PrepareToCloseApplication"},
 | 
			
		||||
        {0x0023, nullptr, "PrepareToJumpToApplication"},
 | 
			
		||||
        {0x0024, nullptr, "JumpToApplication"},
 | 
			
		||||
        {0x0025, &APT_S::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"},
 | 
			
		||||
        {0x0026, &APT_S::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"},
 | 
			
		||||
        {0x0027, &APT_S::CloseApplication, "CloseApplication"},
 | 
			
		||||
        {0x0028, &APT_S::CloseLibraryApplet, "CloseLibraryApplet"},
 | 
			
		||||
        {0x0029, &APT_S::CloseSystemApplet, "CloseSystemApplet"},
 | 
			
		||||
        {0x002A, &APT_S::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"},
 | 
			
		||||
        {0x002B, &APT_S::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"},
 | 
			
		||||
        {0x002C, &APT_S::JumpToHomeMenu, "JumpToHomeMenu"},
 | 
			
		||||
        {0x002D, &APT_S::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"},
 | 
			
		||||
        {0x002E, &APT_S::LeaveHomeMenu, "LeaveHomeMenu"},
 | 
			
		||||
        {0x002F, nullptr, "PrepareToLeaveResidentApplet"},
 | 
			
		||||
        {0x0030, nullptr, "LeaveResidentApplet"},
 | 
			
		||||
        {0x0031, &APT_S::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"},
 | 
			
		||||
        {0x0032, &APT_S::DoApplicationJump, "DoApplicationJump"},
 | 
			
		||||
        {0x0033, &APT_S::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"},
 | 
			
		||||
        {0x0034, nullptr, "SendDeliverArg"},
 | 
			
		||||
        {0x0035, &APT_S::ReceiveDeliverArg, "ReceiveDeliverArg"},
 | 
			
		||||
        {0x0036, &APT_S::LoadSysMenuArg, "LoadSysMenuArg"},
 | 
			
		||||
        {0x0037, &APT_S::StoreSysMenuArg, "StoreSysMenuArg"},
 | 
			
		||||
        {0x0038, nullptr, "PreloadResidentApplet"},
 | 
			
		||||
        {0x0039, nullptr, "PrepareToStartResidentApplet"},
 | 
			
		||||
        {0x003A, nullptr, "StartResidentApplet"},
 | 
			
		||||
        {0x003B, &APT_S::CancelLibraryApplet, "CancelLibraryApplet"},
 | 
			
		||||
        {0x003C, nullptr, "SendDspSleep"},
 | 
			
		||||
        {0x003D, nullptr, "SendDspWakeUp"},
 | 
			
		||||
        {0x003E, nullptr, "ReplySleepQuery"},
 | 
			
		||||
        {0x003F, nullptr, "ReplySleepNotificationComplete"},
 | 
			
		||||
        {0x0040, &APT_S::SendCaptureBufferInfo, "SendCaptureBufferInfo"},
 | 
			
		||||
        {0x0041, &APT_S::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"},
 | 
			
		||||
        {0x0042, nullptr, "SleepSystem"},
 | 
			
		||||
        {0x0043, &APT_S::NotifyToWait, "NotifyToWait"},
 | 
			
		||||
        {0x0044, &APT_S::GetSharedFont, "GetSharedFont"},
 | 
			
		||||
        {0x0045, &APT_S::GetWirelessRebootInfo, "GetWirelessRebootInfo"},
 | 
			
		||||
        {0x0046, &APT_S::Wrap, "Wrap"},
 | 
			
		||||
        {0x0047, &APT_S::Unwrap, "Unwrap"},
 | 
			
		||||
        {0x0048, nullptr, "GetProgramInfo"},
 | 
			
		||||
        {0x0049, nullptr, "Reboot"},
 | 
			
		||||
        {0x004A, &APT_S::GetCaptureInfo, "GetCaptureInfo"},
 | 
			
		||||
        {0x004B, &APT_S::AppletUtility, "AppletUtility"},
 | 
			
		||||
        {0x004C, nullptr, "SetFatalErrDispMode"},
 | 
			
		||||
        {0x004D, nullptr, "GetAppletProgramInfo"},
 | 
			
		||||
        {0x004E, nullptr, "HardwareResetAsync"},
 | 
			
		||||
        {0x004F, &APT_S::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"},
 | 
			
		||||
        {0x0050, &APT_S::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"},
 | 
			
		||||
        {0x0051, &APT_S::GetStartupArgument, "GetStartupArgument"},
 | 
			
		||||
        {0x0052, nullptr, "Wrap1"},
 | 
			
		||||
        {0x0053, nullptr, "Unwrap1"},
 | 
			
		||||
        {0x0055, &APT_S::SetScreenCapPostPermission, "SetScreenCapPostPermission"},
 | 
			
		||||
        {0x0056, &APT_S::GetScreenCapPostPermission, "GetScreenCapPostPermission"},
 | 
			
		||||
        {0x0057, nullptr, "WakeupApplication2"},
 | 
			
		||||
        {0x0058, nullptr, "GetProgramID"},
 | 
			
		||||
        {0x0101, &APT_S::CheckNew3DSApp, "CheckNew3DSApp"},
 | 
			
		||||
        {0x0102, &APT_S::CheckNew3DS, "CheckNew3DS"},
 | 
			
		||||
        {0x0103, &APT_S::Unknown0x0103, "Unknown0x0103"},
 | 
			
		||||
        {0x0104, nullptr, "IsStandardMemoryLayout"},
 | 
			
		||||
        {0x0105, &APT_S::IsTitleAllowed, "IsTitleAllowed"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,98 +11,98 @@ APT_U::APT_U(std::shared_ptr<Module> apt)
 | 
			
		|||
    : Module::APTInterface(std::move(apt), "APT:U", MaxAPTSessions) {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 1, 0), &APT_U::GetLockHandle, "GetLockHandle"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 2, 0), &APT_U::Initialize, "Initialize"},
 | 
			
		||||
        {IPC::MakeHeader(0x0003, 1, 0), &APT_U::Enable, "Enable"},
 | 
			
		||||
        {IPC::MakeHeader(0x0004, 1, 0), nullptr, "Finalize"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 1, 0), &APT_U::GetAppletManInfo, "GetAppletManInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 1, 0), &APT_U::GetAppletInfo, "GetAppletInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0007, 0, 0), nullptr, "GetLastSignaledAppletId"},
 | 
			
		||||
        {IPC::MakeHeader(0x0008, 0, 0), nullptr, "CountRegisteredApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0009, 1, 0), &APT_U::IsRegistered, "IsRegistered"},
 | 
			
		||||
        {IPC::MakeHeader(0x000A, 1, 0), nullptr, "GetAttribute"},
 | 
			
		||||
        {IPC::MakeHeader(0x000B, 1, 0), &APT_U::InquireNotification, "InquireNotification"},
 | 
			
		||||
        {IPC::MakeHeader(0x000C, 4, 4), &APT_U::SendParameter, "SendParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000D, 2, 0), &APT_U::ReceiveParameter, "ReceiveParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000E, 2, 0), &APT_U::GlanceParameter, "GlanceParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x000F, 4, 0), &APT_U::CancelParameter, "CancelParameter"},
 | 
			
		||||
        {IPC::MakeHeader(0x0010, 3, 2), nullptr, "DebugFunc"},
 | 
			
		||||
        {IPC::MakeHeader(0x0011, 3, 0), nullptr, "MapProgramIdForDebug"},
 | 
			
		||||
        {IPC::MakeHeader(0x0012, 1, 0), nullptr, "SetHomeMenuAppletIdForDebug"},
 | 
			
		||||
        {IPC::MakeHeader(0x0013, 0, 0), nullptr, "GetPreparationState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0014, 1, 0), nullptr, "SetPreparationState"},
 | 
			
		||||
        {IPC::MakeHeader(0x0015, 5, 0), &APT_U::PrepareToStartApplication, "PrepareToStartApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0016, 1, 0), &APT_U::PreloadLibraryApplet, "PreloadLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0017, 1, 0), &APT_U::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0018, 1, 0), &APT_U::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0019, 1, 0), &APT_U::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x001A, 0, 0), &APT_U::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x001B, 3, 4), &APT_U::StartApplication, "StartApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001C, 0, 0), &APT_U::WakeupApplication, "WakeupApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001D, 0, 0), nullptr, "CancelApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x001E, 2, 4), &APT_U::StartLibraryApplet, "StartLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x001F, 2, 4), &APT_U::StartSystemApplet, "StartSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0020, 1, 4), nullptr, "StartNewestHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x0021, 0, 0), &APT_U::OrderToCloseApplication, "OrderToCloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0022, 1, 0), &APT_U::PrepareToCloseApplication, "PrepareToCloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0023, 1, 0), nullptr, "PrepareToJumpToApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0024, 1, 4), nullptr, "JumpToApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0025, 3, 0), &APT_U::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0026, 0, 0), &APT_U::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0027, 1, 4), &APT_U::CloseApplication, "CloseApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0028, 1, 4), &APT_U::CloseLibraryApplet, "CloseLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0029, 1, 4), &APT_U::CloseSystemApplet, "CloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x002A, 0, 0), &APT_U::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x002B, 0, 0), &APT_U::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002C, 1, 4), &APT_U::JumpToHomeMenu, "JumpToHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002D, 0, 0), &APT_U::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002E, 1, 4), &APT_U::LeaveHomeMenu, "LeaveHomeMenu"},
 | 
			
		||||
        {IPC::MakeHeader(0x002F, 1, 0), nullptr, "PrepareToLeaveResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0030, 1, 4), nullptr, "LeaveResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0031, 4, 0), &APT_U::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0032, 2, 4), &APT_U::DoApplicationJump, "DoApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0033, 0, 0), &APT_U::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"},
 | 
			
		||||
        {IPC::MakeHeader(0x0034, 2, 4), nullptr, "SendDeliverArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0035, 2, 0), &APT_U::ReceiveDeliverArg, "ReceiveDeliverArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0036, 1, 0), &APT_U::LoadSysMenuArg, "LoadSysMenuArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0037, 1, 2), &APT_U::StoreSysMenuArg, "StoreSysMenuArg"},
 | 
			
		||||
        {IPC::MakeHeader(0x0038, 1, 0), nullptr, "PreloadResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x0039, 1, 0), nullptr, "PrepareToStartResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003A, 1, 4), nullptr, "StartResidentApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003B, 1, 0), &APT_U::CancelLibraryApplet, "CancelLibraryApplet"},
 | 
			
		||||
        {IPC::MakeHeader(0x003C, 1, 2), nullptr, "SendDspSleep"},
 | 
			
		||||
        {IPC::MakeHeader(0x003D, 1, 2), nullptr, "SendDspWakeUp"},
 | 
			
		||||
        {IPC::MakeHeader(0x003E, 2, 0), nullptr, "ReplySleepQuery"},
 | 
			
		||||
        {IPC::MakeHeader(0x003F, 1, 0), nullptr, "ReplySleepNotificationComplete"},
 | 
			
		||||
        {IPC::MakeHeader(0x0040, 1, 2), &APT_U::SendCaptureBufferInfo, "SendCaptureBufferInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0041, 1, 0), &APT_U::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0042, 2, 0), nullptr, "SleepSystem"},
 | 
			
		||||
        {IPC::MakeHeader(0x0043, 1, 0), &APT_U::NotifyToWait, "NotifyToWait"},
 | 
			
		||||
        {IPC::MakeHeader(0x0044, 0, 0), &APT_U::GetSharedFont, "GetSharedFont"},
 | 
			
		||||
        {IPC::MakeHeader(0x0045, 1, 0), &APT_U::GetWirelessRebootInfo, "GetWirelessRebootInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0046, 4, 4), &APT_U::Wrap, "Wrap"},
 | 
			
		||||
        {IPC::MakeHeader(0x0047, 4, 4), &APT_U::Unwrap, "Unwrap"},
 | 
			
		||||
        {IPC::MakeHeader(0x0048, 4, 0), nullptr, "GetProgramInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0049, 6, 0), nullptr, "Reboot"},
 | 
			
		||||
        {IPC::MakeHeader(0x004A, 1, 0), &APT_U::GetCaptureInfo, "GetCaptureInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x004B, 3, 2), &APT_U::AppletUtility, "AppletUtility"},
 | 
			
		||||
        {IPC::MakeHeader(0x004C, 0, 0), nullptr, "SetFatalErrDispMode"},
 | 
			
		||||
        {IPC::MakeHeader(0x004D, 2, 0), nullptr, "GetAppletProgramInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x004E, 0, 0), nullptr, "HardwareResetAsync"},
 | 
			
		||||
        {IPC::MakeHeader(0x004F, 2, 0), &APT_U::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"},
 | 
			
		||||
        {IPC::MakeHeader(0x0050, 1, 0), &APT_U::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"},
 | 
			
		||||
        {IPC::MakeHeader(0x0051, 2, 0), &APT_U::GetStartupArgument, "GetStartupArgument"},
 | 
			
		||||
        {IPC::MakeHeader(0x0052, 4, 4), nullptr, "Wrap1"},
 | 
			
		||||
        {IPC::MakeHeader(0x0053, 4, 4), nullptr, "Unwrap1"},
 | 
			
		||||
        {IPC::MakeHeader(0x0055, 1, 0), &APT_U::SetScreenCapPostPermission, "SetScreenCapPostPermission"},
 | 
			
		||||
        {IPC::MakeHeader(0x0056, 0, 0), &APT_U::GetScreenCapPostPermission, "GetScreenCapPostPermission"},
 | 
			
		||||
        {IPC::MakeHeader(0x0057, 1, 4), nullptr, "WakeupApplication2"},
 | 
			
		||||
        {IPC::MakeHeader(0x0058, 0, 2), nullptr, "GetProgramID"},
 | 
			
		||||
        {IPC::MakeHeader(0x0101, 0, 0), &APT_U::CheckNew3DSApp, "CheckNew3DSApp"},
 | 
			
		||||
        {IPC::MakeHeader(0x0102, 0, 0), &APT_U::CheckNew3DS, "CheckNew3DS"},
 | 
			
		||||
        {IPC::MakeHeader(0x0103, 0, 0), &APT_U::Unknown0x0103, "Unknown0x0103"},
 | 
			
		||||
        {IPC::MakeHeader(0x0104, 0, 0), nullptr, "IsStandardMemoryLayout"},
 | 
			
		||||
        {IPC::MakeHeader(0x0105, 4, 0), &APT_U::IsTitleAllowed, "IsTitleAllowed"},
 | 
			
		||||
        {0x0001, &APT_U::GetLockHandle, "GetLockHandle"},
 | 
			
		||||
        {0x0002, &APT_U::Initialize, "Initialize"},
 | 
			
		||||
        {0x0003, &APT_U::Enable, "Enable"},
 | 
			
		||||
        {0x0004, nullptr, "Finalize"},
 | 
			
		||||
        {0x0005, &APT_U::GetAppletManInfo, "GetAppletManInfo"},
 | 
			
		||||
        {0x0006, &APT_U::GetAppletInfo, "GetAppletInfo"},
 | 
			
		||||
        {0x0007, nullptr, "GetLastSignaledAppletId"},
 | 
			
		||||
        {0x0008, nullptr, "CountRegisteredApplet"},
 | 
			
		||||
        {0x0009, &APT_U::IsRegistered, "IsRegistered"},
 | 
			
		||||
        {0x000A, nullptr, "GetAttribute"},
 | 
			
		||||
        {0x000B, &APT_U::InquireNotification, "InquireNotification"},
 | 
			
		||||
        {0x000C, &APT_U::SendParameter, "SendParameter"},
 | 
			
		||||
        {0x000D, &APT_U::ReceiveParameter, "ReceiveParameter"},
 | 
			
		||||
        {0x000E, &APT_U::GlanceParameter, "GlanceParameter"},
 | 
			
		||||
        {0x000F, &APT_U::CancelParameter, "CancelParameter"},
 | 
			
		||||
        {0x0010, nullptr, "DebugFunc"},
 | 
			
		||||
        {0x0011, nullptr, "MapProgramIdForDebug"},
 | 
			
		||||
        {0x0012, nullptr, "SetHomeMenuAppletIdForDebug"},
 | 
			
		||||
        {0x0013, nullptr, "GetPreparationState"},
 | 
			
		||||
        {0x0014, nullptr, "SetPreparationState"},
 | 
			
		||||
        {0x0015, &APT_U::PrepareToStartApplication, "PrepareToStartApplication"},
 | 
			
		||||
        {0x0016, &APT_U::PreloadLibraryApplet, "PreloadLibraryApplet"},
 | 
			
		||||
        {0x0017, &APT_U::FinishPreloadingLibraryApplet, "FinishPreloadingLibraryApplet"},
 | 
			
		||||
        {0x0018, &APT_U::PrepareToStartLibraryApplet, "PrepareToStartLibraryApplet"},
 | 
			
		||||
        {0x0019, &APT_U::PrepareToStartSystemApplet, "PrepareToStartSystemApplet"},
 | 
			
		||||
        {0x001A, &APT_U::PrepareToStartNewestHomeMenu, "PrepareToStartNewestHomeMenu"},
 | 
			
		||||
        {0x001B, &APT_U::StartApplication, "StartApplication"},
 | 
			
		||||
        {0x001C, &APT_U::WakeupApplication, "WakeupApplication"},
 | 
			
		||||
        {0x001D, nullptr, "CancelApplication"},
 | 
			
		||||
        {0x001E, &APT_U::StartLibraryApplet, "StartLibraryApplet"},
 | 
			
		||||
        {0x001F, &APT_U::StartSystemApplet, "StartSystemApplet"},
 | 
			
		||||
        {0x0020, nullptr, "StartNewestHomeMenu"},
 | 
			
		||||
        {0x0021, &APT_U::OrderToCloseApplication, "OrderToCloseApplication"},
 | 
			
		||||
        {0x0022, &APT_U::PrepareToCloseApplication, "PrepareToCloseApplication"},
 | 
			
		||||
        {0x0023, nullptr, "PrepareToJumpToApplication"},
 | 
			
		||||
        {0x0024, nullptr, "JumpToApplication"},
 | 
			
		||||
        {0x0025, &APT_U::PrepareToCloseLibraryApplet, "PrepareToCloseLibraryApplet"},
 | 
			
		||||
        {0x0026, &APT_U::PrepareToCloseSystemApplet, "PrepareToCloseSystemApplet"},
 | 
			
		||||
        {0x0027, &APT_U::CloseApplication, "CloseApplication"},
 | 
			
		||||
        {0x0028, &APT_U::CloseLibraryApplet, "CloseLibraryApplet"},
 | 
			
		||||
        {0x0029, &APT_U::CloseSystemApplet, "CloseSystemApplet"},
 | 
			
		||||
        {0x002A, &APT_U::OrderToCloseSystemApplet, "OrderToCloseSystemApplet"},
 | 
			
		||||
        {0x002B, &APT_U::PrepareToJumpToHomeMenu, "PrepareToJumpToHomeMenu"},
 | 
			
		||||
        {0x002C, &APT_U::JumpToHomeMenu, "JumpToHomeMenu"},
 | 
			
		||||
        {0x002D, &APT_U::PrepareToLeaveHomeMenu, "PrepareToLeaveHomeMenu"},
 | 
			
		||||
        {0x002E, &APT_U::LeaveHomeMenu, "LeaveHomeMenu"},
 | 
			
		||||
        {0x002F, nullptr, "PrepareToLeaveResidentApplet"},
 | 
			
		||||
        {0x0030, nullptr, "LeaveResidentApplet"},
 | 
			
		||||
        {0x0031, &APT_U::PrepareToDoApplicationJump, "PrepareToDoApplicationJump"},
 | 
			
		||||
        {0x0032, &APT_U::DoApplicationJump, "DoApplicationJump"},
 | 
			
		||||
        {0x0033, &APT_U::GetProgramIdOnApplicationJump, "GetProgramIdOnApplicationJump"},
 | 
			
		||||
        {0x0034, nullptr, "SendDeliverArg"},
 | 
			
		||||
        {0x0035, &APT_U::ReceiveDeliverArg, "ReceiveDeliverArg"},
 | 
			
		||||
        {0x0036, &APT_U::LoadSysMenuArg, "LoadSysMenuArg"},
 | 
			
		||||
        {0x0037, &APT_U::StoreSysMenuArg, "StoreSysMenuArg"},
 | 
			
		||||
        {0x0038, nullptr, "PreloadResidentApplet"},
 | 
			
		||||
        {0x0039, nullptr, "PrepareToStartResidentApplet"},
 | 
			
		||||
        {0x003A, nullptr, "StartResidentApplet"},
 | 
			
		||||
        {0x003B, &APT_U::CancelLibraryApplet, "CancelLibraryApplet"},
 | 
			
		||||
        {0x003C, nullptr, "SendDspSleep"},
 | 
			
		||||
        {0x003D, nullptr, "SendDspWakeUp"},
 | 
			
		||||
        {0x003E, nullptr, "ReplySleepQuery"},
 | 
			
		||||
        {0x003F, nullptr, "ReplySleepNotificationComplete"},
 | 
			
		||||
        {0x0040, &APT_U::SendCaptureBufferInfo, "SendCaptureBufferInfo"},
 | 
			
		||||
        {0x0041, &APT_U::ReceiveCaptureBufferInfo, "ReceiveCaptureBufferInfo"},
 | 
			
		||||
        {0x0042, nullptr, "SleepSystem"},
 | 
			
		||||
        {0x0043, &APT_U::NotifyToWait, "NotifyToWait"},
 | 
			
		||||
        {0x0044, &APT_U::GetSharedFont, "GetSharedFont"},
 | 
			
		||||
        {0x0045, &APT_U::GetWirelessRebootInfo, "GetWirelessRebootInfo"},
 | 
			
		||||
        {0x0046, &APT_U::Wrap, "Wrap"},
 | 
			
		||||
        {0x0047, &APT_U::Unwrap, "Unwrap"},
 | 
			
		||||
        {0x0048, nullptr, "GetProgramInfo"},
 | 
			
		||||
        {0x0049, nullptr, "Reboot"},
 | 
			
		||||
        {0x004A, &APT_U::GetCaptureInfo, "GetCaptureInfo"},
 | 
			
		||||
        {0x004B, &APT_U::AppletUtility, "AppletUtility"},
 | 
			
		||||
        {0x004C, nullptr, "SetFatalErrDispMode"},
 | 
			
		||||
        {0x004D, nullptr, "GetAppletProgramInfo"},
 | 
			
		||||
        {0x004E, nullptr, "HardwareResetAsync"},
 | 
			
		||||
        {0x004F, &APT_U::SetAppCpuTimeLimit, "SetAppCpuTimeLimit"},
 | 
			
		||||
        {0x0050, &APT_U::GetAppCpuTimeLimit, "GetAppCpuTimeLimit"},
 | 
			
		||||
        {0x0051, &APT_U::GetStartupArgument, "GetStartupArgument"},
 | 
			
		||||
        {0x0052, nullptr, "Wrap1"},
 | 
			
		||||
        {0x0053, nullptr, "Unwrap1"},
 | 
			
		||||
        {0x0055, &APT_U::SetScreenCapPostPermission, "SetScreenCapPostPermission"},
 | 
			
		||||
        {0x0056, &APT_U::GetScreenCapPostPermission, "GetScreenCapPostPermission"},
 | 
			
		||||
        {0x0057, nullptr, "WakeupApplication2"},
 | 
			
		||||
        {0x0058, nullptr, "GetProgramID"},
 | 
			
		||||
        {0x0101, &APT_U::CheckNew3DSApp, "CheckNew3DSApp"},
 | 
			
		||||
        {0x0102, &APT_U::CheckNew3DS, "CheckNew3DS"},
 | 
			
		||||
        {0x0103, &APT_U::Unknown0x0103, "Unknown0x0103"},
 | 
			
		||||
        {0x0104, nullptr, "IsStandardMemoryLayout"},
 | 
			
		||||
        {0x0105, &APT_U::IsTitleAllowed, "IsTitleAllowed"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,8 +11,8 @@ NS_C::NS_C(std::shared_ptr<Service::APT::Module> apt)
 | 
			
		|||
    : Service::APT::Module::NSInterface(std::move(apt), "ns:c", 1) {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 4, 0), nullptr, "LockSpecialContent"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 4, 0), nullptr, "UnlockSpecialContent"},
 | 
			
		||||
        {0x0001, nullptr, "LockSpecialContent"},
 | 
			
		||||
        {0x0002, nullptr, "UnlockSpecialContent"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,21 +11,21 @@ NS_S::NS_S(std::shared_ptr<Service::APT::Module> apt)
 | 
			
		|||
    : Service::APT::Module::NSInterface(std::move(apt), "ns:s", 3) {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 3, 0), nullptr, "LaunchFIRM"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 3, 0), nullptr, "LaunchTitle"},
 | 
			
		||||
        {IPC::MakeHeader(0x0003, 0, 0), nullptr, "TerminateApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0004, 1, 0), nullptr, "TerminateProcess"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 3, 0), nullptr, "LaunchApplicationFIRM"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 1, 2), &NS_S::SetWirelessRebootInfo, "SetWirelessRebootInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0007, 1, 2), nullptr, "CardUpdateInitialize"},
 | 
			
		||||
        {IPC::MakeHeader(0x0008, 0, 0), nullptr, "CardUpdateShutdown"},
 | 
			
		||||
        {IPC::MakeHeader(0x000D, 5, 0), nullptr, "SetTWLBannerHMAC"},
 | 
			
		||||
        {IPC::MakeHeader(0x000E, 0, 0), &NS_S::ShutdownAsync, "ShutdownAsync"},
 | 
			
		||||
        {IPC::MakeHeader(0x0010, 6, 0), &NS_S::RebootSystem, "RebootSystem"},
 | 
			
		||||
        {IPC::MakeHeader(0x0011, 4, 0), nullptr, "TerminateTitle"},
 | 
			
		||||
        {IPC::MakeHeader(0x0012, 3, 0), nullptr, "SetApplicationCpuTimeLimit"},
 | 
			
		||||
        {IPC::MakeHeader(0x0015, 5, 0), nullptr, "LaunchApplication"},
 | 
			
		||||
        {IPC::MakeHeader(0x0016, 0, 0), &NS_S::RebootSystemClean, "RebootSystemClean"},
 | 
			
		||||
        {0x0001, nullptr, "LaunchFIRM"},
 | 
			
		||||
        {0x0002, nullptr, "LaunchTitle"},
 | 
			
		||||
        {0x0003, nullptr, "TerminateApplication"},
 | 
			
		||||
        {0x0004, nullptr, "TerminateProcess"},
 | 
			
		||||
        {0x0005, nullptr, "LaunchApplicationFIRM"},
 | 
			
		||||
        {0x0006, &NS_S::SetWirelessRebootInfo, "SetWirelessRebootInfo"},
 | 
			
		||||
        {0x0007, nullptr, "CardUpdateInitialize"},
 | 
			
		||||
        {0x0008, nullptr, "CardUpdateShutdown"},
 | 
			
		||||
        {0x000D, nullptr, "SetTWLBannerHMAC"},
 | 
			
		||||
        {0x000E, &NS_S::ShutdownAsync, "ShutdownAsync"},
 | 
			
		||||
        {0x0010, &NS_S::RebootSystem, "RebootSystem"},
 | 
			
		||||
        {0x0011, nullptr, "TerminateTitle"},
 | 
			
		||||
        {0x0012, nullptr, "SetApplicationCpuTimeLimit"},
 | 
			
		||||
        {0x0015, nullptr, "LaunchApplication"},
 | 
			
		||||
        {0x0016, &NS_S::RebootSystemClean, "RebootSystemClean"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue