X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fgpu_neon%2Fpsx_gpu%2Fpsx_gpu_parse.c;h=61e7de5ebee6f66a8442bd0cb9b467126f79f716;hp=26715c6d3852fff44af76f744146dc22f35f77e6;hb=f3492649a0ced3b4e81f6df6e93c81746fcad54b;hpb=c1817bd9249ee616cf9545a57136d6dd3669ce34 diff --git a/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c b/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c index 26715c6d..61e7de5e 100644 --- a/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c +++ b/plugins/gpu_neon/psx_gpu/psx_gpu_parse.c @@ -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;