summaryrefslogtreecommitdiff
path: root/Source/Android
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2016-01-30 10:55:11 -0500
committerRyan Houdek <Sonicadvance1@gmail.com>2016-01-30 10:55:11 -0500
commit8e8e6f3234ef6bf4b0ecedd304e47ca73b702ea8 (patch)
tree877c4f2d8dc6f0236a450c3f51b888743971dc81 /Source/Android
parentc2c1f839dd3302249db9dbc04e64f320fa4586d0 (diff)
parent92158788684c0d2d37e1124eb861539128e03e91 (diff)
Merge pull request #3581 from sigmabeta/android-input-config
[Android] Implement Gamecube Input setting screen
Diffstat (limited to 'Source/Android')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java10
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragment.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentPresenter.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentView.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java31
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java5
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java42
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java33
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java9
-rw-r--r--Source/Android/app/src/main/res/drawable-hdpi/ic_settings_gcpad.pngbin0 -> 267 bytes
-rw-r--r--Source/Android/app/src/main/res/drawable-mdpi/ic_settings_gcpad.pngbin0 -> 157 bytes
-rw-r--r--Source/Android/app/src/main/res/drawable-xhdpi/ic_settings_gcpad.pngbin0 -> 250 bytes
-rw-r--r--Source/Android/app/src/main/res/drawable-xxhdpi/ic_settings_gcpad.pngbin0 -> 364 bytes
-rw-r--r--Source/Android/app/src/main/res/drawable-xxxhdpi/ic_settings_gcpad.pngbin0 -> 506 bytes
-rw-r--r--Source/Android/app/src/main/res/drawable/ic_settings_gcpad.pngbin0 -> 506 bytes
-rw-r--r--Source/Android/app/src/main/res/layout/fragment_input_gc_list.xml36
-rw-r--r--Source/Android/app/src/main/res/menu/menu_game_grid.xml15
-rw-r--r--Source/Android/app/src/main/res/values/arrays.xml12
-rw-r--r--Source/Android/app/src/main/res/values/strings.xml15
-rw-r--r--Source/Android/build.gradle2
-rw-r--r--Source/Android/gradle.properties2
28 files changed, 239 insertions, 30 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
index 275bd051cf..38ea670f5e 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
@@ -19,7 +19,7 @@ import org.dolphinemu.dolphinemu.utils.Log;
*/
public final class NativeLibrary
{
- private static EmulationActivity mEmulationActivity;
+ public static EmulationActivity sEmulationActivity;
/**
* Button type for use in onTouchEvent
@@ -403,12 +403,12 @@ public final class NativeLibrary
public static void displayAlertMsg(final String alert)
{
Log.error("[NativeLibrary] Alert: " + alert);
- mEmulationActivity.runOnUiThread(new Runnable()
+ sEmulationActivity.runOnUiThread(new Runnable()
{
@Override
public void run()
{
- Toast.makeText(mEmulationActivity, "Panic Alert: " + alert, Toast.LENGTH_LONG).show();
+ Toast.makeText(sEmulationActivity, "Panic Alert: " + alert, Toast.LENGTH_LONG).show();
}
});
}
@@ -416,12 +416,12 @@ public final class NativeLibrary
public static void endEmulationActivity()
{
Log.verbose("[NativeLibrary]Ending EmulationActivity.");
- mEmulationActivity.exitWithAnimation();
+ sEmulationActivity.exitWithAnimation();
}
public static void setEmulationActivity(EmulationActivity emulationActivity)
{
Log.verbose("[NativeLibrary]Registering EmulationActivity.");
- mEmulationActivity = emulationActivity;
+ sEmulationActivity = emulationActivity;
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
index 36b75c1a75..2f38df3373 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
@@ -118,7 +118,7 @@ public final class EmulationActivity extends AppCompatActivity
setTheme(themeId);
super.onCreate(savedInstanceState);
- Java_GCAdapter.our_activity = this;
+
Java_GCAdapter.manager = (UsbManager) getSystemService(Context.USB_SERVICE);
// Picasso will take a while to load these big-ass screenshots. So don't run
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragment.java
new file mode 100644
index 0000000000..346a16741d
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragment.java
@@ -0,0 +1,6 @@
+package org.dolphinemu.dolphinemu.ui.input.gamecube;
+
+
+public class ControllerFragment
+{
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentPresenter.java
new file mode 100644
index 0000000000..d8916ccf08
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentPresenter.java
@@ -0,0 +1,6 @@
+package org.dolphinemu.dolphinemu.ui.input.gamecube;
+
+
+public class ControllerFragmentPresenter
+{
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentView.java
new file mode 100644
index 0000000000..77c8b7b3a7
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentView.java
@@ -0,0 +1,6 @@
+package org.dolphinemu.dolphinemu.ui.input.gamecube;
+
+
+public interface ControllerFragmentView
+{
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
index c1052fc42a..42b3231c8c 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
@@ -50,6 +50,10 @@ public final class MainPresenter
mView.launchSettingsActivity(SettingsFile.FILE_NAME_GFX);
return true;
+ case R.id.menu_settings_gcpad:
+ mView.launchSettingsActivity(SettingsFile.FILE_NAME_GCPAD);
+ return true;
+
case R.id.menu_refresh:
mView.refresh();
return true;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
index b1103998b3..bf9087bef1 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
@@ -237,6 +237,10 @@ public final class TvMainActivity extends Activity implements MainView
R.drawable.ic_settings_graphics_tv,
R.string.grid_menu_video_settings));
+ rowItems.add(new TvSettingsItem(R.id.menu_settings_gcpad,
+ R.drawable.ic_settings_gcpad,
+ R.string.grid_menu_gcpad_settings));
+
rowItems.add(new TvSettingsItem(R.id.button_add_directory,
R.drawable.ic_add_tv,
R.string.add_directory_title));
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java
index 70d3cfbb86..206d6432dd 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java
@@ -150,6 +150,12 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
mPresenter.onSettingChanged();
}
+ @Override
+ public void onGcPadSettingChanged(String key, int value)
+ {
+ mPresenter.onGcPadSettingChanged(key, value);
+ }
+
private SettingsFragment getFragment()
{
return (SettingsFragment) getFragmentManager().findFragmentByTag(SettingsFragment.FRAGMENT_TAG);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java
index 8c16443cec..59d4cbee77 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java
@@ -39,6 +39,21 @@ public final class SettingsActivityPresenter
if (savedInstanceState == null)
{
+ // TODO DI should be able to get rid of this hack
+ if (filename.equals(SettingsFile.FILE_NAME_GCPAD))
+ {
+ // Psyche! Don't actually load that file (yet).
+ mFileName = SettingsFile.FILE_NAME_DOLPHIN;
+
+ // But do display its fragment, as if we had.
+ mView.showSettingsFragment(SettingsFile.FILE_NAME_GCPAD, false);
+ }
+ else
+ {
+ mFileName = filename;
+ mView.showSettingsFragment(mFileName, false);
+ }
+
SettingsFile.readFile(mFileName)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@@ -60,8 +75,6 @@ public final class SettingsActivityPresenter
mView.onSettingsFileNotFound();
}
});
-
- mView.showSettingsFragment(mFileName, false);
}
else
{
@@ -147,4 +160,18 @@ public final class SettingsActivityPresenter
{
outState.putBoolean(SHOULD_SAVE, mShouldSave);
}
+
+ public void onGcPadSettingChanged(String key, int value)
+ {
+ switch (value)
+ {
+ case 6:
+ mView.showToastMessage("Configuration coming soon. Settings from old versions will still work.");
+ break;
+
+ case 12:
+ mView.showSettingsFragment(key, true);
+ break;
+ }
+ }
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java
index 0a14440087..4307ec891b 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java
@@ -69,4 +69,13 @@ public interface SettingsActivityView
* unless this has been called, the Activity will not save to disk.
*/
void onSettingChanged();
+
+ /**
+ * Called by a containing Fragment to tell the containing Activity that a GCPad's setting
+ * was modified.
+ *
+ * @param key Identifier for the GCPad that was modified.
+ * @param value New setting for the GCPad.
+ */
+ void onGcPadSettingChanged(String key, int value);
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java
index 72ff6049b1..4028af87a2 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java
@@ -189,6 +189,11 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
int value = getValueForSingleChoiceSelection(scSetting, which);
+ if (scSetting.getKey().startsWith(SettingsFile.KEY_GCPAD_TYPE))
+ {
+ mView.onGcPadSettingChanged(scSetting.getKey(), value);
+ }
+
// Get the backing Setting, which may be null (if for example it was missing from the file)
IntSetting setting = scSetting.setSelectedValue(value);
if (setting != null)
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java
index d265c9b824..6ccd5f1a22 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java
@@ -151,6 +151,12 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
mActivity.onSettingChanged();
}
+ @Override
+ public void onGcPadSettingChanged(String key, int value)
+ {
+ mActivity.onGcPadSettingChanged(key, value);
+ }
+
public static final String FRAGMENT_TAG = BuildConfig.APPLICATION_ID + ".fragment.settings";
public static final String ARGUMENT_MENU_TAG = FRAGMENT_TAG + ".menu_tag";
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java
index 6c697bfb3d..72eaad9187 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java
@@ -26,6 +26,8 @@ public final class SettingsFragmentPresenter
private HashMap<String, SettingSection> mSettings;
private ArrayList<SettingsItem> mSettingsList;
+ private int mGcPadNumber;
+
public SettingsFragmentPresenter(SettingsFragmentView view)
{
mView = view;
@@ -33,7 +35,15 @@ public final class SettingsFragmentPresenter
public void onCreate(String menuTag)
{
- mMenuTag = menuTag;
+ if (menuTag.startsWith(SettingsFile.KEY_GCPAD_TYPE))
+ {
+ mMenuTag = SettingsFile.KEY_GCPAD_TYPE;
+ mGcPadNumber = Integer.valueOf(menuTag.substring(menuTag.length() - 1));
+ }
+ else
+ {
+ mMenuTag = menuTag;
+ }
}
public void onViewCreated(HashMap<String, SettingSection> settings)
@@ -92,6 +102,10 @@ public final class SettingsFragmentPresenter
addGraphicsSettings(sl);
break;
+ case SettingsFile.FILE_NAME_GCPAD:
+ addGcPadSettings(sl);
+ break;
+
case SettingsFile.SECTION_GFX_ENHANCEMENTS:
addEnhanceSettings(sl);
break;
@@ -100,6 +114,10 @@ public final class SettingsFragmentPresenter
addHackSettings(sl);
break;
+ case SettingsFile.KEY_GCPAD_TYPE:
+ addGcAdapterSettings(sl, mGcPadNumber);
+ break;
+
default:
mView.showToastMessage("Unimplemented menu.");
return;
@@ -139,6 +157,19 @@ public final class SettingsFragmentPresenter
}
+ private void addGcPadSettings(ArrayList<SettingsItem> sl)
+ {
+ if (mSettings != null)
+ {
+ for (int i = 0; i < 4; i++)
+ {
+ // TODO This controller_0 + i business is quite the hack. It should work, but only if the definitions are kept together and in order.
+ Setting gcPadSetting = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_GCPAD_TYPE + i);
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_GCPAD_TYPE + i, SettingsFile.SECTION_CORE, R.string.controller_0 + i, 0, R.array.gcpadTypeEntries, R.array.gcpadTypeValues, 0, gcPadSetting));
+ }
+ }
+ }
+
private void addGraphicsSettings(ArrayList<SettingsItem> sl)
{
Setting showFps = null;
@@ -229,6 +260,15 @@ public final class SettingsFragmentPresenter
sl.add(new SingleChoiceSetting(SettingsFile.KEY_ASPECT_RATIO, SettingsFile.SECTION_GFX_HACKS, R.string.aspect_ratio, R.string.aspect_ratio_descrip, R.array.aspectRatioEntries, R.array.aspectRatioValues, 0, aspectRatio));
}
+ private void addGcAdapterSettings(ArrayList<SettingsItem> sl, int gcPadNumber)
+ {
+ Setting rumble = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_GCADAPTER_RUMBLE + gcPadNumber);
+ Setting bongos = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_GCADAPTER_BONGOS + gcPadNumber);
+
+ sl.add(new CheckBoxSetting(SettingsFile.KEY_GCADAPTER_RUMBLE + gcPadNumber, SettingsFile.SECTION_CORE, R.string.gc_adapter_rumble, R.string.gc_adapter_rumble_description, false, rumble));
+ sl.add(new CheckBoxSetting(SettingsFile.KEY_GCADAPTER_BONGOS + gcPadNumber, SettingsFile.SECTION_CORE, R.string.gc_adapter_bongos, R.string.gc_adapter_bongos_description, false, bongos));
+ }
+
private int getXfbValue()
{
int xfbValue;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java
index 66ea466b54..8cdf4361e7 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java
@@ -76,4 +76,12 @@ public interface SettingsFragmentView
* Have the fragment tell the containing Activity that a setting was modified.
*/
void onSettingChanged();
+
+ /**
+ * Have the fragment tell the containing Activity that a GCPad's setting was modified.
+ *
+ * @param key Identifier for the GCPad that was modified.
+ * @param value New setting for the GCPad.
+ */
+ void onGcPadSettingChanged(String key, int value);
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java
index 2b2286d5c7..87d816d93e 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java
@@ -1,8 +1,6 @@
package org.dolphinemu.dolphinemu.utils;
-import android.app.Activity;
import android.app.PendingIntent;
-import android.content.Context;
import android.content.Intent;
import android.hardware.usb.UsbConfiguration;
import android.hardware.usb.UsbConstants;
@@ -12,6 +10,7 @@ import android.hardware.usb.UsbEndpoint;
import android.hardware.usb.UsbInterface;
import android.hardware.usb.UsbManager;
+import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.services.USBPermService;
import java.util.HashMap;
@@ -20,9 +19,7 @@ import java.util.Map;
public class Java_GCAdapter {
public static UsbManager manager;
- public static Activity our_activity;
static byte[] controller_payload = new byte[37];
- static byte HasRead;
static UsbDeviceConnection usb_con;
static UsbInterface usb_intf;
@@ -41,8 +38,8 @@ public class Java_GCAdapter {
{
Intent intent = new Intent();
PendingIntent pend_intent;
- intent.setClass(our_activity, USBPermService.class);
- pend_intent = PendingIntent.getService(our_activity, 0, intent, 0);
+ intent.setClass(NativeLibrary.sEmulationActivity, USBPermService.class);
+ pend_intent = PendingIntent.getService(NativeLibrary.sEmulationActivity, 0, intent, 0);
manager.requestPermission(dev, pend_intent);
}
}
@@ -79,13 +76,29 @@ public class Java_GCAdapter {
}
public static int Input() {
- int read = usb_con.bulkTransfer(usb_in, controller_payload, controller_payload.length, 16);
- return read;
+ if (usb_in != null)
+ {
+ int read = usb_con.bulkTransfer(usb_in, controller_payload, controller_payload.length, 16);
+ return read;
+ }
+ else
+ {
+ // TODO Is this right?
+ return 0;
+ }
}
public static int Output(byte[] rumble) {
- int size = usb_con.bulkTransfer(usb_out, rumble, 5, 16);
- return size;
+ if (usb_out != null)
+ {
+ int size = usb_con.bulkTransfer(usb_out, rumble, 5, 16);
+ return size;
+ }
+ else
+ {
+ // TODO Is this right?
+ return 0;
+ }
}
public static void OpenAdapter()
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java
index 865e3371ae..12221cb0fe 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java
@@ -70,8 +70,13 @@ public final class SettingsFile
public static final String KEY_TEXCACHE_ACCURACY = "SafeTextureCacheColorSamples";
public static final String KEY_XFB = "UseXFB";
public static final String KEY_XFB_REAL = "UseRealXFB";
- public static final String KEY_FAST_DEPTH= "FastDepthCalc";
- public static final String KEY_ASPECT_RATIO= "AspectRatio";
+ public static final String KEY_FAST_DEPTH = "FastDepthCalc";
+ public static final String KEY_ASPECT_RATIO = "AspectRatio";
+
+ public static final String KEY_GCPAD_TYPE = "SIDevice";
+
+ public static final String KEY_GCADAPTER_RUMBLE = "AdapterRumble";
+ public static final String KEY_GCADAPTER_BONGOS = "SimulateKonga";
// Internal only, not actually found in settings file.
public static final String KEY_XFB_METHOD = "XFBMethod";
diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_settings_gcpad.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_settings_gcpad.png
new file mode 100644
index 0000000000..08346b24d3
--- /dev/null
+++ b/Source/Android/app/src/main/res/drawable-hdpi/ic_settings_gcpad.png
Binary files differ
diff --git a/Source/Android/app/src/main/res/drawable-mdpi/ic_settings_gcpad.png b/Source/Android/app/src/main/res/drawable-mdpi/ic_settings_gcpad.png
new file mode 100644
index 0000000000..a109fe764f
--- /dev/null
+++ b/Source/Android/app/src/main/res/drawable-mdpi/ic_settings_gcpad.png
Binary files differ
diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_settings_gcpad.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_settings_gcpad.png
new file mode 100644
index 0000000000..50f316a5d4
--- /dev/null
+++ b/Source/Android/app/src/main/res/drawable-xhdpi/ic_settings_gcpad.png
Binary files differ
diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_settings_gcpad.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_settings_gcpad.png
new file mode 100644
index 0000000000..bc2daefaec
--- /dev/null
+++ b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_settings_gcpad.png
Binary files differ
diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_settings_gcpad.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_settings_gcpad.png
new file mode 100644
index 0000000000..c3860e1b51
--- /dev/null
+++ b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_settings_gcpad.png
Binary files differ
diff --git a/Source/Android/app/src/main/res/drawable/ic_settings_gcpad.png b/Source/Android/app/src/main/res/drawable/ic_settings_gcpad.png
new file mode 100644
index 0000000000..c3860e1b51
--- /dev/null
+++ b/Source/Android/app/src/main/res/drawable/ic_settings_gcpad.png
Binary files differ
diff --git a/Source/Android/app/src/main/res/layout/fragment_input_gc_list.xml b/Source/Android/app/src/main/res/layout/fragment_input_gc_list.xml
new file mode 100644
index 0000000000..d656890320
--- /dev/null
+++ b/Source/Android/app/src/main/res/layout/fragment_input_gc_list.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<org.dolphinemu.dolphinemu.ui.settings.SettingsFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginEnd="@dimen/activity_horizontal_margin"
+ android:layout_marginStart="@dimen/activity_horizontal_margin"
+ android:background="@android:color/white"
+ android:elevation="@dimen/elevation_high"
+ android:orientation="vertical">
+
+ <include
+ android:id="@+id/list_item_controller_one"
+ layout="@layout/list_item_setting"
+ />
+
+ <include
+ android:id="@+id/list_item_controller_two"
+ layout="@layout/list_item_setting"
+ />
+
+ <include
+ android:id="@+id/list_item_controller_two"
+ layout="@layout/list_item_setting"
+ />
+
+ <include
+ android:id="@+id/list_item_controller_two"
+ layout="@layout/list_item_setting"
+ />
+ </LinearLayout>
+
+</org.dolphinemu.dolphinemu.ui.settings.SettingsFrameLayout> \ No newline at end of file
diff --git a/Source/Android/app/src/main/res/menu/menu_game_grid.xml b/Source/Android/app/src/main/res/menu/menu_game_grid.xml
index a87f89f32d..034da74ee0 100644
--- a/Source/Android/app/src/main/res/menu/menu_game_grid.xml
+++ b/Source/Android/app/src/main/res/menu/menu_game_grid.xml
@@ -2,11 +2,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
- android:id="@+id/menu_refresh"
- android:title="@string/grid_menu_refresh"
- android:icon="@drawable/ic_refresh"
- app:showAsAction="ifRoom"/>
- <item
android:id="@+id/menu_settings_core"
android:title="@string/grid_menu_core_settings"
android:icon="@drawable/ic_settings_core"
@@ -16,5 +11,15 @@
android:title="@string/grid_menu_video_settings"
android:icon="@drawable/ic_settings_graphics"
app:showAsAction="ifRoom"/>
+ <item
+ android:id="@+id/menu_settings_gcpad"
+ android:title="@string/grid_menu_gcpad_settings"
+ android:icon="@drawable/ic_settings_gcpad"
+ app:showAsAction="ifRoom"/>
+ <item
+ android:id="@+id/menu_refresh"
+ android:title="@string/grid_menu_refresh"
+ android:icon="@drawable/ic_refresh"
+ app:showAsAction="ifRoom"/>
</menu> \ No newline at end of file
diff --git a/Source/Android/app/src/main/res/values/arrays.xml b/Source/Android/app/src/main/res/values/arrays.xml
index bf2afc4527..d327a5004e 100644
--- a/Source/Android/app/src/main/res/values/arrays.xml
+++ b/Source/Android/app/src/main/res/values/arrays.xml
@@ -147,4 +147,16 @@
<item>Taiwan</item>
<item>Unknown</item>
</string-array>
+
+ <string-array name="gcpadTypeEntries">
+ <item>Disabled</item>
+ <item>Emulated</item>
+ <item>Gamecube Adapter</item>
+ </string-array>
+ <integer-array name="gcpadTypeValues">
+ <item>0</item>
+ <item>6</item>
+ <item>12</item>
+ </integer-array>
+
</resources>
diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml
index db5cc8355a..cf391e8ec8 100644
--- a/Source/Android/app/src/main/res/values/strings.xml
+++ b/Source/Android/app/src/main/res/values/strings.xml
@@ -78,10 +78,14 @@
<string name="controller_bindings">Controller Bindings</string>
<string name="controller_gc">GameCube Controllers</string>
<string name="controller_wii">Wii Controllers (Wiimotes)</string>
+
+ <!-- WARNING Do not move these controller entries AT ALL COSTS! -->
<string name="controller_0">GameCube Controller 1</string>
<string name="controller_1">GameCube Controller 2</string>
<string name="controller_2">GameCube Controller 3</string>
<string name="controller_3">GameCube Controller 4</string>
+ <!-- END WARNING -->
+
<string name="enable_controller">Enable controller</string>
<string name="controller_buttons">Buttons</string>
<string name="controller_dpad">Directional Keys</string>
@@ -317,8 +321,9 @@
<!-- Game Grid Screen-->
- <string name="grid_menu_core_settings">Settings</string>
+ <string name="grid_menu_core_settings">CPU Settings</string>
<string name="grid_menu_video_settings">Video Settings</string>
+ <string name="grid_menu_gcpad_settings">Gamecube Input</string>
<string name="grid_menu_refresh">Refresh Library</string>
<!-- Add Directory Screen-->
@@ -340,7 +345,13 @@
<string name="emulation_toggle_input">Toggle Touch Controls</string>
<string name="emulation_quicksave">Quick Save</string>
<string name="emulation_quickload">Quick Load</string>
-
+
+ <!-- GC Adapter Menu-->
+ <string name="gc_adapter_rumble">Enable Vibration</string>
+ <string name="gc_adapter_rumble_description">Enable the vibration function for this Gamecube controller.</string>
+ <string name="gc_adapter_bongos">Bongo Controller</string>
+ <string name="gc_adapter_bongos_description">Enable this if you are using bongos on this port.</string>
+
<!-- Package Names-->
<string name="application_id">org.dolphinemu.dolphinemu</string>
</resources>
diff --git a/Source/Android/build.gradle b/Source/Android/build.gradle
index 469472dc22..ae2e54a2d9 100644
--- a/Source/Android/build.gradle
+++ b/Source/Android/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.0.0-alpha7'
+ classpath 'com.android.tools.build:gradle:2.0.0-alpha8'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/Source/Android/gradle.properties b/Source/Android/gradle.properties
index 0907253421..ffbabe60d3 100644
--- a/Source/Android/gradle.properties
+++ b/Source/Android/gradle.properties
@@ -10,7 +10,7 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
-# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit