From a02256099164ef8e080505bc958aa6fcfbe7b459 Mon Sep 17 00:00:00 2001 From: SchweGELBin Date: Sat, 7 Mar 2026 20:08:47 +0100 Subject: [PATCH] [desktop] tas: add option to disable file overwrite dialog (#3657) Hello everybody, thank you for letting me participate in the development of the Eden emulator! I've been playing around with the TAS functionality and didn't want to always click "Yes" in the dialog that askes if I want to "Overwrite file of player 1?" after recording the inputs. So I can't record and play TAS files with keybinds only, because I'd still need to switching from my contoller to my keyboard and back. So I added the option "Show recording dialog" into the configure_tas screen. (The final naming and string can be changed of course.) It's a checkbox that is enabled by default (so no changes if ignored), but can be unchecked to disable the popup. The change has been tested on top of the current master branch. I've also created a commit to add the relevant translation data, where german is translated and the rest unfinished. I'm not sure how this would be handled as this project uses transifex for it localization, so I can remove this commit if preferred. Have a great day! - Michi Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3657 Reviewed-by: crueter Reviewed-by: CamilleLaVey Co-authored-by: SchweGELBin Co-committed-by: SchweGELBin --- src/common/settings.h | 1 + src/yuzu/configuration/configure_tas.cpp | 4 +++- src/yuzu/configuration/configure_tas.ui | 7 +++++++ src/yuzu/main_window.cpp | 14 +++++++++----- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/common/settings.h b/src/common/settings.h index 7c6c0d062f..ac04d26fc5 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -706,6 +706,7 @@ struct Values { Setting pause_tas_on_load{linkage, true, "pause_tas_on_load", Category::Controls}; Setting tas_enable{linkage, false, "tas_enable", Category::Controls}; Setting tas_loop{linkage, false, "tas_loop", Category::Controls}; + Setting tas_show_recording_dialog{linkage, true, "tas_show_recording_dialog", Category::Controls}; Setting mouse_panning{ linkage, false, "mouse_panning", Category::Controls, Specialization::Default, false}; diff --git a/src/yuzu/configuration/configure_tas.cpp b/src/yuzu/configuration/configure_tas.cpp index 8bdb987426..75d5a5eeaf 100644 --- a/src/yuzu/configuration/configure_tas.cpp +++ b/src/yuzu/configuration/configure_tas.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project @@ -35,6 +35,7 @@ void ConfigureTasDialog::LoadConfiguration() { ui->tas_enable->setChecked(Settings::values.tas_enable.GetValue()); ui->tas_loop_script->setChecked(Settings::values.tas_loop.GetValue()); ui->tas_pause_on_load->setChecked(Settings::values.pause_tas_on_load.GetValue()); + ui->tas_show_recording_dialog->setChecked(Settings::values.tas_show_recording_dialog.GetValue()); } void ConfigureTasDialog::ApplyConfiguration() { @@ -42,6 +43,7 @@ void ConfigureTasDialog::ApplyConfiguration() { Settings::values.tas_enable.SetValue(ui->tas_enable->isChecked()); Settings::values.tas_loop.SetValue(ui->tas_loop_script->isChecked()); Settings::values.pause_tas_on_load.SetValue(ui->tas_pause_on_load->isChecked()); + Settings::values.tas_show_recording_dialog.SetValue(ui->tas_show_recording_dialog->isChecked()); } void ConfigureTasDialog::SetDirectory(DirectoryTarget target, QLineEdit* edit) { diff --git a/src/yuzu/configuration/configure_tas.ui b/src/yuzu/configuration/configure_tas.ui index da8f2a86c5..5b4bba53b6 100644 --- a/src/yuzu/configuration/configure_tas.ui +++ b/src/yuzu/configuration/configure_tas.ui @@ -78,6 +78,13 @@ + + + + Show recording dialog + + + diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp index e02e02b413..688078385a 100644 --- a/src/yuzu/main_window.cpp +++ b/src/yuzu/main_window.cpp @@ -3665,13 +3665,17 @@ void MainWindow::OnTasRecord() { const bool is_recording = input_subsystem->GetTas()->Record(); if (!is_recording) { - is_tas_recording_dialog_active = true; + if (Settings::values.tas_show_recording_dialog.GetValue()) { + is_tas_recording_dialog_active = true; - bool answer = question(this, tr("TAS Recording"), tr("Overwrite file of player 1?"), - QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + bool answer = question(this, tr("TAS Recording"), tr("Overwrite file of player 1?"), + QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); - input_subsystem->GetTas()->SaveRecording(answer); - is_tas_recording_dialog_active = false; + input_subsystem->GetTas()->SaveRecording(answer); + is_tas_recording_dialog_active = false; + } else { + input_subsystem->GetTas()->SaveRecording(true); + } } OnTasStateChanged(); }