diff --git a/libctru/include/ctr/GPU.h b/libctru/include/ctr/GPU.h index 1a9e3b6..1e3e55b 100644 --- a/libctru/include/ctr/GPU.h +++ b/libctru/include/ctr/GPU.h @@ -10,7 +10,25 @@ void GPUCMD_Add(u32 cmd, u32* param, u32 paramlength); void GPUCMD_AddSingleParam(u32 cmd, u32 param); void GPUCMD_Finalize(); +typedef enum{ + GPU_RGBA8=0x0, + GPU_RGB8=0x1, + GPU_RGBA5551=0x2, + GPU_RGB565=0x3, + GPU_RGBA4=0x4, + GPU_LA8=0x5, + GPU_HILO8=0x6, + GPU_L8=0x7, + GPU_A8=0x8, + GPU_LA4=0x9, + GPU_L4=0xA, + GPU_ETC1=0xB, + GPU_ETC1A4=0xC +}GPU_TEXCOLOR; + void GPU_SetUniform(u32 startreg, u32* data, u32 numreg); void GPU_SetViewport(u32* depthBuffer, u32* colorBuffer, u32 x, u32 y, u32 w, u32 h); +void GPU_DepthRange(float nearVal, float farVal); +void GPU_SetTexture(u32* data, u16 width, u16 height, u32 param, GPU_TEXCOLOR colorType); #endif diff --git a/libctru/source/GPU.c b/libctru/source/GPU.c index e7af939..7302e3d 100644 --- a/libctru/source/GPU.c +++ b/libctru/source/GPU.c @@ -268,3 +268,18 @@ void GPU_SetViewport(u32* depthBuffer, u32* colorBuffer, u32 x, u32 y, u32 w, u3 param[0x2]=((h-1)<<16)|((w-1)&0xFFFF); GPUCMD_Add(0x800F0065, param, 0x00000003); } + +void GPU_DepthRange(float nearVal, float farVal) +{ + GPUCMD_AddSingleParam(0x000F006D, 0x00000001); //? + GPUCMD_AddSingleParam(0x000F004D, f32tof24(nearVal)); + GPUCMD_AddSingleParam(0x000F004E, f32tof24(farVal)); +} + +void GPU_SetTexture(u32* data, u16 width, u16 height, u32 param, GPU_TEXCOLOR colorType) +{ + GPUCMD_AddSingleParam(0x000F008E, colorType); + GPUCMD_AddSingleParam(0x000F0085, ((u32)data)>>3); + GPUCMD_AddSingleParam(0x000F0082, (width)|(height<<16)); + GPUCMD_AddSingleParam(0x000F0083, param); +}