psx_gpu: fix lines
[pcsx_rearmed.git] / plugins / gpu_neon / psx_gpu / psx_gpu_parse.c
index 2099edf..be69f44 100644 (file)
@@ -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);
         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;
       }
         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;
         while(1)
         {
           xy = *list_position;
-          if(xy == 0x55555555)
+
+          if((xy & 0xF000F000) == 0x50005000)
             break;
 
           vertexes[0] = vertexes[1];
             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++;
 
           list_position++;
           num_vertexes++;
 
+          if(list_position > list_end)
+            break;
+
           render_line(psx_gpu, vertexes, current_command, list[0]);
         }
 
           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];
         while(1)
         {
           color = list_position[0];
-          if(color == 0x55555555)
+          if((color & 0xF000F000) == 0x50005000)
             break;
 
           xy = list_position[1];
             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++;
 
           list_position += 2;
           num_vertexes++;
 
+          if(list_position > list_end)
+            break;
+
           render_line(psx_gpu, vertexes, current_command, 0);
         }
 
           render_line(psx_gpu, vertexes, current_command, 0);
         }