From b9d6ffe8f2dc16fb77cb6bddf9528f6c6c8cc072 Mon Sep 17 00:00:00 2001 From: smea Date: Mon, 25 Aug 2014 21:35:53 -0700 Subject: [PATCH] oops, looks like i was editing deprecated files --- libctru/source/gpu/gpu.c | 39 +++++++++++++++++++++++++++++++++++++++ libctru/source/gpu/shdr.c | 16 +++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/libctru/source/gpu/gpu.c b/libctru/source/gpu/gpu.c index 9844dc5..e9e8067 100644 --- a/libctru/source/gpu/gpu.c +++ b/libctru/source/gpu/gpu.c @@ -367,3 +367,42 @@ void GPU_SetTexEnv(u8 id, u16 rgbSources, u16 alphaSources, u16 rgbOperands, u16 GPUCMD_Add(0x800F0000|GPU_TEVID[id], param, 0x00000005); } + +void GPU_DrawArray(GPU_Primitive_t primitive, u32 n) +{ + // //? + // GPUCMD_AddSingleParam(0x00040080, 0x00010000); + //set primitive type + GPUCMD_AddSingleParam(0x0002025E, primitive); + GPUCMD_AddSingleParam(0x0002025F, 0x00000001); + //index buffer not used for drawArrays but 0x000F0227 still required + GPUCMD_AddSingleParam(0x000F0227, 0x80000000); + //pass number of vertices + GPUCMD_AddSingleParam(0x000F0228, n); + + GPUCMD_AddSingleParam(0x00010253, 0x00000001); + + GPUCMD_AddSingleParam(0x00010245, 0x00000000); + GPUCMD_AddSingleParam(0x000F022E, 0x00000001); + GPUCMD_AddSingleParam(0x00010245, 0x00000001); + GPUCMD_AddSingleParam(0x000F0231, 0x00000001); +} + +void GPU_DrawElements(GPU_Primitive_t primitive, u32* indexArray, u32 n) +{ + //set primitive type + GPUCMD_AddSingleParam(0x0002025E, primitive); + GPUCMD_AddSingleParam(0x0002025F, 0x00000001); + //index buffer (TODO : support multiple types) + GPUCMD_AddSingleParam(0x000F0227, 0x80000000|((u32)indexArray)); + //pass number of vertices + GPUCMD_AddSingleParam(0x000F0228, n); + + GPUCMD_AddSingleParam(0x00020229, 0x00000100); + GPUCMD_AddSingleParam(0x00020253, 0x00000100); + + GPUCMD_AddSingleParam(0x00010245, 0x00000000); + GPUCMD_AddSingleParam(0x000F022F, 0x00000001); + GPUCMD_AddSingleParam(0x00010245, 0x00000001); + GPUCMD_AddSingleParam(0x000F0231, 0x00000001); +} diff --git a/libctru/source/gpu/shdr.c b/libctru/source/gpu/shdr.c index 0fff0d4..542f60b 100644 --- a/libctru/source/gpu/shdr.c +++ b/libctru/source/gpu/shdr.c @@ -188,10 +188,24 @@ void SHDR_UseProgram(DVLB_s* dvlb, u8 id) if(!dvlb || id>dvlb->numDVLE)return; DVLE_s* dvle=&dvlb->DVLE[id]; + //? + GPUCMD_AddSingleParam(0x00010229, 0x00000000); + GPUCMD_AddSingleParam(0x00010244, 0x00000000); + DVLP_SendCode(&dvlb->DVLP); DVLP_SendOpDesc(&dvlb->DVLP); - DVLE_SendOutmap(dvle); DVLE_SendConstants(dvle); + + GPUCMD_AddSingleParam(0x00080229, 0x00000000); + GPUCMD_AddSingleParam(0x000F02BA, 0x7FFF0000|(dvle->mainOffset&0xFFFF)); //set entrypoint + + GPUCMD_AddSingleParam(0x000F0252, 0x00000000); // should all be part of DVLE_SendOutmap ? + + DVLE_SendOutmap(dvle); + + //? + GPUCMD_AddSingleParam(0x000F0064, 0x00000001); + GPUCMD_AddSingleParam(0x000F006F, 0x00000703); } //TODO