svcExitThread();
}
-Result GSPGPU_AcquireRight(Handle* handle, u8 flags)
+Result GSPGPU_WriteHWRegs(Handle* handle, u32 regAddr, u32* data, u8 size)
{
if(!handle)handle=&gspGpuHandle;
- u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x160042; //request header code
- cmdbuf[1]=flags;
- cmdbuf[2]=0x0;
- cmdbuf[3]=0xffff8001;
-
- Result ret=0;
- if((ret=svcSendSyncRequest(*handle)))return ret;
-
- return cmdbuf[1];
-}
+ if(size>0x80 || !data)return -1;
-Result GSPGPU_ReleaseRight(Handle* handle)
-{
- if(!handle)handle=&gspGpuHandle;
-
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x170000; //request header code
+ cmdbuf[0]=0x00010082; //request header code
+ cmdbuf[1]=regAddr;
+ cmdbuf[2]=size;
+ cmdbuf[3]=(size<<14)|2;
+ cmdbuf[4]=(u32)data;
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
return cmdbuf[1];
}
-Result GSPGPU_ImportDisplayCaptureInfo(Handle* handle, GSP_CaptureInfo *captureinfo)
+Result GSPGPU_WriteHWRegsWithMask(Handle* handle, u32 regAddr, u32* data, u8 datasize, u32* maskdata, u8 masksize)
{
if(!handle)handle=&gspGpuHandle;
- u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x00180000; //request header code
-
- Result ret=0;
- if((ret=svcSendSyncRequest(*handle)))return ret;
-
- ret = cmdbuf[1];
-
- if(ret==0)
- {
- memcpy(captureinfo, &cmdbuf[2], 0x20);
- }
-
- return ret;
-}
+ if(datasize>0x80 || !data)return -1;
-Result GSPGPU_SaveVramSysArea(Handle* handle)
-{
- if(!handle)handle=&gspGpuHandle;
-
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x00190000; //request header code
+ cmdbuf[0]=0x00020084; //request header code
+ cmdbuf[1]=regAddr;
+ cmdbuf[2]=datasize;
+ cmdbuf[3]=(datasize<<14)|2;
+ cmdbuf[4]=(u32)data;
+ cmdbuf[5]=(masksize<<14)|0x402;
+ cmdbuf[6]=(u32)maskdata;
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
return cmdbuf[1];
}
-Result GSPGPU_RestoreVramSysArea(Handle* handle)
+Result GSPGPU_ReadHWRegs(Handle* handle, u32 regAddr, u32* data, u8 size)
{
if(!handle)handle=&gspGpuHandle;
- u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x001A0000; //request header code
-
- Result ret=0;
- if((ret=svcSendSyncRequest(*handle)))return ret;
-
- return cmdbuf[1];
-}
+ if(size>0x80 || !data)return -1;
-Result GSPGPU_SetLcdForceBlack(Handle* handle, u8 flags)
-{
- if(!handle)handle=&gspGpuHandle;
-
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0xB0040; //request header code
- cmdbuf[1]=flags;
+ cmdbuf[0]=0x00040080; //request header code
+ cmdbuf[1]=regAddr;
+ cmdbuf[2]=size;
+ cmdbuf[0x40]=(size<<14)|2;
+ cmdbuf[0x40+1]=(u32)data;
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
if(!handle)handle=&gspGpuHandle;
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x80082; //request header code
+ cmdbuf[0]=0x00080082; //request header code
cmdbuf[1]=(u32)adr;
cmdbuf[2]=size;
cmdbuf[3]=0x0;
return cmdbuf[1];
}
-Result GSPGPU_WriteHWRegs(Handle* handle, u32 regAddr, u32* data, u8 size)
+Result GSPGPU_SetLcdForceBlack(Handle* handle, u8 flags)
{
if(!handle)handle=&gspGpuHandle;
- if(size>0x80 || !data)return -1;
-
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x10082; //request header code
- cmdbuf[1]=regAddr;
- cmdbuf[2]=size;
- cmdbuf[3]=(size<<14)|2;
- cmdbuf[4]=(u32)data;
+ cmdbuf[0]=0x000B0040; //request header code
+ cmdbuf[1]=flags;
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
return cmdbuf[1];
}
-Result GSPGPU_WriteHWRegsWithMask(Handle* handle, u32 regAddr, u32* data, u8 datasize, u32* maskdata, u8 masksize)
+Result GSPGPU_TriggerCmdReqQueue(Handle* handle)
{
if(!handle)handle=&gspGpuHandle;
- if(datasize>0x80 || !data)return -1;
-
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x20084; //request header code
- cmdbuf[1]=regAddr;
- cmdbuf[2]=datasize;
- cmdbuf[3]=(datasize<<14)|2;
- cmdbuf[4]=(u32)data;
- cmdbuf[5]=(masksize<<14)|0x402;
- cmdbuf[6]=(u32)maskdata;
+ cmdbuf[0]=0x000C0000; //request header code
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
return cmdbuf[1];
}
-Result GSPGPU_ReadHWRegs(Handle* handle, u32 regAddr, u32* data, u8 size)
+Result GSPGPU_RegisterInterruptRelayQueue(Handle* handle, Handle eventHandle, u32 flags, Handle* outMemHandle, u8* threadID)
{
if(!handle)handle=&gspGpuHandle;
- if(size>0x80 || !data)return -1;
-
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x40080; //request header code
- cmdbuf[1]=regAddr;
- cmdbuf[2]=size;
- cmdbuf[0x40]=(size<<14)|2;
- cmdbuf[0x40+1]=(u32)data;
+ cmdbuf[0]=0x00130042; //request header code
+ cmdbuf[1]=flags;
+ cmdbuf[2]=0x0;
+ cmdbuf[3]=eventHandle;
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
+ if(threadID)*threadID=cmdbuf[2];
+ if(outMemHandle)*outMemHandle=cmdbuf[4];
+
return cmdbuf[1];
}
-Result GSPGPU_RegisterInterruptRelayQueue(Handle* handle, Handle eventHandle, u32 flags, Handle* outMemHandle, u8* threadID)
+Result GSPGPU_UnregisterInterruptRelayQueue(Handle* handle)
+{
+ if(!handle)handle=&gspGpuHandle;
+
+ u32* cmdbuf=getThreadCommandBuffer();
+ cmdbuf[0]=0x00140000; //request header code
+
+ Result ret=0;
+ if((ret=svcSendSyncRequest(*handle)))return ret;
+
+ return cmdbuf[1];
+}
+
+Result GSPGPU_AcquireRight(Handle* handle, u8 flags)
{
if(!handle)handle=&gspGpuHandle;
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x130042; //request header code
+ cmdbuf[0]=0x160042; //request header code
cmdbuf[1]=flags;
cmdbuf[2]=0x0;
- cmdbuf[3]=eventHandle;
+ cmdbuf[3]=0xffff8001;
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
- if(threadID)*threadID=cmdbuf[2];
- if(outMemHandle)*outMemHandle=cmdbuf[4];
+ return cmdbuf[1];
+}
+
+Result GSPGPU_ReleaseRight(Handle* handle)
+{
+ if(!handle)handle=&gspGpuHandle;
+ u32* cmdbuf=getThreadCommandBuffer();
+ cmdbuf[0]=0x170000; //request header code
+
+ Result ret=0;
+ if((ret=svcSendSyncRequest(*handle)))return ret;
+
return cmdbuf[1];
}
-Result GSPGPU_UnregisterInterruptRelayQueue(Handle* handle)
+Result GSPGPU_ImportDisplayCaptureInfo(Handle* handle, GSP_CaptureInfo *captureinfo)
{
if(!handle)handle=&gspGpuHandle;
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0x00140000; //request header code
+ cmdbuf[0]=0x00180000; //request header code
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;
+
+ ret = cmdbuf[1];
+
+ if(ret==0)
+ {
+ memcpy(captureinfo, &cmdbuf[2], 0x20);
+ }
+
+ return ret;
+}
+
+Result GSPGPU_SaveVramSysArea(Handle* handle)
+{
+ if(!handle)handle=&gspGpuHandle;
+ u32* cmdbuf=getThreadCommandBuffer();
+ cmdbuf[0]=0x00190000; //request header code
+
+ Result ret=0;
+ if((ret=svcSendSyncRequest(*handle)))return ret;
+
return cmdbuf[1];
}
-Result GSPGPU_TriggerCmdReqQueue(Handle* handle)
+Result GSPGPU_RestoreVramSysArea(Handle* handle)
{
if(!handle)handle=&gspGpuHandle;
u32* cmdbuf=getThreadCommandBuffer();
- cmdbuf[0]=0xC0000; //request header code
+ cmdbuf[0]=0x001A0000; //request header code
Result ret=0;
if((ret=svcSendSyncRequest(*handle)))return ret;