add the ability to export all save files
This commit is contained in:
parent
477c21e946
commit
c2d208df96
|
@ -191,6 +191,7 @@ EVT_MENU(IDM_NETPLAY, CFrame::OnNetPlay)
|
||||||
EVT_MENU(IDM_BROWSE, CFrame::OnBrowse)
|
EVT_MENU(IDM_BROWSE, CFrame::OnBrowse)
|
||||||
EVT_MENU(IDM_MEMCARD, CFrame::OnMemcard)
|
EVT_MENU(IDM_MEMCARD, CFrame::OnMemcard)
|
||||||
EVT_MENU(IDM_IMPORTSAVE, CFrame::OnImportSave)
|
EVT_MENU(IDM_IMPORTSAVE, CFrame::OnImportSave)
|
||||||
|
EVT_MENU(IDM_EXPORTALLSAVE, CFrame::OnExportAllSaves)
|
||||||
EVT_MENU(IDM_CHEATS, CFrame::OnShow_CheatsWindow)
|
EVT_MENU(IDM_CHEATS, CFrame::OnShow_CheatsWindow)
|
||||||
EVT_MENU(IDM_CHANGEDISC, CFrame::OnChangeDisc)
|
EVT_MENU(IDM_CHANGEDISC, CFrame::OnChangeDisc)
|
||||||
EVT_MENU(IDM_MENU_INSTALLWAD, CFrame::OnInstallWAD)
|
EVT_MENU(IDM_MENU_INSTALLWAD, CFrame::OnInstallWAD)
|
||||||
|
|
|
@ -324,6 +324,7 @@ private:
|
||||||
|
|
||||||
void OnMemcard(wxCommandEvent& event); // Misc
|
void OnMemcard(wxCommandEvent& event); // Misc
|
||||||
void OnImportSave(wxCommandEvent& event);
|
void OnImportSave(wxCommandEvent& event);
|
||||||
|
void OnExportAllSaves(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnNetPlay(wxCommandEvent& event);
|
void OnNetPlay(wxCommandEvent& event);
|
||||||
|
|
||||||
|
|
|
@ -190,7 +190,8 @@ void CFrame::CreateMenu()
|
||||||
// Tools menu
|
// Tools menu
|
||||||
wxMenu* toolsMenu = new wxMenu;
|
wxMenu* toolsMenu = new wxMenu;
|
||||||
toolsMenu->Append(IDM_MEMCARD, _("&Memcard Manager (GC)"));
|
toolsMenu->Append(IDM_MEMCARD, _("&Memcard Manager (GC)"));
|
||||||
toolsMenu->Append(IDM_IMPORTSAVE, _("Wii Save Import"));
|
toolsMenu->Append(IDM_IMPORTSAVE, _("Import Wii Save"));
|
||||||
|
toolsMenu->Append(IDM_EXPORTALLSAVE, _("Export All Wii Saves"));
|
||||||
toolsMenu->Append(IDM_CHEATS, _("&Cheats Manager"));
|
toolsMenu->Append(IDM_CHEATS, _("&Cheats Manager"));
|
||||||
|
|
||||||
toolsMenu->Append(IDM_NETPLAY, _("Start &NetPlay"));
|
toolsMenu->Append(IDM_NETPLAY, _("Start &NetPlay"));
|
||||||
|
@ -1310,6 +1311,11 @@ void CFrame::OnMemcard(wxCommandEvent& WXUNUSED (event))
|
||||||
MemcardManager.ShowModal();
|
MemcardManager.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CFrame::OnExportAllSaves(wxCommandEvent& WXUNUSED (event))
|
||||||
|
{
|
||||||
|
CWiiSaveCrypted::ExportAllSaves();
|
||||||
|
}
|
||||||
|
|
||||||
void CFrame::OnImportSave(wxCommandEvent& WXUNUSED (event))
|
void CFrame::OnImportSave(wxCommandEvent& WXUNUSED (event))
|
||||||
{
|
{
|
||||||
wxString path = wxFileSelector(_("Select the save file"),
|
wxString path = wxFileSelector(_("Select the save file"),
|
||||||
|
|
|
@ -231,6 +231,7 @@ enum
|
||||||
IDM_OPENSAVEFOLDER,
|
IDM_OPENSAVEFOLDER,
|
||||||
IDM_EXPORTSAVE,
|
IDM_EXPORTSAVE,
|
||||||
IDM_IMPORTSAVE,
|
IDM_IMPORTSAVE,
|
||||||
|
IDM_EXPORTALLSAVE,
|
||||||
IDM_SETDEFAULTGCM,
|
IDM_SETDEFAULTGCM,
|
||||||
IDM_DELETEGCM,
|
IDM_DELETEGCM,
|
||||||
IDM_COMPRESSGCM,
|
IDM_COMPRESSGCM,
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "FileUtil.h"
|
#include "FileUtil.h"
|
||||||
#include "MathUtil.h"
|
#include "MathUtil.h"
|
||||||
#include "NandPaths.h"
|
#include "NandPaths.h"
|
||||||
|
#include "FileUtil.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
static Common::replace_v replacements;
|
static Common::replace_v replacements;
|
||||||
|
@ -33,6 +34,41 @@ bool CWiiSaveCrypted::ExportWiiSave(u64 TitleID)
|
||||||
return exportSave.b_valid;
|
return exportSave.b_valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CWiiSaveCrypted::ExportAllSaves()
|
||||||
|
{
|
||||||
|
std::string titleFolder = File::GetUserPath(D_WIIUSER_IDX) + "title";
|
||||||
|
std::vector<u64> titles;
|
||||||
|
u32 pathMask = 0x00010000;
|
||||||
|
for (int i = 0; i < 8; ++i)
|
||||||
|
{
|
||||||
|
File::FSTEntry FST_Temp;
|
||||||
|
std::string folder = StringFromFormat("%s/%08x/", titleFolder.c_str(), pathMask | i);
|
||||||
|
File::ScanDirectoryTree(folder, FST_Temp);
|
||||||
|
|
||||||
|
for (u32 j = 0; j < FST_Temp.children.size(); j++)
|
||||||
|
{
|
||||||
|
if (FST_Temp.children[j].isDirectory)
|
||||||
|
{
|
||||||
|
u32 gameid;
|
||||||
|
if (AsciiToHex(FST_Temp.children[j].virtualName.c_str(), gameid))
|
||||||
|
{
|
||||||
|
std::string bannerPath = StringFromFormat("%s%08x/data/banner.bin", folder.c_str(), gameid);
|
||||||
|
if (File::Exists(bannerPath))
|
||||||
|
{
|
||||||
|
u64 titleID = (((u64)pathMask | i) << 32) | gameid;
|
||||||
|
titles.push_back(titleID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SuccessAlertT("Found %llx save files", titles.size());
|
||||||
|
for (u32 i = 0; i < titles.size(); ++i)
|
||||||
|
{
|
||||||
|
CWiiSaveCrypted* exportSave = new CWiiSaveCrypted("", titles[i]);
|
||||||
|
delete exportSave;
|
||||||
|
}
|
||||||
|
}
|
||||||
CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID)
|
CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID)
|
||||||
: m_TitleID(TitleID)
|
: m_TitleID(TitleID)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,6 +18,7 @@ class CWiiSaveCrypted
|
||||||
public:
|
public:
|
||||||
bool static ImportWiiSave(const char* FileName);
|
bool static ImportWiiSave(const char* FileName);
|
||||||
bool static ExportWiiSave(u64 TitleID);
|
bool static ExportWiiSave(u64 TitleID);
|
||||||
|
void static ExportAllSaves();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CWiiSaveCrypted(const char* FileName, u64 TitleID = 0);
|
CWiiSaveCrypted(const char* FileName, u64 TitleID = 0);
|
||||||
|
|
Loading…
Reference in New Issue