X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fgpu_neon%2Fpsx_gpu%2Fpsx_gpu_arm_neon.S;h=d8fb15364e1f1a86a44096fc242b662c862b74a8;hb=134f81ec45254560f7eee08bb0b59d403449c5e0;hp=a2bfa5b5be4fa1eb16ccb3c0a0e842437de78de3;hpb=8438c3c78159bd3986560e30bfe97b7bb91f8cc4;p=pcsx_rearmed.git diff --git a/plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S b/plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S index a2bfa5b5..d8fb1536 100644 --- a/plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S +++ b/plugins/gpu_neon/psx_gpu/psx_gpu_arm_neon.S @@ -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" @@ -1175,6 +1176,10 @@ function(setup_spans_up_down) ldrh temp, [ psx_gpu, #psx_gpu_num_spans_offset ] add temp, temp, height_minor_b + + cmp temp, #MAX_SPANS + beq 5f + strh temp, [ psx_gpu, #psx_gpu_num_spans_offset ] 2: @@ -1190,6 +1195,15 @@ function(setup_spans_up_down) setup_spans_prologue_b() bal 4b + 5: + // FIXME: overflow corner case + sub temp, temp, height_minor_b + bics height_minor_b, #3 + add temp, temp, height_minor_b + strh temp, [ psx_gpu, #psx_gpu_num_spans_offset ] + bne 2b + bal 1b + .pool #undef span_uvrg_offset @@ -4266,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 ] @@ -4280,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 ] @@ -5744,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 }