void aptAppStarted() { u8 buf1[4], buf2[4]; svcCreateMutex(&aptStatusMutex, true); aptStatus=0; svcReleaseMutex(aptStatusMutex); aptSetStatus(APP_RUNNING); if(!aptIsCrippled()) { memset(buf1, 0, 4); buf1[0] = 0x10; aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x7, 0x4, buf1, 0x1, buf2); aptCloseSession(); buf1[0] = 0x00; aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); } }
void aptAppStarted(void) { u8 buf1[4], buf2[4]; aptSetStatus(APP_RUNNING); svcClearEvent(aptStatusEvent); if(!aptIsCrippled()) { memset(buf1, 0, 4); buf1[0] = 0x10; aptOpenSession(); APT_AppletUtility(NULL, 0x7, 0x4, buf1, 0x1, buf2); aptCloseSession(); buf1[0] = 0x00; aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); } }
void aptAppStarted() { u8 buf1[4], buf2[4]; svcCreateMutex(&aptStatusMutex, true); aptStatus=0; svcReleaseMutex(aptStatusMutex); aptSetStatus(APP_RUNNING); if(!(__system_runflags&RUNFLAG_APTWORKAROUND)) { memset(buf1, 0, 4); buf1[0] = 0x10; aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x7, 0x4, buf1, 0x1, buf2); aptCloseSession(); buf1[0] = 0x00; aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); } }
void aptAppletStarted(void) { u8 buf1[4], buf2[4]; memset(buf1, 0, 4); // Set status to SUSPENDED. svcClearEvent(aptStatusEvent); aptSetStatus(APP_SUSPENDED); aptOpenSession(); APT_SendCaptureBufferInfo(0x20, __ns_capinfo); aptCloseSession(); aptOpenSession(); APT_ReplySleepQuery(currentAppId, 0x0); aptCloseSession(); aptOpenSession(); APT_StartLibraryApplet(__apt_launchapplet_appID, __apt_launchapplet_inhandle, __apt_launchapplet_parambuf, __apt_launchapplet_parambufsize); aptCloseSession(); buf1[0]=0x00; aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); aptOpenSession(); APT_NotifyToWait(currentAppId); aptCloseSession(); buf1[0]=0x00; aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); }
void aptAppletUtility_Exit_RetToApp(u32 type) { u8 buf1[4], buf2[4]; memset(buf1, 0, 4); buf1[0]=0x10; aptOpenSession(); APT_AppletUtility(NULL, 0x7, 0x4, buf1, 0x1, buf2); aptCloseSession(); buf1[0]=0x00; aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); buf1[0]=0x01; aptOpenSession(); APT_AppletUtility(NULL, 0x7, 0x4, buf1, 0x1, buf2); aptCloseSession(); buf1[0]=0x00; aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); if(type) { aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); } }
void aptReturnToMenu(void) { NS_APPID menu_appid; u32 tmp0 = 1, tmp1 = 0; if(aptIsCrippled()) { svcClearEvent(aptStatusEvent); aptSetStatus(APP_EXITING); return; } // This is only executed when ret-to-menu was triggered via the home-button, not the power-button. if(aptGetStatusPower() == 0) { aptOpenSession(); APT_AppletUtility(NULL, 0x6, 0x4, (u8*)&tmp0, 0x1, (u8*)&tmp1); aptCloseSession(); } // Set status to SUSPENDED. __apt_launchapplet_appID = 0; svcClearEvent(aptStatusEvent); aptSetStatus(APP_SUSPENDED); // Prepare for return to menu aptOpenSession(); APT_PrepareToJumpToHomeMenu(); aptCloseSession(); // Save Vram GSPGPU_SaveVramSysArea(); // Capture screen. memset(__ns_capinfo, 0, 0x20); aptInitCaptureInfo(__ns_capinfo); menu_appid = aptGetMenuAppID(); // Send capture-screen info to menu. aptOpenSession(); APT_SendParameter(currentAppId, menu_appid, 0x20, __ns_capinfo, 0x0, 0x10); aptCloseSession(); aptOpenSession(); APT_SendCaptureBufferInfo(0x20, __ns_capinfo); aptCloseSession(); // Release GSP module. GSPGPU_ReleaseRight(); // Jump to menu! aptOpenSession(); APT_JumpToHomeMenu(0x0, 0x0, 0x0); aptCloseSession(); // Wait for return to application. aptOpenSession(); APT_NotifyToWait(currentAppId); aptCloseSession(); // This is only executed when ret-to-menu was triggered via the home-button, not the power-button. if(aptGetStatusPower() == 0) { tmp0 = 0; aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, (u8*)&tmp0, 0x1, (u8*)&tmp1); aptCloseSession(); } aptWaitStatusEvent(); }
Result APT_LaunchLibraryApplet(NS_APPID appID, Handle inhandle, u32 *parambuf, u32 parambufsize) { Result ret=0; u8 tmp=0; u8 buf1[4]; u8 buf2[4]; aptOpenSession(); APT_ReplySleepQuery(currentAppId, 0); aptCloseSession(); aptOpenSession(); ret=APT_PrepareToStartLibraryApplet(appID); aptCloseSession(); if(R_FAILED(ret))return ret; memset(buf1, 0, 4); aptOpenSession(); APT_AppletUtility(NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); while(1) { aptOpenSession(); ret=APT_IsRegistered(appID, &tmp); aptCloseSession(); if(R_FAILED(ret))return ret; if(tmp!=0)break; } aptCallHook(APTHOOK_ONSUSPEND); __apt_launchapplet_appID = appID; __apt_launchapplet_inhandle = inhandle; __apt_launchapplet_parambuf = parambuf; __apt_launchapplet_parambufsize = parambufsize; // Set status to SUSPENDED. svcClearEvent(aptStatusEvent); aptSetStatus(APP_SUSPENDED); // Save Vram GSPGPU_SaveVramSysArea(); // Capture screen. memset(__ns_capinfo, 0, 0x20); aptInitCaptureInfo(__ns_capinfo); // Send capture-screen info to the library applet. aptOpenSession(); APT_SendParameter(currentAppId, appID, 0x20, __ns_capinfo, 0x0, 0x2); aptCloseSession(); // Release GSP module. GSPGPU_ReleaseRight(); return 0; }