commit
7256f74320
@ -101,9 +101,9 @@ Result APT_GetAppletInfo(NS_APPID appID, u64* pProgramID, u8* pMediaType, u8* pR
|
|||||||
Result APT_GetAppletProgramInfo(u32 id, u32 flags, u16 *titleversion);
|
Result APT_GetAppletProgramInfo(u32 id, u32 flags, u16 *titleversion);
|
||||||
Result APT_GetProgramID(u64* pProgramID);
|
Result APT_GetProgramID(u64* pProgramID);
|
||||||
Result APT_PrepareToJumpToHomeMenu(void);
|
Result APT_PrepareToJumpToHomeMenu(void);
|
||||||
Result APT_JumpToHomeMenu(u32 a, u32 b, u32 c);
|
Result APT_JumpToHomeMenu(const u8 *param, size_t paramSize, Handle handle);
|
||||||
Result APT_PrepareToJumpToApplication(u32 a);
|
Result APT_PrepareToJumpToApplication(u32 a);
|
||||||
Result APT_JumpToApplication(u32 a, u32 b, u32 c);
|
Result APT_JumpToApplication(const u8 *param, size_t paramSize, Handle handle);
|
||||||
Result APT_IsRegistered(NS_APPID appID, u8* out);
|
Result APT_IsRegistered(NS_APPID appID, u8* out);
|
||||||
Result APT_InquireNotification(u32 appID, u8* signalType);
|
Result APT_InquireNotification(u32 appID, u8* signalType);
|
||||||
Result APT_NotifyToWait(NS_APPID appID);
|
Result APT_NotifyToWait(NS_APPID appID);
|
||||||
@ -115,7 +115,7 @@ Result APT_SendCaptureBufferInfo(u32 bufferSize, u32* buffer);
|
|||||||
Result APT_ReplySleepQuery(NS_APPID appID, u32 a);
|
Result APT_ReplySleepQuery(NS_APPID appID, u32 a);
|
||||||
Result APT_ReplySleepNotificationComplete(NS_APPID appID);
|
Result APT_ReplySleepNotificationComplete(NS_APPID appID);
|
||||||
Result APT_PrepareToCloseApplication(u8 a);
|
Result APT_PrepareToCloseApplication(u8 a);
|
||||||
Result APT_CloseApplication(u32 a, u32 b, u32 c);
|
Result APT_CloseApplication(const u8 *param, size_t paramSize, Handle handle);
|
||||||
Result APT_SetAppCpuTimeLimit(u32 percent);
|
Result APT_SetAppCpuTimeLimit(u32 percent);
|
||||||
Result APT_GetAppCpuTimeLimit(u32 *percent);
|
Result APT_GetAppCpuTimeLimit(u32 *percent);
|
||||||
Result APT_CheckNew3DS_Application(u8 *out);// Note: this function is unreliable, see: http://3dbrew.org/wiki/APT:PrepareToStartApplication
|
Result APT_CheckNew3DS_Application(u8 *out);// Note: this function is unreliable, see: http://3dbrew.org/wiki/APT:PrepareToStartApplication
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/ac.h>
|
#include <3ds/services/ac.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle acHandle;
|
static Handle acHandle;
|
||||||
|
|
||||||
@ -22,21 +23,21 @@ Result acExit(void)
|
|||||||
Result ACU_CreateDefaultConfig(Handle* servhandle, u32 *ptr)
|
Result ACU_CreateDefaultConfig(Handle* servhandle, u32 *ptr)
|
||||||
{
|
{
|
||||||
if(!servhandle)servhandle=&acHandle;
|
if(!servhandle)servhandle=&acHandle;
|
||||||
u32 tmp0, tmp1;
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
u32 *staticbufs = getThreadStaticBuffers();
|
||||||
|
|
||||||
tmp0 = cmdbuf[0x100>>2];
|
u32 savedValue0 = staticbufs[0];
|
||||||
tmp1 = cmdbuf[0x104>>2];
|
u32 savedValue1 = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010000;
|
cmdbuf[0] = IPC_MakeHeader(0x1,0,0); // 0x00010000
|
||||||
cmdbuf[0x100>>2] = 0x00800002;
|
staticbufs[0] = IPC_Desc_StaticBuffer(0x200,0);
|
||||||
cmdbuf[0x104>>2] = (u32)ptr;
|
staticbufs[1] = (u32)ptr;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = tmp0;
|
staticbufs[0] = savedValue0;
|
||||||
cmdbuf[0x104>>2] = tmp1;
|
staticbufs[1] = savedValue1;
|
||||||
|
|
||||||
return (Result)cmdbuf[1];
|
return (Result)cmdbuf[1];
|
||||||
}
|
}
|
||||||
@ -45,24 +46,24 @@ Result ACU_CreateDefaultConfig(Handle* servhandle, u32 *ptr)
|
|||||||
Result ACU_cmd26(Handle* servhandle, u32 *ptr, u8 val)
|
Result ACU_cmd26(Handle* servhandle, u32 *ptr, u8 val)
|
||||||
{
|
{
|
||||||
if(!servhandle)servhandle=&acHandle;
|
if(!servhandle)servhandle=&acHandle;
|
||||||
u32 tmp0, tmp1;
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
u32 *staticbufs = getThreadStaticBuffers();
|
||||||
|
|
||||||
tmp0 = cmdbuf[0x100>>2];
|
u32 savedValue0 = staticbufs[0];
|
||||||
tmp1 = cmdbuf[0x104>>2];
|
u32 savedValue1 = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0] = 0x00260042;
|
cmdbuf[0] = IPC_MakeHeader(0x26,1,2); // 0x00260042
|
||||||
cmdbuf[1] = (u32)val;
|
cmdbuf[1] = (u32)val;
|
||||||
cmdbuf[0x100>>2] = 0x00800002;
|
staticbufs[0] = IPC_Desc_StaticBuffer(0x200,0);
|
||||||
cmdbuf[0x104>>2] = (u32)ptr;
|
staticbufs[1] = (u32)ptr;
|
||||||
cmdbuf[2] = 0x00800002;
|
cmdbuf[2] = IPC_Desc_StaticBuffer(0x200,0);
|
||||||
cmdbuf[3] = (u32)ptr;
|
cmdbuf[3] = (u32)ptr;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = tmp0;
|
staticbufs[0] = savedValue0;
|
||||||
cmdbuf[0x104>>2] = tmp1;
|
staticbufs[1] = savedValue1;
|
||||||
|
|
||||||
return (Result)cmdbuf[1];
|
return (Result)cmdbuf[1];
|
||||||
}
|
}
|
||||||
@ -73,7 +74,7 @@ Result ACU_GetWifiStatus(Handle* servhandle, u32 *out)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000D0000;
|
cmdbuf[0] = IPC_MakeHeader(0xD,0,0); // 0x000D0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/am.h>
|
#include <3ds/services/am.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle amHandle = 0;
|
static Handle amHandle = 0;
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ Result AM_GetTitleCount(u8 mediatype, u32 *count)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010040;
|
cmdbuf[0] = IPC_MakeHeader(0x1,1,0); // 0x00010040
|
||||||
cmdbuf[1] = mediatype;
|
cmdbuf[1] = mediatype;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
@ -49,10 +50,10 @@ Result AM_GetTitleIdList(u8 mediatype, u32 count, u64 *titleIDs)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00020082;
|
cmdbuf[0] = IPC_MakeHeader(0x2,2,2); // 0x00020082
|
||||||
cmdbuf[1] = count;
|
cmdbuf[1] = count;
|
||||||
cmdbuf[2] = mediatype;
|
cmdbuf[2] = mediatype;
|
||||||
cmdbuf[3] = ((count*8) << 4) | 12;
|
cmdbuf[3] = IPC_Desc_Buffer(count*sizeof(u64),IPC_BUFFER_W);
|
||||||
cmdbuf[4] = (u32)titleIDs;
|
cmdbuf[4] = (u32)titleIDs;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
@ -65,12 +66,12 @@ Result AM_ListTitles(u8 mediatype, u32 titleCount, u64 *titleIdList, TitleList *
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00030084;
|
cmdbuf[0] = IPC_MakeHeader(0x3,2,4); // 0x00030084
|
||||||
cmdbuf[1] = mediatype;
|
cmdbuf[1] = mediatype;
|
||||||
cmdbuf[2] = titleCount;
|
cmdbuf[2] = titleCount;
|
||||||
cmdbuf[3] = ((titleCount*8)<<4) | 10;
|
cmdbuf[3] = IPC_Desc_Buffer(titleCount*sizeof(u64),IPC_BUFFER_R);
|
||||||
cmdbuf[4] = (u32)titleIdList;
|
cmdbuf[4] = (u32)titleIdList;
|
||||||
cmdbuf[5] = ((sizeof(TitleList)*titleCount)<<4) | 12;
|
cmdbuf[5] = IPC_Desc_Buffer(titleCount*sizeof(TitleList),IPC_BUFFER_W);
|
||||||
cmdbuf[6] = (u32)titleList;
|
cmdbuf[6] = (u32)titleList;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
@ -83,7 +84,7 @@ Result AM_GetDeviceId(u32 *deviceID)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000A0000;
|
cmdbuf[0] = IPC_MakeHeader(0xA,0,0); // 0x000A0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
|
|
||||||
@ -97,7 +98,7 @@ Result AM_StartCiaInstall(u8 mediatype, Handle *ciaHandle)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x04020040;
|
cmdbuf[0] = IPC_MakeHeader(0x402,1,0); // 0x04020040
|
||||||
cmdbuf[1] = mediatype;
|
cmdbuf[1] = mediatype;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
@ -112,7 +113,7 @@ Result AM_StartDlpChildCiaInstall(Handle *ciaHandle)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x04030000;
|
cmdbuf[0] = IPC_MakeHeader(0x403,0,0); // 0x04030000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
|
|
||||||
@ -126,8 +127,8 @@ Result AM_CancelCIAInstall(Handle *ciaHandle)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x04040002;
|
cmdbuf[0] = IPC_MakeHeader(0x404,0,2); // 0x04040002
|
||||||
cmdbuf[1] = 0x10;
|
cmdbuf[1] = IPC_Desc_MoveHandles(1);
|
||||||
cmdbuf[2] = *ciaHandle;
|
cmdbuf[2] = *ciaHandle;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
@ -140,8 +141,8 @@ Result AM_FinishCiaInstall(u8 mediatype, Handle *ciaHandle)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x04050002;
|
cmdbuf[0] = IPC_MakeHeader(0x405,0,2); // 0x04050002
|
||||||
cmdbuf[1] = 0x10;
|
cmdbuf[1] = IPC_Desc_MoveHandles(1);
|
||||||
cmdbuf[2] = *ciaHandle;
|
cmdbuf[2] = *ciaHandle;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
@ -154,7 +155,7 @@ Result AM_DeleteTitle(u8 mediatype, u64 titleID)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x041000C0;
|
cmdbuf[0] = IPC_MakeHeader(0x410,3,0); // 0x041000C0
|
||||||
cmdbuf[1] = mediatype;
|
cmdbuf[1] = mediatype;
|
||||||
cmdbuf[2] = titleID & 0xffffffff;
|
cmdbuf[2] = titleID & 0xffffffff;
|
||||||
cmdbuf[3] = (u32)(titleID >> 32);
|
cmdbuf[3] = (u32)(titleID >> 32);
|
||||||
@ -169,7 +170,7 @@ Result AM_DeleteAppTitle(u8 mediatype, u64 titleID)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000400C0;
|
cmdbuf[0] = IPC_MakeHeader(0x4,3,0); // 0x000400C0
|
||||||
cmdbuf[1] = mediatype;
|
cmdbuf[1] = mediatype;
|
||||||
cmdbuf[2] = titleID & 0xffffffff;
|
cmdbuf[2] = titleID & 0xffffffff;
|
||||||
cmdbuf[3] = (u32)(titleID >> 32);
|
cmdbuf[3] = (u32)(titleID >> 32);
|
||||||
@ -184,7 +185,7 @@ Result AM_InstallNativeFirm(void)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x040F0000;
|
cmdbuf[0] = IPC_MakeHeader(0x40F,0,0); // 0x040F0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
|
|
||||||
@ -196,7 +197,7 @@ Result AM_GetTitleProductCode(u8 mediatype, u64 titleID, char* productCode)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000500C0;
|
cmdbuf[0] = IPC_MakeHeader(0x5,3,0); // 0x000500C0
|
||||||
cmdbuf[1] = mediatype;
|
cmdbuf[1] = mediatype;
|
||||||
cmdbuf[2] = titleID & 0xffffffff;
|
cmdbuf[2] = titleID & 0xffffffff;
|
||||||
cmdbuf[3] = (u32)(titleID >> 32);
|
cmdbuf[3] = (u32)(titleID >> 32);
|
||||||
@ -214,9 +215,9 @@ Result AM_GetCiaFileInfo(u8 mediatype, TitleList *titleEntry, Handle fileHandle)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x04080042;
|
cmdbuf[0] = IPC_MakeHeader(0x408,1,2); // 0x04080042
|
||||||
cmdbuf[1] = mediatype;
|
cmdbuf[1] = mediatype;
|
||||||
cmdbuf[2] = 0;
|
cmdbuf[2] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[3] = fileHandle;
|
cmdbuf[3] = fileHandle;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(amHandle))!=0) return ret;
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/apt.h>
|
#include <3ds/services/apt.h>
|
||||||
#include <3ds/services/gsp.h>
|
#include <3ds/services/gsp.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
|
|
||||||
#define APT_HANDLER_STACKSIZE (0x1000)
|
#define APT_HANDLER_STACKSIZE (0x1000)
|
||||||
@ -714,7 +715,7 @@ void aptSignalReadyForSleep(void)
|
|||||||
Result APT_GetLockHandle(u16 flags, Handle* lockHandle)
|
Result APT_GetLockHandle(u16 flags, Handle* lockHandle)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x10040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x1,1,0); // 0x10040
|
||||||
cmdbuf[1]=flags;
|
cmdbuf[1]=flags;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -728,7 +729,7 @@ Result APT_GetLockHandle(u16 flags, Handle* lockHandle)
|
|||||||
Result APT_Initialize(NS_APPID appId, Handle* eventHandle1, Handle* eventHandle2)
|
Result APT_Initialize(NS_APPID appId, Handle* eventHandle1, Handle* eventHandle2)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x20080; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x2,2,0); // 0x20080
|
||||||
cmdbuf[1]=appId;
|
cmdbuf[1]=appId;
|
||||||
cmdbuf[2]=0x0;
|
cmdbuf[2]=0x0;
|
||||||
|
|
||||||
@ -744,7 +745,7 @@ Result APT_Initialize(NS_APPID appId, Handle* eventHandle1, Handle* eventHandle2
|
|||||||
Result APT_Finalize(NS_APPID appId)
|
Result APT_Finalize(NS_APPID appId)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x40040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x4,1,0); // 0x40040
|
||||||
cmdbuf[1]=appId;
|
cmdbuf[1]=appId;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -755,7 +756,7 @@ Result APT_Finalize(NS_APPID appId)
|
|||||||
Result APT_HardwareResetAsync()
|
Result APT_HardwareResetAsync()
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x4E0000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x4E,0,0); // 0x4E0000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -766,7 +767,7 @@ Result APT_HardwareResetAsync()
|
|||||||
Result APT_Enable(u32 a)
|
Result APT_Enable(u32 a)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x30040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x3,1,0); // 0x30040
|
||||||
cmdbuf[1]=a;
|
cmdbuf[1]=a;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -778,7 +779,7 @@ Result APT_Enable(u32 a)
|
|||||||
Result APT_GetAppletManInfo(u8 inval, u8 *outval8, u32 *outval32, NS_APPID *menu_appid, NS_APPID *active_appid)
|
Result APT_GetAppletManInfo(u8 inval, u8 *outval8, u32 *outval32, NS_APPID *menu_appid, NS_APPID *active_appid)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x00050040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x5,1,0); // 0x50040
|
||||||
cmdbuf[1]=inval;
|
cmdbuf[1]=inval;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -795,7 +796,7 @@ Result APT_GetAppletManInfo(u8 inval, u8 *outval8, u32 *outval32, NS_APPID *menu
|
|||||||
Result APT_GetAppletInfo(NS_APPID appID, u64* pProgramID, u8* pMediaType, u8* pRegistered, u8* pLoadState, u32* pAttributes)
|
Result APT_GetAppletInfo(NS_APPID appID, u64* pProgramID, u8* pMediaType, u8* pRegistered, u8* pLoadState, u32* pAttributes)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x00060040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x6,1,0); // 0x60040
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -813,7 +814,7 @@ Result APT_GetAppletInfo(NS_APPID appID, u64* pProgramID, u8* pMediaType, u8* pR
|
|||||||
Result APT_GetAppletProgramInfo(u32 id, u32 flags, u16 *titleversion)
|
Result APT_GetAppletProgramInfo(u32 id, u32 flags, u16 *titleversion)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x004D0080; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x4D,2,0); // 0x4D0080
|
||||||
cmdbuf[1]=id;
|
cmdbuf[1]=id;
|
||||||
cmdbuf[2]=flags;
|
cmdbuf[2]=flags;
|
||||||
|
|
||||||
@ -828,8 +829,8 @@ Result APT_GetAppletProgramInfo(u32 id, u32 flags, u16 *titleversion)
|
|||||||
Result APT_GetProgramID(u64* pProgramID)
|
Result APT_GetProgramID(u64* pProgramID)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00580002; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x58,0,2); // 0x580002
|
||||||
cmdbuf[1] = 0x20;
|
cmdbuf[1] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -847,7 +848,7 @@ Result APT_GetProgramID(u64* pProgramID)
|
|||||||
Result APT_IsRegistered(NS_APPID appID, u8* out)
|
Result APT_IsRegistered(NS_APPID appID, u8* out)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x90040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x9,1,0); // 0x90040
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -861,7 +862,7 @@ Result APT_IsRegistered(NS_APPID appID, u8* out)
|
|||||||
Result APT_InquireNotification(u32 appID, u8* signalType)
|
Result APT_InquireNotification(u32 appID, u8* signalType)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0xB0040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0xB,1,0); // 0xB0040
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -872,10 +873,10 @@ Result APT_InquireNotification(u32 appID, u8* signalType)
|
|||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result APT_PrepareToJumpToHomeMenu()
|
Result APT_PrepareToJumpToHomeMenu(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x2b0000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x2B,0,0); // 0x2B0000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -883,25 +884,26 @@ Result APT_PrepareToJumpToHomeMenu()
|
|||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result APT_JumpToHomeMenu(u32 a, u32 b, u32 c)
|
Result APT_JumpToHomeMenu(const u8 *param, size_t paramSize, Handle handle)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x2C0044; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x2C,1,4); // 0x2C0044
|
||||||
cmdbuf[1]=a;
|
cmdbuf[1]=paramSize;
|
||||||
cmdbuf[2]=b;
|
cmdbuf[2]=IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[3]=c;
|
cmdbuf[3]=handle;
|
||||||
cmdbuf[4]=(b<<14)|2;
|
cmdbuf[4]=IPC_Desc_StaticBuffer(paramSize,0);
|
||||||
|
cmdbuf[5]= (u32) param;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
|
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result APT_PrepareToJumpToApplication(u32 a)
|
Result APT_PrepareToJumpToApplication(u32 a)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x230040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x23,1,0); // 0x230040
|
||||||
cmdbuf[1]=a;
|
cmdbuf[1]=a;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -910,14 +912,15 @@ Result APT_PrepareToJumpToApplication(u32 a)
|
|||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result APT_JumpToApplication(u32 a, u32 b, u32 c)
|
Result APT_JumpToApplication(const u8 *param, size_t paramSize, Handle handle)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x240044; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x24,1,4); // 0x240044
|
||||||
cmdbuf[1]=a;
|
cmdbuf[1]=paramSize;
|
||||||
cmdbuf[2]=b;
|
cmdbuf[2]=IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[3]=c;
|
cmdbuf[3]=handle;
|
||||||
cmdbuf[4]=(b<<14)|2;
|
cmdbuf[4]=IPC_Desc_StaticBuffer(paramSize,0);
|
||||||
|
cmdbuf[5]= (u32) param;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -928,7 +931,7 @@ Result APT_JumpToApplication(u32 a, u32 b, u32 c)
|
|||||||
Result APT_NotifyToWait(NS_APPID appID)
|
Result APT_NotifyToWait(NS_APPID appID)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x430040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x43,1,0); // 0x430040
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -940,15 +943,16 @@ Result APT_NotifyToWait(NS_APPID appID)
|
|||||||
Result APT_AppletUtility(u32* out, u32 a, u32 size1, u8* buf1, u32 size2, u8* buf2)
|
Result APT_AppletUtility(u32* out, u32 a, u32 size1, u8* buf1, u32 size2, u8* buf2)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x4B00C2; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x4B,3,2); // 0x4B00C2
|
||||||
cmdbuf[1]=a;
|
cmdbuf[1]=a;
|
||||||
cmdbuf[2]=size1;
|
cmdbuf[2]=size1;
|
||||||
cmdbuf[3]=size2;
|
cmdbuf[3]=size2;
|
||||||
cmdbuf[4]=(size1<<14)|0x402;
|
cmdbuf[4]=IPC_Desc_StaticBuffer(size1,1);
|
||||||
cmdbuf[5]=(u32)buf1;
|
cmdbuf[5]=(u32)buf1;
|
||||||
|
|
||||||
cmdbuf[0+0x100/4]=(size2<<14)|2;
|
u32 *staticbufs = getThreadStaticBuffers();
|
||||||
cmdbuf[1+0x100/4]=(u32)buf2;
|
staticbufs[0]=IPC_Desc_StaticBuffer(size2,0);
|
||||||
|
staticbufs[1]=(u32)buf2;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -961,12 +965,13 @@ Result APT_AppletUtility(u32* out, u32 a, u32 size1, u8* buf1, u32 size2, u8* bu
|
|||||||
Result APT_GlanceParameter(NS_APPID appID, u32 bufferSize, u32* buffer, u32* actualSize, u8* signalType)
|
Result APT_GlanceParameter(NS_APPID appID, u32 bufferSize, u32* buffer, u32* actualSize, u8* signalType)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0xE0080; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0xE,2,0); // 0xE0080
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
cmdbuf[2]=bufferSize;
|
cmdbuf[2]=bufferSize;
|
||||||
|
|
||||||
cmdbuf[0+0x100/4]=(bufferSize<<14)|2;
|
u32 *staticbufs = getThreadStaticBuffers();
|
||||||
cmdbuf[1+0x100/4]=(u32)buffer;
|
staticbufs[0]=IPC_Desc_StaticBuffer(bufferSize,0);
|
||||||
|
staticbufs[1]=(u32)buffer;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -980,12 +985,13 @@ Result APT_GlanceParameter(NS_APPID appID, u32 bufferSize, u32* buffer, u32* act
|
|||||||
Result APT_ReceiveParameter(NS_APPID appID, u32 bufferSize, u32* buffer, u32* actualSize, u8* signalType)
|
Result APT_ReceiveParameter(NS_APPID appID, u32 bufferSize, u32* buffer, u32* actualSize, u8* signalType)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0xD0080; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0xD,2,0); // 0xD0080
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
cmdbuf[2]=bufferSize;
|
cmdbuf[2]=bufferSize;
|
||||||
|
|
||||||
cmdbuf[0+0x100/4]=(bufferSize<<14)|2;
|
u32 *staticbufs = getThreadStaticBuffers();
|
||||||
cmdbuf[1+0x100/4]=(u32)buffer;
|
staticbufs[0]=IPC_Desc_StaticBuffer(bufferSize,0);
|
||||||
|
staticbufs[1]=(u32)buffer;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -1000,16 +1006,16 @@ Result APT_SendParameter(NS_APPID src_appID, NS_APPID dst_appID, u32 bufferSize,
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000C0104; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0xC,4,4); // 0xC0104
|
||||||
cmdbuf[1] = src_appID;
|
cmdbuf[1] = src_appID;
|
||||||
cmdbuf[2] = dst_appID;
|
cmdbuf[2] = dst_appID;
|
||||||
cmdbuf[3] = signalType;
|
cmdbuf[3] = signalType;
|
||||||
cmdbuf[4] = bufferSize;
|
cmdbuf[4] = bufferSize;
|
||||||
|
|
||||||
cmdbuf[5]=0x0;
|
cmdbuf[5] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[6] = paramhandle;
|
cmdbuf[6] = paramhandle;
|
||||||
|
|
||||||
cmdbuf[7] = (bufferSize<<14) | 2;
|
cmdbuf[7] = IPC_Desc_StaticBuffer(bufferSize,0);
|
||||||
cmdbuf[8] = (u32)buffer;
|
cmdbuf[8] = (u32)buffer;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1022,9 +1028,9 @@ Result APT_SendCaptureBufferInfo(u32 bufferSize, u32* buffer)
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00400042; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x40,1,2); // 0x400042
|
||||||
cmdbuf[1] = bufferSize;
|
cmdbuf[1] = bufferSize;
|
||||||
cmdbuf[2] = (bufferSize<<14) | 2;
|
cmdbuf[2] = IPC_Desc_StaticBuffer(bufferSize,0);
|
||||||
cmdbuf[3] = (u32)buffer;
|
cmdbuf[3] = (u32)buffer;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1036,7 +1042,7 @@ Result APT_SendCaptureBufferInfo(u32 bufferSize, u32* buffer)
|
|||||||
Result APT_ReplySleepQuery(NS_APPID appID, u32 a)
|
Result APT_ReplySleepQuery(NS_APPID appID, u32 a)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x3E0080; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x3E,2,0); // 0x3E0080
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
cmdbuf[2]=a;
|
cmdbuf[2]=a;
|
||||||
|
|
||||||
@ -1049,7 +1055,7 @@ Result APT_ReplySleepQuery(NS_APPID appID, u32 a)
|
|||||||
Result APT_ReplySleepNotificationComplete(NS_APPID appID)
|
Result APT_ReplySleepNotificationComplete(NS_APPID appID)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x3F0040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x3F,1,0); // 0x3F0040
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1061,7 +1067,7 @@ Result APT_ReplySleepNotificationComplete(NS_APPID appID)
|
|||||||
Result APT_PrepareToCloseApplication(u8 a)
|
Result APT_PrepareToCloseApplication(u8 a)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x220040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x22,1,0); // 0x220040
|
||||||
cmdbuf[1]=a;
|
cmdbuf[1]=a;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1070,15 +1076,15 @@ Result APT_PrepareToCloseApplication(u8 a)
|
|||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result APT_CloseApplication(u32 a, u32 b, u32 c)
|
Result APT_CloseApplication(const u8 *param, size_t paramSize, Handle handle)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x270044; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x27,1,4); // 0x270044
|
||||||
cmdbuf[1]=a;
|
cmdbuf[1]=paramSize;
|
||||||
cmdbuf[2]=0x0;
|
cmdbuf[2]=IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[3]=b;
|
cmdbuf[3]=handle;
|
||||||
cmdbuf[4]=(a<<14)|2;
|
cmdbuf[4]=IPC_Desc_StaticBuffer(paramSize,0);
|
||||||
cmdbuf[5]=c;
|
cmdbuf[5]= (u32) param;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -1090,7 +1096,7 @@ Result APT_CloseApplication(u32 a, u32 b, u32 c)
|
|||||||
Result APT_SetAppCpuTimeLimit(u32 percent)
|
Result APT_SetAppCpuTimeLimit(u32 percent)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x4F0080;
|
cmdbuf[0]=IPC_MakeHeader(0x4F,2,0); // 0x4F0080
|
||||||
cmdbuf[1]=1;
|
cmdbuf[1]=1;
|
||||||
cmdbuf[2]=percent;
|
cmdbuf[2]=percent;
|
||||||
|
|
||||||
@ -1103,7 +1109,7 @@ Result APT_SetAppCpuTimeLimit(u32 percent)
|
|||||||
Result APT_GetAppCpuTimeLimit(u32 *percent)
|
Result APT_GetAppCpuTimeLimit(u32 *percent)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x500040;
|
cmdbuf[0]=IPC_MakeHeader(0x50,1,0); // 0x500040
|
||||||
cmdbuf[1]=1;
|
cmdbuf[1]=1;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1118,7 +1124,7 @@ Result APT_GetAppCpuTimeLimit(u32 *percent)
|
|||||||
Result APT_CheckNew3DS_Application(u8 *out)
|
Result APT_CheckNew3DS_Application(u8 *out)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x01010000;
|
cmdbuf[0]=IPC_MakeHeader(0x101,0,0); // 0x1010000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -1137,7 +1143,7 @@ Result APT_CheckNew3DS_Application(u8 *out)
|
|||||||
Result APT_CheckNew3DS_System(u8 *out)
|
Result APT_CheckNew3DS_System(u8 *out)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x01020000;
|
cmdbuf[0]=IPC_MakeHeader(0x102,0,0); // 0x1020000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
if((ret=svcSendSyncRequest(aptuHandle)))return ret;
|
||||||
@ -1180,7 +1186,7 @@ Result APT_CheckNew3DS(u8 *out)
|
|||||||
Result APT_PrepareToDoAppJump(u8 flags, u64 programID, u8 mediatype)
|
Result APT_PrepareToDoAppJump(u8 flags, u64 programID, u8 mediatype)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x310100; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x31,4,0); // 0x310100
|
||||||
cmdbuf[1]=flags;
|
cmdbuf[1]=flags;
|
||||||
cmdbuf[2]=(u32)programID;
|
cmdbuf[2]=(u32)programID;
|
||||||
cmdbuf[3]=(u32)(programID>>32);
|
cmdbuf[3]=(u32)(programID>>32);
|
||||||
@ -1195,12 +1201,12 @@ Result APT_PrepareToDoAppJump(u8 flags, u64 programID, u8 mediatype)
|
|||||||
Result APT_DoAppJump(u32 NSbuf0Size, u32 NSbuf1Size, u8 *NSbuf0Ptr, u8 *NSbuf1Ptr)
|
Result APT_DoAppJump(u32 NSbuf0Size, u32 NSbuf1Size, u8 *NSbuf0Ptr, u8 *NSbuf1Ptr)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x320084; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x32,2,4); // 0x320084
|
||||||
cmdbuf[1]=NSbuf0Size;
|
cmdbuf[1]=NSbuf0Size;
|
||||||
cmdbuf[2]=NSbuf1Size;
|
cmdbuf[2]=NSbuf1Size;
|
||||||
cmdbuf[3]=(NSbuf0Size<<14)|2;
|
cmdbuf[3]=IPC_Desc_StaticBuffer(NSbuf0Size,0);
|
||||||
cmdbuf[4]=(u32)NSbuf0Ptr;
|
cmdbuf[4]=(u32)NSbuf0Ptr;
|
||||||
cmdbuf[5]=(NSbuf1Size<<14)|0x802;
|
cmdbuf[5]=IPC_Desc_StaticBuffer(NSbuf1Size,2);
|
||||||
cmdbuf[6]=(u32)NSbuf1Ptr;
|
cmdbuf[6]=(u32)NSbuf1Ptr;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1212,7 +1218,7 @@ Result APT_DoAppJump(u32 NSbuf0Size, u32 NSbuf1Size, u8 *NSbuf0Ptr, u8 *NSbuf1Pt
|
|||||||
Result APT_PrepareToStartLibraryApplet(NS_APPID appID)
|
Result APT_PrepareToStartLibraryApplet(NS_APPID appID)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x180040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x18,1,0); // 0x180040
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1224,12 +1230,12 @@ Result APT_PrepareToStartLibraryApplet(NS_APPID appID)
|
|||||||
Result APT_StartLibraryApplet(NS_APPID appID, Handle inhandle, u32 *parambuf, u32 parambufsize)
|
Result APT_StartLibraryApplet(NS_APPID appID, Handle inhandle, u32 *parambuf, u32 parambufsize)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x1E0084; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x1E,2,4); // 0x1E0084
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
cmdbuf[2]=parambufsize;
|
cmdbuf[2]=parambufsize;
|
||||||
cmdbuf[3]=0;
|
cmdbuf[3]=IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[4]=inhandle;
|
cmdbuf[4]=inhandle;
|
||||||
cmdbuf[5]=(parambufsize<<14)|2;
|
cmdbuf[5]=IPC_Desc_StaticBuffer(parambufsize,0);
|
||||||
cmdbuf[6]=(u32)parambuf;
|
cmdbuf[6]=(u32)parambuf;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1303,7 +1309,7 @@ Result APT_LaunchLibraryApplet(NS_APPID appID, Handle inhandle, u32 *parambuf, u
|
|||||||
Result APT_PrepareToStartSystemApplet(NS_APPID appID)
|
Result APT_PrepareToStartSystemApplet(NS_APPID appID)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x00190040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x19,1,0); // 0x190040
|
||||||
cmdbuf[1]=appID;
|
cmdbuf[1]=appID;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -1315,12 +1321,12 @@ Result APT_PrepareToStartSystemApplet(NS_APPID appID)
|
|||||||
Result APT_StartSystemApplet(NS_APPID appID, u32 bufSize, Handle applHandle, u8 *buf)
|
Result APT_StartSystemApplet(NS_APPID appID, u32 bufSize, Handle applHandle, u8 *buf)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x001F0084; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x1F,2,4); // 0x001F0084
|
||||||
cmdbuf[1] = appID;
|
cmdbuf[1] = appID;
|
||||||
cmdbuf[2] = bufSize;
|
cmdbuf[2] = bufSize;
|
||||||
cmdbuf[3] = 0;
|
cmdbuf[3] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[4] = applHandle;
|
cmdbuf[4] = applHandle;
|
||||||
cmdbuf[5] = (bufSize<<14) | 2;
|
cmdbuf[5] = IPC_Desc_StaticBuffer(bufSize,0);
|
||||||
cmdbuf[6] = (u32)buf;
|
cmdbuf[6] = (u32)buf;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/cfgnor.h>
|
#include <3ds/services/cfgnor.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
Handle CFGNOR_handle = 0;
|
Handle CFGNOR_handle = 0;
|
||||||
|
|
||||||
@ -14,7 +15,7 @@ Result CFGNOR_Initialize(u8 value)
|
|||||||
ret = srvGetServiceHandle(&CFGNOR_handle, "cfg:nor");
|
ret = srvGetServiceHandle(&CFGNOR_handle, "cfg:nor");
|
||||||
if(ret!=0)return ret;
|
if(ret!=0)return ret;
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010040;
|
cmdbuf[0] = IPC_MakeHeader(0x1,1,0); // 0x10040
|
||||||
cmdbuf[1] = (u32)value;
|
cmdbuf[1] = (u32)value;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGNOR_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGNOR_handle))!=0)return ret;
|
||||||
@ -28,7 +29,7 @@ Result CFGNOR_Shutdown()
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00020000;
|
cmdbuf[0] = IPC_MakeHeader(0x2,0,0); // 0x20000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGNOR_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGNOR_handle))!=0)return ret;
|
||||||
ret = (Result)cmdbuf[1];
|
ret = (Result)cmdbuf[1];
|
||||||
@ -44,10 +45,10 @@ Result CFGNOR_ReadData(u32 offset, u32 *buf, u32 size)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00050082;
|
cmdbuf[0] = IPC_MakeHeader(0x5,2,2); // 0x50082
|
||||||
cmdbuf[1] = offset;
|
cmdbuf[1] = offset;
|
||||||
cmdbuf[2] = size;
|
cmdbuf[2] = size;
|
||||||
cmdbuf[3] = (size<<4) | 12;
|
cmdbuf[3] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
|
||||||
cmdbuf[4] = (u32)buf;
|
cmdbuf[4] = (u32)buf;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGNOR_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGNOR_handle))!=0)return ret;
|
||||||
@ -61,10 +62,10 @@ Result CFGNOR_WriteData(u32 offset, u32 *buf, u32 size)
|
|||||||
u32 ret = 0;
|
u32 ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00060082;
|
cmdbuf[0] = IPC_MakeHeader(0x6,2,2); // 0x60082
|
||||||
cmdbuf[1] = offset;
|
cmdbuf[1] = offset;
|
||||||
cmdbuf[2] = size;
|
cmdbuf[2] = size;
|
||||||
cmdbuf[3] = (size<<4) | 10;
|
cmdbuf[3] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
||||||
cmdbuf[4] = (u32)buf;
|
cmdbuf[4] = (u32)buf;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGNOR_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGNOR_handle))!=0)return ret;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/cfgu.h>
|
#include <3ds/services/cfgu.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle CFGU_handle = 0;
|
static Handle CFGU_handle = 0;
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ Result CFGU_SecureInfoGetRegion(u8* region)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00020000;
|
cmdbuf[0] = IPC_MakeHeader(0x2,0,0); // 0x20000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -38,7 +39,7 @@ Result CFGU_GenHashConsoleUnique(u32 appIDSalt, u64* hash)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00030040;
|
cmdbuf[0] = IPC_MakeHeader(0x3,1,0); // 0x30040
|
||||||
cmdbuf[1] = appIDSalt;
|
cmdbuf[1] = appIDSalt;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
||||||
@ -54,7 +55,7 @@ Result CFGU_GetRegionCanadaUSA(u8* value)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00040000;
|
cmdbuf[0] = IPC_MakeHeader(0x4,0,0); // 0x40000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -68,7 +69,7 @@ Result CFGU_GetSystemModel(u8* model)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00050000;
|
cmdbuf[0] = IPC_MakeHeader(0x5,0,0); // 0x50000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -82,7 +83,7 @@ Result CFGU_GetModelNintendo2DS(u8* value)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00060000;
|
cmdbuf[0] = IPC_MakeHeader(0x6,0,0); // 0x60000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -96,7 +97,7 @@ Result CFGU_GetCountryCodeString(u16 code, u16* string)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00090040;
|
cmdbuf[0] = IPC_MakeHeader(0x9,1,0); // 0x90040
|
||||||
cmdbuf[1] = (u32)code;
|
cmdbuf[1] = (u32)code;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
||||||
@ -111,7 +112,7 @@ Result CFGU_GetCountryCodeID(u16 string, u16* code)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000A0040;
|
cmdbuf[0] = IPC_MakeHeader(0xA,1,0); // 0xA0040
|
||||||
cmdbuf[1] = (u32)string;
|
cmdbuf[1] = (u32)string;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
||||||
@ -128,10 +129,10 @@ Result CFGU_GetConfigInfoBlk2(u32 size, u32 blkID, u8* outData)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010082;
|
cmdbuf[0] = IPC_MakeHeader(0x1,2,2); // 0x10082
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = size;
|
||||||
cmdbuf[2] = blkID;
|
cmdbuf[2] = blkID;
|
||||||
cmdbuf[3] = (size<<4)|12;
|
cmdbuf[3] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
|
||||||
cmdbuf[4] = (u32)outData;
|
cmdbuf[4] = (u32)outData;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(CFGU_handle))!=0)return ret;
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/os.h>
|
#include <3ds/os.h>
|
||||||
#include <3ds/services/csnd.h>
|
#include <3ds/services/csnd.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
// See here regarding CSND shared-mem commands, etc: http://3dbrew.org/wiki/CSND_Shared_Memory
|
// See here regarding CSND shared-mem commands, etc: http://3dbrew.org/wiki/CSND_Shared_Memory
|
||||||
|
|
||||||
@ -26,7 +27,7 @@ static Result CSND_Initialize(void)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010140;
|
cmdbuf[0] = IPC_MakeHeader(0x1,5,0); // 0x10140
|
||||||
cmdbuf[1] = csndSharedMemSize;
|
cmdbuf[1] = csndSharedMemSize;
|
||||||
memcpy(&cmdbuf[2], &csndOffsets[0], 4*sizeof(u32));
|
memcpy(&cmdbuf[2], &csndOffsets[0], 4*sizeof(u32));
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ static Result CSND_Shutdown()
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00020000;
|
cmdbuf[0] = IPC_MakeHeader(0x2,0,0); // 0x20000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
||||||
|
|
||||||
@ -55,7 +56,7 @@ static Result CSND_AcquireSoundChannels(u32* channelMask)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00050000;
|
cmdbuf[0] = IPC_MakeHeader(0x5,0,0); // 0x50000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ static Result CSND_ReleaseSoundChannels(void)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00060000;
|
cmdbuf[0] = IPC_MakeHeader(0x6,0,0); // 0x60000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
||||||
|
|
||||||
@ -81,7 +82,7 @@ Result CSND_AcquireCapUnit(u32* capUnit)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00070000;
|
cmdbuf[0] = IPC_MakeHeader(0x7,0,0); // 0x70000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ Result CSND_ReleaseCapUnit(u32 capUnit)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00080040;
|
cmdbuf[0] = IPC_MakeHeader(0x8,1,0); // 0x80040
|
||||||
cmdbuf[1] = capUnit;
|
cmdbuf[1] = capUnit;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
||||||
@ -108,7 +109,7 @@ Result CSND_Reset(void)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000C0000;
|
cmdbuf[0] = IPC_MakeHeader(0xC,0,0); // 0xC0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
||||||
|
|
||||||
@ -169,7 +170,7 @@ static Result CSND_ExecuteCommands(u32 offset)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00030040;
|
cmdbuf[0] = IPC_MakeHeader(0x3,1,0); // 0x30040
|
||||||
cmdbuf[1] = offset;
|
cmdbuf[1] = offset;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(csndHandle))!=0)return ret;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/fs.h>
|
#include <3ds/services/fs.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
/*! @internal
|
/*! @internal
|
||||||
*
|
*
|
||||||
@ -105,8 +106,8 @@ FSUSER_Initialize(Handle handle)
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08010002;
|
cmdbuf[0] = IPC_MakeHeader(0x801,0,2); // 0x8010002
|
||||||
cmdbuf[1] = 0x20;
|
cmdbuf[1] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(handle)))
|
if((ret = svcSendSyncRequest(handle)))
|
||||||
@ -165,7 +166,7 @@ FSUSER_OpenFile(Handle *out,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x080201C2;
|
cmdbuf[0] = IPC_MakeHeader(0x802,7,2); // 0x80201C2
|
||||||
cmdbuf[1] = 0;
|
cmdbuf[1] = 0;
|
||||||
cmdbuf[2] = archive.handleLow;
|
cmdbuf[2] = archive.handleLow;
|
||||||
cmdbuf[3] = archive.handleHigh;
|
cmdbuf[3] = archive.handleHigh;
|
||||||
@ -173,7 +174,7 @@ FSUSER_OpenFile(Handle *out,
|
|||||||
cmdbuf[5] = fileLowPath.size;
|
cmdbuf[5] = fileLowPath.size;
|
||||||
cmdbuf[6] = openFlags;
|
cmdbuf[6] = openFlags;
|
||||||
cmdbuf[7] = attributes;
|
cmdbuf[7] = attributes;
|
||||||
cmdbuf[8] = (fileLowPath.size << 14) | 0x2;
|
cmdbuf[8] = IPC_Desc_StaticBuffer(fileLowPath.size,0);
|
||||||
cmdbuf[9] = (u32)fileLowPath.data;
|
cmdbuf[9] = (u32)fileLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -239,7 +240,7 @@ FSUSER_OpenFileDirectly(Handle *out,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[ 0] = 0x08030204;
|
cmdbuf[ 0] = IPC_MakeHeader(0x803,8,4); // 0x8030204
|
||||||
cmdbuf[ 1] = 0;
|
cmdbuf[ 1] = 0;
|
||||||
cmdbuf[ 2] = archive.id;
|
cmdbuf[ 2] = archive.id;
|
||||||
cmdbuf[ 3] = archive.lowPath.type;
|
cmdbuf[ 3] = archive.lowPath.type;
|
||||||
@ -248,9 +249,9 @@ FSUSER_OpenFileDirectly(Handle *out,
|
|||||||
cmdbuf[ 6] = fileLowPath.size;
|
cmdbuf[ 6] = fileLowPath.size;
|
||||||
cmdbuf[ 7] = openFlags;
|
cmdbuf[ 7] = openFlags;
|
||||||
cmdbuf[ 8] = attributes;
|
cmdbuf[ 8] = attributes;
|
||||||
cmdbuf[ 9] = (archive.lowPath.size << 14) | 0x802;
|
cmdbuf[ 9] = IPC_Desc_StaticBuffer(archive.lowPath.size,2);
|
||||||
cmdbuf[10] = (u32)archive.lowPath.data;
|
cmdbuf[10] = (u32)archive.lowPath.data;
|
||||||
cmdbuf[11] = (fileLowPath.size << 14) | 0x2;
|
cmdbuf[11] = IPC_Desc_StaticBuffer(fileLowPath.size,0);
|
||||||
cmdbuf[12] = (u32)fileLowPath.data;
|
cmdbuf[12] = (u32)fileLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -298,13 +299,13 @@ FSUSER_DeleteFile(FS_archive archive,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08040142;
|
cmdbuf[0] = IPC_MakeHeader(0x804,5,2); // 0x8040142
|
||||||
cmdbuf[1] = 0;
|
cmdbuf[1] = 0;
|
||||||
cmdbuf[2] = archive.handleLow;
|
cmdbuf[2] = archive.handleLow;
|
||||||
cmdbuf[3] = archive.handleHigh;
|
cmdbuf[3] = archive.handleHigh;
|
||||||
cmdbuf[4] = fileLowPath.type;
|
cmdbuf[4] = fileLowPath.type;
|
||||||
cmdbuf[5] = fileLowPath.size;
|
cmdbuf[5] = fileLowPath.size;
|
||||||
cmdbuf[6] = (fileLowPath.size << 14) | 0x2;
|
cmdbuf[6] = IPC_Desc_StaticBuffer(fileLowPath.size ,0);
|
||||||
cmdbuf[7] = (u32)fileLowPath.data;
|
cmdbuf[7] = (u32)fileLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -359,7 +360,7 @@ FSUSER_RenameFile(FS_archive srcArchive,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08050244;
|
cmdbuf[0] = IPC_MakeHeader(0x805,9,4); // 0x8050244
|
||||||
cmdbuf[1] = 0;
|
cmdbuf[1] = 0;
|
||||||
cmdbuf[2] = srcArchive.handleLow;
|
cmdbuf[2] = srcArchive.handleLow;
|
||||||
cmdbuf[3] = srcArchive.handleHigh;
|
cmdbuf[3] = srcArchive.handleHigh;
|
||||||
@ -369,9 +370,9 @@ FSUSER_RenameFile(FS_archive srcArchive,
|
|||||||
cmdbuf[7] = destArchive.handleHigh;
|
cmdbuf[7] = destArchive.handleHigh;
|
||||||
cmdbuf[8] = destFileLowPath.type;
|
cmdbuf[8] = destFileLowPath.type;
|
||||||
cmdbuf[9] = destFileLowPath.size;
|
cmdbuf[9] = destFileLowPath.size;
|
||||||
cmdbuf[10] = (srcFileLowPath.size << 14) | 0x402;
|
cmdbuf[10] = IPC_Desc_StaticBuffer(srcFileLowPath.size,1);
|
||||||
cmdbuf[11] = (u32)srcFileLowPath.data;
|
cmdbuf[11] = (u32)srcFileLowPath.data;
|
||||||
cmdbuf[12] = (destFileLowPath.size << 14) | 0x802;
|
cmdbuf[12] = IPC_Desc_StaticBuffer(destFileLowPath.size,2);
|
||||||
cmdbuf[13] = (u32)destFileLowPath.data;
|
cmdbuf[13] = (u32)destFileLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -416,13 +417,13 @@ FSUSER_DeleteDirectory(FS_archive archive,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08060142;
|
cmdbuf[0] = IPC_MakeHeader(0x806,5,2); // 0x8060142
|
||||||
cmdbuf[1] = 0;
|
cmdbuf[1] = 0;
|
||||||
cmdbuf[2] = archive.handleLow;
|
cmdbuf[2] = archive.handleLow;
|
||||||
cmdbuf[3] = archive.handleHigh;
|
cmdbuf[3] = archive.handleHigh;
|
||||||
cmdbuf[4] = dirLowPath.type;
|
cmdbuf[4] = dirLowPath.type;
|
||||||
cmdbuf[5] = dirLowPath.size;
|
cmdbuf[5] = dirLowPath.size;
|
||||||
cmdbuf[6] = (dirLowPath.size << 14) | 0x2;
|
cmdbuf[6] = IPC_Desc_StaticBuffer(dirLowPath.size,0);
|
||||||
cmdbuf[7] = (u32)dirLowPath.data;
|
cmdbuf[7] = (u32)dirLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -467,13 +468,13 @@ FSUSER_DeleteDirectoryRecursively(FS_archive archive,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08070142;
|
cmdbuf[0] = IPC_MakeHeader(0x807,5,2); // 0x8070142
|
||||||
cmdbuf[1] = 0;
|
cmdbuf[1] = 0;
|
||||||
cmdbuf[2] = archive.handleLow;
|
cmdbuf[2] = archive.handleLow;
|
||||||
cmdbuf[3] = archive.handleHigh;
|
cmdbuf[3] = archive.handleHigh;
|
||||||
cmdbuf[4] = dirLowPath.type;
|
cmdbuf[4] = dirLowPath.type;
|
||||||
cmdbuf[5] = dirLowPath.size;
|
cmdbuf[5] = dirLowPath.size;
|
||||||
cmdbuf[6] = (dirLowPath.size << 14) | 0x2;
|
cmdbuf[6] = IPC_Desc_StaticBuffer(dirLowPath.size,0);
|
||||||
cmdbuf[7] = (u32)dirLowPath.data;
|
cmdbuf[7] = (u32)dirLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -523,7 +524,7 @@ FSUSER_CreateFile(FS_archive archive,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08080202;
|
cmdbuf[0] = IPC_MakeHeader(0x808,8,2); // 0x8080202
|
||||||
cmdbuf[1] = 0;
|
cmdbuf[1] = 0;
|
||||||
cmdbuf[2] = archive.handleLow;
|
cmdbuf[2] = archive.handleLow;
|
||||||
cmdbuf[3] = archive.handleHigh;
|
cmdbuf[3] = archive.handleHigh;
|
||||||
@ -532,7 +533,7 @@ FSUSER_CreateFile(FS_archive archive,
|
|||||||
cmdbuf[6] = 0;
|
cmdbuf[6] = 0;
|
||||||
cmdbuf[7] = fileSize;
|
cmdbuf[7] = fileSize;
|
||||||
cmdbuf[8] = 0;
|
cmdbuf[8] = 0;
|
||||||
cmdbuf[9] = (fileLowPath.size << 14) | 0x2;
|
cmdbuf[9] = IPC_Desc_StaticBuffer(fileLowPath.size,0);
|
||||||
cmdbuf[10] = (u32)fileLowPath.data;
|
cmdbuf[10] = (u32)fileLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -578,14 +579,14 @@ FSUSER_CreateDirectory(FS_archive archive,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08090182;
|
cmdbuf[0] = IPC_MakeHeader(0x809,6,2); // 0x8090182
|
||||||
cmdbuf[1] = 0;
|
cmdbuf[1] = 0;
|
||||||
cmdbuf[2] = archive.handleLow;
|
cmdbuf[2] = archive.handleLow;
|
||||||
cmdbuf[3] = archive.handleHigh;
|
cmdbuf[3] = archive.handleHigh;
|
||||||
cmdbuf[4] = dirLowPath.type;
|
cmdbuf[4] = dirLowPath.type;
|
||||||
cmdbuf[5] = dirLowPath.size;
|
cmdbuf[5] = dirLowPath.size;
|
||||||
cmdbuf[6] = 0;
|
cmdbuf[6] = 0;
|
||||||
cmdbuf[7] = (dirLowPath.size << 14) | 0x2;
|
cmdbuf[7] = IPC_Desc_StaticBuffer(dirLowPath.size,0);
|
||||||
cmdbuf[8] = (u32)dirLowPath.data;
|
cmdbuf[8] = (u32)dirLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -640,7 +641,7 @@ FSUSER_RenameDirectory(FS_archive srcArchive,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x080A0244;
|
cmdbuf[0] = IPC_MakeHeader(0x80A,9,4); // 0x80A0244
|
||||||
cmdbuf[1] = 0;
|
cmdbuf[1] = 0;
|
||||||
cmdbuf[2] = srcArchive.handleLow;
|
cmdbuf[2] = srcArchive.handleLow;
|
||||||
cmdbuf[3] = srcArchive.handleHigh;
|
cmdbuf[3] = srcArchive.handleHigh;
|
||||||
@ -650,9 +651,9 @@ FSUSER_RenameDirectory(FS_archive srcArchive,
|
|||||||
cmdbuf[7] = destArchive.handleHigh;
|
cmdbuf[7] = destArchive.handleHigh;
|
||||||
cmdbuf[8] = destDirLowPath.type;
|
cmdbuf[8] = destDirLowPath.type;
|
||||||
cmdbuf[9] = destDirLowPath.size;
|
cmdbuf[9] = destDirLowPath.size;
|
||||||
cmdbuf[10] = (srcDirLowPath.size << 14) | 0x402;
|
cmdbuf[10] = IPC_Desc_StaticBuffer(srcDirLowPath.size,1);
|
||||||
cmdbuf[11] = (u32)srcDirLowPath.data;
|
cmdbuf[11] = (u32)srcDirLowPath.data;
|
||||||
cmdbuf[12] = (destDirLowPath.size << 14) | 0x802;
|
cmdbuf[12] = IPC_Desc_StaticBuffer(destDirLowPath.size,2);
|
||||||
cmdbuf[13] = (u32)destDirLowPath.data;
|
cmdbuf[13] = (u32)destDirLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -699,12 +700,12 @@ FSUSER_OpenDirectory(Handle *out,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x080B0102;
|
cmdbuf[0] = IPC_MakeHeader(0x80B,4,2); // 0x80B0102
|
||||||
cmdbuf[1] = archive.handleLow;
|
cmdbuf[1] = archive.handleLow;
|
||||||
cmdbuf[2] = archive.handleHigh;
|
cmdbuf[2] = archive.handleHigh;
|
||||||
cmdbuf[3] = dirLowPath.type;
|
cmdbuf[3] = dirLowPath.type;
|
||||||
cmdbuf[4] = dirLowPath.size;
|
cmdbuf[4] = dirLowPath.size;
|
||||||
cmdbuf[5] = (dirLowPath.size << 14) | 0x2;
|
cmdbuf[5] = IPC_Desc_StaticBuffer(dirLowPath.size,0);
|
||||||
cmdbuf[6] = (u32)dirLowPath.data;
|
cmdbuf[6] = (u32)dirLowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -753,11 +754,11 @@ FSUSER_OpenArchive(FS_archive *archive)
|
|||||||
|
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x080C00C2;
|
cmdbuf[0] = IPC_MakeHeader(0x80C,3,2); // 0x80C00C2
|
||||||
cmdbuf[1] = archive->id;
|
cmdbuf[1] = archive->id;
|
||||||
cmdbuf[2] = archive->lowPath.type;
|
cmdbuf[2] = archive->lowPath.type;
|
||||||
cmdbuf[3] = archive->lowPath.size;
|
cmdbuf[3] = archive->lowPath.size;
|
||||||
cmdbuf[4] = (archive->lowPath.size << 14) | 0x2;
|
cmdbuf[4] = IPC_Desc_StaticBuffer(archive->lowPath.size,0);
|
||||||
cmdbuf[5] = (u32)archive->lowPath.data;
|
cmdbuf[5] = (u32)archive->lowPath.data;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -802,7 +803,7 @@ FSUSER_CloseArchive(FS_archive *archive)
|
|||||||
|
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x080E0080;
|
cmdbuf[0] = IPC_MakeHeader(0x80E,2,0); // 0x80E0080
|
||||||
cmdbuf[1] = archive->handleLow;
|
cmdbuf[1] = archive->handleLow;
|
||||||
cmdbuf[2] = archive->handleHigh;
|
cmdbuf[2] = archive->handleHigh;
|
||||||
|
|
||||||
@ -849,7 +850,7 @@ FSUSER_GetSdmcArchiveResource(u32 *sectorSize,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08140000;
|
cmdbuf[0] = IPC_MakeHeader(0x814,0,0); // 0x8140000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(fsuHandle)))
|
if((ret = svcSendSyncRequest(fsuHandle)))
|
||||||
@ -906,7 +907,7 @@ FSUSER_GetNandArchiveResource(u32 *sectorSize,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08150000;
|
cmdbuf[0] = IPC_MakeHeader(0x815,0,0); // 0x8150000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(fsuHandle)))
|
if((ret = svcSendSyncRequest(fsuHandle)))
|
||||||
@ -954,7 +955,7 @@ FSUSER_IsSdmcDetected(u8 *detected)
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08170000;
|
cmdbuf[0] = IPC_MakeHeader(0x817,0,0); // 0x8170000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(fsuHandle)))
|
if((ret = svcSendSyncRequest(fsuHandle)))
|
||||||
@ -992,7 +993,7 @@ FSUSER_GetMediaType(u8* mediatype)
|
|||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08680000;
|
cmdbuf[0] = IPC_MakeHeader(0x868,0,0); // 0x8680000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(fsuHandle)))
|
if((ret = svcSendSyncRequest(fsuHandle)))
|
||||||
@ -1031,7 +1032,7 @@ FSUSER_IsSdmcWritable(u8 *writable)
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08180000;
|
cmdbuf[0] = IPC_MakeHeader(0x818,0,0); // 0x8180000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(fsuHandle)))
|
if((ret = svcSendSyncRequest(fsuHandle)))
|
||||||
@ -1069,7 +1070,7 @@ FSFILE_Close(Handle handle)
|
|||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08080000;
|
cmdbuf[0] = IPC_MakeHeader(0x808,0,0); // 0x8080000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(handle)))
|
if((ret = svcSendSyncRequest(handle)))
|
||||||
@ -1121,11 +1122,11 @@ FSFILE_Read(Handle handle,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x080200C2;
|
cmdbuf[0] = IPC_MakeHeader(0x802,3,2); // 0x80200C2
|
||||||
cmdbuf[1] = (u32)offset;
|
cmdbuf[1] = (u32)offset;
|
||||||
cmdbuf[2] = (u32)(offset >> 32);
|
cmdbuf[2] = (u32)(offset >> 32);
|
||||||
cmdbuf[3] = size;
|
cmdbuf[3] = size;
|
||||||
cmdbuf[4] = (size << 4) | 0xC;
|
cmdbuf[4] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
|
||||||
cmdbuf[5] = (u32)buffer;
|
cmdbuf[5] = (u32)buffer;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -1189,12 +1190,12 @@ FSFILE_Write(Handle handle,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08030102;
|
cmdbuf[0] = IPC_MakeHeader(0x803,4,2); // 0x8030102
|
||||||
cmdbuf[1] = (u32)offset;
|
cmdbuf[1] = (u32)offset;
|
||||||
cmdbuf[2] = (u32)(offset >> 32);
|
cmdbuf[2] = (u32)(offset >> 32);
|
||||||
cmdbuf[3] = size;
|
cmdbuf[3] = size;
|
||||||
cmdbuf[4] = flushFlags;
|
cmdbuf[4] = flushFlags;
|
||||||
cmdbuf[5] = (size << 4) | 0xA;
|
cmdbuf[5] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
||||||
cmdbuf[6] = (u32)buffer;
|
cmdbuf[6] = (u32)buffer;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -1237,7 +1238,7 @@ FSFILE_GetSize(Handle handle,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08040000;
|
cmdbuf[0] = IPC_MakeHeader(0x804,0,0); // 0x8040000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(handle)))
|
if((ret = svcSendSyncRequest(handle)))
|
||||||
@ -1279,7 +1280,7 @@ FSFILE_SetSize(Handle handle,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08050080;
|
cmdbuf[0] = IPC_MakeHeader(0x805,2,0); // 0x8050080
|
||||||
cmdbuf[1] = (u32)size;
|
cmdbuf[1] = (u32)size;
|
||||||
cmdbuf[2] = (u32)(size >> 32);
|
cmdbuf[2] = (u32)(size >> 32);
|
||||||
|
|
||||||
@ -1320,7 +1321,7 @@ FSFILE_GetAttributes(Handle handle,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08060000;
|
cmdbuf[0] = IPC_MakeHeader(0x806,0,0); // 0x8060000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(handle)))
|
if((ret = svcSendSyncRequest(handle)))
|
||||||
@ -1361,7 +1362,7 @@ FSFILE_SetAttributes(Handle handle,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08070040;
|
cmdbuf[0] = IPC_MakeHeader(0x807,1,0); // 0x8070040
|
||||||
cmdbuf[1] = attributes;
|
cmdbuf[1] = attributes;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -1397,7 +1398,7 @@ FSFILE_Flush(Handle handle)
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08090000;
|
cmdbuf[0] = IPC_MakeHeader(0x809,0,0); // 0x8090000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(handle)))
|
if((ret = svcSendSyncRequest(handle)))
|
||||||
@ -1442,9 +1443,9 @@ FSDIR_Read(Handle handle,
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08010042;
|
cmdbuf[0] = IPC_MakeHeader(0x801,1,2); // 0x8010042
|
||||||
cmdbuf[1] = entryCount;
|
cmdbuf[1] = entryCount;
|
||||||
cmdbuf[2] = ((entryCount*0x228) << 4) | 0xC;
|
cmdbuf[2] = IPC_Desc_Buffer(entryCount*0x228,IPC_BUFFER_W);
|
||||||
cmdbuf[3] = (u32)buffer;
|
cmdbuf[3] = (u32)buffer;
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
@ -1483,7 +1484,7 @@ FSDIR_Close(Handle handle)
|
|||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x08020000;
|
cmdbuf[0] = IPC_MakeHeader(0x802,0,0); // 0x8020000
|
||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
if((ret = svcSendSyncRequest(handle)))
|
if((ret = svcSendSyncRequest(handle)))
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/hb.h>
|
#include <3ds/services/hb.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle hbHandle;
|
static Handle hbHandle;
|
||||||
|
|
||||||
@ -20,9 +21,9 @@ Result HB_FlushInvalidateCache(void)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010042;
|
cmdbuf[0] = IPC_MakeHeader(0x1,1,2); // 0x10042
|
||||||
cmdbuf[1] = 0x00000000;
|
cmdbuf[1] = 0x00000000;
|
||||||
cmdbuf[2] = 0x00000000;
|
cmdbuf[2] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[3] = CUR_PROCESS_HANDLE;
|
cmdbuf[3] = CUR_PROCESS_HANDLE;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(hbHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(hbHandle))!=0) return ret;
|
||||||
@ -35,7 +36,7 @@ Result HB_GetBootloaderAddresses(void** load3dsx, void** setArgv)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00060000;
|
cmdbuf[0] = IPC_MakeHeader(0x6,0,0); // 0x60000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(hbHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(hbHandle))!=0) return ret;
|
||||||
|
|
||||||
@ -50,7 +51,7 @@ Result HB_ReprotectMemory(u32* addr, u32 pages, u32 mode, u32* reprotectedPages)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000900C0;
|
cmdbuf[0] = IPC_MakeHeader(0x9,3,0); // 0x900C0
|
||||||
cmdbuf[1] = (u32)addr;
|
cmdbuf[1] = (u32)addr;
|
||||||
cmdbuf[2] = pages;
|
cmdbuf[2] = pages;
|
||||||
cmdbuf[3] = mode;
|
cmdbuf[3] = mode;
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <3ds/services/apt.h>
|
#include <3ds/services/apt.h>
|
||||||
#include <3ds/services/hid.h>
|
#include <3ds/services/hid.h>
|
||||||
#include <3ds/services/irrst.h>
|
#include <3ds/services/irrst.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
Handle hidHandle;
|
Handle hidHandle;
|
||||||
Handle hidMemHandle;
|
Handle hidMemHandle;
|
||||||
@ -198,7 +199,7 @@ void hidGyroRead(angularRate* rate)
|
|||||||
Result HIDUSER_GetHandles(Handle* outMemHandle, Handle *eventpad0, Handle *eventpad1, Handle *eventaccel, Handle *eventgyro, Handle *eventdebugpad)
|
Result HIDUSER_GetHandles(Handle* outMemHandle, Handle *eventpad0, Handle *eventpad1, Handle *eventaccel, Handle *eventgyro, Handle *eventdebugpad)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0xa0000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0xA,0,0); // 0xA0000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
@ -217,7 +218,7 @@ Result HIDUSER_GetHandles(Handle* outMemHandle, Handle *eventpad0, Handle *event
|
|||||||
Result HIDUSER_EnableAccelerometer(void)
|
Result HIDUSER_EnableAccelerometer(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x110000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x11,0,0); // 0x110000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
@ -228,7 +229,7 @@ Result HIDUSER_EnableAccelerometer(void)
|
|||||||
Result HIDUSER_DisableAccelerometer(void)
|
Result HIDUSER_DisableAccelerometer(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x120000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x12,0,0); // 0x120000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
@ -239,7 +240,7 @@ Result HIDUSER_DisableAccelerometer(void)
|
|||||||
Result HIDUSER_EnableGyroscope(void)
|
Result HIDUSER_EnableGyroscope(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x130000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x13,0,0); // 0x130000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
@ -250,7 +251,7 @@ Result HIDUSER_EnableGyroscope(void)
|
|||||||
Result HIDUSER_DisableGyroscope(void)
|
Result HIDUSER_DisableGyroscope(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x140000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x14,0,0); // 0x140000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
@ -261,7 +262,7 @@ Result HIDUSER_DisableGyroscope(void)
|
|||||||
Result HIDUSER_GetGyroscopeRawToDpsCoefficient(float *coeff)
|
Result HIDUSER_GetGyroscopeRawToDpsCoefficient(float *coeff)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x150000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x15,0,0); // 0x150000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
@ -274,7 +275,7 @@ Result HIDUSER_GetGyroscopeRawToDpsCoefficient(float *coeff)
|
|||||||
Result HIDUSER_GetSoundVolume(u8 *volume)
|
Result HIDUSER_GetSoundVolume(u8 *volume)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x170000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x17,0,0); // 0x170000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/httpc.h>
|
#include <3ds/services/httpc.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
Handle __httpc_servhandle = 0;
|
Handle __httpc_servhandle = 0;
|
||||||
|
|
||||||
@ -146,10 +147,10 @@ Result HTTPC_Initialize(Handle handle)
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0x10044; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x1,1,4); // 0x10044
|
||||||
cmdbuf[1]=0x1000; //unk
|
cmdbuf[1]=0x1000; //unk
|
||||||
cmdbuf[2]=0x20;//processID header, following word is set to processID by the arm11kernel.
|
cmdbuf[2]=IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[4]=0;
|
cmdbuf[4]=IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[5]=0;//Some sort of handle.
|
cmdbuf[5]=0;//Some sort of handle.
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -163,10 +164,10 @@ Result HTTPC_CreateContext(Handle handle, char* url, Handle* contextHandle)
|
|||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
u32 l=strlen(url)+1;
|
u32 l=strlen(url)+1;
|
||||||
|
|
||||||
cmdbuf[0]=0x20082; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x2,2,2); // 0x20082
|
||||||
cmdbuf[1]=l;
|
cmdbuf[1]=l;
|
||||||
cmdbuf[2]=0x01; //unk
|
cmdbuf[2]=0x01; //unk
|
||||||
cmdbuf[3]=(l<<4)|0xA;
|
cmdbuf[3]=IPC_Desc_Buffer(l,IPC_BUFFER_R);
|
||||||
cmdbuf[4]=(u32)url;
|
cmdbuf[4]=(u32)url;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -181,9 +182,9 @@ Result HTTPC_InitializeConnectionSession(Handle handle, Handle contextHandle)
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0x80042; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x8,1,2); // 0x80042
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
cmdbuf[2]=0x20; //unk, constant afaict
|
cmdbuf[2]=IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(handle)))return ret;
|
if((ret=svcSendSyncRequest(handle)))return ret;
|
||||||
@ -195,7 +196,7 @@ Result HTTPC_SetProxyDefault(Handle handle, Handle contextHandle)
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0xe0040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0xE,1,0); // 0xE0040
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -208,7 +209,7 @@ Result HTTPC_CloseContext(Handle handle, Handle contextHandle)
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0x30040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x3,1,0); // 0x30040
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -224,13 +225,13 @@ Result HTTPC_AddRequestHeaderField(Handle handle, Handle contextHandle, char* na
|
|||||||
int name_len=strlen(name)+1;
|
int name_len=strlen(name)+1;
|
||||||
int value_len=strlen(value)+1;
|
int value_len=strlen(value)+1;
|
||||||
|
|
||||||
cmdbuf[0]=0x1100c4; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x11,3,4); // 0x1100C4
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
cmdbuf[2]=name_len;
|
cmdbuf[2]=name_len;
|
||||||
cmdbuf[3]=value_len;
|
cmdbuf[3]=value_len;
|
||||||
cmdbuf[4]=(name_len<<14)|0xC02;
|
cmdbuf[4]=IPC_Desc_StaticBuffer(name_len,3);
|
||||||
cmdbuf[5]=(u32)name;
|
cmdbuf[5]=(u32)name;
|
||||||
cmdbuf[6]=(value_len<<4)|0xA;
|
cmdbuf[6]=IPC_Desc_Buffer(value_len,IPC_BUFFER_R);
|
||||||
cmdbuf[7]=(u32)value;
|
cmdbuf[7]=(u32)value;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -243,7 +244,7 @@ Result HTTPC_BeginRequest(Handle handle, Handle contextHandle)
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0x90040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x9,1,0); // 0x90040
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -256,10 +257,10 @@ Result HTTPC_ReceiveData(Handle handle, Handle contextHandle, u8* buffer, u32 si
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0xB0082; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0xB,2,2); // 0xB0082
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
cmdbuf[2]=size;
|
cmdbuf[2]=size;
|
||||||
cmdbuf[3]=(size<<4)|12;
|
cmdbuf[3]=IPC_Desc_Buffer(size,IPC_BUFFER_W);
|
||||||
cmdbuf[4]=(u32)buffer;
|
cmdbuf[4]=(u32)buffer;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -272,7 +273,7 @@ Result HTTPC_GetRequestState(Handle handle, Handle contextHandle, httpcReqStatus
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0x50040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x5,1,0); // 0x50040
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -287,7 +288,7 @@ Result HTTPC_GetDownloadSizeState(Handle handle, Handle contextHandle, u32* down
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0x60040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x6,1,0); // 0x60040
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -324,7 +325,7 @@ Result HTTPC_GetResponseStatusCode(Handle handle, Handle contextHandle, u32* out
|
|||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0]=0x220040; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x22,1,0); // 0x220040
|
||||||
cmdbuf[1]=contextHandle;
|
cmdbuf[1]=contextHandle;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/ir.h>
|
#include <3ds/services/ir.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle iru_handle=0;
|
static Handle iru_handle=0;
|
||||||
static Handle iru_sharedmem_handle=0;
|
static Handle iru_sharedmem_handle=0;
|
||||||
@ -15,7 +16,7 @@ Result irucmd_Initialize(void)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010000;
|
cmdbuf[0] = IPC_MakeHeader(0x1,0,0); // 0x10000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
ret = (Result)cmdbuf[1];
|
ret = (Result)cmdbuf[1];
|
||||||
@ -28,7 +29,7 @@ Result irucmd_Shutdown(void)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00020000;
|
cmdbuf[0] = IPC_MakeHeader(0x2,0,0); // 0x20000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
ret = (Result)cmdbuf[1];
|
ret = (Result)cmdbuf[1];
|
||||||
@ -41,9 +42,9 @@ Result irucmd_StartSendTransfer(u8 *buf, u32 size)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00030042;
|
cmdbuf[0] = IPC_MakeHeader(0x3,1,2); // 0x30042
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = size;
|
||||||
cmdbuf[2] = (size<<4) | 10;
|
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
||||||
cmdbuf[3] = (u32)buf;
|
cmdbuf[3] = (u32)buf;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
@ -57,7 +58,7 @@ Result irucmd_WaitSendTransfer(void)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00040000;
|
cmdbuf[0] = IPC_MakeHeader(0x4,0,0); // 0x40000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
ret = (Result)cmdbuf[1];
|
ret = (Result)cmdbuf[1];
|
||||||
@ -70,11 +71,11 @@ Result irucmd_StartRecvTransfer(u32 size, u8 flag)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000500C2;
|
cmdbuf[0] = IPC_MakeHeader(0x5,3,2); // 0x500C2
|
||||||
cmdbuf[1] = iru_sharedmem_size;
|
cmdbuf[1] = iru_sharedmem_size;
|
||||||
cmdbuf[2] = size;
|
cmdbuf[2] = size;
|
||||||
cmdbuf[3] = (u8)flag;
|
cmdbuf[3] = (u8)flag;
|
||||||
cmdbuf[4] = 0;
|
cmdbuf[4] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[5] = iru_sharedmem_handle;
|
cmdbuf[5] = iru_sharedmem_handle;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
@ -88,7 +89,7 @@ Result irucmd_WaitRecvTransfer(u32 *transfercount)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00060000;
|
cmdbuf[0] = IPC_MakeHeader(0x6,0,0); // 0x60000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
ret = (Result)cmdbuf[1];
|
ret = (Result)cmdbuf[1];
|
||||||
@ -103,7 +104,7 @@ Result IRU_SetBitRate(u8 value)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00090040;
|
cmdbuf[0] = IPC_MakeHeader(0x9,1,0); // 0x90040
|
||||||
cmdbuf[1] = (u32)value;
|
cmdbuf[1] = (u32)value;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
@ -117,7 +118,7 @@ Result IRU_GetBitRate(u8 *out)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000A0000;
|
cmdbuf[0] = IPC_MakeHeader(0xA,0,0); // 0xA0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
ret = (Result)cmdbuf[1];
|
ret = (Result)cmdbuf[1];
|
||||||
@ -132,7 +133,7 @@ Result IRU_SetIRLEDState(u32 value)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000B0040;
|
cmdbuf[0] = IPC_MakeHeader(0xB,1,0); // 0xB0040
|
||||||
cmdbuf[1] = value;
|
cmdbuf[1] = value;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
@ -146,7 +147,7 @@ Result IRU_GetIRLEDRecvState(u32 *out)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000C0000;
|
cmdbuf[0] = IPC_MakeHeader(0xC,0,0); // 0xC0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(iru_handle))!=0)return ret;
|
||||||
ret = (Result)cmdbuf[1];
|
ret = (Result)cmdbuf[1];
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/irrst.h>
|
#include <3ds/services/irrst.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
// used to determine whether or not we should do IRRST_Initialize
|
// used to determine whether or not we should do IRRST_Initialize
|
||||||
Handle __get_handle_from_list(char* name);
|
Handle __get_handle_from_list(char* name);
|
||||||
@ -119,7 +120,7 @@ void irrstCstickRead(circlePosition* pos)
|
|||||||
Result IRRST_GetHandles(Handle* outMemHandle, Handle* outEventHandle)
|
Result IRRST_GetHandles(Handle* outMemHandle, Handle* outEventHandle)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x00010000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x1,0,0); // 0x10000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(irrstHandle)))return ret;
|
if((ret=svcSendSyncRequest(irrstHandle)))return ret;
|
||||||
@ -133,7 +134,7 @@ Result IRRST_GetHandles(Handle* outMemHandle, Handle* outEventHandle)
|
|||||||
Result IRRST_Initialize(u32 unk1, u8 unk2)
|
Result IRRST_Initialize(u32 unk1, u8 unk2)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x00020080; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x2,2,0); // 0x20080
|
||||||
cmdbuf[1]=unk1;
|
cmdbuf[1]=unk1;
|
||||||
cmdbuf[2]=unk2;
|
cmdbuf[2]=unk2;
|
||||||
|
|
||||||
@ -146,7 +147,7 @@ Result IRRST_Initialize(u32 unk1, u8 unk2)
|
|||||||
Result IRRST_Shutdown(void)
|
Result IRRST_Shutdown(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x00030000; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x3,0,0); // 0x30000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(irrstHandle)))return ret;
|
if((ret=svcSendSyncRequest(irrstHandle)))return ret;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/mic.h>
|
#include <3ds/services/mic.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
//See also: http://3dbrew.org/wiki/MIC_Services
|
//See also: http://3dbrew.org/wiki/MIC_Services
|
||||||
|
|
||||||
@ -127,9 +128,9 @@ Result MIC_MapSharedMem(Handle handle, u32 size)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010042;
|
cmdbuf[0] = IPC_MakeHeader(0x1,1,2); // 0x10042
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = size;
|
||||||
cmdbuf[2] = 0;
|
cmdbuf[2] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[3] = handle;
|
cmdbuf[3] = handle;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
@ -142,7 +143,7 @@ Result MIC_UnmapSharedMem(void)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00020000;
|
cmdbuf[0] = IPC_MakeHeader(0x2,0,0); // 0x20000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -154,7 +155,7 @@ Result MIC_cmd3_Initialize(u8 unk0, u8 unk1, u32 sharedmem_baseoffset, u32 share
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00030140;
|
cmdbuf[0] = IPC_MakeHeader(0x3,5,0); // 0x30140
|
||||||
cmdbuf[1] = unk0;
|
cmdbuf[1] = unk0;
|
||||||
cmdbuf[2] = unk1;
|
cmdbuf[2] = unk1;
|
||||||
cmdbuf[3] = sharedmem_baseoffset;
|
cmdbuf[3] = sharedmem_baseoffset;
|
||||||
@ -171,7 +172,7 @@ Result MIC_cmd5(void)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00050000;
|
cmdbuf[0] = IPC_MakeHeader(0x5,0,0); // 0x50000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -183,7 +184,7 @@ Result MIC_GetCNTBit15(u8 *out)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00060000;
|
cmdbuf[0] = IPC_MakeHeader(0x6,0,0); // 0x60000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -203,7 +204,7 @@ Result MIC_GetEventHandle(Handle *handle)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00070000;
|
cmdbuf[0] = IPC_MakeHeader(0x7,0,0); // 0x70000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -217,7 +218,7 @@ Result MIC_SetControl(u8 value)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00080040;
|
cmdbuf[0] = IPC_MakeHeader(0x8,1,0); // 0x80040
|
||||||
cmdbuf[1] = value;
|
cmdbuf[1] = value;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
@ -230,7 +231,7 @@ Result MIC_GetControl(u8 *value)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00090000;
|
cmdbuf[0] = IPC_MakeHeader(0x9,0,0); // 0x90000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
|
|
||||||
@ -244,7 +245,7 @@ Result MIC_SetRecording(u8 value)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000A0040;
|
cmdbuf[0] = IPC_MakeHeader(0xA,1,0); // 0xA0040
|
||||||
cmdbuf[1] = value;
|
cmdbuf[1] = value;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
@ -259,7 +260,7 @@ Result MIC_IsRecoding(u8 *value)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000B0000;
|
cmdbuf[0] = IPC_MakeHeader(0xB,0,0); // 0xB0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
if((ret = svcSendSyncRequest(MIC_handle))!=0)return ret;
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include <3ds/os.h>
|
#include <3ds/os.h>
|
||||||
#include <3ds/linear.h>
|
#include <3ds/linear.h>
|
||||||
#include <3ds/services/mvd.h>
|
#include <3ds/services/mvd.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
Handle mvdstdHandle;
|
Handle mvdstdHandle;
|
||||||
static u32 mvdstdInitialized = 0;
|
static u32 mvdstdInitialized = 0;
|
||||||
@ -22,10 +23,10 @@ static size_t mvdstd_workbufsize = 0;
|
|||||||
static Result mvdstdipc_Initialize(u32 *buf, u32 bufsize, Handle kprocess)
|
static Result mvdstdipc_Initialize(u32 *buf, u32 bufsize, Handle kprocess)
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00010082; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x1,2,2); // 0x10082
|
||||||
cmdbuf[1] = (u32)buf;
|
cmdbuf[1] = (u32)buf;
|
||||||
cmdbuf[2] = bufsize;
|
cmdbuf[2] = bufsize;
|
||||||
cmdbuf[3] = 0;
|
cmdbuf[3] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[4] = kprocess;
|
cmdbuf[4] = kprocess;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
@ -37,7 +38,7 @@ static Result mvdstdipc_Initialize(u32 *buf, u32 bufsize, Handle kprocess)
|
|||||||
static Result mvdstdipc_Shutdown(void)
|
static Result mvdstdipc_Shutdown(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00020000; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x2,0,0); // 0x20000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret = svcSendSyncRequest(mvdstdHandle)))return ret;
|
if((ret = svcSendSyncRequest(mvdstdHandle)))return ret;
|
||||||
@ -48,7 +49,7 @@ static Result mvdstdipc_Shutdown(void)
|
|||||||
static Result mvdstdipc_cmd18(void)
|
static Result mvdstdipc_cmd18(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00180000; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x18,0,0); // 0x180000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(mvdstdHandle)))return ret;
|
if((ret=svcSendSyncRequest(mvdstdHandle)))return ret;
|
||||||
@ -59,7 +60,7 @@ static Result mvdstdipc_cmd18(void)
|
|||||||
static Result mvdstdipc_cmd19(void)
|
static Result mvdstdipc_cmd19(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00190000; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x19,0,0); // 0x190000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(mvdstdHandle)))return ret;
|
if((ret=svcSendSyncRequest(mvdstdHandle)))return ret;
|
||||||
@ -70,7 +71,7 @@ static Result mvdstdipc_cmd19(void)
|
|||||||
static Result mvdstdipc_cmd1a(void)
|
static Result mvdstdipc_cmd1a(void)
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x001A0000; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x1A,0,0); // 0x1A0000
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(mvdstdHandle)))return ret;
|
if((ret=svcSendSyncRequest(mvdstdHandle)))return ret;
|
||||||
@ -81,11 +82,11 @@ static Result mvdstdipc_cmd1a(void)
|
|||||||
Result mvdstdSetConfig(mvdstdConfig *config)
|
Result mvdstdSetConfig(mvdstdConfig *config)
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x001E0044; //request header code
|
cmdbuf[0] = IPC_MakeHeader(0x1E,1,4); // 0x1E0044
|
||||||
cmdbuf[1] = sizeof(mvdstdConfig);
|
cmdbuf[1] = sizeof(mvdstdConfig);
|
||||||
cmdbuf[2] = 0;
|
cmdbuf[2] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[3] = CUR_PROCESS_HANDLE;
|
cmdbuf[3] = CUR_PROCESS_HANDLE;
|
||||||
cmdbuf[4] = (sizeof(mvdstdConfig)<<4) | 10;
|
cmdbuf[4] = IPC_Desc_Buffer(sizeof(mvdstdConfig),IPC_BUFFER_R);
|
||||||
cmdbuf[5] = (u32)config;
|
cmdbuf[5] = (u32)config;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/news.h>
|
#include <3ds/services/news.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool dataSet;
|
bool dataSet;
|
||||||
@ -40,17 +41,17 @@ Result NEWSU_AddNotification(const u16* title, u32 titleLength, const u16* messa
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000100C8;
|
cmdbuf[0] = IPC_MakeHeader(0x1,3,8); // 0x100C8
|
||||||
cmdbuf[1] = sizeof(NotificationHeader);
|
cmdbuf[1] = sizeof(NotificationHeader);
|
||||||
cmdbuf[2] = (messageLength + 1) * sizeof(u16);
|
cmdbuf[2] = (messageLength + 1) * sizeof(u16);
|
||||||
cmdbuf[3] = imageSize;
|
cmdbuf[3] = imageSize;
|
||||||
cmdbuf[4] = 0x20;
|
cmdbuf[4] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[5] = 0; // Process ID, Filled automatically by the ARM11 kernel.
|
cmdbuf[5] = 0; // Process ID, Filled automatically by the ARM11 kernel.
|
||||||
cmdbuf[6] = (sizeof(NotificationHeader) << 4) | 10;
|
cmdbuf[6] = IPC_Desc_Buffer(sizeof(NotificationHeader),IPC_BUFFER_R);
|
||||||
cmdbuf[7] = (u32) &header;
|
cmdbuf[7] = (u32) &header;
|
||||||
cmdbuf[8] = (((messageLength + 1) * sizeof(u16)) << 4) | 10;
|
cmdbuf[8] = IPC_Desc_Buffer((messageLength + 1) * sizeof(u16),IPC_BUFFER_R);
|
||||||
cmdbuf[9] = (u32) message;
|
cmdbuf[9] = (u32) message;
|
||||||
cmdbuf[10] = (imageSize << 4) | 10;
|
cmdbuf[10] = IPC_Desc_Buffer(imageSize,IPC_BUFFER_R);
|
||||||
cmdbuf[11] = (u32) imageData;
|
cmdbuf[11] = (u32) imageData;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(newsHandle))!=0) return ret;
|
if((ret = svcSendSyncRequest(newsHandle))!=0) return ret;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/ns.h>
|
#include <3ds/services/ns.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle nsHandle;
|
static Handle nsHandle;
|
||||||
|
|
||||||
@ -21,7 +22,7 @@ Result NS_LaunchTitle(u64 titleid, u32 launch_flags, u32 *procid)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000200C0;
|
cmdbuf[0] = IPC_MakeHeader(0x2,3,0); // 0x200C0
|
||||||
cmdbuf[1] = titleid & 0xffffffff;
|
cmdbuf[1] = titleid & 0xffffffff;
|
||||||
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
||||||
cmdbuf[3] = launch_flags;
|
cmdbuf[3] = launch_flags;
|
||||||
@ -39,7 +40,7 @@ Result NS_RebootToTitle(u8 mediatype, u64 titleid)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00100180;
|
cmdbuf[0] = IPC_MakeHeader(0x10,6,0); // 0x100180
|
||||||
cmdbuf[1] = 0x1;
|
cmdbuf[1] = 0x1;
|
||||||
cmdbuf[2] = titleid & 0xffffffff;
|
cmdbuf[2] = titleid & 0xffffffff;
|
||||||
cmdbuf[3] = (titleid >> 32) & 0xffffffff;
|
cmdbuf[3] = (titleid >> 32) & 0xffffffff;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/pm.h>
|
#include <3ds/services/pm.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle pmHandle;
|
static Handle pmHandle;
|
||||||
|
|
||||||
@ -22,7 +23,7 @@ Result PM_LaunchTitle(u8 mediatype, u64 titleid, u32 launch_flags)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010140;
|
cmdbuf[0] = IPC_MakeHeader(0x1,5,0); // 0x10140
|
||||||
cmdbuf[1] = titleid & 0xffffffff;
|
cmdbuf[1] = titleid & 0xffffffff;
|
||||||
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
||||||
cmdbuf[3] = mediatype;
|
cmdbuf[3] = mediatype;
|
||||||
@ -39,7 +40,7 @@ Result PM_GetTitleExheaderFlags(u8 mediatype, u64 titleid, u8* out)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00080100;
|
cmdbuf[0] = IPC_MakeHeader(0x8,4,0); // 0x80100
|
||||||
cmdbuf[1] = titleid & 0xffffffff;
|
cmdbuf[1] = titleid & 0xffffffff;
|
||||||
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
cmdbuf[2] = (titleid >> 32) & 0xffffffff;
|
||||||
cmdbuf[3] = mediatype;
|
cmdbuf[3] = mediatype;
|
||||||
@ -57,9 +58,9 @@ Result PM_SetFIRMLaunchParams(u32 size, u8* in)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00090042;
|
cmdbuf[0] = IPC_MakeHeader(0x9,1,2); // 0x90042
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = size;
|
||||||
cmdbuf[2] = (size << 0x4) | 0xa;
|
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
||||||
cmdbuf[3] = (u32)in;
|
cmdbuf[3] = (u32)in;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
||||||
@ -72,9 +73,9 @@ Result PM_GetFIRMLaunchParams(u32 size, u8* out)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00070042;
|
cmdbuf[0] = IPC_MakeHeader(0x7,1,2); // 0x70042
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = size;
|
||||||
cmdbuf[2] = (size << 0x4) | 0xc;
|
cmdbuf[2] = IPC_Desc_Buffer(size,IPC_BUFFER_W);
|
||||||
cmdbuf[3] = (u32)out;
|
cmdbuf[3] = (u32)out;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
||||||
@ -87,10 +88,10 @@ Result PM_LaunchFIRMSetParams(u32 firm_titleid_low, u32 size, u8* in)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00020082;
|
cmdbuf[0] = IPC_MakeHeader(0x2,2,2); // 0x20082
|
||||||
cmdbuf[1] = firm_titleid_low;
|
cmdbuf[1] = firm_titleid_low;
|
||||||
cmdbuf[2] = size;
|
cmdbuf[2] = size;
|
||||||
cmdbuf[3] = (size << 0x4) | 0xa;
|
cmdbuf[3] = IPC_Desc_Buffer(size,IPC_BUFFER_R);
|
||||||
cmdbuf[4] = (u32)in;
|
cmdbuf[4] = (u32)in;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(pmHandle))!=0)return ret;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/ps.h>
|
#include <3ds/services/ps.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static Handle psHandle;
|
static Handle psHandle;
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ Result PS_EncryptDecryptAes(u32 size, u8* in, u8* out, u32 aes_algo, u32 key_typ
|
|||||||
|
|
||||||
u32 *_iv = (u32*)iv;
|
u32 *_iv = (u32*)iv;
|
||||||
|
|
||||||
cmdbuf[0] = 0x000401C4;
|
cmdbuf[0] = IPC_MakeHeader(0x4,7,4); // 0x401C4
|
||||||
cmdbuf[1] = size;
|
cmdbuf[1] = size;
|
||||||
cmdbuf[2] = _iv[0];
|
cmdbuf[2] = _iv[0];
|
||||||
cmdbuf[3] = _iv[1];
|
cmdbuf[3] = _iv[1];
|
||||||
@ -31,9 +32,9 @@ Result PS_EncryptDecryptAes(u32 size, u8* in, u8* out, u32 aes_algo, u32 key_typ
|
|||||||
cmdbuf[5] = _iv[3];
|
cmdbuf[5] = _iv[3];
|
||||||
cmdbuf[6] = aes_algo;
|
cmdbuf[6] = aes_algo;
|
||||||
cmdbuf[7] = key_type;
|
cmdbuf[7] = key_type;
|
||||||
cmdbuf[8] = (size << 0x8) | 0x4;
|
cmdbuf[8] = IPC_Desc_PXIBuffer(size,0,false);
|
||||||
cmdbuf[9] = (u32)in;
|
cmdbuf[9] = (u32)in;
|
||||||
cmdbuf[10] = (size << 0x8) | 0x14;
|
cmdbuf[10] = IPC_Desc_PXIBuffer(size,1,false);
|
||||||
cmdbuf[11] = (u32)out;
|
cmdbuf[11] = (u32)out;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(psHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(psHandle))!=0)return ret;
|
||||||
@ -53,7 +54,7 @@ Result PS_EncryptSignDecryptVerifyAesCcm(u8* in, u32 in_size, u8* out, u32 out_s
|
|||||||
|
|
||||||
u32 *_nonce = (u32*)nonce;
|
u32 *_nonce = (u32*)nonce;
|
||||||
|
|
||||||
cmdbuf[0] = 0x00050284;
|
cmdbuf[0] = IPC_MakeHeader(0x5,10,4); // 0x50284
|
||||||
cmdbuf[1] = in_size;
|
cmdbuf[1] = in_size;
|
||||||
cmdbuf[2] = out_size;
|
cmdbuf[2] = out_size;
|
||||||
cmdbuf[3] = mac_data_len;
|
cmdbuf[3] = mac_data_len;
|
||||||
@ -64,9 +65,9 @@ Result PS_EncryptSignDecryptVerifyAesCcm(u8* in, u32 in_size, u8* out, u32 out_s
|
|||||||
cmdbuf[8] = _nonce[2];
|
cmdbuf[8] = _nonce[2];
|
||||||
cmdbuf[9] = aes_algo;
|
cmdbuf[9] = aes_algo;
|
||||||
cmdbuf[10] = key_type;
|
cmdbuf[10] = key_type;
|
||||||
cmdbuf[8] = (in_size << 0x8) | 0x4;
|
cmdbuf[8] = IPC_Desc_PXIBuffer(in_size,0,false);
|
||||||
cmdbuf[9] = (u32)in;
|
cmdbuf[9] = (u32)in;
|
||||||
cmdbuf[10] = (out_size << 0x8) | 0x14;
|
cmdbuf[10] = IPC_Desc_PXIBuffer(out_size,1,false);
|
||||||
cmdbuf[11] = (u32)out;
|
cmdbuf[11] = (u32)out;
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(psHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(psHandle))!=0)return ret;
|
||||||
@ -79,7 +80,7 @@ Result PS_GetLocalFriendCodeSeed(u64* seed)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000A0000;
|
cmdbuf[0] = IPC_MakeHeader(0xA,0,0); // 0xA0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(psHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(psHandle))!=0)return ret;
|
||||||
|
|
||||||
@ -93,7 +94,7 @@ Result PS_GetDeviceId(u32* device_id)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000B0000;
|
cmdbuf[0] = IPC_MakeHeader(0xB,0,0); // 0xB0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(psHandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(psHandle))!=0)return ret;
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/ptm.h>
|
#include <3ds/services/ptm.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
|
|
||||||
static Handle ptmHandle;
|
static Handle ptmHandle;
|
||||||
@ -23,7 +24,7 @@ Result PTMU_GetShellState(Handle* servhandle, u8 *out)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00060000;
|
cmdbuf[0] = IPC_MakeHeader(0x6,0,0); // 0x60000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
@ -38,7 +39,7 @@ Result PTMU_GetBatteryLevel(Handle* servhandle, u8 *out)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00070000;
|
cmdbuf[0] = IPC_MakeHeader(0x7,0,0); // 0x70000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
@ -53,7 +54,7 @@ Result PTMU_GetBatteryChargeState(Handle* servhandle, u8 *out)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00080000;
|
cmdbuf[0] = IPC_MakeHeader(0x8,0,0); // 0x80000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
@ -68,7 +69,7 @@ Result PTMU_GetPedometerState(Handle* servhandle, u8 *out)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00090000;
|
cmdbuf[0] = IPC_MakeHeader(0x9,0,0); // 0x90000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
@ -83,7 +84,7 @@ Result PTMU_GetTotalStepCount(Handle* servhandle, u32 *steps)
|
|||||||
Result ret=0;
|
Result ret=0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000C0000;
|
cmdbuf[0] = IPC_MakeHeader(0xC,0,0); // 0xC0000
|
||||||
|
|
||||||
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
if((ret = svcSendSyncRequest(*servhandle))!=0)return ret;
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/services/qtm.h>
|
#include <3ds/services/qtm.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
Handle qtmHandle;
|
Handle qtmHandle;
|
||||||
|
|
||||||
@ -44,8 +45,9 @@ Result qtmGetHeadtrackingInfo(u64 val, qtmHeadtrackingInfo *out)
|
|||||||
|
|
||||||
if(!qtmInitialized)return -1;
|
if(!qtmInitialized)return -1;
|
||||||
|
|
||||||
cmdbuf[0]=0x00020080; //request header code
|
cmdbuf[0]=IPC_MakeHeader(0x2,2,0); // 0x20080
|
||||||
memcpy(&cmdbuf[1], &val, 8);
|
cmdbuf[1] = val&0xFFFFFFFF;
|
||||||
|
cmdbuf[2] = val>>32;
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(qtmHandle)))return ret;
|
if((ret=svcSendSyncRequest(qtmHandle)))return ret;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
||||||
{
|
{
|
||||||
@ -36,16 +37,17 @@ int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
|
|
||||||
memset(tmpaddr, 0, 0x1c);
|
memset(tmpaddr, 0, 0x1c);
|
||||||
|
|
||||||
cmdbuf[0] = 0x00040082;
|
cmdbuf[0] = IPC_MakeHeader(0x4,2,2); // 0x40082
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)tmp_addrlen;
|
cmdbuf[2] = (u32)tmp_addrlen;
|
||||||
cmdbuf[3] = 0x20;
|
cmdbuf[3] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
saved_threadstorage[0] = cmdbuf[0x100>>2];
|
u32 * staticbufs = getThreadStaticBuffers();
|
||||||
saved_threadstorage[1] = cmdbuf[0x104>>2];
|
saved_threadstorage[0] = staticbufs[0];
|
||||||
|
saved_threadstorage[1] = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = (tmp_addrlen<<14) | 2;
|
staticbufs[0] = IPC_Desc_StaticBuffer(tmp_addrlen,0);
|
||||||
cmdbuf[0x104>>2] = (u32)tmpaddr;
|
staticbufs[1] = (u32)tmpaddr;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
@ -54,8 +56,8 @@ int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = saved_threadstorage[0];
|
staticbufs[0] = saved_threadstorage[0];
|
||||||
cmdbuf[0x104>>2] = saved_threadstorage[1];
|
staticbufs[1] = saved_threadstorage[1];
|
||||||
|
|
||||||
ret = (int)cmdbuf[1];
|
ret = (int)cmdbuf[1];
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
|
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
|
||||||
{
|
{
|
||||||
@ -31,11 +32,11 @@ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
|
|||||||
tmpaddr[1] = addr->sa_family;
|
tmpaddr[1] = addr->sa_family;
|
||||||
memcpy(&tmpaddr[2], &addr->sa_data, tmp_addrlen-2);
|
memcpy(&tmpaddr[2], &addr->sa_data, tmp_addrlen-2);
|
||||||
|
|
||||||
cmdbuf[0] = 0x00050084;
|
cmdbuf[0] = IPC_MakeHeader(0x5,2,4); // 0x50084
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)tmp_addrlen;
|
cmdbuf[2] = (u32)tmp_addrlen;
|
||||||
cmdbuf[3] = 0x20;
|
cmdbuf[3] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[5] = (((u32)tmp_addrlen)<<14) | 2;
|
cmdbuf[5] = IPC_Desc_StaticBuffer(tmp_addrlen,0);
|
||||||
cmdbuf[6] = (u32)tmpaddr;
|
cmdbuf[6] = (u32)tmpaddr;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
|
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
|
||||||
{
|
{
|
||||||
@ -31,11 +32,11 @@ int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
|
|||||||
tmpaddr[1] = addr->sa_family;
|
tmpaddr[1] = addr->sa_family;
|
||||||
memcpy(&tmpaddr[2], &addr->sa_data, tmp_addrlen-2);
|
memcpy(&tmpaddr[2], &addr->sa_data, tmp_addrlen-2);
|
||||||
|
|
||||||
cmdbuf[0] = 0x00060084;
|
cmdbuf[0] = IPC_MakeHeader(0x6,2,4); // 0x60084
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)addrlen;
|
cmdbuf[2] = (u32)addrlen;
|
||||||
cmdbuf[3] = 0x20;
|
cmdbuf[3] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[5] = (((u32)tmp_addrlen)<<14) | 2;
|
cmdbuf[5] = IPC_Desc_StaticBuffer(tmp_addrlen,0);
|
||||||
cmdbuf[6] = (u32)tmpaddr;
|
cmdbuf[6] = (u32)tmpaddr;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
#define O_NONBLOCK_3DS 0x4
|
#define O_NONBLOCK_3DS 0x4
|
||||||
|
|
||||||
@ -63,11 +64,11 @@ int fcntl(int sockfd, int cmd, ...)
|
|||||||
arg = to_3ds(arg);
|
arg = to_3ds(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x001300C2;
|
cmdbuf[0] = IPC_MakeHeader(0x13,3,2); // 0x1300C2
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)cmd;
|
cmdbuf[2] = (u32)cmd;
|
||||||
cmdbuf[3] = (u32)arg;
|
cmdbuf[3] = (u32)arg;
|
||||||
cmdbuf[4] = 0x20;
|
cmdbuf[4] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
#define MAX_HOSTENT_RESULTS 16
|
#define MAX_HOSTENT_RESULTS 16
|
||||||
static struct hostent SOC_hostent;
|
static struct hostent SOC_hostent;
|
||||||
@ -15,17 +16,18 @@ struct hostent* gethostbyname(const char *name)
|
|||||||
|
|
||||||
h_errno = 0;
|
h_errno = 0;
|
||||||
|
|
||||||
cmdbuf[0] = 0x000D0082;
|
cmdbuf[0] = IPC_MakeHeader(0xD,2,2); // 0xD0082
|
||||||
cmdbuf[1] = strlen(name)+1;
|
cmdbuf[1] = strlen(name)+1;
|
||||||
cmdbuf[2] = sizeof(outbuf);
|
cmdbuf[2] = sizeof(outbuf);
|
||||||
cmdbuf[3] = ((strlen(name)+1) << 14) | 0xC02;
|
cmdbuf[3] = ((strlen(name)+1) << 14) | 0xC02;
|
||||||
cmdbuf[4] = (u32)name;
|
cmdbuf[4] = (u32)name;
|
||||||
|
|
||||||
saved_threadstorage[0] = cmdbuf[0x100>>2];
|
u32 * staticbufs = getThreadStaticBuffers();
|
||||||
saved_threadstorage[1] = cmdbuf[0x104>>2];
|
saved_threadstorage[0] = staticbufs[0];
|
||||||
|
saved_threadstorage[1] = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = (sizeof(outbuf) << 14) | 2;
|
staticbufs[0] = IPC_Desc_StaticBuffer(sizeof(outbuf),0);
|
||||||
cmdbuf[0x104>>2] = (u32)outbuf;
|
staticbufs[1] = (u32)outbuf;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
@ -33,9 +35,8 @@ struct hostent* gethostbyname(const char *name)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
staticbufs[0] = saved_threadstorage[0];
|
||||||
cmdbuf[0x100>>2] = saved_threadstorage[0];
|
staticbufs[1] = saved_threadstorage[1];
|
||||||
cmdbuf[0x104>>2] = saved_threadstorage[1];
|
|
||||||
|
|
||||||
ret = (int)cmdbuf[1];
|
ret = (int)cmdbuf[1];
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
long gethostid(void)
|
long gethostid(void)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00160000;
|
cmdbuf[0] = IPC_MakeHeader(0x16,0,0); // 0x160000
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
||||||
{
|
{
|
||||||
@ -15,16 +16,17 @@ int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00180082;
|
cmdbuf[0] = IPC_MakeHeader(0x18,2,2); // 0x180082
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = 0x1c;
|
cmdbuf[2] = 0x1c;
|
||||||
cmdbuf[3] = 0x20;
|
cmdbuf[3] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
saved_threadstorage[0] = cmdbuf[0x100>>2];
|
u32 * staticbufs = getThreadStaticBuffers();
|
||||||
saved_threadstorage[1] = cmdbuf[0x104>>2];
|
saved_threadstorage[0] = staticbufs[0];
|
||||||
|
saved_threadstorage[1] = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = (0x1c<<14) | 2;
|
staticbufs[0] = IPC_Desc_StaticBuffer(0x1c,0);
|
||||||
cmdbuf[0x104>>2] = (u32)tmpaddr;
|
staticbufs[1] = (u32)tmpaddr;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
@ -32,8 +34,8 @@ int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = saved_threadstorage[0];
|
staticbufs[0] = saved_threadstorage[0];
|
||||||
cmdbuf[0x104>>2] = saved_threadstorage[1];
|
staticbufs[1] = saved_threadstorage[1];
|
||||||
|
|
||||||
ret = (int)cmdbuf[1];
|
ret = (int)cmdbuf[1];
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
||||||
{
|
{
|
||||||
@ -15,16 +16,17 @@ int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00170082;
|
cmdbuf[0] = IPC_MakeHeader(0x17,2,2); // 0x170082
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = 0x1c;
|
cmdbuf[2] = 0x1c;
|
||||||
cmdbuf[3] = 0x20;
|
cmdbuf[3] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
saved_threadstorage[0] = cmdbuf[0x100>>2];
|
u32 * staticbufs = getThreadStaticBuffers();
|
||||||
saved_threadstorage[1] = cmdbuf[0x104>>2];
|
saved_threadstorage[0] = staticbufs[0];
|
||||||
|
saved_threadstorage[1] = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = (0x1c<<14) | 2;
|
staticbufs[0] = IPC_Desc_StaticBuffer(0x1c,0);
|
||||||
cmdbuf[0x104>>2] = (u32)tmpaddr;
|
staticbufs[1] = (u32)tmpaddr;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
@ -32,8 +34,8 @@ int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = saved_threadstorage[0];
|
staticbufs[0] = saved_threadstorage[0];
|
||||||
cmdbuf[0x104>>2] = saved_threadstorage[1];
|
staticbufs[1] = saved_threadstorage[1];
|
||||||
|
|
||||||
ret = (int)cmdbuf[1];
|
ret = (int)cmdbuf[1];
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen)
|
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen)
|
||||||
{
|
{
|
||||||
@ -14,18 +15,19 @@ int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optl
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00110102;
|
cmdbuf[0] = IPC_MakeHeader(0x11,4,2); // 0x110102
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)level;
|
cmdbuf[2] = (u32)level;
|
||||||
cmdbuf[3] = (u32)optname;
|
cmdbuf[3] = (u32)optname;
|
||||||
cmdbuf[4] = (u32)*optlen;
|
cmdbuf[4] = (u32)*optlen;
|
||||||
cmdbuf[5] = 0x20;
|
cmdbuf[5] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
saved_threadstorage[0] = cmdbuf[0x100>>2];
|
u32 * staticbufs = getThreadStaticBuffers();
|
||||||
saved_threadstorage[1] = cmdbuf[0x104>>2];
|
saved_threadstorage[0] = staticbufs[0];
|
||||||
|
saved_threadstorage[1] = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = ((*optlen)<<14) | 2;
|
staticbufs[0] = IPC_Desc_StaticBuffer(*optlen,0);
|
||||||
cmdbuf[0x104>>2] = (u32)optval;
|
staticbufs[1] = (u32)optval;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
@ -33,8 +35,8 @@ int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optl
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = saved_threadstorage[0];
|
staticbufs[0] = saved_threadstorage[0];
|
||||||
cmdbuf[0x104>>2] = saved_threadstorage[1];
|
staticbufs[1] = saved_threadstorage[1];
|
||||||
|
|
||||||
ret = (int)cmdbuf[1];
|
ret = (int)cmdbuf[1];
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
static int soc_open(struct _reent *r, void *fileStruct, const char *path, int flags, int mode);
|
static int soc_open(struct _reent *r, void *fileStruct, const char *path, int flags, int mode);
|
||||||
static int soc_close(struct _reent *r, int fd);
|
static int soc_close(struct _reent *r, int fd);
|
||||||
@ -43,10 +44,10 @@ static Result socu_cmd1(Handle memhandle, u32 memsize)
|
|||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x00010044;
|
cmdbuf[0] = IPC_MakeHeader(0x1,1,4); // 0x10044
|
||||||
cmdbuf[1] = memsize;
|
cmdbuf[1] = memsize;
|
||||||
cmdbuf[2] = 0x20;
|
cmdbuf[2] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[4] = 0;
|
cmdbuf[4] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[5] = memhandle;
|
cmdbuf[5] = memhandle;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
@ -111,7 +112,7 @@ Result SOC_Shutdown(void)
|
|||||||
svcCloseHandle(socMemhandle);
|
svcCloseHandle(socMemhandle);
|
||||||
socMemhandle = 0;
|
socMemhandle = 0;
|
||||||
|
|
||||||
cmdbuf[0] = 0x00190000;
|
cmdbuf[0] = IPC_MakeHeader(0x19,0,0); // 0x190000
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
|
|
||||||
@ -146,9 +147,9 @@ soc_close(struct _reent *r,
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000B0042;
|
cmdbuf[0] = IPC_MakeHeader(0xB,1,2); // 0xB0042
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = 0x20;
|
cmdbuf[2] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int listen(int sockfd, int max_connections)
|
int listen(int sockfd, int max_connections)
|
||||||
{
|
{
|
||||||
@ -13,10 +14,10 @@ int listen(int sockfd, int max_connections)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00030082;
|
cmdbuf[0] = IPC_MakeHeader(0x3,2,2); // 0x30082
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)max_connections;
|
cmdbuf[2] = (u32)max_connections;
|
||||||
cmdbuf[3] = 0x20;
|
cmdbuf[3] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int poll(struct pollfd *fds, nfds_t nfds, int timeout)
|
int poll(struct pollfd *fds, nfds_t nfds, int timeout)
|
||||||
{
|
{
|
||||||
@ -35,18 +36,19 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
|
|||||||
tmp_fds[i].revents = 0;
|
tmp_fds[i].revents = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00140084;
|
cmdbuf[0] = IPC_MakeHeader(0x14,2,4); // 0x140084
|
||||||
cmdbuf[1] = (u32)nfds;
|
cmdbuf[1] = (u32)nfds;
|
||||||
cmdbuf[2] = (u32)timeout;
|
cmdbuf[2] = (u32)timeout;
|
||||||
cmdbuf[3] = 0x20;
|
cmdbuf[3] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[5] = (size<<14) | 0x2802;
|
cmdbuf[5] = IPC_Desc_StaticBuffer(size,10);
|
||||||
cmdbuf[6] = (u32)tmp_fds;
|
cmdbuf[6] = (u32)tmp_fds;
|
||||||
|
|
||||||
saved_threadstorage[0] = cmdbuf[0x100>>2];
|
u32 * staticbufs = getThreadStaticBuffers();
|
||||||
saved_threadstorage[1] = cmdbuf[0x104>>2];
|
saved_threadstorage[0] = staticbufs[0];
|
||||||
|
saved_threadstorage[1] = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = (size<<14) | 2;
|
staticbufs[0] = IPC_Desc_StaticBuffer(size,0);
|
||||||
cmdbuf[0x104>>2] = (u32)tmp_fds;
|
staticbufs[1] = (u32)tmp_fds;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
@ -55,8 +57,8 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = saved_threadstorage[0];
|
staticbufs[0] = saved_threadstorage[0];
|
||||||
cmdbuf[0x104>>2] = saved_threadstorage[1];
|
staticbufs[1] = saved_threadstorage[1];
|
||||||
|
|
||||||
ret = (int)cmdbuf[1];
|
ret = (int)cmdbuf[1];
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
ssize_t socuipc_cmd7(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
|
ssize_t socuipc_cmd7(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
|
||||||
{
|
{
|
||||||
@ -15,20 +16,21 @@ ssize_t socuipc_cmd7(int sockfd, void *buf, size_t len, int flags, struct sockad
|
|||||||
if(src_addr)
|
if(src_addr)
|
||||||
tmp_addrlen = 0x1c;
|
tmp_addrlen = 0x1c;
|
||||||
|
|
||||||
cmdbuf[0] = 0x00070104;
|
cmdbuf[0] = IPC_MakeHeader(0x7,4,4); // 0x70104
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)len;
|
cmdbuf[2] = (u32)len;
|
||||||
cmdbuf[3] = (u32)flags;
|
cmdbuf[3] = (u32)flags;
|
||||||
cmdbuf[4] = (u32)tmp_addrlen;
|
cmdbuf[4] = (u32)tmp_addrlen;
|
||||||
cmdbuf[5] = 0x20;
|
cmdbuf[5] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[7] = (((u32)len)<<4) | 12;
|
cmdbuf[7] = IPC_Desc_Buffer(len,IPC_BUFFER_W);
|
||||||
cmdbuf[8] = (u32)buf;
|
cmdbuf[8] = (u32)buf;
|
||||||
|
|
||||||
saved_threadstorage[0] = cmdbuf[0x100>>2];
|
u32 * staticbufs = getThreadStaticBuffers();
|
||||||
saved_threadstorage[1] = cmdbuf[0x104>>2];
|
saved_threadstorage[0] = staticbufs[0];
|
||||||
|
saved_threadstorage[1] = staticbufs[1];
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = (tmp_addrlen<<14) | 2;
|
staticbufs[0] = IPC_Desc_StaticBuffer(tmp_addrlen,0);
|
||||||
cmdbuf[0x104>>2] = (u32)tmpaddr;
|
staticbufs[1] = (u32)tmpaddr;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
@ -36,8 +38,8 @@ ssize_t socuipc_cmd7(int sockfd, void *buf, size_t len, int flags, struct sockad
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0x100>>2] = saved_threadstorage[0];
|
staticbufs[0] = saved_threadstorage[0];
|
||||||
cmdbuf[0x104>>2] = saved_threadstorage[1];
|
staticbufs[1] = saved_threadstorage[1];
|
||||||
|
|
||||||
ret = (int)cmdbuf[1];
|
ret = (int)cmdbuf[1];
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
ssize_t socuipc_cmd9(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
|
ssize_t socuipc_cmd9(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
|
||||||
{
|
{
|
||||||
@ -27,15 +28,15 @@ ssize_t socuipc_cmd9(int sockfd, const void *buf, size_t len, int flags, const s
|
|||||||
memcpy(&tmpaddr[2], &dest_addr->sa_data, tmp_addrlen-2);
|
memcpy(&tmpaddr[2], &dest_addr->sa_data, tmp_addrlen-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00090106;
|
cmdbuf[0] = IPC_MakeHeader(0x9,4,6); // 0x90106
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)len;
|
cmdbuf[2] = (u32)len;
|
||||||
cmdbuf[3] = (u32)flags;
|
cmdbuf[3] = (u32)flags;
|
||||||
cmdbuf[4] = (u32)tmp_addrlen;
|
cmdbuf[4] = (u32)tmp_addrlen;
|
||||||
cmdbuf[5] = 0x20;
|
cmdbuf[5] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[7] = (tmp_addrlen<<14) | 0x402;
|
cmdbuf[7] = IPC_Desc_StaticBuffer(tmp_addrlen,1);
|
||||||
cmdbuf[8] = (u32)tmpaddr;
|
cmdbuf[8] = (u32)tmpaddr;
|
||||||
cmdbuf[9] = (((u32)len)<<4) | 10;
|
cmdbuf[9] = IPC_Desc_Buffer(len,IPC_BUFFER_R);
|
||||||
cmdbuf[10] = (u32)buf;
|
cmdbuf[10] = (u32)buf;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
@ -81,15 +82,15 @@ ssize_t socuipc_cmda(int sockfd, const void *buf, size_t len, int flags, const s
|
|||||||
memcpy(&tmpaddr[2], &dest_addr->sa_data, tmp_addrlen-2);
|
memcpy(&tmpaddr[2], &dest_addr->sa_data, tmp_addrlen-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x000A0106;
|
cmdbuf[0] = IPC_MakeHeader(0xA,4,6); // 0xA0106
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)len;
|
cmdbuf[2] = (u32)len;
|
||||||
cmdbuf[3] = (u32)flags;
|
cmdbuf[3] = (u32)flags;
|
||||||
cmdbuf[4] = (u32)tmp_addrlen;
|
cmdbuf[4] = (u32)tmp_addrlen;
|
||||||
cmdbuf[5] = 0x20;
|
cmdbuf[5] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[7] = (((u32)len)<<14) | 0x802;
|
cmdbuf[7] = IPC_Desc_StaticBuffer(len,2);
|
||||||
cmdbuf[8] = (u32)buf;
|
cmdbuf[8] = (u32)buf;
|
||||||
cmdbuf[9] = (tmp_addrlen<<14) | 0x402;
|
cmdbuf[9] = IPC_Desc_StaticBuffer(tmp_addrlen,1);
|
||||||
cmdbuf[10] = (u32)tmpaddr;
|
cmdbuf[10] = (u32)tmpaddr;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen)
|
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen)
|
||||||
{
|
{
|
||||||
@ -13,13 +14,13 @@ int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00120104;
|
cmdbuf[0] = IPC_MakeHeader(0x12,4,4); // 0x120104
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)level;
|
cmdbuf[2] = (u32)level;
|
||||||
cmdbuf[3] = (u32)optname;
|
cmdbuf[3] = (u32)optname;
|
||||||
cmdbuf[4] = (u32)optlen;
|
cmdbuf[4] = (u32)optlen;
|
||||||
cmdbuf[5] = 0x20;
|
cmdbuf[5] = IPC_Desc_CurProcessHandle();
|
||||||
cmdbuf[7] = (optlen<<14) | 0x2402;
|
cmdbuf[7] = IPC_Desc_StaticBuffer(optlen,9);
|
||||||
cmdbuf[8] = (u32)optval;
|
cmdbuf[8] = (u32)optval;
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int shutdown(int sockfd, int shutdown_type)
|
int shutdown(int sockfd, int shutdown_type)
|
||||||
{
|
{
|
||||||
@ -13,10 +14,10 @@ int shutdown(int sockfd, int shutdown_type)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x000C0082;
|
cmdbuf[0] = IPC_MakeHeader(0xC,2,2); // 0xC0082
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = (u32)shutdown_type;
|
cmdbuf[2] = (u32)shutdown_type;
|
||||||
cmdbuf[3] = 0x20;
|
cmdbuf[3] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "soc_common.h"
|
#include "soc_common.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int sockatmark(int sockfd)
|
int sockatmark(int sockfd)
|
||||||
{
|
{
|
||||||
@ -13,9 +14,9 @@ int sockatmark(int sockfd)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdbuf[0] = 0x00150042;
|
cmdbuf[0] = IPC_MakeHeader(0x15,1,2); // 0x150042
|
||||||
cmdbuf[1] = (u32)sockfd;
|
cmdbuf[1] = (u32)sockfd;
|
||||||
cmdbuf[2] = 0x20;
|
cmdbuf[2] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
ret = svcSendSyncRequest(SOCU_handle);
|
ret = svcSendSyncRequest(SOCU_handle);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/iosupport.h>
|
#include <sys/iosupport.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
int socket(int domain, int type, int protocol)
|
int socket(int domain, int type, int protocol)
|
||||||
{
|
{
|
||||||
@ -10,11 +11,11 @@ int socket(int domain, int type, int protocol)
|
|||||||
__handle *handle;
|
__handle *handle;
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x000200C2;
|
cmdbuf[0] = IPC_MakeHeader(0x2,3,2); // 0x200C2
|
||||||
cmdbuf[1] = domain;
|
cmdbuf[1] = domain;
|
||||||
cmdbuf[2] = type;
|
cmdbuf[2] = type;
|
||||||
cmdbuf[3] = protocol;
|
cmdbuf[3] = protocol;
|
||||||
cmdbuf[4] = 0x20;
|
cmdbuf[4] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
dev = FindDevice("soc:");
|
dev = FindDevice("soc:");
|
||||||
if(dev < 0) {
|
if(dev < 0) {
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/types.h>
|
#include <3ds/types.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
Handle y2rHandle = 0;
|
Handle y2rHandle = 0;
|
||||||
static bool initialized = false;
|
static bool initialized = false;
|
||||||
@ -51,7 +52,7 @@ Result Y2RU_SetInputFormat(Y2R_InputFormat format)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00010040;
|
cmdbuf[0] = IPC_MakeHeader(0x1,1,0); // 0x10040
|
||||||
cmdbuf[1] = format;
|
cmdbuf[1] = format;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -62,7 +63,7 @@ Result Y2RU_SetOutputFormat(Y2R_OutputFormat format)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00030040;
|
cmdbuf[0] = IPC_MakeHeader(0x3,1,0); // 0x30040
|
||||||
cmdbuf[1] = format;
|
cmdbuf[1] = format;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -73,7 +74,7 @@ Result Y2RU_SetRotation(Y2R_Rotation rotation)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00050040;
|
cmdbuf[0] = IPC_MakeHeader(0x5,1,0); // 0x50040
|
||||||
cmdbuf[1] = rotation;
|
cmdbuf[1] = rotation;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -84,7 +85,7 @@ Result Y2RU_SetBlockAlignment(Y2R_BlockAlignment alignment)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00070040;
|
cmdbuf[0] = IPC_MakeHeader(0x7,1,0); // 0x70040
|
||||||
cmdbuf[1] = alignment;
|
cmdbuf[1] = alignment;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -95,7 +96,7 @@ Result Y2RU_SetTransferEndInterrupt(bool should_interrupt)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x000D0040;
|
cmdbuf[0] = IPC_MakeHeader(0xD,1,0); // 0xD0040
|
||||||
cmdbuf[1] = should_interrupt;
|
cmdbuf[1] = should_interrupt;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -112,7 +113,7 @@ Result Y2RU_GetTransferEndEvent(Handle* end_event)
|
|||||||
|
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x000F0000;
|
cmdbuf[0] = IPC_MakeHeader(0xF,0,0); // 0xF0000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
|
|
||||||
@ -124,12 +125,12 @@ Result Y2RU_SetSendingY(const void* src_buf, u32 image_size, s16 transfer_unit,
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00100102;
|
cmdbuf[0] = IPC_MakeHeader(0x10,4,2); // 0x100102
|
||||||
cmdbuf[1] = (u32)src_buf;
|
cmdbuf[1] = (u32)src_buf;
|
||||||
cmdbuf[2] = image_size;
|
cmdbuf[2] = image_size;
|
||||||
cmdbuf[3] = transfer_unit;
|
cmdbuf[3] = transfer_unit;
|
||||||
cmdbuf[4] = transfer_gap;
|
cmdbuf[4] = transfer_gap;
|
||||||
cmdbuf[5] = 0;
|
cmdbuf[5] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -140,12 +141,12 @@ Result Y2RU_SetSendingU(const void* src_buf, u32 image_size, s16 transfer_unit,
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00110102;
|
cmdbuf[0] = IPC_MakeHeader(0x11,4,2); // 0x110102
|
||||||
cmdbuf[1] = (u32)src_buf;
|
cmdbuf[1] = (u32)src_buf;
|
||||||
cmdbuf[2] = image_size;
|
cmdbuf[2] = image_size;
|
||||||
cmdbuf[3] = transfer_unit;
|
cmdbuf[3] = transfer_unit;
|
||||||
cmdbuf[4] = transfer_gap;
|
cmdbuf[4] = transfer_gap;
|
||||||
cmdbuf[5] = 0;
|
cmdbuf[5] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -156,12 +157,12 @@ Result Y2RU_SetSendingV(const void* src_buf, u32 image_size, s16 transfer_unit,
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00120102;
|
cmdbuf[0] = IPC_MakeHeader(0x12,4,2); // 0x120102
|
||||||
cmdbuf[1] = (u32)src_buf;
|
cmdbuf[1] = (u32)src_buf;
|
||||||
cmdbuf[2] = image_size;
|
cmdbuf[2] = image_size;
|
||||||
cmdbuf[3] = transfer_unit;
|
cmdbuf[3] = transfer_unit;
|
||||||
cmdbuf[4] = transfer_gap;
|
cmdbuf[4] = transfer_gap;
|
||||||
cmdbuf[5] = 0;
|
cmdbuf[5] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -172,12 +173,12 @@ Result Y2RU_SetSendingYUYV(const void* src_buf, u32 image_size, s16 transfer_uni
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00130102;
|
cmdbuf[0] = IPC_MakeHeader(0x13,4,2); // 0x130102
|
||||||
cmdbuf[1] = (u32)src_buf;
|
cmdbuf[1] = (u32)src_buf;
|
||||||
cmdbuf[2] = image_size;
|
cmdbuf[2] = image_size;
|
||||||
cmdbuf[3] = transfer_unit;
|
cmdbuf[3] = transfer_unit;
|
||||||
cmdbuf[4] = transfer_gap;
|
cmdbuf[4] = transfer_gap;
|
||||||
cmdbuf[5] = 0;
|
cmdbuf[5] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -188,7 +189,7 @@ Result Y2RU_IsDoneSendingYUYV(bool* is_done)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00140000;
|
cmdbuf[0] = IPC_MakeHeader(0x14,0,0); // 0x140000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
*is_done = cmdbuf[2] & 0xFF;
|
*is_done = cmdbuf[2] & 0xFF;
|
||||||
@ -199,7 +200,7 @@ Result Y2RU_IsDoneSendingY(bool* is_done)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00150000;
|
cmdbuf[0] = IPC_MakeHeader(0x15,0,0); // 0x150000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
*is_done = cmdbuf[2] & 0xFF;
|
*is_done = cmdbuf[2] & 0xFF;
|
||||||
@ -210,7 +211,7 @@ Result Y2RU_IsDoneSendingU(bool* is_done)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00160000;
|
cmdbuf[0] = IPC_MakeHeader(0x16,0,0); // 0x160000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
*is_done = cmdbuf[2] & 0xFF;
|
*is_done = cmdbuf[2] & 0xFF;
|
||||||
@ -221,7 +222,7 @@ Result Y2RU_IsDoneSendingV(bool* is_done)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00170000;
|
cmdbuf[0] = IPC_MakeHeader(0x17,0,0); // 0x170000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
*is_done = cmdbuf[2] & 0xFF;
|
*is_done = cmdbuf[2] & 0xFF;
|
||||||
@ -232,12 +233,12 @@ Result Y2RU_SetReceiving(void* dst_buf, u32 image_size, s16 transfer_unit, s16 t
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00180102;
|
cmdbuf[0] = IPC_MakeHeader(0x18,4,2); // 0x180102
|
||||||
cmdbuf[1] = (u32)dst_buf;
|
cmdbuf[1] = (u32)dst_buf;
|
||||||
cmdbuf[2] = image_size;
|
cmdbuf[2] = image_size;
|
||||||
cmdbuf[3] = transfer_unit;
|
cmdbuf[3] = transfer_unit;
|
||||||
cmdbuf[4] = transfer_gap;
|
cmdbuf[4] = transfer_gap;
|
||||||
cmdbuf[5] = 0;
|
cmdbuf[5] = IPC_Desc_SharedHandles(1);
|
||||||
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
cmdbuf[6] = CUR_PROCESS_HANDLE;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -248,7 +249,7 @@ Result Y2RU_IsDoneReceiving(bool* is_done)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00190000;
|
cmdbuf[0] = IPC_MakeHeader(0x19,0,0); // 0x190000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
*is_done = cmdbuf[2] & 0xFF;
|
*is_done = cmdbuf[2] & 0xFF;
|
||||||
@ -259,7 +260,7 @@ Result Y2RU_SetInputLineWidth(u16 line_width)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x001A0040;
|
cmdbuf[0] = IPC_MakeHeader(0x1A,1,0); // 0x1A0040
|
||||||
cmdbuf[1] = line_width;
|
cmdbuf[1] = line_width;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -270,7 +271,7 @@ Result Y2RU_SetInputLines(u16 num_lines)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x001C0040;
|
cmdbuf[0] = IPC_MakeHeader(0x1C,1,0); // 0x1C0040
|
||||||
cmdbuf[1] = num_lines;
|
cmdbuf[1] = num_lines;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -281,7 +282,7 @@ Result Y2RU_SetCoefficients(const Y2R_ColorCoefficients* coefficients)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x001E0100;
|
cmdbuf[0] = IPC_MakeHeader(0x1E,4,0); // 0x1E0100
|
||||||
memcpy(&cmdbuf[1], coefficients, sizeof(Y2R_ColorCoefficients));
|
memcpy(&cmdbuf[1], coefficients, sizeof(Y2R_ColorCoefficients));
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -292,7 +293,7 @@ Result Y2RU_SetStandardCoefficient(Y2R_StandardCoefficient coefficient)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00200040;
|
cmdbuf[0] = IPC_MakeHeader(0x20,1,0); // 0x200040
|
||||||
cmdbuf[1] = coefficient;
|
cmdbuf[1] = coefficient;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -303,7 +304,7 @@ Result Y2RU_SetAlpha(u16 alpha)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00220040;
|
cmdbuf[0] = IPC_MakeHeader(0x22,1,0); // 0x220040
|
||||||
cmdbuf[1] = alpha;
|
cmdbuf[1] = alpha;
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -314,7 +315,7 @@ Result Y2RU_SetUnknownParams(const u16 params[16])
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00240200;
|
cmdbuf[0] = IPC_MakeHeader(0x24,8,0); // 0x240200
|
||||||
memcpy(&cmdbuf[1], params, sizeof(u16) * 16);
|
memcpy(&cmdbuf[1], params, sizeof(u16) * 16);
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -325,7 +326,7 @@ Result Y2RU_StartConversion(void)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00260000;
|
cmdbuf[0] = IPC_MakeHeader(0x26,0,0); // 0x260000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
@ -335,7 +336,7 @@ Result Y2RU_StopConversion(void)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00270000;
|
cmdbuf[0] = IPC_MakeHeader(0x27,0,0); // 0x270000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
@ -345,7 +346,7 @@ Result Y2RU_IsBusyConversion(bool* is_busy)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00280000;
|
cmdbuf[0] = IPC_MakeHeader(0x28,0,0); // 0x280000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
*is_busy = cmdbuf[2] & 0xFF;
|
*is_busy = cmdbuf[2] & 0xFF;
|
||||||
@ -356,7 +357,7 @@ Result Y2RU_SetConversionParams(const Y2R_ConversionParams* params)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x002901C0;
|
cmdbuf[0] = IPC_MakeHeader(0x29,7,0); // 0x2901C0
|
||||||
memcpy(&cmdbuf[1], params, sizeof(Y2R_ConversionParams));
|
memcpy(&cmdbuf[1], params, sizeof(Y2R_ConversionParams));
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
@ -367,7 +368,7 @@ Result Y2RU_PingProcess(u8* ping)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x002A0000;
|
cmdbuf[0] = IPC_MakeHeader(0x2A,0,0); // 0x2A0000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
*ping = (u8)cmdbuf[2];
|
*ping = (u8)cmdbuf[2];
|
||||||
@ -378,7 +379,7 @@ Result Y2RU_DriverInitialize(void)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x002B0000;
|
cmdbuf[0] = IPC_MakeHeader(0x2B,0,0); // 0x2B0000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
@ -388,7 +389,7 @@ Result Y2RU_DriverFinalize(void)
|
|||||||
{
|
{
|
||||||
Result ret = 0;
|
Result ret = 0;
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x002C0000;
|
cmdbuf[0] = IPC_MakeHeader(0x2C,0,0); // 0x2C0000
|
||||||
|
|
||||||
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
if ((ret = svcSendSyncRequest(y2rHandle)) != 0) return ret;
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <3ds/types.h>
|
#include <3ds/types.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
|
#include <3ds/ipc.h>
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -108,8 +109,8 @@ Result srvRegisterClient(void)
|
|||||||
|
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x10002;
|
cmdbuf[0] = IPC_MakeHeader(0x1,0,2); // 0x10002
|
||||||
cmdbuf[1] = 0x20;
|
cmdbuf[1] = IPC_Desc_CurProcessHandle();
|
||||||
|
|
||||||
if((rc = svcSendSyncRequest(g_srv_handle)))return rc;
|
if((rc = svcSendSyncRequest(g_srv_handle)))return rc;
|
||||||
|
|
||||||
@ -121,8 +122,8 @@ Result srvGetServiceHandleDirect(Handle* out, const char* name)
|
|||||||
Result rc = 0;
|
Result rc = 0;
|
||||||
|
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x50100;
|
cmdbuf[0] = IPC_MakeHeader(0x5,4,0); // 0x50100
|
||||||
strcpy((char*) &cmdbuf[1], name);
|
strncpy((char*) &cmdbuf[1], name,2);
|
||||||
cmdbuf[3] = strlen(name);
|
cmdbuf[3] = strlen(name);
|
||||||
cmdbuf[4] = 0x0;
|
cmdbuf[4] = 0x0;
|
||||||
|
|
||||||
@ -149,8 +150,8 @@ Result srvGetServiceHandle(Handle* out, const char* name)
|
|||||||
Result srvRegisterService(Handle* out, const char* name, int maxSessions)
|
Result srvRegisterService(Handle* out, const char* name, int maxSessions)
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x30100;
|
cmdbuf[0] = IPC_MakeHeader(0x3,4,0); // 0x30100
|
||||||
strcpy((char*) &cmdbuf[1], name);
|
strncpy((char*) &cmdbuf[1], name,2);
|
||||||
cmdbuf[3] = strlen(name);
|
cmdbuf[3] = strlen(name);
|
||||||
cmdbuf[4] = maxSessions;
|
cmdbuf[4] = maxSessions;
|
||||||
|
|
||||||
@ -164,8 +165,8 @@ Result srvRegisterService(Handle* out, const char* name, int maxSessions)
|
|||||||
Result srvUnregisterService(const char* name)
|
Result srvUnregisterService(const char* name)
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x400C0;
|
cmdbuf[0] = IPC_MakeHeader(0x4,3,0); // 0x400C0
|
||||||
strcpy((char*) &cmdbuf[1], name);
|
strncpy((char*) &cmdbuf[1], name,2);
|
||||||
cmdbuf[3] = strlen(name);
|
cmdbuf[3] = strlen(name);
|
||||||
|
|
||||||
Result rc;
|
Result rc;
|
||||||
@ -195,10 +196,10 @@ Result srvRegisterProcess(u32 procid, u32 count, void *serviceaccesscontrol)
|
|||||||
|
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x04030082; // <7.x
|
cmdbuf[0] = IPC_MakeHeader(0x403,2,2); // 0x4030082 // <7.x
|
||||||
cmdbuf[1] = procid;
|
cmdbuf[1] = procid;
|
||||||
cmdbuf[2] = count;
|
cmdbuf[2] = count;
|
||||||
cmdbuf[3] = (count << 16) | 2;
|
cmdbuf[3] = IPC_Desc_StaticBuffer(count*4,0);
|
||||||
cmdbuf[4] = (u32)serviceaccesscontrol;
|
cmdbuf[4] = (u32)serviceaccesscontrol;
|
||||||
|
|
||||||
if((rc = svcSendSyncRequest(g_srv_handle))) return rc;
|
if((rc = svcSendSyncRequest(g_srv_handle))) return rc;
|
||||||
@ -212,7 +213,7 @@ Result srvUnregisterProcess(u32 procid)
|
|||||||
|
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
|
|
||||||
cmdbuf[0] = 0x04040040; // <7.x
|
cmdbuf[0] = IPC_MakeHeader(0x404,1,0); // 0x4040040 // <7.x
|
||||||
cmdbuf[1] = procid;
|
cmdbuf[1] = procid;
|
||||||
|
|
||||||
if((rc = svcSendSyncRequest(g_srv_handle))) return rc;
|
if((rc = svcSendSyncRequest(g_srv_handle))) return rc;
|
||||||
|
Loading…
Reference in New Issue
Block a user