diff --git a/src/duckstation-qt/memorycardeditordialog.cpp b/src/duckstation-qt/memorycardeditordialog.cpp
index 72fc1f61f..5855cd2ed 100644
--- a/src/duckstation-qt/memorycardeditordialog.cpp
+++ b/src/duckstation-qt/memorycardeditordialog.cpp
@@ -94,6 +94,8 @@ void MemoryCardEditorDialog::connectUi()
connect(m_ui.saveCardB, &QPushButton::clicked, [this]() { saveCard(&m_card_b); });
connect(m_ui.importCardA, &QPushButton::clicked, [this]() { importCard(&m_card_a); });
connect(m_ui.importCardB, &QPushButton::clicked, [this]() { importCard(&m_card_b); });
+ connect(m_ui.formatCardA, &QPushButton::clicked, [this]() { formatCard(&m_card_a); });
+ connect(m_ui.formatCardB, &QPushButton::clicked, [this]() { formatCard(&m_card_b); });
connect(m_ui.exportFile, &QPushButton::clicked, this, &MemoryCardEditorDialog::doExportSaveFile);
connect(m_ui.importFileToCardA, &QPushButton::clicked, [this]() { importSaveFile(&m_card_a); });
connect(m_ui.importFileToCardB, &QPushButton::clicked, [this]() { importSaveFile(&m_card_b); });
@@ -435,6 +437,29 @@ void MemoryCardEditorDialog::importCard(Card* card)
updateButtonState();
}
+void MemoryCardEditorDialog::formatCard(Card* card)
+{
+ promptForSave(card);
+
+ if (QMessageBox::question(this, tr("Format memory card?"),
+ tr("Formatting the memory card will destroy all saves, and they will not be recoverable. "
+ "The memory card which will be formatted is located at '%1'.")
+ .arg(QString::fromStdString(card->filename)),
+ QMessageBox::Yes, QMessageBox::No) == QMessageBox::No)
+ {
+ return;
+ }
+
+ clearSelection();
+
+ MemoryCardImage::Format(&card->data);
+
+ updateCardTable(card);
+ updateCardBlocksFree(card);
+ setCardDirty(card);
+ updateButtonState();
+}
+
void MemoryCardEditorDialog::importSaveFile(Card* card)
{
QString filename =
@@ -492,4 +517,6 @@ void MemoryCardEditorDialog::updateButtonState()
m_ui.importCardB->setEnabled(card_b_present);
m_ui.importFileToCardA->setEnabled(card_a_present);
m_ui.importFileToCardB->setEnabled(card_b_present);
+ m_ui.formatCardA->setEnabled(card_a_present);
+ m_ui.formatCardB->setEnabled(card_b_present);
}
diff --git a/src/duckstation-qt/memorycardeditordialog.h b/src/duckstation-qt/memorycardeditordialog.h
index d6d3cb35f..1cb0fdb84 100644
--- a/src/duckstation-qt/memorycardeditordialog.h
+++ b/src/duckstation-qt/memorycardeditordialog.h
@@ -56,6 +56,7 @@ private:
void saveCard(Card* card);
void promptForSave(Card* card);
void importCard(Card* card);
+ void formatCard(Card* card);
void doExportSaveFile();
void importSaveFile(Card* card);
diff --git a/src/duckstation-qt/memorycardeditordialog.ui b/src/duckstation-qt/memorycardeditordialog.ui
index 9997651c7..9c7d2bb7b 100644
--- a/src/duckstation-qt/memorycardeditordialog.ui
+++ b/src/duckstation-qt/memorycardeditordialog.ui
@@ -97,7 +97,7 @@
-
-
+
-
@@ -105,6 +105,16 @@
+ -
+
+
+ false
+
+
+ Format Card
+
+
+
-
@@ -138,7 +148,7 @@
-
-
+
-
@@ -146,6 +156,16 @@
+ -
+
+
+ false
+
+
+ Format Card
+
+
+
-