aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar archshift <gh@archshift.com>2015-04-03 15:35:51 -0700
committerGravatar archshift <gh@archshift.com>2015-04-03 15:35:51 -0700
commitcae89fb315afb4dfd83d9e33298505a58ecb7a08 (patch)
treee43cb6ae2f690b81e825f0b7dcc9fc7f1433fbc3
parente25ffaba86c5b5a79256faf80c39f7e37343701d (diff)
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.
-rw-r--r--src/citra/config.cpp5
-rw-r--r--src/citra/default_ini.h7
-rw-r--r--src/citra_qt/config.cpp13
-rw-r--r--src/core/settings.h5
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp3
5 files changed, 32 insertions, 1 deletions
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