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);
+}
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