MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / FileMcd_Swap

Function FileMcd_Swap

pcsx2/SIO/Memcard/MemoryCardFile.cpp:656–698  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

654}
655
656void FileMcd_Swap()
657{
658 if (MemcardBusy::IsBusy())
659 {
660 Host::AddIconOSDMessage("MemoryCardSwap_Busy", ICON_PF_MEMORY_CARD, TRANSLATE_SV("MemoryCardSwap_Busy", "Memory cards are busy. Can't swap right now."));
661 return;
662 }
663
664 // Check if auto-eject is active
665 if (FileMcd_IsAutoEjecting())
666 {
667 Host::AddIconOSDMessage("MemoryCardSwap_AutoEject", ICON_PF_MEMORY_CARD, TRANSLATE_SV("MemoryCardSwap_AutoEject", "Memory cards are being auto-ejected. Can't swap right now."));
668 return;
669 }
670
671 const std::string card1Filename = Host::GetStringSettingValue("MemoryCards", "Slot1_Filename");
672 const std::string card2Filename = Host::GetStringSettingValue("MemoryCards", "Slot2_Filename");
673
674 // Copy each McdOptions to local memory
675 Pcsx2Config::McdOptions firstSlot = EmuConfig.Mcd[0];
676 Pcsx2Config::McdOptions secondSlot = EmuConfig.Mcd[1];
677
678 if (!firstSlot.Enabled || !secondSlot.Enabled || card1Filename.empty() || card2Filename.empty())
679 {
680 Host::AddIconOSDMessage("MemoryCardSwap_EmptySlot", ICON_PF_MEMORY_CARD, TRANSLATE_SV("MemoryCard_EmptySlot", "Both slots must have a card selected to swap."));
681 return;
682 }
683
684 // Swap them
685 Host::SetBaseStringSettingValue("MemoryCards", "Slot1_Filename", card2Filename.c_str());
686 Host::SetBaseStringSettingValue("MemoryCards", "Slot2_Filename", card1Filename.c_str());
687 Host::CommitBaseSettingChanges();
688 VMManager::ApplySettings();
689 EmuConfig.Mcd[0] = secondSlot;
690 EmuConfig.Mcd[1] = firstSlot;
691
692 // Reopen them
693 FileMcd_EmuClose();
694 FileMcd_SetType();
695 FileMcd_EmuOpen();
696 AutoEject::SetAll();
697 Host::AddIconOSDMessage("MemoryCardSwap", ICON_PF_MEMORY_CARD, fmt::format(TRANSLATE_FS("MemoryCardSwap", "Memory Cards have been swapped.\nSlot 1: {}\nSlot 2: {}"), EmuConfig.Mcd[0].Filename, EmuConfig.Mcd[1].Filename), Host::OSD_INFO_DURATION);
698}
699
700s32 FileMcd_IsPresent(uint port, uint slot)
701{

Callers 1

Hotkeys.cppFile · 0.85

Calls 7

FileMcd_IsAutoEjectingFunction · 0.85
FileMcd_EmuCloseFunction · 0.85
FileMcd_SetTypeFunction · 0.85
FileMcd_EmuOpenFunction · 0.85
formatFunction · 0.50
emptyMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected