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_MEMCARD, CFrame::OnMemcard)
|
||||
EVT_MENU(IDM_IMPORTSAVE, CFrame::OnImportSave)
|
||||
EVT_MENU(IDM_EXPORTALLSAVE, CFrame::OnExportAllSaves)
|
||||
EVT_MENU(IDM_CHEATS, CFrame::OnShow_CheatsWindow)
|
||||
EVT_MENU(IDM_CHANGEDISC, CFrame::OnChangeDisc)
|
||||
EVT_MENU(IDM_MENU_INSTALLWAD, CFrame::OnInstallWAD)
|
||||
|
|
|
@ -324,6 +324,7 @@ private:
|
|||
|
||||
void OnMemcard(wxCommandEvent& event); // Misc
|
||||
void OnImportSave(wxCommandEvent& event);
|
||||
void OnExportAllSaves(wxCommandEvent& event);
|
||||
|
||||
void OnNetPlay(wxCommandEvent& event);
|
||||
|
||||
|
|
|
@ -190,7 +190,8 @@ void CFrame::CreateMenu()
|
|||
// Tools menu
|
||||
wxMenu* toolsMenu = new wxMenu;
|
||||
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_NETPLAY, _("Start &NetPlay"));
|
||||
|
@ -1310,6 +1311,11 @@ void CFrame::OnMemcard(wxCommandEvent& WXUNUSED (event))
|
|||
MemcardManager.ShowModal();
|
||||
}
|
||||
|
||||
void CFrame::OnExportAllSaves(wxCommandEvent& WXUNUSED (event))
|
||||
{
|
||||
CWiiSaveCrypted::ExportAllSaves();
|
||||
}
|
||||
|
||||
void CFrame::OnImportSave(wxCommandEvent& WXUNUSED (event))
|
||||
{
|
||||
wxString path = wxFileSelector(_("Select the save file"),
|
||||
|
|
|
@ -231,6 +231,7 @@ enum
|
|||
IDM_OPENSAVEFOLDER,
|
||||
IDM_EXPORTSAVE,
|
||||
IDM_IMPORTSAVE,
|
||||
IDM_EXPORTALLSAVE,
|
||||
IDM_SETDEFAULTGCM,
|
||||
IDM_DELETEGCM,
|
||||
IDM_COMPRESSGCM,
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include "FileUtil.h"
|
||||
#include "MathUtil.h"
|
||||
#include "NandPaths.h"
|
||||
#include "FileUtil.h"
|
||||
#include <algorithm>
|
||||
|
||||
static Common::replace_v replacements;
|
||||
|
@ -33,6 +34,41 @@ bool CWiiSaveCrypted::ExportWiiSave(u64 TitleID)
|
|||
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)
|
||||
: m_TitleID(TitleID)
|
||||
{
|
||||
|
|
|
@ -18,6 +18,7 @@ class CWiiSaveCrypted
|
|||
public:
|
||||
bool static ImportWiiSave(const char* FileName);
|
||||
bool static ExportWiiSave(u64 TitleID);
|
||||
void static ExportAllSaves();
|
||||
|
||||
private:
|
||||
CWiiSaveCrypted(const char* FileName, u64 TitleID = 0);
|
||||
|
|
Loading…
Reference in New Issue