summaryrefslogtreecommitdiffstats
path: root/src/citra
diff options
context:
space:
mode:
Diffstat (limited to 'src/citra')
-rw-r--r--src/citra/config.cpp3
-rw-r--r--src/citra/default_ini.h7
-rw-r--r--src/citra/emu_window/emu_window_sdl2.cpp22
-rw-r--r--src/citra/emu_window/emu_window_sdl2.h5
4 files changed, 25 insertions, 12 deletions
diff --git a/src/citra/config.cpp b/src/citra/config.cpp
index 98f093258..bd8ac563b 100644
--- a/src/citra/config.cpp
+++ b/src/citra/config.cpp
@@ -63,8 +63,7 @@ void Config::ReadValues() {
// Renderer
Settings::values.use_hw_renderer = sdl2_config->GetBoolean("Renderer", "use_hw_renderer", true);
Settings::values.use_shader_jit = sdl2_config->GetBoolean("Renderer", "use_shader_jit", true);
- Settings::values.use_scaled_resolution =
- sdl2_config->GetBoolean("Renderer", "use_scaled_resolution", false);
+ Settings::values.resolution_factor = sdl2_config->GetReal("Renderer", "resolution_factor", 1.0);
Settings::values.use_vsync = sdl2_config->GetBoolean("Renderer", "use_vsync", false);
Settings::values.toggle_framelimit =
sdl2_config->GetBoolean("Renderer", "toggle_framelimit", true);
diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h
index bb4720d25..7996813b4 100644
--- a/src/citra/default_ini.h
+++ b/src/citra/default_ini.h
@@ -51,9 +51,10 @@ use_hw_renderer =
# 0: Interpreter (slow), 1 (default): JIT (fast)
use_shader_jit =
-# Whether to use native 3DS screen resolution or to scale rendering resolution to the displayed screen size.
-# 0 (default): Native, 1: Scaled
-use_scaled_resolution =
+# Resolution scale factor
+# 0: Auto (scales resolution to window size), 1: Native 3DS screen resolution, Otherwise a scale
+# factor for the 3DS resolution
+resolution_factor =
# Whether to enable V-Sync (caps the framerate at 60FPS) or not.
# 0 (default): Off, 1: On
diff --git a/src/citra/emu_window/emu_window_sdl2.cpp b/src/citra/emu_window/emu_window_sdl2.cpp
index b0d82b670..81a3abe3f 100644
--- a/src/citra/emu_window/emu_window_sdl2.cpp
+++ b/src/citra/emu_window/emu_window_sdl2.cpp
@@ -19,16 +19,22 @@
void EmuWindow_SDL2::OnMouseMotion(s32 x, s32 y) {
TouchMoved((unsigned)std::max(x, 0), (unsigned)std::max(y, 0));
+ motion_emu->Tilt(x, y);
}
void EmuWindow_SDL2::OnMouseButton(u32 button, u8 state, s32 x, s32 y) {
- if (button != SDL_BUTTON_LEFT)
- return;
-
- if (state == SDL_PRESSED) {
- TouchPressed((unsigned)std::max(x, 0), (unsigned)std::max(y, 0));
- } else {
- TouchReleased();
+ if (button == SDL_BUTTON_LEFT) {
+ if (state == SDL_PRESSED) {
+ TouchPressed((unsigned)std::max(x, 0), (unsigned)std::max(y, 0));
+ } else {
+ TouchReleased();
+ }
+ } else if (button == SDL_BUTTON_RIGHT) {
+ if (state == SDL_PRESSED) {
+ motion_emu->BeginTilt(x, y);
+ } else {
+ motion_emu->EndTilt();
+ }
}
}
@@ -54,6 +60,7 @@ EmuWindow_SDL2::EmuWindow_SDL2() {
keyboard_id = KeyMap::NewDeviceId();
ReloadSetKeymaps();
+ motion_emu = std::make_unique<Motion::MotionEmu>(*this);
SDL_SetMainReady();
@@ -109,6 +116,7 @@ EmuWindow_SDL2::EmuWindow_SDL2() {
EmuWindow_SDL2::~EmuWindow_SDL2() {
SDL_GL_DeleteContext(gl_context);
SDL_Quit();
+ motion_emu = nullptr;
}
void EmuWindow_SDL2::SwapBuffers() {
diff --git a/src/citra/emu_window/emu_window_sdl2.h b/src/citra/emu_window/emu_window_sdl2.h
index c8cd919c6..b1cbf16d7 100644
--- a/src/citra/emu_window/emu_window_sdl2.h
+++ b/src/citra/emu_window/emu_window_sdl2.h
@@ -4,8 +4,10 @@
#pragma once
+#include <memory>
#include <utility>
#include "core/frontend/emu_window.h"
+#include "core/frontend/motion_emu.h"
struct SDL_Window;
@@ -61,4 +63,7 @@ private:
/// Device id of keyboard for use with KeyMap
int keyboard_id;
+
+ /// Motion sensors emulation
+ std::unique_ptr<Motion::MotionEmu> motion_emu;
};