2017-05-14 00:15:12 +02:00
|
|
|
// Copyright 2017 Dolphin Emulator Project
|
|
|
|
// Licensed under GPLv2+
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2017-06-12 16:45:01 +02:00
|
|
|
#include <cstddef>
|
|
|
|
#include <functional>
|
2017-05-14 00:15:12 +02:00
|
|
|
#include <string>
|
2017-10-06 21:45:28 +02:00
|
|
|
#include <unordered_set>
|
2017-05-14 00:15:12 +02:00
|
|
|
|
2017-06-12 16:45:01 +02:00
|
|
|
#include "Common/CommonTypes.h"
|
|
|
|
|
2017-05-14 00:15:12 +02:00
|
|
|
// Small utility functions for common Wii related tasks.
|
|
|
|
|
2017-10-01 15:07:59 +02:00
|
|
|
namespace DiscIO
|
|
|
|
{
|
2019-07-14 18:00:14 +02:00
|
|
|
class VolumeWAD;
|
2017-10-01 15:07:59 +02:00
|
|
|
}
|
2019-06-17 16:21:31 -04:00
|
|
|
|
|
|
|
namespace IOS::HLE
|
2017-10-03 16:45:59 +02:00
|
|
|
{
|
|
|
|
class Kernel;
|
|
|
|
}
|
|
|
|
|
2017-05-14 00:15:12 +02:00
|
|
|
namespace WiiUtils
|
|
|
|
{
|
2017-10-03 16:07:28 +02:00
|
|
|
enum class InstallType
|
|
|
|
{
|
|
|
|
Permanent,
|
|
|
|
Temporary,
|
|
|
|
};
|
|
|
|
|
2019-07-14 18:00:14 +02:00
|
|
|
bool InstallWAD(IOS::HLE::Kernel& ios, const DiscIO::VolumeWAD& wad, InstallType type);
|
|
|
|
// Same as the above, but constructs a temporary IOS and VolumeWAD instance for importing
|
2017-10-03 16:07:28 +02:00
|
|
|
// and does a permanent install.
|
2017-05-14 00:15:12 +02:00
|
|
|
bool InstallWAD(const std::string& wad_path);
|
2017-06-12 16:45:01 +02:00
|
|
|
|
2017-12-31 20:33:36 +01:00
|
|
|
bool UninstallTitle(u64 title_id);
|
|
|
|
|
|
|
|
bool IsTitleInstalled(u64 title_id);
|
|
|
|
|
2017-06-12 16:45:01 +02:00
|
|
|
enum class UpdateResult
|
|
|
|
{
|
|
|
|
Succeeded,
|
|
|
|
AlreadyUpToDate,
|
|
|
|
|
2017-07-04 15:07:00 +02:00
|
|
|
// Current region does not match disc region.
|
|
|
|
RegionMismatch,
|
|
|
|
// Missing update partition on disc.
|
|
|
|
MissingUpdatePartition,
|
|
|
|
// Missing or invalid files on disc.
|
|
|
|
DiscReadFailed,
|
|
|
|
|
2017-06-12 16:45:01 +02:00
|
|
|
// NUS errors and failures.
|
|
|
|
ServerFailed,
|
|
|
|
// General download failures.
|
|
|
|
DownloadFailed,
|
2017-07-04 15:07:00 +02:00
|
|
|
|
2017-06-12 16:45:01 +02:00
|
|
|
// Import failures.
|
|
|
|
ImportFailed,
|
|
|
|
// Update was cancelled.
|
|
|
|
Cancelled,
|
|
|
|
};
|
|
|
|
|
|
|
|
// Return false to cancel the update as soon as the current title has finished updating.
|
|
|
|
using UpdateCallback = std::function<bool(size_t processed, size_t total, u64 title_id)>;
|
|
|
|
// Download and install the latest version of all titles (if missing) from NUS.
|
|
|
|
// If no region is specified, the region of the installed System Menu will be used.
|
|
|
|
// If no region is specified and no system menu is installed, the update will fail.
|
|
|
|
UpdateResult DoOnlineUpdate(UpdateCallback update_callback, const std::string& region);
|
2017-07-04 15:07:00 +02:00
|
|
|
|
|
|
|
// Perform a disc update with behaviour similar to the System Menu.
|
|
|
|
UpdateResult DoDiscUpdate(UpdateCallback update_callback, const std::string& image_path);
|
2017-10-03 16:45:59 +02:00
|
|
|
|
|
|
|
// Check the emulated NAND for common issues.
|
2017-10-06 21:45:28 +02:00
|
|
|
struct NANDCheckResult
|
|
|
|
{
|
|
|
|
bool bad = false;
|
|
|
|
std::unordered_set<u64> titles_to_remove;
|
|
|
|
};
|
|
|
|
NANDCheckResult CheckNAND(IOS::HLE::Kernel& ios);
|
2017-10-03 16:45:59 +02:00
|
|
|
bool RepairNAND(IOS::HLE::Kernel& ios);
|
2019-05-05 23:48:12 +00:00
|
|
|
} // namespace WiiUtils
|