mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 14:19:46 -06:00
Merge pull request #13792 from Tilka/wii_banners
WiiSaveBanner: fall back to $userdir/Load/WiiBanners
This commit is contained in:
@ -89,6 +89,7 @@
|
|||||||
#define GRAPHICSMOD_DIR "GraphicMods"
|
#define GRAPHICSMOD_DIR "GraphicMods"
|
||||||
#define WIISDSYNC_DIR "WiiSDSync"
|
#define WIISDSYNC_DIR "WiiSDSync"
|
||||||
#define ASSEMBLY_DIR "SavedAssembly"
|
#define ASSEMBLY_DIR "SavedAssembly"
|
||||||
|
#define WIIBANNERS_DIR "WiiBanners"
|
||||||
|
|
||||||
// This one is only used to remove it if it was present
|
// This one is only used to remove it if it was present
|
||||||
#define SHADERCACHE_LEGACY_DIR "ShaderCache"
|
#define SHADERCACHE_LEGACY_DIR "ShaderCache"
|
||||||
|
@ -881,6 +881,7 @@ static void RebuildUserDirectories(unsigned int dir_index)
|
|||||||
s_user_paths[D_RESOURCEPACK_IDX] = s_user_paths[D_USER_IDX] + RESOURCEPACK_DIR DIR_SEP;
|
s_user_paths[D_RESOURCEPACK_IDX] = s_user_paths[D_USER_IDX] + RESOURCEPACK_DIR DIR_SEP;
|
||||||
s_user_paths[D_DYNAMICINPUT_IDX] = s_user_paths[D_LOAD_IDX] + DYNAMICINPUT_DIR DIR_SEP;
|
s_user_paths[D_DYNAMICINPUT_IDX] = s_user_paths[D_LOAD_IDX] + DYNAMICINPUT_DIR DIR_SEP;
|
||||||
s_user_paths[D_GRAPHICSMOD_IDX] = s_user_paths[D_LOAD_IDX] + GRAPHICSMOD_DIR DIR_SEP;
|
s_user_paths[D_GRAPHICSMOD_IDX] = s_user_paths[D_LOAD_IDX] + GRAPHICSMOD_DIR DIR_SEP;
|
||||||
|
s_user_paths[D_BANNERS_WIIROOT_IDX] = s_user_paths[D_LOAD_IDX] + WIIBANNERS_DIR DIR_SEP;
|
||||||
s_user_paths[D_WIISDCARDSYNCFOLDER_IDX] = s_user_paths[D_LOAD_IDX] + WIISDSYNC_DIR DIR_SEP;
|
s_user_paths[D_WIISDCARDSYNCFOLDER_IDX] = s_user_paths[D_LOAD_IDX] + WIISDSYNC_DIR DIR_SEP;
|
||||||
s_user_paths[F_DOLPHINCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + DOLPHIN_CONFIG;
|
s_user_paths[F_DOLPHINCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + DOLPHIN_CONFIG;
|
||||||
s_user_paths[F_GCPADCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + GCPAD_CONFIG;
|
s_user_paths[F_GCPADCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + GCPAD_CONFIG;
|
||||||
@ -972,6 +973,7 @@ static void RebuildUserDirectories(unsigned int dir_index)
|
|||||||
s_user_paths[D_RIIVOLUTION_IDX] = s_user_paths[D_LOAD_IDX] + RIIVOLUTION_DIR DIR_SEP;
|
s_user_paths[D_RIIVOLUTION_IDX] = s_user_paths[D_LOAD_IDX] + RIIVOLUTION_DIR DIR_SEP;
|
||||||
s_user_paths[D_DYNAMICINPUT_IDX] = s_user_paths[D_LOAD_IDX] + DYNAMICINPUT_DIR DIR_SEP;
|
s_user_paths[D_DYNAMICINPUT_IDX] = s_user_paths[D_LOAD_IDX] + DYNAMICINPUT_DIR DIR_SEP;
|
||||||
s_user_paths[D_GRAPHICSMOD_IDX] = s_user_paths[D_LOAD_IDX] + GRAPHICSMOD_DIR DIR_SEP;
|
s_user_paths[D_GRAPHICSMOD_IDX] = s_user_paths[D_LOAD_IDX] + GRAPHICSMOD_DIR DIR_SEP;
|
||||||
|
s_user_paths[D_BANNERS_WIIROOT_IDX] = s_user_paths[D_LOAD_IDX] + WIIBANNERS_DIR DIR_SEP;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@ enum
|
|||||||
D_GPU_DRIVERS_HOOKS,
|
D_GPU_DRIVERS_HOOKS,
|
||||||
D_GPU_DRIVERS_FILE_REDIRECT,
|
D_GPU_DRIVERS_FILE_REDIRECT,
|
||||||
D_ASM_ROOT_IDX,
|
D_ASM_ROOT_IDX,
|
||||||
|
D_BANNERS_WIIROOT_IDX,
|
||||||
FIRST_FILE_USER_PATH_IDX,
|
FIRST_FILE_USER_PATH_IDX,
|
||||||
F_DOLPHINCONFIG_IDX = FIRST_FILE_USER_PATH_IDX,
|
F_DOLPHINCONFIG_IDX = FIRST_FILE_USER_PATH_IDX,
|
||||||
F_GCPADCONFIG_IDX,
|
F_GCPADCONFIG_IDX,
|
||||||
|
@ -19,7 +19,19 @@ namespace Common
|
|||||||
{
|
{
|
||||||
std::string RootUserPath(FromWhichRoot from)
|
std::string RootUserPath(FromWhichRoot from)
|
||||||
{
|
{
|
||||||
int idx = from == FromWhichRoot::Configured ? D_WIIROOT_IDX : D_SESSION_WIIROOT_IDX;
|
int idx{};
|
||||||
|
switch (from)
|
||||||
|
{
|
||||||
|
case FromWhichRoot::Configured:
|
||||||
|
idx = D_WIIROOT_IDX;
|
||||||
|
break;
|
||||||
|
case FromWhichRoot::Session:
|
||||||
|
idx = D_SESSION_WIIROOT_IDX;
|
||||||
|
break;
|
||||||
|
case FromWhichRoot::Banners:
|
||||||
|
idx = D_BANNERS_WIIROOT_IDX;
|
||||||
|
break;
|
||||||
|
}
|
||||||
std::string dir = File::GetUserPath(idx);
|
std::string dir = File::GetUserPath(idx);
|
||||||
dir.pop_back(); // remove trailing path separator
|
dir.pop_back(); // remove trailing path separator
|
||||||
return dir;
|
return dir;
|
||||||
|
@ -14,6 +14,7 @@ enum class FromWhichRoot
|
|||||||
{
|
{
|
||||||
Configured, // not related to currently running game - use D_WIIROOT_IDX
|
Configured, // not related to currently running game - use D_WIIROOT_IDX
|
||||||
Session, // request from currently running game - use D_SESSION_WIIROOT_IDX
|
Session, // request from currently running game - use D_SESSION_WIIROOT_IDX
|
||||||
|
Banners, // fallback for Wii savegame banners - use D_BANNERS_WIIROOT_IDX
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string RootUserPath(FromWhichRoot from);
|
std::string RootUserPath(FromWhichRoot from);
|
||||||
|
@ -3,12 +3,14 @@
|
|||||||
|
|
||||||
#include "DiscIO/WiiSaveBanner.h"
|
#include "DiscIO/WiiSaveBanner.h"
|
||||||
|
|
||||||
|
#include <fmt/format.h>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "Common/ColorUtil.h"
|
#include "Common/ColorUtil.h"
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
|
#include "Common/FileUtil.h"
|
||||||
#include "Common/IOFile.h"
|
#include "Common/IOFile.h"
|
||||||
#include "Common/NandPaths.h"
|
#include "Common/NandPaths.h"
|
||||||
#include "Common/StringUtil.h"
|
#include "Common/StringUtil.h"
|
||||||
@ -20,17 +22,20 @@ constexpr u32 ICON_HEIGHT = 48;
|
|||||||
constexpr u32 ICON_SIZE = ICON_WIDTH * ICON_HEIGHT * 2;
|
constexpr u32 ICON_SIZE = ICON_WIDTH * ICON_HEIGHT * 2;
|
||||||
|
|
||||||
WiiSaveBanner::WiiSaveBanner(u64 title_id)
|
WiiSaveBanner::WiiSaveBanner(u64 title_id)
|
||||||
: WiiSaveBanner(Common::GetTitleDataPath(title_id, Common::FromWhichRoot::Configured) +
|
|
||||||
"/banner.bin")
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
WiiSaveBanner::WiiSaveBanner(const std::string& path) : m_path(path)
|
|
||||||
{
|
{
|
||||||
constexpr u32 BANNER_SIZE = BANNER_WIDTH * BANNER_HEIGHT * 2;
|
constexpr u32 BANNER_SIZE = BANNER_WIDTH * BANNER_HEIGHT * 2;
|
||||||
|
|
||||||
constexpr size_t MINIMUM_SIZE = sizeof(Header) + BANNER_SIZE + ICON_SIZE;
|
constexpr size_t MINIMUM_SIZE = sizeof(Header) + BANNER_SIZE + ICON_SIZE;
|
||||||
File::IOFile file(path, "rb");
|
|
||||||
|
m_path = Common::GetTitleDataPath(title_id, Common::FromWhichRoot::Configured) + "/banner.bin";
|
||||||
|
File::IOFile file(m_path, "rb");
|
||||||
|
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
m_path = Common::GetTitleDataPath(title_id, Common::FromWhichRoot::Banners) + "/banner.bin";
|
||||||
|
file = File::IOFile(m_path, "rb");
|
||||||
|
}
|
||||||
|
|
||||||
if (!file.ReadArray(&m_header, 1))
|
if (!file.ReadArray(&m_header, 1))
|
||||||
{
|
{
|
||||||
m_header = {};
|
m_header = {};
|
||||||
|
@ -17,7 +17,6 @@ public:
|
|||||||
static constexpr u32 BANNER_HEIGHT = 64;
|
static constexpr u32 BANNER_HEIGHT = 64;
|
||||||
|
|
||||||
explicit WiiSaveBanner(u64 title_id);
|
explicit WiiSaveBanner(u64 title_id);
|
||||||
explicit WiiSaveBanner(const std::string& path);
|
|
||||||
|
|
||||||
bool IsValid() const { return m_valid; }
|
bool IsValid() const { return m_valid; }
|
||||||
const std::string& GetPath() const { return m_path; }
|
const std::string& GetPath() const { return m_path; }
|
||||||
|
Reference in New Issue
Block a user