diff --git a/README.md b/README.md index d8c8ab203..58b3f1306 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 1410. +This is the source code for early-access 1411. ## Legal Notice diff --git a/src/core/hle/kernel/k_address_arbiter.cpp b/src/core/hle/kernel/k_address_arbiter.cpp index 9309376cc..affc04852 100755 --- a/src/core/hle/kernel/k_address_arbiter.cpp +++ b/src/core/hle/kernel/k_address_arbiter.cpp @@ -120,7 +120,7 @@ ResultCode KAddressArbiter::SignalAndIncrementIfEqual(VAddr addr, s32 value, s32 s32 user_value{}; R_UNLESS(UpdateIfEqual(system, std::addressof(user_value), addr, value, value + 1), Svc::ResultInvalidCurrentMemory); - R_UNLESS(user_value == value, Svc::ResultInvalidState); + R_UNLESS_NOLOG(user_value == value, Svc::ResultInvalidState); auto it = thread_tree.nfind_light({addr, -1}); while ((it != thread_tree.end()) && (count <= 0 || num_waiters < count) && diff --git a/src/input_common/mouse/mouse_input.cpp b/src/input_common/mouse/mouse_input.cpp index 3cdf7b7f1..132845929 100755 --- a/src/input_common/mouse/mouse_input.cpp +++ b/src/input_common/mouse/mouse_input.cpp @@ -70,10 +70,16 @@ void Mouse::MouseMove(int x, int y, int center_x, int center_y) { for (MouseInfo& info : mouse_info) { if (Settings::values.mouse_panning) { const auto mouse_change = Common::MakeVec(x, y) - Common::MakeVec(center_x, center_y); - info.data.axis = {mouse_change.x, -mouse_change.y}; + const auto angle = std::atan2(-mouse_change.y, mouse_change.x); + const auto length = + (mouse_change.y * mouse_change.y) + (mouse_change.x * mouse_change.x); - if (mouse_change.x == 0 && mouse_change.y == 0) { + info.data.axis = {static_cast(100 * std::cos(angle)), + static_cast(100 * std::sin(angle))}; + + if (length < 4) { info.tilt_speed = 0; + info.data.axis = {}; } else { info.tilt_direction = mouse_change.Cast(); info.tilt_speed = info.tilt_direction.Normalize() * info.sensitivity; diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 82409c7d2..89f3245a0 100755 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -510,7 +510,7 @@ void Config::ReadControlValues() { ReadSetting(QStringLiteral("emulate_analog_keyboard"), false).toBool(); Settings::values.mouse_panning = ReadSetting(QStringLiteral("mouse_panning"), false).toBool(); Settings::values.mouse_panning_sensitivity = - ReadSetting(QStringLiteral("mouse_panning_sensitivity"), 16).toFloat(); + ReadSetting(QStringLiteral("mouse_panning_sensitivity"), 1).toFloat(); ReadSettingGlobal(Settings::values.use_docked_mode, QStringLiteral("use_docked_mode"), true); ReadSettingGlobal(Settings::values.vibration_enabled, QStringLiteral("vibration_enabled"), @@ -1190,7 +1190,7 @@ void Config::SaveControlValues() { Settings::values.emulate_analog_keyboard, false); WriteSetting(QStringLiteral("mouse_panning"), Settings::values.mouse_panning, false); WriteSetting(QStringLiteral("mouse_panning_sensitivity"), - Settings::values.mouse_panning_sensitivity, 16.0f); + Settings::values.mouse_panning_sensitivity, 1.0f); qt_config->endGroup(); } diff --git a/src/yuzu/configuration/configure_input_advanced.ui b/src/yuzu/configuration/configure_input_advanced.ui index 25b6df26c..173130d8d 100755 --- a/src/yuzu/configuration/configure_input_advanced.ui +++ b/src/yuzu/configuration/configure_input_advanced.ui @@ -2574,23 +2574,26 @@ + + Mouse sensitivity + Qt::AlignCenter - 1 + 2 0.100000000000000 - 32.000000000000000 + 16.000000000000000 - 0.100000000000000 + 0.010000000000000 - 16.000000000000000 + 1.000000000000000 diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 05be17c6e..4fffa9b63 100755 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -590,9 +590,7 @@ void ConfigureInputPlayer::ApplyConfiguration() { if (player_index == 0) { auto& handheld = Settings::values.players.GetValue()[HANDHELD_INDEX]; const auto handheld_connected = handheld.connected; - if (player.controller_type == Settings::ControllerType::Handheld) { - handheld = player; - } + handheld = player; handheld.connected = handheld_connected; } } @@ -606,7 +604,7 @@ void ConfigureInputPlayer::TryConnectSelectedController() { controller_type != Settings::ControllerType::Handheld; // Connect Handheld depending on Player 1's controller configuration. - if (player_index == 0 && controller_type == Settings::ControllerType::Handheld) { + if (player_index == 0) { auto& handheld = Settings::values.players.GetValue()[HANDHELD_INDEX]; const auto handheld_connected = ui->groupConnectedController->isChecked() && controller_type == Settings::ControllerType::Handheld; diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index dd58d99fc..3629de221 100755 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -852,8 +852,14 @@ void GMainWindow::InitializeHotkeys() { [] { Settings::values.audio_muted = !Settings::values.audio_muted; }); connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Toggle Mouse Panning"), this), - &QShortcut::activated, this, - [] { Settings::values.mouse_panning = !Settings::values.mouse_panning; }); + &QShortcut::activated, this, [&] { + Settings::values.mouse_panning = !Settings::values.mouse_panning; + if (UISettings::values.hide_mouse || Settings::values.mouse_panning) { + mouse_hide_timer.start(); + render_window->installEventFilter(render_window); + render_window->setAttribute(Qt::WA_Hover, true); + } + }); } void GMainWindow::SetDefaultUIGeometry() { @@ -2603,7 +2609,8 @@ void GMainWindow::UpdateUISettings() { } void GMainWindow::HideMouseCursor() { - if (emu_thread == nullptr || UISettings::values.hide_mouse == false) { + if (emu_thread == nullptr || + (!UISettings::values.hide_mouse && !Settings::values.mouse_panning)) { mouse_hide_timer.stop(); ShowMouseCursor(); return;