diff options
Diffstat (limited to 'plugins/gpu_neon/psx_gpu/psx_gpu_parse.c')
-rw-r--r-- | plugins/gpu_neon/psx_gpu/psx_gpu_parse.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c b/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c index 2099edf..be69f44 100644 --- a/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c +++ b/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c @@ -228,7 +228,7 @@ void gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size) get_vertex_data_xy(0, 2); get_vertex_data_xy(1, 4); get_vertex_data_xy(2, 6); - + render_triangle(psx_gpu, vertexes, current_command); break; } @@ -359,7 +359,8 @@ void gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size) while(1) { xy = *list_position; - if(xy == 0x55555555) + + if((xy & 0xF000F000) == 0x50005000) break; vertexes[0] = vertexes[1]; @@ -370,6 +371,9 @@ void gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size) list_position++; num_vertexes++; + if(list_position > list_end) + break; + render_line(psx_gpu, vertexes, current_command, list[0]); } @@ -413,7 +417,7 @@ void gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size) while(1) { color = list_position[0]; - if(color == 0x55555555) + if((color & 0xF000F000) == 0x50005000) break; xy = list_position[1]; @@ -429,6 +433,9 @@ void gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size) list_position += 2; num_vertexes++; + if(list_position > list_end) + break; + render_line(psx_gpu, vertexes, current_command, 0); } |