[fs, qlaunch] add CreateSaveDataFileSystemWithCreationInfo2 and make qlaunch work again (#2760)

Fixes qlaunch regression I introduced previously. Add a few known structs.
Adds CreateSaveDataFileSystemWithCreationInfo2, which is called when games are started via qlaunch and corrupts save files.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2760
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Co-authored-by: unknown <sahyno1996@gmail.com>
Co-committed-by: unknown <sahyno1996@gmail.com>
This commit is contained in:
unknown 2025-10-17 22:23:21 +02:00 committed by crueter
parent 3e8fe622a7
commit de46b8e817
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
13 changed files with 221 additions and 79 deletions

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -19,7 +22,7 @@ IDaemonController::IDaemonController(Core::System& system_)
{6, nullptr, "SetGlobalDownloadEnabledForAccount"},
{10, nullptr, "GetForbiddenSaveDataIndication"},
{11, nullptr, "GetStopperObject"},
{12, nullptr, "GetState"},
{12, D<&IDaemonController::GetState>, "GetState"},
};
// clang-format on
@ -37,4 +40,11 @@ Result IDaemonController::GetAutoTransferEnabledForAccountAndApplication(Out<boo
R_SUCCEED();
}
Result IDaemonController::GetState(Out<u8> state, Common::UUID user_id, u64 application_id) {
LOG_WARNING(Service_OLSC, "(STUBBED) called, user_id={} application_id={:016X}",
user_id.FormattedString(), application_id);
*state = 0;
R_SUCCEED();
}
} // namespace Service::OLSC

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -15,6 +18,7 @@ public:
private:
Result GetAutoTransferEnabledForAccountAndApplication(Out<bool> out_is_enabled,
Common::UUID user_id, u64 application_id);
Result GetState(Out<u8> state, Common::UUID user_id, u64 application_id);
};
} // namespace Service::OLSC

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -100,10 +103,13 @@ Result IOlscServiceForSystemService::OpenDaemonController(
R_SUCCEED();
}
Result IOlscServiceForSystemService::GetDataTransferPolicyInfo(Out<u16> out_policy_info,
u64 application_id) {
Result IOlscServiceForSystemService::GetDataTransferPolicyInfo(
Out<DataTransferPolicy> out_policy_info, u64 application_id) {
LOG_WARNING(Service_OLSC, "(STUBBED) called");
*out_policy_info = 0;
DataTransferPolicy policy{};
policy.upload_policy = 0;
policy.download_policy = 0;
*out_policy_info = policy;
R_SUCCEED();
}

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -10,6 +13,11 @@ class IDaemonController;
class IRemoteStorageController;
class ITransferTaskListController;
struct DataTransferPolicy {
u8 upload_policy;
u8 download_policy;
};
class IOlscServiceForSystemService final : public ServiceFramework<IOlscServiceForSystemService> {
public:
explicit IOlscServiceForSystemService(Core::System& system_);
@ -20,7 +28,7 @@ private:
Out<SharedPointer<ITransferTaskListController>> out_interface);
Result OpenRemoteStorageController(Out<SharedPointer<IRemoteStorageController>> out_interface);
Result OpenDaemonController(Out<SharedPointer<IDaemonController>> out_interface);
Result GetDataTransferPolicyInfo(Out<u16> out_policy_info, u64 application_id);
Result GetDataTransferPolicyInfo(Out<DataTransferPolicy> out_policy_info, u64 application_id);
Result CloneService(Out<SharedPointer<IOlscServiceForSystemService>> out_interface);
};