[Project64] Make sure each game has a unique save dir
This commit is contained in:
parent
4e0103b897
commit
02d7ac014e
|
@ -234,6 +234,7 @@
|
||||||
#465# "Display speed"
|
#465# "Display speed"
|
||||||
#466# "Speed display:"
|
#466# "Speed display:"
|
||||||
#467# "Check if Project64 is already running"
|
#467# "Check if Project64 is already running"
|
||||||
|
#468# "Unique Game Save Directory"
|
||||||
|
|
||||||
//ROM Browser Tab
|
//ROM Browser Tab
|
||||||
#480# "Max # of ROMs remembered (0-10):"
|
#480# "Max # of ROMs remembered (0-10):"
|
||||||
|
|
|
@ -210,6 +210,7 @@
|
||||||
#465# "&Display speed"
|
#465# "&Display speed"
|
||||||
#466# "Speed display:"
|
#466# "Speed display:"
|
||||||
#467# "&Check if Project64 is already running"
|
#467# "&Check if Project64 is already running"
|
||||||
|
#468# "&Unique Game Save Directory"
|
||||||
|
|
||||||
//ROM Browser Tab
|
//ROM Browser Tab
|
||||||
#480# "&Number of ROMs to remember (0-10)"
|
#480# "&Number of ROMs to remember (0-10)"
|
||||||
|
|
|
@ -264,6 +264,7 @@ enum LanguageStringID
|
||||||
OPTION_DISPLAY_FR = 465,
|
OPTION_DISPLAY_FR = 465,
|
||||||
OPTION_CHANGE_FR = 466,
|
OPTION_CHANGE_FR = 466,
|
||||||
OPTION_CHECK_RUNNING = 467,
|
OPTION_CHECK_RUNNING = 467,
|
||||||
|
OPTION_UNIQUE_GAME_DIR = 468,
|
||||||
|
|
||||||
//Rom Browser Tab
|
//Rom Browser Tab
|
||||||
RB_MAX_ROMS = 480,
|
RB_MAX_ROMS = 480,
|
||||||
|
|
|
@ -231,6 +231,7 @@ void CLanguage::LoadDefaultStrings(void)
|
||||||
DEF_STR(OPTION_DISABLE_SS, "Disable screen saver when running a ROM");
|
DEF_STR(OPTION_DISABLE_SS, "Disable screen saver when running a ROM");
|
||||||
DEF_STR(OPTION_DISPLAY_FR, "Display speed");
|
DEF_STR(OPTION_DISPLAY_FR, "Display speed");
|
||||||
DEF_STR(OPTION_CHECK_RUNNING, "Check if Project64 is already running");
|
DEF_STR(OPTION_CHECK_RUNNING, "Check if Project64 is already running");
|
||||||
|
DEF_STR(OPTION_UNIQUE_GAME_DIR, "Unique Game Save Directory");
|
||||||
DEF_STR(OPTION_CHANGE_FR, "Speed display:");
|
DEF_STR(OPTION_CHANGE_FR, "Speed display:");
|
||||||
|
|
||||||
//ROM Browser Tab
|
//ROM Browser Tab
|
||||||
|
|
|
@ -144,6 +144,10 @@ void CEeprom::LoadEeprom()
|
||||||
memset(m_EEPROM, 0xFF, sizeof(m_EEPROM));
|
memset(m_EEPROM, 0xFF, sizeof(m_EEPROM));
|
||||||
|
|
||||||
CPath FileName(g_Settings->LoadStringVal(Directory_NativeSave).c_str(), "");
|
CPath FileName(g_Settings->LoadStringVal(Directory_NativeSave).c_str(), "");
|
||||||
|
if (g_Settings->LoadBool(Setting_UniqueSaveDir))
|
||||||
|
{
|
||||||
|
FileName.AppendDirectory(g_Settings->LoadStringVal(Game_UniqueSaveDir).c_str());
|
||||||
|
}
|
||||||
FileName.SetName(g_Settings->LoadStringVal(Game_GameName).c_str());
|
FileName.SetName(g_Settings->LoadStringVal(Game_GameName).c_str());
|
||||||
FileName.SetExtension("eep");
|
FileName.SetExtension("eep");
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,10 @@ uint32_t CFlashram::ReadFromFlashStatus(uint32_t PAddr)
|
||||||
bool CFlashram::LoadFlashram()
|
bool CFlashram::LoadFlashram()
|
||||||
{
|
{
|
||||||
CPath FileName(g_Settings->LoadStringVal(Directory_NativeSave).c_str());
|
CPath FileName(g_Settings->LoadStringVal(Directory_NativeSave).c_str());
|
||||||
|
if (g_Settings->LoadBool(Setting_UniqueSaveDir))
|
||||||
|
{
|
||||||
|
FileName.AppendDirectory(g_Settings->LoadStringVal(Game_UniqueSaveDir).c_str());
|
||||||
|
}
|
||||||
FileName.SetName(g_Settings->LoadStringVal(Game_GameName).c_str());
|
FileName.SetName(g_Settings->LoadStringVal(Game_GameName).c_str());
|
||||||
FileName.SetExtension("fla");
|
FileName.SetExtension("fla");
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,10 @@ void Mempak::Load(int32_t Control)
|
||||||
MempakName.Format("%s_Cont_%d", g_Settings->LoadStringVal(Game_GameName).c_str(), Control + 1);
|
MempakName.Format("%s_Cont_%d", g_Settings->LoadStringVal(Game_GameName).c_str(), Control + 1);
|
||||||
|
|
||||||
MempakNames[Control] = CPath(g_Settings->LoadStringVal(Directory_NativeSave).c_str(), stdstr_f("%s.mpk",MempakName.c_str()).c_str());
|
MempakNames[Control] = CPath(g_Settings->LoadStringVal(Directory_NativeSave).c_str(), stdstr_f("%s.mpk",MempakName.c_str()).c_str());
|
||||||
|
if (g_Settings->LoadBool(Setting_UniqueSaveDir))
|
||||||
|
{
|
||||||
|
MempakNames[Control].AppendDirectory(g_Settings->LoadStringVal(Game_UniqueSaveDir).c_str());
|
||||||
|
}
|
||||||
if (!MempakNames[Control].DirectoryExists())
|
if (!MempakNames[Control].DirectoryExists())
|
||||||
{
|
{
|
||||||
MempakNames[Control].DirectoryCreate();
|
MempakNames[Control].DirectoryCreate();
|
||||||
|
|
|
@ -23,8 +23,11 @@ CSram::~CSram()
|
||||||
|
|
||||||
bool CSram::LoadSram()
|
bool CSram::LoadSram()
|
||||||
{
|
{
|
||||||
|
|
||||||
CPath FileName(g_Settings->LoadStringVal(Directory_NativeSave).c_str(), "");
|
CPath FileName(g_Settings->LoadStringVal(Directory_NativeSave).c_str(), "");
|
||||||
|
if (g_Settings->LoadBool(Setting_UniqueSaveDir))
|
||||||
|
{
|
||||||
|
FileName.AppendDirectory(g_Settings->LoadStringVal(Game_UniqueSaveDir).c_str());
|
||||||
|
}
|
||||||
FileName.SetName(g_Settings->LoadStringVal(Game_GameName).c_str());
|
FileName.SetName(g_Settings->LoadStringVal(Game_GameName).c_str());
|
||||||
FileName.SetExtension("sra");
|
FileName.SetExtension("sra");
|
||||||
|
|
||||||
|
|
|
@ -1405,6 +1405,10 @@ bool CN64System::SaveState()
|
||||||
{
|
{
|
||||||
Slot = g_Settings->LoadDword(Game_CurrentSaveState);
|
Slot = g_Settings->LoadDword(Game_CurrentSaveState);
|
||||||
SaveFile = CPath(g_Settings->LoadStringVal(Directory_InstantSave).c_str(), "");
|
SaveFile = CPath(g_Settings->LoadStringVal(Directory_InstantSave).c_str(), "");
|
||||||
|
if (g_Settings->LoadBool(Setting_UniqueSaveDir))
|
||||||
|
{
|
||||||
|
SaveFile.AppendDirectory(g_Settings->LoadStringVal(Game_UniqueSaveDir).c_str());
|
||||||
|
}
|
||||||
SaveFile.SetName(g_Settings->LoadStringVal(Game_GoodName).c_str());
|
SaveFile.SetName(g_Settings->LoadStringVal(Game_GoodName).c_str());
|
||||||
g_Settings->SaveDword(Game_LastSaveSlot, g_Settings->LoadDword(Game_CurrentSaveState));
|
g_Settings->SaveDword(Game_LastSaveSlot, g_Settings->LoadDword(Game_CurrentSaveState));
|
||||||
}
|
}
|
||||||
|
@ -1547,6 +1551,10 @@ bool CN64System::LoadState()
|
||||||
}
|
}
|
||||||
|
|
||||||
CPath FileName(g_Settings->LoadStringVal(Directory_InstantSave).c_str(), "");
|
CPath FileName(g_Settings->LoadStringVal(Directory_InstantSave).c_str(), "");
|
||||||
|
if (g_Settings->LoadBool(Setting_UniqueSaveDir))
|
||||||
|
{
|
||||||
|
FileName.AppendDirectory(g_Settings->LoadStringVal(Game_UniqueSaveDir).c_str());
|
||||||
|
}
|
||||||
if (g_Settings->LoadDword(Game_CurrentSaveState) != 0)
|
if (g_Settings->LoadDword(Game_CurrentSaveState) != 0)
|
||||||
{
|
{
|
||||||
FileName.SetNameExtension(stdstr_f("%s.pj%d", g_Settings->LoadStringVal(Game_GoodName).c_str(), g_Settings->LoadDword(Game_CurrentSaveState)).c_str());
|
FileName.SetNameExtension(stdstr_f("%s.pj%d", g_Settings->LoadStringVal(Game_GoodName).c_str(), g_Settings->LoadDword(Game_CurrentSaveState)).c_str());
|
||||||
|
|
|
@ -757,6 +757,7 @@ void CN64Rom::SaveRomSettingID(bool temp)
|
||||||
g_Settings->SaveBool(Game_TempLoaded, temp);
|
g_Settings->SaveBool(Game_TempLoaded, temp);
|
||||||
g_Settings->SaveString(Game_GameName, m_RomName.c_str());
|
g_Settings->SaveString(Game_GameName, m_RomName.c_str());
|
||||||
g_Settings->SaveString(Game_IniKey, m_RomIdent.c_str());
|
g_Settings->SaveString(Game_IniKey, m_RomIdent.c_str());
|
||||||
|
g_Settings->SaveString(Game_UniqueSaveDir, stdstr_f("%s-%s", m_RomName.c_str(), m_MD5.c_str() ).c_str());
|
||||||
|
|
||||||
switch (GetCountry())
|
switch (GetCountry())
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,6 +51,7 @@ enum SettingID
|
||||||
|
|
||||||
Setting_AutoZipInstantSave,
|
Setting_AutoZipInstantSave,
|
||||||
Setting_RememberCheats,
|
Setting_RememberCheats,
|
||||||
|
Setting_UniqueSaveDir,
|
||||||
Setting_LanguageDir,
|
Setting_LanguageDir,
|
||||||
Setting_LanguageDirDefault,
|
Setting_LanguageDirDefault,
|
||||||
Setting_CurrentLanguage,
|
Setting_CurrentLanguage,
|
||||||
|
@ -97,6 +98,7 @@ enum SettingID
|
||||||
//Individual Game Settings
|
//Individual Game Settings
|
||||||
Game_IniKey,
|
Game_IniKey,
|
||||||
Game_File,
|
Game_File,
|
||||||
|
Game_UniqueSaveDir,
|
||||||
Game_GameName,
|
Game_GameName,
|
||||||
Game_GoodName,
|
Game_GoodName,
|
||||||
Game_TempLoaded,
|
Game_TempLoaded,
|
||||||
|
|
|
@ -116,6 +116,11 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
|
||||||
AddHandler(Setting_CheckEmuRunning, new CSettingTypeApplication("", "Check Running", (uint32_t)true));
|
AddHandler(Setting_CheckEmuRunning, new CSettingTypeApplication("", "Check Running", (uint32_t)true));
|
||||||
|
|
||||||
AddHandler(Setting_RememberCheats, new CSettingTypeApplication("", "Remember Cheats", (uint32_t)false));
|
AddHandler(Setting_RememberCheats, new CSettingTypeApplication("", "Remember Cheats", (uint32_t)false));
|
||||||
|
#ifdef ANDROID
|
||||||
|
AddHandler(Setting_UniqueSaveDir, new CSettingTypeTempBool(true));
|
||||||
|
#else
|
||||||
|
AddHandler(Setting_UniqueSaveDir, new CSettingTypeApplication("", "Unique Game Dir", (uint32_t)false));
|
||||||
|
#endif
|
||||||
AddHandler(Setting_CurrentLanguage, new CSettingTypeApplication("", "Current Language", ""));
|
AddHandler(Setting_CurrentLanguage, new CSettingTypeApplication("", "Current Language", ""));
|
||||||
AddHandler(Setting_EnableDisk, new CSettingTypeApplication("", "Enable Disk", (uint32_t)true));
|
AddHandler(Setting_EnableDisk, new CSettingTypeApplication("", "Enable Disk", (uint32_t)true));
|
||||||
AddHandler(Setting_LanguageDirDefault, new CSettingTypeRelativePath("Lang", ""));
|
AddHandler(Setting_LanguageDirDefault, new CSettingTypeRelativePath("Lang", ""));
|
||||||
|
@ -168,6 +173,7 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
|
||||||
|
|
||||||
AddHandler(Game_IniKey, new CSettingTypeTempString(""));
|
AddHandler(Game_IniKey, new CSettingTypeTempString(""));
|
||||||
AddHandler(Game_File, new CSettingTypeTempString(""));
|
AddHandler(Game_File, new CSettingTypeTempString(""));
|
||||||
|
AddHandler(Game_UniqueSaveDir, new CSettingTypeTempString(""));
|
||||||
AddHandler(Game_GameName, new CSettingTypeTempString(""));
|
AddHandler(Game_GameName, new CSettingTypeTempString(""));
|
||||||
AddHandler(Game_GoodName, new CSettingTypeGame("Good Name", Rdb_GoodName));
|
AddHandler(Game_GoodName, new CSettingTypeGame("Good Name", Rdb_GoodName));
|
||||||
AddHandler(Game_TempLoaded, new CSettingTypeTempBool(false));
|
AddHandler(Game_TempLoaded, new CSettingTypeTempBool(false));
|
||||||
|
|
|
@ -24,6 +24,7 @@ CAdvancedOptionsPage::CAdvancedOptionsPage(HWND hParent, const RECT & rcDispay)
|
||||||
SetDlgItemTextW(m_hWnd, IDC_ZIP, wGS(ADVANCE_COMPRESS).c_str());
|
SetDlgItemTextW(m_hWnd, IDC_ZIP, wGS(ADVANCE_COMPRESS).c_str());
|
||||||
SetDlgItemTextW(m_hWnd, IDC_DEBUGGER, wGS(ADVANCE_DEBUGGER).c_str());
|
SetDlgItemTextW(m_hWnd, IDC_DEBUGGER, wGS(ADVANCE_DEBUGGER).c_str());
|
||||||
SetDlgItemTextW(m_hWnd, IDC_REMEMBER_CHEAT, wGS(OPTION_REMEMBER_CHEAT).c_str());
|
SetDlgItemTextW(m_hWnd, IDC_REMEMBER_CHEAT, wGS(OPTION_REMEMBER_CHEAT).c_str());
|
||||||
|
SetDlgItemTextW(m_hWnd, IDC_UNIQUE_GAME_DIR, wGS(OPTION_UNIQUE_GAME_DIR).c_str());
|
||||||
SetDlgItemTextW(m_hWnd, IDC_CHECK_RUNNING, wGS(OPTION_CHECK_RUNNING).c_str());
|
SetDlgItemTextW(m_hWnd, IDC_CHECK_RUNNING, wGS(OPTION_CHECK_RUNNING).c_str());
|
||||||
SetDlgItemTextW(m_hWnd, IDC_DISPLAY_FRAMERATE, wGS(OPTION_CHANGE_FR).c_str());
|
SetDlgItemTextW(m_hWnd, IDC_DISPLAY_FRAMERATE, wGS(OPTION_CHANGE_FR).c_str());
|
||||||
|
|
||||||
|
@ -31,6 +32,7 @@ CAdvancedOptionsPage::CAdvancedOptionsPage(HWND hParent, const RECT & rcDispay)
|
||||||
AddModCheckBox(GetDlgItem(IDC_ZIP), Setting_AutoZipInstantSave);
|
AddModCheckBox(GetDlgItem(IDC_ZIP), Setting_AutoZipInstantSave);
|
||||||
AddModCheckBox(GetDlgItem(IDC_DEBUGGER), Debugger_Enabled);
|
AddModCheckBox(GetDlgItem(IDC_DEBUGGER), Debugger_Enabled);
|
||||||
AddModCheckBox(GetDlgItem(IDC_REMEMBER_CHEAT), Setting_RememberCheats);
|
AddModCheckBox(GetDlgItem(IDC_REMEMBER_CHEAT), Setting_RememberCheats);
|
||||||
|
AddModCheckBox(GetDlgItem(IDC_UNIQUE_SAVE_DIR), Setting_UniqueSaveDir);
|
||||||
AddModCheckBox(GetDlgItem(IDC_CHECK_RUNNING), Setting_CheckEmuRunning);
|
AddModCheckBox(GetDlgItem(IDC_CHECK_RUNNING), Setting_CheckEmuRunning);
|
||||||
AddModCheckBox(GetDlgItem(IDC_DISPLAY_FRAMERATE), UserInterface_DisplayFrameRate);
|
AddModCheckBox(GetDlgItem(IDC_DISPLAY_FRAMERATE), UserInterface_DisplayFrameRate);
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,9 @@ class CAdvancedOptionsPage :
|
||||||
COMMAND_ID_HANDLER_EX(IDC_ZIP,CheckBoxChanged)
|
COMMAND_ID_HANDLER_EX(IDC_ZIP,CheckBoxChanged)
|
||||||
COMMAND_ID_HANDLER_EX(IDC_DEBUGGER,CheckBoxChanged)
|
COMMAND_ID_HANDLER_EX(IDC_DEBUGGER,CheckBoxChanged)
|
||||||
COMMAND_ID_HANDLER_EX(IDC_REMEMBER_CHEAT,CheckBoxChanged)
|
COMMAND_ID_HANDLER_EX(IDC_REMEMBER_CHEAT,CheckBoxChanged)
|
||||||
COMMAND_ID_HANDLER_EX(IDC_CHECK_RUNNING,CheckBoxChanged)
|
COMMAND_ID_HANDLER_EX(IDC_CHECK_RUNNING, CheckBoxChanged)
|
||||||
COMMAND_ID_HANDLER_EX(IDC_DISPLAY_FRAMERATE,CheckBoxChanged)
|
COMMAND_ID_HANDLER_EX(IDC_UNIQUE_SAVE_DIR, CheckBoxChanged)
|
||||||
|
COMMAND_ID_HANDLER_EX(IDC_DISPLAY_FRAMERATE, CheckBoxChanged)
|
||||||
COMMAND_HANDLER_EX(IDC_FRAME_DISPLAY_TYPE,LBN_SELCHANGE,ComboBoxChanged)
|
COMMAND_HANDLER_EX(IDC_FRAME_DISPLAY_TYPE,LBN_SELCHANGE,ComboBoxChanged)
|
||||||
|
|
||||||
END_MSG_MAP()
|
END_MSG_MAP()
|
||||||
|
|
|
@ -327,13 +327,14 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
CONTROL "Start Emulation when rom is opened?",IDC_START_ON_ROM_OPEN,
|
CONTROL "Start Emulation when rom is opened?",IDC_START_ON_ROM_OPEN,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,191,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,191,10
|
||||||
CONTROL "Automatically compress instant saves",IDC_ZIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,24,191,10
|
CONTROL "Automatically compress instant saves",IDC_ZIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,23,191,10
|
||||||
CONTROL "Enable Debugger",IDC_DEBUGGER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,41,191,10
|
CONTROL "Enable Debugger",IDC_DEBUGGER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,38,191,10
|
||||||
CONTROL "Remember selected cheats",IDC_REMEMBER_CHEAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,57,191,10
|
CONTROL "Remember selected cheats",IDC_REMEMBER_CHEAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,53,191,10
|
||||||
CONTROL "Check if project64 is already running",IDC_CHECK_RUNNING,
|
CONTROL "Check if project64 is already running",IDC_CHECK_RUNNING,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,73,189,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,68,189,10
|
||||||
CONTROL "Frame rate display",IDC_DISPLAY_FRAMERATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,88,86,10
|
CONTROL "Frame rate display",IDC_DISPLAY_FRAMERATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,98,86,10
|
||||||
COMBOBOX IDC_FRAME_DISPLAY_TYPE,101,87,99,57,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
COMBOBOX IDC_FRAME_DISPLAY_TYPE,101,97,99,57,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||||
|
CONTROL "Unique Game Save Directory",IDC_UNIQUE_SAVE_DIR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,83,189,10
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_Settings_ShellInt DIALOGEX 0, 0, 231, 206
|
IDD_Settings_ShellInt DIALOGEX 0, 0, 231, 206
|
||||||
|
|
|
@ -275,6 +275,7 @@
|
||||||
#define IDC_CHECK_RUNNING 1144
|
#define IDC_CHECK_RUNNING 1144
|
||||||
#define IDC_BASIC_MODE 1145
|
#define IDC_BASIC_MODE 1145
|
||||||
#define IDC_JAP 1145
|
#define IDC_JAP 1145
|
||||||
|
#define IDC_UNIQUE_SAVE_DIR 1145
|
||||||
#define IDC_PAL 1146
|
#define IDC_PAL 1146
|
||||||
#define IDC_USA 1147
|
#define IDC_USA 1147
|
||||||
#define IDC_SHELL_INT_TEXT 1149
|
#define IDC_SHELL_INT_TEXT 1149
|
||||||
|
|
Loading…
Reference in New Issue