summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon
diff options
context:
space:
mode:
authorFiloppi <filippotarpini@hotmail.it>2023-09-09 15:48:37 +0300
committerFiloppi <filippotarpini@hotmail.it>2023-12-18 00:28:14 +0200
commit24004af8145a7babe0d0fcfb1b18231dda665aff (patch)
tree8daacb2069e6275ea3b6bc0fcfd66271b1be2b0e /Source/Core/VideoCommon
parentb4bfc4feba19fe314913bceed913cebfc6d19372 (diff)
Video: polish aspect ratio related code comments to make it clearer
Diffstat (limited to 'Source/Core/VideoCommon')
-rw-r--r--Source/Core/VideoCommon/Present.h6
-rw-r--r--Source/Core/VideoCommon/VertexManagerBase.cpp5
-rw-r--r--Source/Core/VideoCommon/Widescreen.cpp1
-rw-r--r--Source/Core/VideoCommon/Widescreen.h3
4 files changed, 12 insertions, 3 deletions
diff --git a/Source/Core/VideoCommon/Present.h b/Source/Core/VideoCommon/Present.h
index c8bbf44257..82942e0270 100644
--- a/Source/Core/VideoCommon/Present.h
+++ b/Source/Core/VideoCommon/Present.h
@@ -46,7 +46,7 @@ public:
void ConfigChanged(u32 changed_bits);
- // Display resolution
+ // Window resolution (display resolution if fullscreen)
int GetBackbufferWidth() const { return m_backbuffer_width; }
int GetBackbufferHeight() const { return m_backbuffer_height; }
float GetBackbufferScale() const { return m_backbuffer_scale; }
@@ -58,6 +58,7 @@ public:
void UpdateDrawRectangle();
+ // Returns the target aspect ratio the XFB output should be drawn with.
float CalculateDrawAspectRatio(bool allow_stretch = true) const;
// Crops the target rectangle to the framebuffer dimensions, reducing the size of the source
@@ -126,6 +127,9 @@ private:
Common::Flag m_surface_changed;
Common::Flag m_surface_resized;
+ // The presentation rectangle.
+ // Width and height correspond to the final output resolution.
+ // Offsets imply black borders (if the window aspect ratio doesn't match the game's one).
MathUtil::Rectangle<int> m_target_rectangle = {};
RcTcacheEntry m_xfb_entry;
diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp
index ac4446abba..35239d4e66 100644
--- a/Source/Core/VideoCommon/VertexManagerBase.cpp
+++ b/Source/Core/VideoCommon/VertexManagerBase.cpp
@@ -91,8 +91,9 @@ static bool IsAnamorphicProjection(const Projection::Raw& projection, const View
const VideoConfig& config)
{
// If ratio between our projection and viewport aspect ratios is similar to 16:9 / 4:3
- // we have an anamorphic projection. This value can be overridden
- // by a GameINI.
+ // we have an anamorphic projection. This value can be overridden by a GameINI.
+ // Game cheats that change the aspect ratio to natively unsupported ones
+ // won't be automatically recognized here.
return std::abs(CalculateProjectionViewportRatio(projection, viewport) -
config.widescreen_heuristic_widescreen_ratio) <
diff --git a/Source/Core/VideoCommon/Widescreen.cpp b/Source/Core/VideoCommon/Widescreen.cpp
index 4ca1ac3ccd..7591d098a4 100644
--- a/Source/Core/VideoCommon/Widescreen.cpp
+++ b/Source/Core/VideoCommon/Widescreen.cpp
@@ -53,6 +53,7 @@ void WidescreenManager::Update()
}
// Heuristic to detect if a GameCube game is in 16:9 anamorphic widescreen mode.
+// Cheats that change the game aspect ratio to natively unsupported ones won't be recognized here.
void WidescreenManager::UpdateWidescreenHeuristic()
{
const auto flush_statistics = g_vertex_manager->ResetFlushAspectRatioCount();
diff --git a/Source/Core/VideoCommon/Widescreen.h b/Source/Core/VideoCommon/Widescreen.h
index c8dc5847ec..586aa48e84 100644
--- a/Source/Core/VideoCommon/Widescreen.h
+++ b/Source/Core/VideoCommon/Widescreen.h
@@ -11,11 +11,14 @@
class PointerWrap;
// This class is responsible for tracking the game's aspect ratio.
+// This exclusively supports 4:3 or 16:9 detection by default.
class WidescreenManager
{
public:
WidescreenManager();
+ // Just a helper to tell whether the game seems to be running in widescreen,
+ // or if it's being forced to.
bool IsGameWidescreen() const { return m_is_game_widescreen; }
void DoState(PointerWrap& p);