]> Chaos Git - corbenik/ctrulib.git/commitdiff
oops, looks like i was editing deprecated files
authorsmea <smealum@gmail.com>
Tue, 26 Aug 2014 04:35:53 +0000 (21:35 -0700)
committersmea <smealum@gmail.com>
Tue, 26 Aug 2014 04:35:53 +0000 (21:35 -0700)
libctru/source/gpu/gpu.c
libctru/source/gpu/shdr.c

index 9844dc57d7534cefba41fc63fb59f4da86906a65..e9e8067016a2e42b0ca68d68d2165c458b1f19e1 100644 (file)
@@ -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);
+}
index 0fff0d497297ec8b0d5b03418a2b1ce8e08a69c5..542f60b5b16dbb280b8ae84782a4ffed6387062a 100644 (file)
@@ -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