1.1 --- a/src/pvr2/tileiter.h Wed Dec 08 18:33:23 2010 +1000
1.2 +++ b/src/pvr2/tileiter.h Wed Jan 19 10:45:06 2011 +1000
1.5 uint32_t entry = *it->ptr;
1.6 uint32_t tag = entry >> 29;
1.9 - int vertex_count = tag-1; /* 4 == tri, 5 == quad */
1.10 - int vertex_length = (entry >> 21) & 0x07;
1.11 - if( (entry & 0x01000000) && (pvr2_scene.shadow_mode == SHADOW_FULL) ) {
1.12 - it->poly_size = 5 + (vertex_length<<1) * vertex_count;
1.14 - it->poly_size = 3 + vertex_length * vertex_count;
1.16 - it->strip_count = ((entry >> 25) & 0x0F);
1.17 - it->poly_addr = entry & 0x001FFFFF;
1.18 + if( tag == 0x07 ) {
1.19 + if( tag & 0x10000000 ) {
1.23 - /* Other polygon */
1.24 - it->strip_count = 0;
1.25 - it->poly_addr = entry & 0x001FFFFF;
1.27 + it->ptr = (uint32_t *)(pvr2_main_ram + (entry&0x007FFFFF));
1.28 + it->poly_addr = -1;
1.31 + } else if( tag == 6 ) {
1.32 + /* Illegal? Skip */
1.34 + } else if( tag & 0x04 ) {
1.35 + int vertex_count = tag-1; /* 4 == tri, 5 == quad */
1.36 + int vertex_length = (entry >> 21) & 0x07;
1.37 + if( (entry & 0x01000000) && (pvr2_scene.shadow_mode == SHADOW_FULL) ) {
1.38 + it->poly_size = 5 + (vertex_length<<1) * vertex_count;
1.40 + it->poly_size = 3 + vertex_length * vertex_count;
1.42 + it->strip_count = ((entry >> 25) & 0x0F);
1.43 + it->poly_addr = entry & 0x001FFFFF;
1.46 - if( tag == 0x07 ) {
1.47 - if( entry & 0x10000000 ) {
1.51 - it->ptr = (uint32_t *)(pvr2_main_ram + (entry&0x007FFFFF));
1.53 - } else if( tag == 6 ) {
1.54 - /* Illegal? Skip */
1.57 + /* Other polygon */
1.58 + it->strip_count = 0;
1.59 + it->poly_addr = entry & 0x001FFFFF;