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

Function FileMcd_GetAvailableCards

pcsx2/SIO/Memcard/MemoryCardFile.cpp:891–953  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

889}
890
891std::vector<AvailableMcdInfo> FileMcd_GetAvailableCards(bool include_in_use_cards)
892{
893 std::vector<FILESYSTEM_FIND_DATA> files;
894 FileSystem::FindFiles(EmuFolders::MemoryCards.c_str(), "*",
895 FILESYSTEM_FIND_FILES | FILESYSTEM_FIND_FOLDERS | FILESYSTEM_FIND_HIDDEN_FILES, &files);
896
897 std::vector<AvailableMcdInfo> mcds;
898 mcds.reserve(files.size());
899
900 for (FILESYSTEM_FIND_DATA& fd : files)
901 {
902 std::string basename(Path::GetFileName(fd.FileName));
903 if (!include_in_use_cards)
904 {
905 bool in_use = false;
906 for (size_t i = 0; i < std::size(EmuConfig.Mcd); i++)
907 {
908 if (EmuConfig.Mcd[i].Filename == basename)
909 {
910 in_use = true;
911 break;
912 }
913 }
914 if (in_use)
915 continue;
916 }
917
918 // We only want relevant file types.
919 if (!(fd.FileName.ends_with(".ps2") || fd.FileName.ends_with(".mcr") ||
920 fd.FileName.ends_with(".mcd") || fd.FileName.ends_with(".bin") ||
921 fd.FileName.ends_with(".mc2")))
922 continue;
923
924 if (fd.Attributes & FILESYSTEM_FILE_ATTRIBUTE_DIRECTORY)
925 {
926 if (!FileMcd_IsFolder(fd.FileName))
927 continue;
928
929 FolderMemoryCard sourceFolderMemoryCard;
930 Pcsx2Config::McdOptions config;
931 config.Enabled = true;
932 config.Type = MemoryCardType::Folder;
933 sourceFolderMemoryCard.Open(fd.FileName, config, (8 * 1024 * 1024) / FolderMemoryCard::ClusterSize, true, "");
934
935 mcds.push_back({std::move(basename), std::move(fd.FileName), fd.ModificationTime,
936 MemoryCardType::Folder, MemoryCardFileType::Unknown, 0u, sourceFolderMemoryCard.IsFormatted()});
937 sourceFolderMemoryCard.Close(false);
938 }
939 else
940 {
941 if (fd.Size < MCD_SIZE)
942 continue;
943
944 const bool formatted = FileMcd_IsMemoryCardFormatted(fd.FileName);
945 mcds.push_back({std::move(basename), std::move(fd.FileName), fd.ModificationTime,
946 MemoryCardType::File, GetMemoryCardFileTypeFromSize(fd.Size),
947 static_cast<u32>(fd.Size), formatted});
948 }

Callers 3

tryInsertCardMethod · 0.85
refreshMethod · 0.85

Calls 14

FileMcd_IsFolderFunction · 0.85
ends_withMethod · 0.80
IsFormattedMethod · 0.80
sizeFunction · 0.50
c_strMethod · 0.45
reserveMethod · 0.45
sizeMethod · 0.45
OpenMethod · 0.45
push_backMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected