From cae89fb315afb4dfd83d9e33298505a58ecb7a08 Mon Sep 17 00:00:00 2001 From: archshift Date: Fri, 3 Apr 2015 15:35:51 -0700 Subject: Allow the user to set the background clear color during emulation The background color can be seen at the sides of the bottom screen or when the window is wider than normal. --- src/citra/config.cpp | 5 +++++ src/citra/default_ini.h | 7 +++++++ src/citra_qt/config.cpp | 13 +++++++++++++ src/core/settings.h | 5 +++++ src/video_core/renderer_opengl/renderer_opengl.cpp | 3 ++- 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/citra/config.cpp b/src/citra/config.cpp index e9f3dfd5..43175d6c 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -66,6 +66,11 @@ void Config::ReadValues() { Settings::values.gpu_refresh_rate = glfw_config->GetInteger("Core", "gpu_refresh_rate", 30); Settings::values.frame_skip = glfw_config->GetInteger("Core", "frame_skip", 0); + // Renderer + Settings::values.bg_red = (float)glfw_config->GetReal("Renderer", "bg_red", 1.0); + Settings::values.bg_green = (float)glfw_config->GetReal("Renderer", "bg_green", 1.0); + Settings::values.bg_blue = (float)glfw_config->GetReal("Renderer", "bg_blue", 1.0); + // Data Storage Settings::values.use_virtual_sd = glfw_config->GetBoolean("Data Storage", "use_virtual_sd", true); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index fc02a3ce..1dd97192 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -41,6 +41,13 @@ gpu_refresh_rate = # 0 (default): No frameskip, 1: x2 frameskip, 2: x4 frameskip, 3: x8 frameskip, etc. frame_skip = +[Renderer] +# The clear color for the renderer. What shows up on the sides of the bottom screen. +# Must be in range of 0.0-1.0. Defaults to 1.0 for all. +bg_red = +bg_blue = +bg_green = + [Data Storage] # Whether to create a virtual SD card. # 1 (default): Yes, 0: No diff --git a/src/citra_qt/config.cpp b/src/citra_qt/config.cpp index ac250e0a..fb85121b 100644 --- a/src/citra_qt/config.cpp +++ b/src/citra_qt/config.cpp @@ -53,6 +53,12 @@ void Config::ReadValues() { Settings::values.frame_skip = qt_config->value("frame_skip", 0).toInt(); qt_config->endGroup(); + qt_config->beginGroup("Renderer"); + Settings::values.bg_red = qt_config->value("bg_red", 1.0).toFloat(); + Settings::values.bg_green = qt_config->value("bg_green", 1.0).toFloat(); + Settings::values.bg_blue = qt_config->value("bg_blue", 1.0).toFloat(); + qt_config->endGroup(); + qt_config->beginGroup("Data Storage"); Settings::values.use_virtual_sd = qt_config->value("use_virtual_sd", true).toBool(); qt_config->endGroup(); @@ -98,6 +104,13 @@ void Config::SaveValues() { qt_config->setValue("frame_skip", Settings::values.frame_skip); qt_config->endGroup(); + qt_config->beginGroup("Renderer"); + // Cast to double because Qt's written float values are not human-readable + qt_config->setValue("bg_red", (double)Settings::values.bg_red); + qt_config->setValue("bg_green", (double)Settings::values.bg_green); + qt_config->setValue("bg_blue", (double)Settings::values.bg_blue); + qt_config->endGroup(); + qt_config->beginGroup("Data Storage"); qt_config->setValue("use_virtual_sd", Settings::values.use_virtual_sd); qt_config->endGroup(); diff --git a/src/core/settings.h b/src/core/settings.h index 870eea95..0f470024 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -44,6 +44,11 @@ struct Values { // System Region int region_value; + // Renderer + float bg_red; + float bg_green; + float bg_blue; + std::string log_filter; } extern values; diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 4273a177..5e864b75 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -6,6 +6,7 @@ #include "core/hw/hw.h" #include "core/hw/lcd.h" #include "core/mem_map.h" +#include "core/settings.h" #include "common/emu_window.h" #include "common/profiler_reporting.h" @@ -172,7 +173,7 @@ void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color * Initializes the OpenGL state and creates persistent objects. */ void RendererOpenGL::InitOpenGLObjects() { - glClearColor(1.0f, 1.0f, 1.0f, 0.0f); + glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, 0.0f); glDisable(GL_DEPTH_TEST); // Link shaders and get variable locations -- cgit v1.2.3