diff options
| author | Rachel Bryk <RachelBryk@gmail.com> | 2014-07-05 00:07:46 -0400 |
|---|---|---|
| committer | Rachel Bryk <RachelBryk@gmail.com> | 2014-07-05 00:22:42 -0400 |
| commit | e02f680861c2e80a4cbca669a199dcf466ca71a9 (patch) | |
| tree | 7278da47c63500bccf2eba00b2ce24f7407e834e /Source | |
| parent | ee100cf827024542a95883899a942f5f3814bd2e (diff) | |
Keep device type EXIDEVICE_MEMORYCARDFOLDER for gci folder.
This fixes loading save states when type mismatches.
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/HW/EXI_Device.cpp | 1 | ||||
| -rw-r--r-- | Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp | 4 | ||||
| -rw-r--r-- | Source/Core/Core/State.cpp | 2 |
3 files changed, 5 insertions, 2 deletions
diff --git a/Source/Core/Core/HW/EXI_Device.cpp b/Source/Core/Core/HW/EXI_Device.cpp index 53a79ed295..dbd2807112 100644 --- a/Source/Core/Core/HW/EXI_Device.cpp +++ b/Source/Core/Core/HW/EXI_Device.cpp @@ -103,7 +103,6 @@ IEXIDevice* EXIDevice_Create(TEXIDevices device_type, const int channel_num) { bool gci_folder = (device_type == EXIDEVICE_MEMORYCARDFOLDER); result = new CEXIMemoryCard(channel_num, gci_folder); - device_type = EXIDEVICE_MEMORYCARD; break; } case EXIDEVICE_MASKROM: diff --git a/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp b/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp index 96de4866f2..dd0b2a3e5b 100644 --- a/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp +++ b/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp @@ -33,6 +33,8 @@ void CEXIMemoryCard::FlushCallback(u64 userdata, int cyclesLate) // note that userdata is forbidden to be a pointer, due to the implementation of EventDoState int card_index = (int)userdata; CEXIMemoryCard* pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARD, card_index); + if (pThis == nullptr) + pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARDFOLDER, card_index); if (pThis && pThis->memorycard) pThis->memorycard->Flush(); } @@ -41,6 +43,8 @@ void CEXIMemoryCard::CmdDoneCallback(u64 userdata, int cyclesLate) { int card_index = (int)userdata; CEXIMemoryCard* pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARD, card_index); + if (pThis == nullptr) + pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARDFOLDER, card_index); if (pThis) pThis->CmdDone(); } diff --git a/Source/Core/Core/State.cpp b/Source/Core/Core/State.cpp index 681411dbb4..55cd1a2fa7 100644 --- a/Source/Core/Core/State.cpp +++ b/Source/Core/Core/State.cpp @@ -63,7 +63,7 @@ static Common::Event g_compressAndDumpStateSyncEvent; static std::thread g_save_thread; // Don't forget to increase this after doing changes on the savestate system -static const u32 STATE_VERSION = 27; +static const u32 STATE_VERSION = 28; enum { |
