void GSPGPU_AcquireRight(Handle handle, u8 flags);
void GSPGPU_SetLcdForceBlack(Handle handle, u8 flags);
+void GSPGPU_FlushDataCache(Handle handle, u8* adr, u32 size);
void GSPGPU_WriteHWRegs(Handle handle, u32 regAddr, u8* data, u8 size);
void GSPGPU_ReadHWRegs(Handle handle, u32 regAddr, u8* data, u8 size);
void GSPGPU_RegisterInterruptRelayQueue(Handle handle, Handle eventHandle, u32 flags, Handle* outMemHandle, u8* threadID);
--- /dev/null
+#ifndef HID_H
+#define HID_H
+
+#define CPAD_X(v) ((s16)((v)&0xFFFF))
+#define CPAD_Y(v) ((s16)(((v>>16))&0xFFFF))
+
+#define TOUCH_X(v) ((u16)((v)&0xFFFF))
+#define TOUCH_Y(v) ((u16)(((v>>16))&0xFFFF))
+
+typedef enum
+{
+ PAD_A = (1<<0),
+ PAD_B = (1<<1),
+ PAD_SELECT = (1<<2),
+ PAD_START = (1<<3),
+ PAD_RIGHT = (1<<4),
+ PAD_LEFT = (1<<5),
+ PAD_UP = (1<<6),
+ PAD_DOWN = (1<<7),
+ PAD_R = (1<<8),
+ PAD_L = (1<<9),
+ PAD_X = (1<<10),
+ PAD_Y = (1<<11)
+}PAD_KEY;
+
+void HIDUSER_GetInfo(Handle handle, Handle* outMemHandle);
+void HIDUSER_Init(Handle handle);
+
+#endif
#define SVC_H
u32* svc_getData(void);
+ void svc_exitProcess(void);
void svc_sleepThread(s64 ns);
Result svc_controlMemory(u32* outaddr, u32 addr0, u32 addr1, u32 size, u32 operation, u32 permissions); //(outaddr is usually the same as the input addr0)
Result svc_createEvent(Handle* event, u8 resettype);
svc_sendSyncRequest(handle); //check return value...
}
+void GSPGPU_FlushDataCache(Handle handle, u8* adr, u32 size)
+{
+ u32* svcData=svc_getData();
+ svcData[0]=0x80082; //request header code
+ svcData[1]=(u32)adr;
+ svcData[2]=size;
+ svcData[3]=0x0;
+ svcData[4]=0xffff8001;
+ svc_sendSyncRequest(handle); //check return value...
+}
+
void GSPGPU_WriteHWRegs(Handle handle, u32 regAddr, u8* data, u8 size)
{
if(size>0x80 || !data)return;
--- /dev/null
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctr/types.h>
+#include <ctr/HID.h>
+#include <ctr/svc.h>
+
+void HIDUSER_GetInfo(Handle handle, Handle* outMemHandle)
+{
+ u32* svcData=svc_getData();
+ svcData[0]=0xa0000; //request header code
+ svc_sendSyncRequest(handle); //check return value...
+ if(outMemHandle)*outMemHandle=svcData[3];
+}
+
+void HIDUSER_Init(Handle handle)
+{
+ u32* svcData=svc_getData();
+ svcData[0]=0x110000; //request header code
+ svc_sendSyncRequest(handle); //check return value...
+}
add sp, sp, #4
bx lr
+.global svc_exitProcess
+.type svc_exitProcess, %function
+svc_exitProcess:
+ svc 0x03
+ bx lr
+
.global svc_sleepThread
.type svc_sleepThread, %function
svc_sleepThread: