all: dir $(PROJECTNAME).bin
dir:
- mkdir -p build
+ @mkdir -p build
$(PROJECTNAME).bin: $(PROJECTNAME).elf
$(OBJCOPY) -O binary $< $@
svc_waitSynchronization1(aptLockHandle, U64_MAX); //APT lock handle is used because we need to wait for NS to be ready for us
srv_getServiceHandle(srvHandle, &aptuHandle, "APT:U");
- APT_Initialize(aptuHandle, 0x300, &APTevents[0], &APTevents[1]);
+ APT_Initialize(aptuHandle, APPID_APPLICATION, &APTevents[0], &APTevents[1]);
svc_closeHandle(aptuHandle);
svc_releaseMutex(aptLockHandle); //release the lock
#ifndef APT_H
#define APT_H
+typedef enum{
+ APPID_HOMEMENU = 0x101, // Home Menu
+ APPID_CAMERA = 0x110, // Camera applet
+ APPID_WEB = 0x114, // Internet Browser
+ APPID_APPLICATION = 0x300, // Application
+}NS_APPID; // cf http://3dbrew.org/wiki/NS#AppIDs
+
void APT_GetLockHandle(Handle handle, u16 flags, Handle* lockHandle);
-void APT_Initialize(Handle handle, u32 a, Handle* eventHandle1, Handle* eventHandle2);
+void APT_Initialize(Handle handle, NS_APPID appId, Handle* eventHandle1, Handle* eventHandle2);
Result APT_Enable(Handle handle, u32 a);
Result APT_PrepareToJumpToHomeMenu(Handle handle);
Result APT_JumpToHomeMenu(Handle handle, u32 a, u32 b, u32 c);
if(lockHandle)*lockHandle=svcData[5];
}
-void APT_Initialize(Handle handle, u32 a, Handle* eventHandle1, Handle* eventHandle2)
+void APT_Initialize(Handle handle, NS_APPID appId, Handle* eventHandle1, Handle* eventHandle2)
{
u32* svcData=svc_getData();
svcData[0]=0x20080; //request header code
- svcData[1]=a;
+ svcData[1]=appId;
svcData[2]=0x0;
svc_sendSyncRequest(handle); //check return value...
if(eventHandle1)*eventHandle1=svcData[3]; //return to menu event ?