summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2011-08-22 22:16:44 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2011-08-22 22:16:44 +0000
commit99f925a60fd026f9d397e31b7db9984bb491cc6a (patch)
tree64461c39fcdcd321deea88ef44f7bc028c47cc7e /src/mame
parentc0d1aaf1a39dc43c75fac48294d88b95a176f66a (diff)
Implemented command skipped by previous commit, it's for goraud shaded triangles
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/video/taitojc.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/mame/video/taitojc.c b/src/mame/video/taitojc.c
index d753975dfe8..e2c1eaf6ca4 100644
--- a/src/mame/video/taitojc.c
+++ b/src/mame/video/taitojc.c
@@ -679,9 +679,33 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int
ptr += 6;
break;
}
- case 0x01: // Landing Gear
+ case 0x01: // Landing Gear, Goraud Shaded Triangle
{
- ptr += 12;
+ poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(state->m_poly);
+
+ extra->zbuffer = state->m_zbuffer;
+
+ for (i=0; i < 3; i++)
+ {
+ vert[i].p[1] = polygon_fifo[ptr++];
+ vert[i].y = (INT16)(polygon_fifo[ptr++]);
+ vert[i].x = (INT16)(polygon_fifo[ptr++]);
+ vert[i].p[0] = (UINT16)(polygon_fifo[ptr++]);
+ }
+
+ if (vert[0].p[0] < 0x8000 && vert[1].p[0] < 0x8000 && vert[2].p[0] < 0x8000)
+ {
+ if (vert[0].p[1] == vert[1].p[1] &&
+ vert[1].p[1] == vert[2].p[1])
+ {
+ // optimization: all colours the same -> render solid
+ poly_render_triangle(state->m_poly, state->m_framebuffer, &machine.primary_screen->visible_area(), render_solid_scan, 2, &vert[0], &vert[1], &vert[2]);
+ }
+ else
+ {
+ poly_render_triangle(state->m_poly, state->m_framebuffer, &machine.primary_screen->visible_area(), render_shade_scan, 2, &vert[0], &vert[1], &vert[2]);
+ }
+ }
break;
}
default: