summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-05-03 17:51:46 +0200
committerGitHub <noreply@github.com>2020-05-03 17:51:46 +0200
commit6e01855e8e93331e0a616bfa0bffb6c00dc76ede (patch)
treefa8cc9e50fc08efd9a1ddbccc041406d98d2822e /Source/Android/app/src/main/java
parent907b1302b01bc6c717ab52541f0410d50623e23a (diff)
parenta58942b442486e1c06a7bad16ebd5903facf1f18 (diff)
Merge pull request #8770 from Ebola16/ADSP
Android: Add DSP Emulation Engine
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java33
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java21
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java5
3 files changed, 59 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
index ea3d9f5a3a..b0ffbb1dc9 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
@@ -33,6 +33,10 @@ public class Settings
public static final String SECTION_CONTROLS = "Controls";
public static final String SECTION_PROFILE = "Profile";
+ private static final String DSP_HLE = "0";
+ private static final String DSP_LLE_RECOMPILER = "1";
+ private static final String DSP_LLE_INTERPRETER = "2";
+
public static final String SECTION_ANALYTICS = "Analytics";
private String gameId;
@@ -179,6 +183,35 @@ public class Settings
SettingsFile.saveFile(fileName, iniSections, view);
}
+ switch (NativeLibrary
+ .GetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_DSP,
+ SettingsFile.KEY_DSP_ENGINE, DSP_HLE))
+ {
+ case DSP_HLE:
+ NativeLibrary
+ .SetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_CORE,
+ SettingsFile.KEY_DSP_HLE, "True");
+ NativeLibrary.SetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_DSP,
+ SettingsFile.KEY_DSP_ENABLE_JIT, "True");
+ break;
+
+ case DSP_LLE_RECOMPILER:
+ NativeLibrary
+ .SetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_CORE,
+ SettingsFile.KEY_DSP_HLE, "False");
+ NativeLibrary.SetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_DSP,
+ SettingsFile.KEY_DSP_ENABLE_JIT, "True");
+ break;
+
+ case DSP_LLE_INTERPRETER:
+ NativeLibrary
+ .SetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_CORE,
+ SettingsFile.KEY_DSP_HLE, "False");
+ NativeLibrary.SetConfig(SettingsFile.FILE_NAME_DOLPHIN + ".ini", Settings.SECTION_INI_DSP,
+ SettingsFile.KEY_DSP_ENABLE_JIT, "False");
+ break;
+ }
+
// Notify the native code of the changes
NativeLibrary.ReloadConfig();
NativeLibrary.ReloadWiimoteConfig();
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index 589a87fbab..e4862ccc10 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -280,14 +280,35 @@ public final class SettingsFragmentPresenter
private void addAudioSettings(ArrayList<SettingsItem> sl)
{
+ Setting dspEmulationEngine = null;
Setting audioStretch = null;
Setting audioVolume = null;
SettingSection coreSection = mSettings.getSection(Settings.SECTION_INI_CORE);
SettingSection dspSection = mSettings.getSection(Settings.SECTION_INI_DSP);
+ dspEmulationEngine = dspSection.getSetting(SettingsFile.KEY_DSP_ENGINE);
audioStretch = coreSection.getSetting(SettingsFile.KEY_AUDIO_STRETCH);
audioVolume = dspSection.getSetting(SettingsFile.KEY_AUDIO_VOLUME);
+ // TODO: Exclude values from arrays instead of having multiple arrays.
+ int defaultCpuCore = NativeLibrary.DefaultCPUCore();
+ int dspEngineEntries;
+ int dspEngineValues;
+ if (defaultCpuCore == 1) // x86-64
+ {
+ dspEngineEntries = R.array.dspEngineEntriesX86_64;
+ dspEngineValues = R.array.dspEngineValuesX86_64;
+ }
+ else // Generic
+ {
+ dspEngineEntries = R.array.dspEngineEntriesGeneric;
+ dspEngineValues = R.array.dspEngineValuesGeneric;
+ }
+ // DSP Emulation Engine controls two settings.
+ // DSP Emulation Engine is read by Settings.saveSettings to modify the relevant settings.
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_DSP_ENGINE, Settings.SECTION_INI_DSP,
+ R.string.dsp_emulation_engine, 0, dspEngineEntries, dspEngineValues, 0,
+ dspEmulationEngine));
sl.add(new CheckBoxSetting(SettingsFile.KEY_AUDIO_STRETCH, Settings.SECTION_INI_CORE,
R.string.audio_stretch, R.string.audio_stretch_description, false, audioStretch));
sl.add(new SliderSetting(SettingsFile.KEY_AUDIO_VOLUME, Settings.SECTION_INI_DSP,
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
index 77c38b9f38..bb47068d9a 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
@@ -46,8 +46,13 @@ public final class SettingsFile
public static final String KEY_OVERCLOCK_PERCENT = "Overclock";
public static final String KEY_SPEED_LIMIT = "EmulationSpeed";
public static final String KEY_VIDEO_BACKEND = "GFXBackend";
+
+ public static final String KEY_DSP_ENGINE = "DSPEngine";
+ public static final String KEY_DSP_HLE = "DSPHLE";
+ public static final String KEY_DSP_ENABLE_JIT = "EnableJIT";
public static final String KEY_AUDIO_STRETCH = "AudioStretch";
public static final String KEY_AUDIO_VOLUME = "Volume";
+
public static final String KEY_AUTO_DISC_CHANGE = "AutoDiscChange";
public static final String KEY_GAME_CUBE_LANGUAGE = "SelectedLanguage";
public static final String KEY_OVERRIDE_REGION_SETTINGS = "OverrideRegionSettings";