From a5940b2e212f7fa95f1498a7efc55ef4d5ec0497 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 2 Feb 2025 15:32:07 +1000 Subject: [PATCH] GPU: Use constants for display overscan range --- src/core/gpu.cpp | 32 ++++++++++++++++++++------------ src/core/gpu.h | 8 ++++++++ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/core/gpu.cpp b/src/core/gpu.cpp index 7f495323f..9ba437a60 100644 --- a/src/core/gpu.cpp +++ b/src/core/gpu.cpp @@ -839,12 +839,16 @@ void GPU::UpdateCRTCDisplayParameters() case DisplayCropMode::Overscan: case DisplayCropMode::OverscanUncorrected: - cs.horizontal_visible_start = static_cast(std::max(0, 628 + g_settings.display_active_start_offset)); - cs.horizontal_visible_end = - static_cast(std::max(cs.horizontal_visible_start, 3188 + g_settings.display_active_end_offset)); - cs.vertical_visible_start = static_cast(std::max(0, 30 + g_settings.display_line_start_offset)); - cs.vertical_visible_end = - static_cast(std::max(cs.vertical_visible_start, 298 + g_settings.display_line_end_offset)); + cs.horizontal_visible_start = static_cast(std::max( + 0, static_cast(PAL_OVERSCAN_HORIZONTAL_ACTIVE_START) + g_settings.display_active_start_offset)); + cs.horizontal_visible_end = static_cast( + std::max(cs.horizontal_visible_start, + static_cast(PAL_OVERSCAN_HORIZONTAL_ACTIVE_END) + g_settings.display_active_end_offset)); + cs.vertical_visible_start = static_cast(std::max( + 0, static_cast(PAL_OVERSCAN_VERTICAL_ACTIVE_START) + g_settings.display_line_start_offset)); + cs.vertical_visible_end = static_cast( + std::max(cs.vertical_visible_start, + static_cast(NTSC_OVERSCAN_VERTICAL_ACTIVE_END) + g_settings.display_line_end_offset)); break; case DisplayCropMode::Borders: @@ -878,12 +882,16 @@ void GPU::UpdateCRTCDisplayParameters() case DisplayCropMode::Overscan: case DisplayCropMode::OverscanUncorrected: - cs.horizontal_visible_start = static_cast(std::max(0, 608 + g_settings.display_active_start_offset)); - cs.horizontal_visible_end = - static_cast(std::max(cs.horizontal_visible_start, 3168 + g_settings.display_active_end_offset)); - cs.vertical_visible_start = static_cast(std::max(0, 24 + g_settings.display_line_start_offset)); - cs.vertical_visible_end = - static_cast(std::max(cs.vertical_visible_start, 248 + g_settings.display_line_end_offset)); + cs.horizontal_visible_start = static_cast(std::max( + 0, static_cast(NTSC_OVERSCAN_HORIZONTAL_ACTIVE_START) + g_settings.display_active_start_offset)); + cs.horizontal_visible_end = static_cast( + std::max(cs.horizontal_visible_start, + static_cast(NTSC_OVERSCAN_HORIZONTAL_ACTIVE_END) + g_settings.display_active_end_offset)); + cs.vertical_visible_start = static_cast(std::max( + 0, static_cast(NTSC_OVERSCAN_VERTICAL_ACTIVE_START) + g_settings.display_line_start_offset)); + cs.vertical_visible_end = static_cast( + std::max(cs.vertical_visible_start, + static_cast(NTSC_OVERSCAN_VERTICAL_ACTIVE_END) + g_settings.display_line_end_offset)); break; case DisplayCropMode::Borders: diff --git a/src/core/gpu.h b/src/core/gpu.h index e7a327865..0f49efdc4 100644 --- a/src/core/gpu.h +++ b/src/core/gpu.h @@ -84,10 +84,18 @@ public: NTSC_HORIZONTAL_ACTIVE_END = 3288, NTSC_VERTICAL_ACTIVE_START = 16, NTSC_VERTICAL_ACTIVE_END = 256, + NTSC_OVERSCAN_HORIZONTAL_ACTIVE_START = 608, + NTSC_OVERSCAN_HORIZONTAL_ACTIVE_END = 3168, + NTSC_OVERSCAN_VERTICAL_ACTIVE_START = 24, + NTSC_OVERSCAN_VERTICAL_ACTIVE_END = 248, PAL_HORIZONTAL_ACTIVE_START = 488, PAL_HORIZONTAL_ACTIVE_END = 3300, PAL_VERTICAL_ACTIVE_START = 20, PAL_VERTICAL_ACTIVE_END = 308, + PAL_OVERSCAN_HORIZONTAL_ACTIVE_START = 628, + PAL_OVERSCAN_HORIZONTAL_ACTIVE_END = 3188, + PAL_OVERSCAN_VERTICAL_ACTIVE_START = 30, + PAL_OVERSCAN_VERTICAL_ACTIVE_END = 298, }; // Base class constructor.