add the ability to export all save files

This commit is contained in:
LPFaint99 2013-08-18 14:59:05 -07:00
parent 477c21e946
commit c2d208df96
6 changed files with 47 additions and 1 deletions

View file

@ -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)

View file

@ -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);

View file

@ -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"),

View 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,

View file

@ -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)
{ {

View file

@ -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);