void drawBG() { sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0x550055); sceGuEnable(GU_TEXTURE_2D); sceGuTexMode(GU_PSM_T8, 0, 0, GU_FALSE); sceGuTexFunc(GU_TFX_DECAL, GU_TCC_RGBA); sceGuTexImage(0, 4, 4, 16, bgData); sceGuDrawArray(GU_SPRITES, GU_TEXTURE_16BIT | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 2, NULL, bg); }
void draw() { int x = 10, y = 10; sceDisplaySetMode(0, SCR_WIDTH, SCR_HEIGHT); sceGuStart(GU_DIRECT, list); sceGuClear(GU_COLOR_BUFFER_BIT); sceGuClutMode(GU_PSM_8888, 0, 0xFF, 0); sceGuClutLoad(1, clut); drawBG(); // Reset things. sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 0); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x00); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x000000); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x00); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0); nextBox(&x, &y); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000); nextBox(&x, &y); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0x00FF00); nextBox(&x, &y); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0x0000FF); nextBox(&x, &y); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0); nextBoxHasColor(&x, &y, HASCOLOR_RGBA); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, GU_AMBIENT); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x00); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x0000FF); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x00); sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1); nextBoxHasColor(&x, &y, HASCOLOR_RGBA); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x80); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFFFFFF); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0xFFFFFF); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x80); sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1); nextBoxHasColor(&x, &y, HASCOLOR_RGBA); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0); nextBoxHasColor(&x, &y, HASCOLOR_RGBA_TRANSPARENT); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, GU_AMBIENT); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x0000FF); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x0); sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1); nextBoxHasColor(&x, &y, HASCOLOR_RGBA_TRANSPARENT); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x10); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFFFFFF); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0xFFFFFF); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x10); sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1); nextBoxHasColor(&x, &y, HASCOLOR_RGBA_TRANSPARENT); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0); nextBoxHasColor(&x, &y, HASCOLOR_RGB); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, GU_AMBIENT); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x0000FF); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x0); sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1); nextBoxHasColor(&x, &y, HASCOLOR_RGB); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x10); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFFFFFF); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0xFFFFFF); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x10); sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1); nextBoxHasColor(&x, &y, HASCOLOR_RGB); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0); nextBoxHasColor(&x, &y, HASCOLOR_RGB_TRANSPARENT); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, GU_AMBIENT); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x0000FF); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x0); sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1); nextBoxHasColor(&x, &y, HASCOLOR_RGB_TRANSPARENT); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF); sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x10); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFFFFFF); sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0xFFFFFF); sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x10); sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1); nextBoxHasColor(&x, &y, HASCOLOR_RGB_TRANSPARENT); sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0); sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0); nextBox(&x, &y); /*ScePspFVector3 pos = {x, y, 0}; sceGuLight(0, GU_DIRECTIONAL, GU_AMBIENT_AND_DIFFUSE, &pos); nextBox(&x, &y); pos.x = x; pos.y = y; sceGuLight(0, GU_DIRECTIONAL, GU_AMBIENT_AND_DIFFUSE, &pos); sceGuLightMode(GU_SINGLE_COLOR); sceGuLightColor(0, GU_AMBIENT, 0x00FF00); sceGuLightAtt(0, 1.0, 1.0, 1.0); nextBox(&x, &y);*/ sceGuFinish(); sceGuSync(GU_SYNC_LIST, GU_SYNC_WHAT_DONE); sceGuSync(0, 0); sceDisplayWaitVblankStart(); }
void draw() { startFrame(); sceGuTexMode(GU_PSM_T8, 0, 0, GU_FALSE); sceGuTexFilter(GU_NEAREST, GU_NEAREST); sceGuTexFunc(GU_TFX_DECAL, GU_TCC_RGB); sceGuClutMode(GU_PSM_8888, 0, 0xFF, 0); sceGuTexImage(0, 2, 2, 16, imageDataPatch); sceGuClutLoad(1, clutRGBY); sceGuPatchPrim(GU_TRIANGLE_STRIP); sceGuPatchDivide(16, 16); sceGuPatchFrontFace(GU_CW); sceGuDisable(GU_TEXTURE_2D); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices1_simple); // Let's see how UVs are interpolated. Simple bilinear will fail here. sceGuEnable(GU_TEXTURE_2D); sceGuDrawBezier(GU_TEXTURE_16BIT | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices2_uvs); sceGuDisable(GU_TEXTURE_2D); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices3_colors); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices4_pos); // Other primitive types. sceGuSendCommandi(55, 1); sceGuPatchDivide(4, 4); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices5_lines); sceGuSendCommandi(55, 2); sceGuPatchDivide(4, 4); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices6_points); sceGuSendCommandi(55, 3); sceGuPatchDivide(4, 4); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices7_prim3); sceGuSendCommandi(55, 4); sceGuPatchDivide(4, 4); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices8_prim4); sceGuPatchPrim(GU_TRIANGLE_STRIP); sceGuShadeModel(GU_FLAT); sceGuPatchDivide(1, 1); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices9_div1); sceGuPatchDivide(1, 2); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices10_div1_2); sceGuPatchDivide(2, 2); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices11_div2); sceGuPatchDivide(4, 4); sceGuShadeModel(GU_SMOOTH); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 2, NULL, vertices12_4x2); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 5, NULL, vertices13_4x5); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 8, NULL, vertices14_4x8); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_8BIT, 4, 4, indices15_inds8, vertices15_inds8); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_16BIT, 4, 4, indices16_inds16, vertices16_inds16); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_BITS, 4, 4, indices17_inds32, vertices17_inds32); // Does the vertex pointer increment? sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices18_19_inc); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, NULL); // And indices? sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_8BIT, 4, 4, indices20_21_ind_inc, vertices20_21_ind_inc); sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_8BIT, 4, 4, NULL, NULL); endFrame(); }