diff --git a/src/xenia/app/xenia_main.cc b/src/xenia/app/xenia_main.cc index 2dbefb924..ab9437330 100644 --- a/src/xenia/app/xenia_main.cc +++ b/src/xenia/app/xenia_main.cc @@ -762,7 +762,7 @@ void EmulatorApp::EmulatorThread() { if (xam) { xam->LoadLoaderData(); - if (xam->loader_data().launch_data_present) { + if (!xam->loader_data().host_path.empty()) { const std::filesystem::path host_path = xam->loader_data().host_path; app_context().CallInUIThread([this, host_path]() { return emulator_window_->RunTitle(host_path); diff --git a/src/xenia/kernel/xam/xam_info.cc b/src/xenia/kernel/xam/xam_info.cc index a87ad0b01..0f57f7334 100644 --- a/src/xenia/kernel/xam/xam_info.cc +++ b/src/xenia/kernel/xam/xam_info.cc @@ -247,7 +247,6 @@ DECLARE_XAM_EXPORT1(XamGetExecutionId, kNone, kImplemented); dword_result_t XamLoaderSetLaunchData_entry(lpvoid_t data, dword_t size) { auto xam = kernel_state()->GetKernelModule("xam.xex"); auto& loader_data = xam->loader_data(); - loader_data.launch_data_present = size ? true : false; loader_data.launch_data.resize(size); std::memcpy(loader_data.launch_data.data(), data, size); return 0; @@ -275,7 +274,7 @@ dword_result_t XamLoaderGetLaunchData_entry(lpvoid_t buffer_ptr, dword_t buffer_size) { auto xam = kernel_state()->GetKernelModule("xam.xex"); auto& loader_data = xam->loader_data(); - if (!buffer_size) { + if (loader_data.launch_data.empty()) { return X_ERROR_NOT_FOUND; } @@ -298,7 +297,6 @@ void XamLoaderLaunchTitle_entry(lpstring_t raw_name_ptr, dword_t flags) { // Translate the launch path to a full path. if (raw_name_ptr && !raw_name_ptr.value().empty()) { loader_data.launch_path = xe::path_to_utf8(raw_name_ptr.value()); - loader_data.launch_data_present = true; xam->SaveLoaderData(); title = "Title was restarted"; message = diff --git a/src/xenia/kernel/xam/xam_module.cc b/src/xenia/kernel/xam/xam_module.cc index a02c57d90..9bc309756 100644 --- a/src/xenia/kernel/xam/xam_module.cc +++ b/src/xenia/kernel/xam/xam_module.cc @@ -66,12 +66,10 @@ void XamModule::LoadLoaderData() { FILE* file = xe::filesystem::OpenFile(kXamModuleLoaderDataFileName, "rb"); if (!file) { - loader_data_.launch_data_present = false; + loader_data_.launch_data.clear(); return; } - loader_data_.launch_data_present = true; - auto string_read = [file]() { uint16_t string_size = 0; fread(&string_size, sizeof(string_size), 1, file); diff --git a/src/xenia/kernel/xam/xam_module.h b/src/xenia/kernel/xam/xam_module.h index bfc106ec8..769b418f2 100644 --- a/src/xenia/kernel/xam/xam_module.h +++ b/src/xenia/kernel/xam/xam_module.h @@ -31,7 +31,6 @@ class XamModule : public KernelModule { static void RegisterExportTable(xe::cpu::ExportResolver* export_resolver); struct LoaderData { - bool launch_data_present = false; std::string host_path; // Full host path to next title to load std::string launch_path; // Full guest path to next xex. might be default.xex