APT WORKAROUND (update 3dsx_crt0.s to https://gist.github.com/smealum/305802b2b9bf4c877ddb and recompile everything please)
This commit is contained in:
parent
fb1dc89eab
commit
4c9abef1a9
@ -1,6 +1,9 @@
|
||||
#ifndef APT_H
|
||||
#define APT_H
|
||||
|
||||
// TODO : find a better place to put this
|
||||
#define RUNFLAG_APTWORKAROUND (BIT(0))
|
||||
|
||||
typedef enum{
|
||||
APPID_HOMEMENU = 0x101, // Home Menu
|
||||
APPID_CAMERA = 0x110, // Camera applet
|
||||
@ -35,7 +38,7 @@ enum {
|
||||
|
||||
extern Handle aptEvents[3];
|
||||
|
||||
Result aptInit(NS_APPID appID);
|
||||
Result aptInit();
|
||||
void aptExit();
|
||||
void aptOpenSession();
|
||||
void aptCloseSession();
|
||||
|
@ -12,6 +12,10 @@
|
||||
|
||||
#define APT_HANDLER_STACKSIZE (0x1000)
|
||||
|
||||
//TODO : better place to put this ?
|
||||
extern u32 __apt_appid;
|
||||
extern u32 __system_runflags;
|
||||
|
||||
NS_APPID currentAppId;
|
||||
|
||||
Handle aptLockHandle;
|
||||
@ -292,7 +296,7 @@ void aptEventHandler(u32 arg)
|
||||
svcExitThread();
|
||||
}
|
||||
|
||||
Result aptInit(NS_APPID appID)
|
||||
Result aptInit(void)
|
||||
{
|
||||
Result ret=0;
|
||||
|
||||
@ -301,19 +305,22 @@ Result aptInit(NS_APPID appID)
|
||||
if((ret=APT_GetLockHandle(&aptuHandle, 0x0, &aptLockHandle)))return ret;
|
||||
svcCloseHandle(aptuHandle);
|
||||
|
||||
currentAppId = appID;
|
||||
currentAppId = __apt_appid;
|
||||
|
||||
aptOpenSession();
|
||||
if((ret=APT_Initialize(NULL, currentAppId, &aptEvents[0], &aptEvents[1])))return ret;
|
||||
aptCloseSession();
|
||||
|
||||
aptOpenSession();
|
||||
if((ret=APT_Enable(NULL, 0x0)))return ret;
|
||||
aptCloseSession();
|
||||
if(!(__system_runflags&RUNFLAG_APTWORKAROUND))
|
||||
{
|
||||
aptOpenSession();
|
||||
if((ret=APT_Enable(NULL, 0x0)))return ret;
|
||||
aptCloseSession();
|
||||
|
||||
aptOpenSession();
|
||||
if((ret=APT_NotifyToWait(NULL, currentAppId)))return ret;
|
||||
aptCloseSession();
|
||||
aptOpenSession();
|
||||
if((ret=APT_NotifyToWait(NULL, currentAppId)))return ret;
|
||||
aptCloseSession();
|
||||
}
|
||||
|
||||
svcCreateEvent(&aptStatusEvent, 0);
|
||||
return 0;
|
||||
@ -331,13 +338,16 @@ void aptExit()
|
||||
aptCloseSession();
|
||||
}
|
||||
|
||||
aptOpenSession();
|
||||
APT_PrepareToCloseApplication(NULL, 0x1);
|
||||
aptCloseSession();
|
||||
if(!(__system_runflags&RUNFLAG_APTWORKAROUND))
|
||||
{
|
||||
aptOpenSession();
|
||||
APT_PrepareToCloseApplication(NULL, 0x1);
|
||||
aptCloseSession();
|
||||
|
||||
aptOpenSession();
|
||||
APT_CloseApplication(NULL, 0x0, 0x0, 0x0);
|
||||
aptCloseSession();
|
||||
aptOpenSession();
|
||||
APT_CloseApplication(NULL, 0x0, 0x0, 0x0);
|
||||
aptCloseSession();
|
||||
}
|
||||
|
||||
svcCloseHandle(aptStatusMutex);
|
||||
//svcCloseHandle(aptLockHandle);
|
||||
@ -370,21 +380,24 @@ void aptSetupEventHandler()
|
||||
APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2);
|
||||
aptCloseSession();*/
|
||||
|
||||
memset(buf1, 0, 4);
|
||||
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] = 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();
|
||||
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();
|
||||
aptOpenSession();
|
||||
APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2);
|
||||
aptCloseSession();
|
||||
}
|
||||
|
||||
svcCreateMutex(&aptStatusMutex, true);
|
||||
aptStatus=0;
|
||||
|
Loading…
Reference in New Issue
Block a user