- psx_gpu->viewport_end_x = list[0] & 0x3FF;
- psx_gpu->viewport_end_y = (list[0] >> 10) & 0x1FF;
- psx_gpu->saved_viewport_end_x = psx_gpu->viewport_end_x;
- psx_gpu->saved_viewport_end_y = psx_gpu->viewport_end_y;
+ {
+ s16 viewport_end_x = list[0] & 0x3FF;
+ s16 viewport_end_y = (list[0] >> 10) & 0x1FF;
+ u32 w;
+ s32 d;
+
+ if(viewport_end_x == psx_gpu->viewport_end_x &&
+ viewport_end_y == psx_gpu->viewport_end_y)
+ {
+ break;
+ }
+
+ psx_gpu->viewport_end_x = viewport_end_x;
+ psx_gpu->viewport_end_y = viewport_end_y;
+ psx_gpu->saved_viewport_end_x = viewport_end_x;
+ psx_gpu->saved_viewport_end_y = viewport_end_y;
+
+ w = (u32)viewport_end_x - (u32)psx_gpu->viewport_start_x + 1;
+ d = psx_gpu->enhancement_x_threshold - w;
+ if(-16 <= d && d <= 16)
+ {
+ update_enhancement_buf_table_from_x(psx_gpu,
+ psx_gpu->viewport_start_x, w);
+ }
+ select_enhancement_buf(psx_gpu);