Result _FSUSER_OpenFileDirectly(Handle* handle, Handle* out, FS_archive archive, FS_path fileLowPath, u32 openflags, u32 attributes) //no need to have archive opened { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x08030204; cmdbuf[1]=0; cmdbuf[2]=archive.id; cmdbuf[3]=archive.lowPath.type; cmdbuf[4]=archive.lowPath.size; cmdbuf[5]=fileLowPath.type; cmdbuf[6]=fileLowPath.size; cmdbuf[7]=openflags; cmdbuf[8]=attributes; cmdbuf[9]=(archive.lowPath.size<<14)|0x802; cmdbuf[10]=(u32)archive.lowPath.data; cmdbuf[11]=(fileLowPath.size<<14)|2; cmdbuf[12]=(u32)fileLowPath.data; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; if(out)*out=cmdbuf[3]; return cmdbuf[1]; }
Result HIDUSER_Init(Handle* handle) { if(!handle)handle=&hidHandle; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x110000; //request header code Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result _APT_PrepareToCloseApplication(Handle* handle, u8 a) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x220040; //request header code cmdbuf[1]=a; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result _APT_Finalize(Handle* handle, u8 a) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x40040; //request header code cmdbuf[1]=a; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result _FSFILE_Close(Handle handle) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x08080000; Result ret=0; if((ret=svc_sendSyncRequest(handle)))return ret; return cmdbuf[1]; }
Result srv_Initialize(Handle* handleptr) { if(!handleptr)handleptr=&srvHandle; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x10002; //request header code cmdbuf[1]=0x20; Result ret=0; if((ret=svc_sendSyncRequest(*handleptr)))return ret; return cmdbuf[1]; }
Result HTTPC_CloseContext(Handle handle, Handle contextHandle) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x30040; //request header code cmdbuf[1]=contextHandle; Result ret=0; if((ret=svc_sendSyncRequest(handle)))return ret; return cmdbuf[1]; }
Result GSPGPU_RestoreVramSysArea(Handle* handle) { if(!handle)handle=&gspGpuHandle; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x001A0000; //request header code Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
//? Result HTTPC_Initialize(Handle handle) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x10044; //request header code cmdbuf[1]=0x1000; //unk cmdbuf[2]=0x20; //unk Result ret=0; if((ret=svc_sendSyncRequest(handle)))return ret; return cmdbuf[1]; }
Result HTTPC_InitializeConnectionSession(Handle handle, Handle contextHandle) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x80042; //request header code cmdbuf[1]=contextHandle; cmdbuf[2]=0x20; //unk, fixed to that in code Result ret=0; if((ret=svc_sendSyncRequest(handle)))return ret; return cmdbuf[1]; }
Result GSPGPU_SetLcdForceBlack(Handle* handle, u8 flags) { if(!handle)handle=&gspGpuHandle; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0xB0040; //request header code cmdbuf[1]=flags; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result _GSPGPU_SetBufferSwap(Handle handle, u32 screenid, GSP_FramebufferInfo framebufinfo) { Result ret=0; u32 *cmdbuf = getThreadCommandBuffer(); cmdbuf[0] = 0x00050200; cmdbuf[1] = screenid; memcpy(&cmdbuf[2], &framebufinfo, sizeof(GSP_FramebufferInfo)); if((ret=svc_sendSyncRequest(handle)))return ret; return cmdbuf[1]; }
Result HIDUSER_GetInfo(Handle* handle, Handle* outMemHandle) { if(!handle)handle=&hidHandle; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0xa0000; //request header code Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; if(outMemHandle)*outMemHandle=cmdbuf[3]; return cmdbuf[1]; }
Result _APT_GetLockHandle(Handle* handle, u16 flags, Handle* lockHandle) { if(!handle)handle=&_aptuHandle; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x10040; //request header code cmdbuf[1]=flags; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; if(lockHandle)*lockHandle=cmdbuf[5]; return cmdbuf[1]; }
Result HTTPC_GetDownloadSizeState(Handle handle, Handle contextHandle, u32* totalSize) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x00060040; //request header code cmdbuf[1]=contextHandle; Result ret=0; if((ret=svc_sendSyncRequest(handle)))return ret; if(totalSize)*totalSize=cmdbuf[3]; return cmdbuf[1]; }
Result NSS_LaunchTitle(Handle* handle, u64 tid, u8 flags) { if(!handle)return -1; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x000200C0; //request header code cmdbuf[1]=tid&0xFFFFFFFF; cmdbuf[2]=(tid>>32)&0xFFFFFFFF; cmdbuf[3]=flags; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result _GSPGPU_InvalidateDataCache(Handle* handle, Handle kprocess, u32* addr, u32 size) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x00090082; cmdbuf[1]=(u32)addr; cmdbuf[2]=size; cmdbuf[3]=0x00000000; cmdbuf[4]=(u32)kprocess; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result HTTPC_ReceiveData(Handle handle, Handle contextHandle, u8* buffer, u32 size) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0xB0082; //request header code cmdbuf[1]=contextHandle; cmdbuf[2]=size; cmdbuf[3]=(size<<4)|12; cmdbuf[4]=(u32)buffer; Result ret=0; if((ret=svc_sendSyncRequest(handle)))return ret; return cmdbuf[1]; }
Result _APT_CloseApplication(Handle* handle, u32 a, u32 b, u32 c) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x270044; //request header code cmdbuf[1]=a; cmdbuf[2]=0x0; cmdbuf[3]=b; cmdbuf[4]=(a<<14)|2; cmdbuf[5]=c; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result NSS_TerminateProcessTID(Handle* handle, u64 tid, u64 timeout) { if(!handle)return -1; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x00110100; //request header code cmdbuf[1]=tid&0xFFFFFFFF; cmdbuf[2]=(tid>>32)&0xFFFFFFFF; cmdbuf[3]=timeout&0xFFFFFFFF; cmdbuf[4]=(timeout>>32)&0xFFFFFFFF; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result HTTPC_CreateContext(Handle handle, char* url, Handle* contextHandle) { u32* cmdbuf=getThreadCommandBuffer(); u32 l=_strlen(url)+1; cmdbuf[0]=0x20082; //request header code cmdbuf[1]=l; cmdbuf[2]=0x01; //unk cmdbuf[3]=(l<<4)|0xA; cmdbuf[4]=(u32)url; Result ret=0; if((ret=svc_sendSyncRequest(handle)))return ret; if(contextHandle)*contextHandle=cmdbuf[2]; return cmdbuf[1]; }
Result GSPGPU_ReadHWRegs(Handle* handle, u32 regAddr, u32* data, u8 size) { if(!handle)handle=&gspGpuHandle; if(size>0x80 || !data)return -1; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x40080; //request header code cmdbuf[1]=regAddr; cmdbuf[2]=size; cmdbuf[0x40]=(size<<14)|2; cmdbuf[0x40+1]=(u32)data; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result _FSFILE_Read(Handle handle, u32 *bytesRead, u64 offset, u32 *buffer, u32 size) { u32 *cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x080200C2; cmdbuf[1]=(u32)offset; cmdbuf[2]=(u32)(offset>>32); cmdbuf[3]=size; cmdbuf[4]=(size<<4)|12; cmdbuf[5]=(u32)buffer; Result ret=0; if((ret=svc_sendSyncRequest(handle)))return ret; if(bytesRead)*bytesRead=cmdbuf[2]; return cmdbuf[1]; }
Result GSPGPU_ImportDisplayCaptureInfo(Handle* handle, GSP_CaptureInfo *captureinfo) { if(!handle)handle=&gspGpuHandle; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x00180000; //request header code Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; ret = cmdbuf[1]; if(ret==0) { memcpy(captureinfo, &cmdbuf[2], 0x20); } return ret; }
Result _srv_getServiceHandle(Handle* handleptr, Handle* out, char* server) { u8 l=_strlen(server); if(!out || !server || l>8)return -1; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x50100; //request header code _strcpy((char*)&cmdbuf[1], server); cmdbuf[3]=l; cmdbuf[4]=0x0; Result ret=0; if((ret=svc_sendSyncRequest(*handleptr)))return ret; *out=cmdbuf[3]; return cmdbuf[1]; }
Result GSPGPU_WriteHWRegsWithMask(Handle* handle, u32 regAddr, u32* data, u8 datasize, u32* maskdata, u8 masksize) { if(!handle)handle=&gspGpuHandle; if(datasize>0x80 || !data)return -1; u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x20084; //request header code cmdbuf[1]=regAddr; cmdbuf[2]=datasize; cmdbuf[3]=(datasize<<14)|2; cmdbuf[4]=(u32)data; cmdbuf[5]=(masksize<<14)|0x402; cmdbuf[6]=(u32)maskdata; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; return cmdbuf[1]; }
Result _APT_AppletUtility(Handle* handle, u32* out, u32 a, u32 size1, u8* buf1, u32 size2, u8* buf2) { u32* cmdbuf=getThreadCommandBuffer(); cmdbuf[0]=0x4B00C2; //request header code cmdbuf[1]=a; cmdbuf[2]=size1; cmdbuf[3]=size2; cmdbuf[4]=(size1<<14)|0x402; cmdbuf[5]=(u32)buf1; cmdbuf[0+0x100/4]=(size2<<14)|2; cmdbuf[1+0x100/4]=(u32)buf2; Result ret=0; if((ret=svc_sendSyncRequest(*handle)))return ret; if(out)*out=cmdbuf[2]; return cmdbuf[1]; }