9 #define APT_HANDLER_STACKSIZE (0x1000)
17 static char *__apt_servicestr = NULL;
18 static char *__apt_servicenames[3] = {
"APT:U",
"APT:S",
"APT:A"};
20 static u32 __apt_new3dsflag_initialized = 0;
21 static u8 __apt_new3dsflag = 0;
39 static u32 __ns_capinfo[0x20>>2];
41 static NS_APPID __apt_launchapplet_appID;
42 static Handle __apt_launchapplet_inhandle;
43 static u32 *__apt_launchapplet_parambuf;
44 static u32 __apt_launchapplet_parambufsize;
46 static void aptAppStarted(
void);
48 static Result __apt_initservicehandle()
63 __apt_servicestr = __apt_servicenames[i];
74 u32 main_pixsz, sub_pixsz;
88 main_pixsz = (ns_capinfo[4] < 2) ? 3 : 2;
89 sub_pixsz = (ns_capinfo[7] < 2) ? 3 : 2;
91 ns_capinfo[2] = sub_pixsz * 0x14000;
92 ns_capinfo[3] = ns_capinfo[2];
94 if(ns_capinfo[1])ns_capinfo[3] = main_pixsz * 0x19000 + ns_capinfo[2];
96 tmp = main_pixsz * 0x19000 + ns_capinfo[3];
97 ns_capinfo[0] = main_pixsz * 0x7000 + tmp;
151 u32 tmp0 = 1, tmp1 = 0;
181 memset(__ns_capinfo, 0, 0x20);
240 APT_StartLibraryApplet(NULL, __apt_launchapplet_appID, __apt_launchapplet_inhandle, __apt_launchapplet_parambuf, __apt_launchapplet_parambufsize);
269 static void __handle_notification() {
334 static bool __handle_incoming_parameter() {
351 if(__apt_launchapplet_parambuf && __apt_launchapplet_parambufsize)memcpy(__apt_launchapplet_parambuf,
aptParameters, __apt_launchapplet_parambufsize);
371 bool runThread =
true;
383 __handle_notification();
387 runThread = __handle_incoming_parameter();
404 ret = __apt_initservicehandle();
405 if(ret!=0)
return ret;
575 __apt_initservicehandle();
599 if(lockHandle)*lockHandle=cmdbuf[5];
615 if(eventHandle1)*eventHandle1=cmdbuf[3];
616 if(eventHandle2)*eventHandle2=cmdbuf[4];
650 cmdbuf[0]=0x00050040;
656 if(outval8)*outval8=cmdbuf[2];
657 if(outval32)*outval32=cmdbuf[3];
658 if(menu_appid)*menu_appid=cmdbuf[4];
659 if(active_appid)*active_appid=cmdbuf[5];
674 if(out)*out=cmdbuf[2];
689 if(signalType)*signalType=cmdbuf[2];
743 cmdbuf[4]=(size1<<14)|0x402;
746 cmdbuf[0+0x100/4]=(size2<<14)|2;
747 cmdbuf[1+0x100/4]=(
u32)buf2;
752 if(out)*out=cmdbuf[2];
763 cmdbuf[2]=bufferSize;
765 cmdbuf[0+0x100/4]=(bufferSize<<14)|2;
766 cmdbuf[1+0x100/4]=(
u32)buffer;
771 if(signalType)*signalType=cmdbuf[3];
772 if(actualSize)*actualSize=cmdbuf[4];
783 cmdbuf[2]=bufferSize;
785 cmdbuf[0+0x100/4]=(bufferSize<<14)|2;
786 cmdbuf[1+0x100/4]=(
u32)buffer;
791 if(signalType)*signalType=cmdbuf[3];
792 if(actualSize)*actualSize=cmdbuf[4];
803 cmdbuf[0] = 0x000C0104;
804 cmdbuf[1] = src_appID;
805 cmdbuf[2] = dst_appID;
806 cmdbuf[3] = signalType;
807 cmdbuf[4] = bufferSize;
810 cmdbuf[6] = paramhandle;
812 cmdbuf[7] = (bufferSize<<14) | 2;
813 cmdbuf[8] = (
u32)buffer;
827 cmdbuf[0] = 0x00400042;
828 cmdbuf[1] = bufferSize;
829 cmdbuf[2] = (bufferSize<<14) | 2;
830 cmdbuf[3] = (
u32)buffer;
926 if(percent)*percent=cmdbuf[2];
936 cmdbuf[0]=0x01010000;
944 if(ret==0)*out=cmdbuf[2];
955 cmdbuf[0]=0x01020000;
963 if(ret==0)*out=cmdbuf[2];
973 if(__apt_new3dsflag_initialized)
975 *out = __apt_new3dsflag;
990 __apt_new3dsflag_initialized = 1;
991 __apt_new3dsflag = *out;
1003 cmdbuf[2]=(
u32)programID;
1004 cmdbuf[3]=(
u32)(programID>>32);
1005 cmdbuf[4]=mediatype;
1019 cmdbuf[1]=NSbuf0Size;
1020 cmdbuf[2]=NSbuf1Size;
1021 cmdbuf[3]=(NSbuf0Size<<14)|2;
1022 cmdbuf[4]=(
u32)NSbuf0Ptr;
1023 cmdbuf[5]=(NSbuf1Size<<14)|0x802;
1024 cmdbuf[6]=(
u32)NSbuf1Ptr;
1053 cmdbuf[2]=parambufsize;
1056 cmdbuf[5]=(parambufsize<<14)|2;
1057 cmdbuf[6]=(
u32)parambuf;
1089 if(ret!=0)
return ret;
1101 if(ret!=0)
return ret;
1114 memset(__ns_capinfo, 0, 0x20);
1126 __apt_launchapplet_appID = appID;
1127 __apt_launchapplet_inhandle = inhandle;
1128 __apt_launchapplet_parambuf = parambuf;
1129 __apt_launchapplet_parambufsize = parambufsize;
void aptSignalReadyForSleep()
Result APT_SetAppCpuTimeLimit(Handle *handle, u32 percent)
Result APT_GlanceParameter(Handle *handle, NS_APPID appID, u32 bufferSize, u32 *buffer, u32 *actualSize, u8 *signalType)
Result APT_PrepareToStartLibraryApplet(Handle *handle, NS_APPID appID)
s32 svcClearEvent(Handle handle)
void aptSetStatus(APP_STATUS status)
Result APT_LaunchLibraryApplet(NS_APPID appID, Handle inhandle, u32 *parambuf, u32 parambufsize)
s32 svcCloseHandle(Handle handle)
s32 svcWaitSynchronization(Handle handle, s64 nanoseconds)
Result APT_Enable(Handle *handle, u32 a)
Result APT_DoAppJump(Handle *handle, u32 NSbuf0Size, u32 NSbuf1Size, u8 *NSbuf0Ptr, u8 *NSbuf1Ptr)
s32 svcCreateThread(Handle *thread, ThreadFunc entrypoint, u32 arg, u32 *stack_top, s32 thread_priority, s32 processor_id)
Result srvGetServiceHandle(Handle *out, const char *name)
Result APT_GetAppCpuTimeLimit(Handle *handle, u32 *percent)
Result APT_PrepareToDoAppJump(Handle *handle, u8 flags, u64 programID, u8 mediatype)
Result APT_AppletUtility(Handle *handle, u32 *out, u32 a, u32 size1, u8 *buf1, u32 size2, u8 *buf2)
Result APT_ReplySleepQuery(Handle *handle, NS_APPID appID, u32 a)
Result GSPGPU_SaveVramSysArea(Handle *handle)
Handle aptEventHandlerThread
Result GSPGPU_AcquireRight(Handle *handle, u8 flags)
APP_STATUS aptStatusBeforeSleep
Result APT_GetLockHandle(Handle *handle, u16 flags, Handle *lockHandle)
Result APT_CheckNew3DS_System(Handle *handle, u8 *out)
u32 * getThreadCommandBuffer(void)
Result APT_SendCaptureBufferInfo(Handle *handle, u32 bufferSize, u32 *buffer)
#define APT_HANDLER_STACKSIZE
void aptInitCaptureInfo(u32 *ns_capinfo)
Result APT_HardwareResetAsync(Handle *handle)
void aptAppletUtility_Exit_RetToApp()
Result APT_ReplySleepNotificationComplete(Handle *handle, NS_APPID appID)
Result APT_JumpToHomeMenu(Handle *handle, u32 a, u32 b, u32 c)
#define RUNFLAG_APTWORKAROUND
Result APT_ReceiveParameter(Handle *handle, NS_APPID appID, u32 bufferSize, u32 *buffer, u32 *actualSize, u8 *signalType)
void aptEventHandler(u32 arg)
Result APT_SendParameter(Handle *handle, NS_APPID src_appID, NS_APPID dst_appID, u32 bufferSize, u32 *buffer, Handle paramhandle, u8 signalType)
u64 aptEventHandlerStack[APT_HANDLER_STACKSIZE/8]
Result APT_PrepareToJumpToHomeMenu(Handle *handle)
Result APT_GetAppletManInfo(Handle *handle, u8 inval, u8 *outval8, u32 *outval32, NS_APPID *menu_appid, NS_APPID *active_appid)
Result GSPGPU_RestoreVramSysArea(Handle *handle)
Result APT_InquireNotification(Handle *handle, u32 appID, u8 *signalType)
Result GSPGPU_ReleaseRight(Handle *handle)
u32 aptParameters[0x1000/4]
Result APT_CheckNew3DS_Application(Handle *handle, u8 *out)
Result APT_Initialize(Handle *handle, NS_APPID appId, Handle *eventHandle1, Handle *eventHandle2)
Result APT_IsRegistered(Handle *handle, NS_APPID appID, u8 *out)
void aptSetStatusPower(u32 status)
Result APT_NotifyToWait(Handle *handle, NS_APPID appID)
s32 svcCreateEvent(Handle *event, u8 reset_type)
Result APT_CloseApplication(Handle *handle, u32 a, u32 b, u32 c)
s32 svcCreateMutex(Handle *mutex, bool initially_locked)
s32 svcSendSyncRequest(Handle session)
void aptWaitStatusEvent()
Result APT_PrepareToCloseApplication(Handle *handle, u8 a)
Result APT_StartLibraryApplet(Handle *handle, NS_APPID appID, Handle inhandle, u32 *parambuf, u32 parambufsize)
Result GSPGPU_ImportDisplayCaptureInfo(Handle *handle, GSP_CaptureInfo *captureinfo)
NS_APPID aptGetMenuAppID()
s32 svcReleaseMutex(Handle handle)
s32 svcSignalEvent(Handle handle)
Result GSPGPU_SetLcdForceBlack(Handle *handle, u8 flags)
s32 svcWaitSynchronizationN(s32 *out, Handle *handles, s32 handles_num, bool wait_all, s64 nanoseconds)
GSP_CaptureInfoEntry screencapture[2]
APP_STATUS aptGetStatus()
Result APT_CheckNew3DS(Handle *handle, u8 *out)