psx_gpu: fix mask set in blend_blocks variant
[pcsx_rearmed.git] / plugins / gpu_neon / psx_gpu / psx_gpu_arm_neon.S
index 4e1e403..d8fb153 100644 (file)
@@ -20,6 +20,7 @@
 #define RENDER_STATE_MASK_EVALUATE                        0x20
 #define RENDER_FLAGS_MODULATE_TEXELS                      0x1
 #define RENDER_FLAGS_BLEND                                0x2
+#define RENDER_INTERLACE_ENABLED                          0x1
 
 #include "psx_gpu_offsets.h"
 
@@ -4279,6 +4280,7 @@ function(blend_blocks_textured_unblended_on)
   beq 1f
 
  0:
+  vorr.u16 pixels, pixels, msb_mask
   vorr.u16 draw_mask, draw_mask, write_mask
   vbif.u16 fb_pixels, pixels, draw_mask
   vst1.u16 { fb_pixels }, [ fb_ptr ]
@@ -4293,6 +4295,7 @@ function(blend_blocks_textured_unblended_on)
   bne 0b
  
  1:
+  vorr.u16 pixels, pixels, msb_mask
   vorr.u16 draw_mask, draw_mask, write_mask
   vbif.u16 fb_pixels, pixels, draw_mask
   vst1.u16 { fb_pixels }, [ fb_ptr ]
@@ -5757,6 +5760,8 @@ function(setup_sprite_untextured)
   ldrh r12, [ psx_gpu, #psx_gpu_render_state_offset ]
   tst r12, #(RENDER_STATE_MASK_EVALUATE | RENDER_FLAGS_MODULATE_TEXELS         \
     | RENDER_FLAGS_BLEND)
+  ldreqb r12, [ psx_gpu, #psx_gpu_render_mode_offset ]
+  tsteq r12, #RENDER_INTERLACE_ENABLED
   beq setup_sprite_untextured_simple
 
   stmdb sp!, { r4 - r11, r14 }