gpu.state.frame_count = (uint32_t *)cbs->gpu_frame_count;
gpu.state.allow_interlace = cbs->gpu_neon.allow_interlace;
gpu.state.enhancement_enable = cbs->gpu_neon.enhancement_enable;
+ gpu.state.enhancement_active = 0;
gpu.state.downscale_enable = cbs->scale_hires;
gpu.state.screen_centering_type_default = cbs->screen_centering_type_default;
if (gpu.state.screen_centering_type != cbs->screen_centering_type
uint32_t hcnt;
} last_list;
uint32_t last_vram_read_frame;
- uint32_t w_out_old, h_out_old, status_vo_old;
+ uint16_t w_out_old, h_out_old, src_y_old;
+ uint32_t status_vo_old;
short screen_centering_type;
short screen_centering_type_default;
short screen_centering_x;
w = w_out = (gpu->status & PSX_GPU_STATUS_RGB24) ? 2048/3 : 1024;
h = h_out = 512;
#endif
- gpu->state.enhancement_active =
- gpu->get_enhancement_bufer != NULL && gpu->state.enhancement_enable
- && w <= 512 && h <= 256 && !(gpu->status & PSX_GPU_STATUS_RGB24);
-
- if (gpu->state.enhancement_active) {
- w_out *= 2;
- h_out *= 2;
+ if (gpu->get_enhancement_bufer != NULL && gpu->state.enhancement_enable) {
+ gpu->state.enhancement_active =
+ w <= 512 && h <= 256 && !(gpu->status & PSX_GPU_STATUS_RGB24) &&
+ gpu->screen.src_y < (512 - 256/2) && gpu->state.src_y_old < (512 - 256/2);
+ gpu->state.src_y_old = gpu->screen.src_y;
+ if (gpu->state.enhancement_active) {
+ w_out *= 2;
+ h_out *= 2;
+ }
}
if (gpu->status & PSX_GPU_STATUS_RGB24) {
// some asm relies on this alignment