Add support for 2 memory cards for movies.

This commit is contained in:
Rachel Bryk 2014-07-02 21:45:59 -04:00
parent aec4cc7e29
commit de3f587b32
5 changed files with 28 additions and 21 deletions

View File

@ -219,10 +219,13 @@ bool BootCore(const std::string& _rFilename)
StartUp.bFastDiscSpeed = Movie::IsFastDiscSpeed(); StartUp.bFastDiscSpeed = Movie::IsFastDiscSpeed();
StartUp.iCPUCore = Movie::GetCPUMode(); StartUp.iCPUCore = Movie::GetCPUMode();
StartUp.bSyncGPU = Movie::IsSyncGPU(); StartUp.bSyncGPU = Movie::IsSyncGPU();
if (Movie::IsUsingMemcard() && Movie::IsStartingFromClearSave() && !StartUp.bWii) for (int i = 0; i < 2; ++i)
{ {
if (File::Exists(File::GetUserPath(D_GCUSER_IDX) + "Movie.raw")) if (Movie::IsUsingMemcard(i) && Movie::IsStartingFromClearSave() && !StartUp.bWii)
File::Delete(File::GetUserPath(D_GCUSER_IDX) + "Movie.raw"); {
if (File::Exists(File::GetUserPath(D_GCUSER_IDX) + StringFromFormat("Movie%s.raw", (i == 0) ? "A" : "B")))
File::Delete(File::GetUserPath(D_GCUSER_IDX) + StringFromFormat("Movie%s.raw", (i == 0) ? "A" : "B"));
}
} }
} }

View File

@ -28,15 +28,18 @@ void Init()
for (u32 i = 0; i < MAX_EXI_CHANNELS; i++) for (u32 i = 0; i < MAX_EXI_CHANNELS; i++)
g_Channels[i] = new CEXIChannel(i); g_Channels[i] = new CEXIChannel(i);
if (Movie::IsPlayingInput() && Movie::IsUsingMemcard() && Movie::IsConfigSaved()) if (Movie::IsPlayingInput() && Movie::IsConfigSaved())
g_Channels[0]->AddDevice(EXIDEVICE_MEMORYCARD, 0); // SlotA {
else if (Movie::IsPlayingInput() && !Movie::IsUsingMemcard() && Movie::IsConfigSaved()) g_Channels[0]->AddDevice(Movie::IsUsingMemcard(0) ? EXIDEVICE_MEMORYCARD : EXIDEVICE_NONE, 0); // SlotA
g_Channels[0]->AddDevice(EXIDEVICE_NONE, 0); // SlotA g_Channels[1]->AddDevice(Movie::IsUsingMemcard(1) ? EXIDEVICE_MEMORYCARD : EXIDEVICE_NONE, 0); // SlotB
}
else else
{
g_Channels[0]->AddDevice(SConfig::GetInstance().m_EXIDevice[0], 0); // SlotA g_Channels[0]->AddDevice(SConfig::GetInstance().m_EXIDevice[0], 0); // SlotA
g_Channels[1]->AddDevice(SConfig::GetInstance().m_EXIDevice[1], 0); // SlotB
}
g_Channels[0]->AddDevice(EXIDEVICE_MASKROM, 1); g_Channels[0]->AddDevice(EXIDEVICE_MASKROM, 1);
g_Channels[0]->AddDevice(SConfig::GetInstance().m_EXIDevice[2], 2); // Serial Port 1 g_Channels[0]->AddDevice(SConfig::GetInstance().m_EXIDevice[2], 2); // Serial Port 1
g_Channels[1]->AddDevice(SConfig::GetInstance().m_EXIDevice[1], 0); // SlotB
g_Channels[2]->AddDevice(EXIDEVICE_AD16, 0); g_Channels[2]->AddDevice(EXIDEVICE_AD16, 0);
changeDevice = CoreTiming::RegisterEvent("ChangeEXIDevice", ChangeDeviceCallback); changeDevice = CoreTiming::RegisterEvent("ChangeEXIDevice", ChangeDeviceCallback);

View File

@ -163,9 +163,9 @@ void CEXIMemoryCard::setupRawMemcard(u16 sizeMb)
{ {
std::string filename = std::string filename =
(card_index == 0) ? SConfig::GetInstance().m_strMemoryCardA : SConfig::GetInstance().m_strMemoryCardB; (card_index == 0) ? SConfig::GetInstance().m_strMemoryCardA : SConfig::GetInstance().m_strMemoryCardB;
if (Movie::IsPlayingInput() && Movie::IsConfigSaved() && Movie::IsUsingMemcard() && if (Movie::IsPlayingInput() && Movie::IsConfigSaved() && Movie::IsUsingMemcard(card_index) &&
Movie::IsStartingFromClearSave()) Movie::IsStartingFromClearSave())
filename = File::GetUserPath(D_GCUSER_IDX) + "Movie.raw"; filename = File::GetUserPath(D_GCUSER_IDX) + StringFromFormat("Movie%s.raw", (card_index == 0) ? "A" : "B");
if (sizeMb == MemCard251Mb) if (sizeMb == MemCard251Mb)
{ {

View File

@ -58,7 +58,7 @@ u64 g_currentInputCount = 0, g_totalInputCount = 0; // just stats
u64 g_totalTickCount = 0, g_tickCountAtLastInput = 0; // just stats u64 g_totalTickCount = 0, g_tickCountAtLastInput = 0; // just stats
u64 g_recordingStartTime; // seconds since 1970 that recording started u64 g_recordingStartTime; // seconds since 1970 that recording started
bool bSaveConfig = false, bSkipIdle = false, bDualCore = false, bProgressive = false, bDSPHLE = false, bFastDiscSpeed = false; bool bSaveConfig = false, bSkipIdle = false, bDualCore = false, bProgressive = false, bDSPHLE = false, bFastDiscSpeed = false;
bool bMemcard = false, g_bClearSave = false, bSyncGPU = false, bNetPlay = false; bool g_bClearSave = false, bSyncGPU = false, bNetPlay = false;
std::string videoBackend = "unknown"; std::string videoBackend = "unknown";
int iCPUCore = 1; int iCPUCore = 1;
bool g_bDiscChange = false; bool g_bDiscChange = false;
@ -66,7 +66,7 @@ std::string g_discChange = "";
std::string author = ""; std::string author = "";
u64 g_titleID = 0; u64 g_titleID = 0;
unsigned char MD5[16]; unsigned char MD5[16];
u8 bongos; u8 bongos, memcards;
u8 revision[20]; u8 revision[20];
u32 DSPiromHash = 0; u32 DSPiromHash = 0;
u32 DSPcoefHash = 0; u32 DSPcoefHash = 0;
@ -365,9 +365,9 @@ bool IsStartingFromClearSave()
return g_bClearSave; return g_bClearSave;
} }
bool IsUsingMemcard() bool IsUsingMemcard(int memcard)
{ {
return bMemcard; return memcards & (1 << memcard);
} }
bool IsSyncGPU() bool IsSyncGPU()
{ {
@ -707,7 +707,7 @@ void ReadHeader()
bFastDiscSpeed = tmpHeader.bFastDiscSpeed; bFastDiscSpeed = tmpHeader.bFastDiscSpeed;
iCPUCore = tmpHeader.CPUCore; iCPUCore = tmpHeader.CPUCore;
g_bClearSave = tmpHeader.bClearSave; g_bClearSave = tmpHeader.bClearSave;
bMemcard = tmpHeader.bMemcard; memcards = tmpHeader.memcards;
bongos = tmpHeader.bongos; bongos = tmpHeader.bongos;
bSyncGPU = tmpHeader.bSyncGPU; bSyncGPU = tmpHeader.bSyncGPU;
bNetPlay = tmpHeader.bNetPlay; bNetPlay = tmpHeader.bNetPlay;
@ -1143,7 +1143,7 @@ void SaveRecording(const std::string& filename)
header.bEFBEmulateFormatChanges = g_ActiveConfig.bEFBEmulateFormatChanges; header.bEFBEmulateFormatChanges = g_ActiveConfig.bEFBEmulateFormatChanges;
header.bUseXFB = g_ActiveConfig.bUseXFB; header.bUseXFB = g_ActiveConfig.bUseXFB;
header.bUseRealXFB = g_ActiveConfig.bUseRealXFB; header.bUseRealXFB = g_ActiveConfig.bUseRealXFB;
header.bMemcard = bMemcard; header.memcards = memcards;
header.bClearSave = g_bClearSave; header.bClearSave = g_bClearSave;
header.bSyncGPU = bSyncGPU; header.bSyncGPU = bSyncGPU;
header.bNetPlay = bNetPlay; header.bNetPlay = bNetPlay;
@ -1212,7 +1212,8 @@ void GetSettings()
bNetPlay = NetPlay::IsNetPlayRunning(); bNetPlay = NetPlay::IsNetPlayRunning();
if (!Core::g_CoreStartupParameter.bWii) if (!Core::g_CoreStartupParameter.bWii)
g_bClearSave = !File::Exists(SConfig::GetInstance().m_strMemoryCardA); g_bClearSave = !File::Exists(SConfig::GetInstance().m_strMemoryCardA);
bMemcard = SConfig::GetInstance().m_EXIDevice[0] == EXIDEVICE_MEMORYCARD; memcards |= (SConfig::GetInstance().m_EXIDevice[0] == EXIDEVICE_MEMORYCARD) << 0;
memcards |= (SConfig::GetInstance().m_EXIDevice[1] == EXIDEVICE_MEMORYCARD) << 1;
unsigned int tmp; unsigned int tmp;
for (int i = 0; i < 20; ++i) for (int i = 0; i < 20; ++i)
{ {

View File

@ -107,7 +107,7 @@ struct DTMHeader
bool bEFBEmulateFormatChanges; bool bEFBEmulateFormatChanges;
bool bUseXFB; bool bUseXFB;
bool bUseRealXFB; bool bUseRealXFB;
bool bMemcard; u8 memcards;
bool bClearSave; // Create a new memory card when playing back a movie if true bool bClearSave; // Create a new memory card when playing back a movie if true
u8 bongos; u8 bongos;
bool bSyncGPU; bool bSyncGPU;
@ -146,7 +146,7 @@ bool IsDSPHLE();
bool IsFastDiscSpeed(); bool IsFastDiscSpeed();
int GetCPUMode(); int GetCPUMode();
bool IsStartingFromClearSave(); bool IsStartingFromClearSave();
bool IsUsingMemcard(); bool IsUsingMemcard(int memcard);
bool IsSyncGPU(); bool IsSyncGPU();
void SetGraphicsConfig(); void SetGraphicsConfig();
void GetSettings(); void GetSettings();