summaryrefslogtreecommitdiff
path: root/Source/Android/jni
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2021-01-17 23:16:23 +0100
committerJosJuice <josjuice@gmail.com>2021-01-27 20:10:06 +0100
commitcd4ccda51c7b16be602ad32ffdf672a3de7cffeb (patch)
tree8fd99d73acaf90d33951e9a6993c27b18d759000 /Source/Android/jni
parentb08306d0b89a34b4dc04a324ce47b8d8833230a8 (diff)
Android: Add "Import Wii Save"
Diffstat (limited to 'Source/Android/jni')
-rw-r--r--Source/Android/jni/WiiUtils.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/Source/Android/jni/WiiUtils.cpp b/Source/Android/jni/WiiUtils.cpp
index c98dfe847c..a2f607d68a 100644
--- a/Source/Android/jni/WiiUtils.cpp
+++ b/Source/Android/jni/WiiUtils.cpp
@@ -8,8 +8,32 @@
#include "jni/AndroidCommon/AndroidCommon.h"
+#include "Core/HW/WiiSave.h"
#include "Core/WiiUtils.h"
+// The hardcoded values here must match WiiUtils.java
+static jint ConvertCopyResult(WiiSave::CopyResult result)
+{
+ switch (result)
+ {
+ case WiiSave::CopyResult::Success:
+ return 0;
+ case WiiSave::CopyResult::Error:
+ return 1;
+ case WiiSave::CopyResult::Cancelled:
+ return 2;
+ case WiiSave::CopyResult::CorruptedSource:
+ return 3;
+ case WiiSave::CopyResult::TitleMissing:
+ return 4;
+ default:
+ ASSERT(false);
+ return 1;
+ }
+
+ static_assert(static_cast<int>(WiiSave::CopyResult::NumberOfEntries) == 5);
+}
+
extern "C" {
JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_WiiUtils_installWAD(JNIEnv* env,
@@ -19,4 +43,14 @@ JNIEXPORT jboolean JNICALL Java_org_dolphinemu_dolphinemu_utils_WiiUtils_install
const std::string path = GetJString(env, jFile);
return static_cast<jboolean>(WiiUtils::InstallWAD(path));
}
+
+JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_utils_WiiUtils_importWiiSave(JNIEnv* env,
+ jclass,
+ jstring jFile)
+{
+ const std::string path = GetJString(env, jFile);
+ const auto can_overwrite = [] { return true; }; // TODO
+
+ return ConvertCopyResult(WiiSave::Import(path, can_overwrite));
+}
}