psx_gpu: move masking to set_texture
[pcsx_rearmed.git] / plugins / gpu_neon / psx_gpu / psx_gpu_parse.c
index 26715c6..61e7de5 100644 (file)
@@ -92,6 +92,7 @@ void update_texture_ptr(psx_gpu_struct *psx_gpu)
 
 void set_texture(psx_gpu_struct *psx_gpu, u32 texture_settings)
 {
+  texture_settings &= 0x1FF;
   if(psx_gpu->texture_settings != texture_settings)
   {
     u32 new_texture_page = texture_settings & 0x1F;
@@ -634,7 +635,7 @@ u32 gpu_parse(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_command)
 #endif
 
                case 0xE1:
-        set_texture(psx_gpu, list[0] & 0x1FF);
+        set_texture(psx_gpu, list[0]);
 
         if(list[0] & (1 << 9))
           psx_gpu->render_state_base |= RENDER_STATE_DITHER;
@@ -755,6 +756,7 @@ breakloop:
   psx_gpu->viewport_start_y = psx_gpu->saved_viewport_start_y; \
   psx_gpu->viewport_end_x = psx_gpu->saved_viewport_end_x; \
   psx_gpu->viewport_end_y = psx_gpu->saved_viewport_end_y; \
+  psx_gpu->render_mode &= ~RENDER_DOUBLE_MODE; \
 }
 
 #define enhancement_enable() { \
@@ -763,6 +765,7 @@ breakloop:
   psx_gpu->viewport_start_y = psx_gpu->saved_viewport_start_y * 2; \
   psx_gpu->viewport_end_x = psx_gpu->saved_viewport_end_x * 2; \
   psx_gpu->viewport_end_y = psx_gpu->saved_viewport_end_y * 2; \
+  psx_gpu->render_mode |= RENDER_DOUBLE_MODE; \
 }
 
 #define shift_vertices3(v) { \
@@ -869,6 +872,9 @@ u32 gpu_parse_enhanced(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_c
         u32 height = list_s16[5] & 0x1FF;
         u32 color = list[0] & 0xFFFFFF;
 
+        x &= ~0xF;
+        width = ((width + 0xF) & ~0xF);
+
         do_fill(psx_gpu, x, y, width, height, color);
 
         psx_gpu->vram_out_ptr = psx_gpu->enhancement_buf_ptr;
@@ -876,9 +882,7 @@ u32 gpu_parse_enhanced(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_c
         y *= 2;
         width *= 2;
         height *= 2;
-        if (width > 1024)
-          width = 1024;
-        render_block_fill(psx_gpu, color, x, y, width, height);
+        render_block_fill_enh(psx_gpu, color, x, y, width, height);
         break;
       }
   
@@ -1227,7 +1231,7 @@ u32 gpu_parse_enhanced(psx_gpu_struct *psx_gpu, u32 *list, u32 size, u32 *last_c
 #endif
 
       case 0xE1:
-        set_texture(psx_gpu, list[0] & 0x1FF);
+        set_texture(psx_gpu, list[0]);
 
         if(list[0] & (1 << 9))
           psx_gpu->render_state_base |= RENDER_STATE_DITHER;