Commit Graph

972 Commits

Author SHA1 Message Date
Markus Wick 9322c0edfa
Merge pull request #7320 from zackhow/leanback-button-clear
Android: Clear controller binding by long press on TV
2018-08-13 13:42:48 +02:00
zackhow a2f90d3915 Android: require back to be pressed twice to exit on mobile 2018-08-12 06:59:06 -04:00
zackhow 51fa5d2fd8 Android: Clear controller binding by long press on TV
The TV interface can't 'click' the clear button, this gives TV a way to clear
2018-08-11 21:47:49 -04:00
zackhow 75f4e74e94 Android: Add default touch button overlay
This sets up default positions for touch buttons so they are not just bunched in the corner on a fresh install. Also added a toast when emulation starts on how to edit button layout
2018-08-11 12:56:23 -04:00
Markus Wick 74057ec222
Merge pull request #7303 from zackhow/exitemumenu
Android:  Add exit to phone emu menu
2018-08-09 10:19:25 +02:00
Markus Wick bfbf9ed2ee
Merge pull request #7292 from mahdihijazi/settings_refactor
Android: Settings refactor & Fix custom game settings
2018-08-09 10:17:03 +02:00
zackhow 58aa6b9905 Android: Add exit to phone emu menu
Some phones that have capacitive nav bar buttons disable those buttons while in emulation. This gives those devices a way to exit
2018-08-06 22:26:58 -04:00
mahdihijazi f41785e1b9 Android: Reflect the settings that is being used by the emulator on the UI
Per-Game settings now load the settings in this order
1. Emulator Settings
2. Default Settings of the Game that we ship with Dolphin
3. Custom game settings the user have

where the later always overides the former in case of collision, then
we show that on the UI to make it clear to the user which settings being
used.
2018-08-05 01:33:30 +02:00
zackhow ec5e46fa7a Android: Return 0 on fail on WiimoteReal IOWrite and update WiimoteNew defaults
Some of the write checks do an & on the result, returning 0 will allow these fails to be caught.
Updated the default WiimoteNew to set wiimotes 2-4 to be disabled on new install. No reason to have these
enabled unless there is actually a 2+ players
2018-08-03 19:46:26 -04:00
mahdihijazi ed1c91b4f6 Android: Fix custom game settings
Apparently there was a different section names used by the custom game
settings that caused Android to have those settings broken for
some sections like the graphics one. This adds the map between the generic
settings <> custom settings.
2018-08-03 22:45:52 +02:00
mahdihijazi c664bb7458 Android: Refactor the settings managemnt
1. Create Settings class the encaupslate the loading/saving of all settings
2. Decouple the logic of saving the settings into 3 different config files
from the UI code.
2018-08-03 21:45:39 +02:00
mahdihijazi 61835a7e08 Android: Start structure the project around features instead of data types
This only moves the settings feature, the rest will be moved slowely later
2018-08-03 21:41:34 +02:00
zackhow be02a8e70b Android: Fix wiimote settings saving.
Index was off by one, so if you enabled Emulated Controller for
wiimote1, it would set the 'Source = 1' for wiimote0.
2018-07-30 19:50:45 -04:00
zackhow 38c8d970f2 Android: Fix emulated wiimotes via controller
A little background: Android has 8 controller setup, 4 gamecube pads and 4 wiimote pads. When the static GCPadNew.ini and wiimotenew.ini is created, pads 0-3 are gc 1-4, and 4-7 are wii 1-4. Problem was the settings set wii controllers as pads 1-4, instead of 4-7. So any setting for wiimote1, was set for gc2(padID 1). Which is why the only wiimote to work was 4, since it mapped to padID 4, which is actually wiimote1.
2018-07-29 21:24:28 -04:00
Markus Wick be9437450e
Merge pull request #7234 from zackhow/master
Android: Support for AndroidTV Oreo Homescreen channels
2018-07-22 15:02:49 +02:00
zackhow 0488fe1d30 Android: Support for AndroidTV Oreo Homescreen channels 2018-07-20 17:56:45 -04:00
JosJuice 7f6be99ad9 Android: Make ControllerMappingHelper methods static
This class has no state.
2018-07-11 14:00:57 +02:00
JosJuice 78cb1c2914 Android: Remove controller-specific code that isn't needed anymore 2018-07-11 14:00:37 +02:00
JosJuice d32c297c0d Android controller mapping: Ignore axes with constant values
Some controllers have axes that are stuck to values like 0.5 or 1.
Starting with PR #6123, when you press a control to map, Dolphin will
immediately think that such an axis is the axis that you want to map.
This commit fixes that issue (https://bugs.dolphin-emu.org/issues/10909)
2018-07-11 13:59:22 +02:00
Markus Wick d819df1d08
Merge pull request #7186 from gwicks/androidTouchJoystickRelCenter
Android: Make touch joystick re-centering configurable
2018-07-11 08:41:06 +02:00
Markus Wick fd83937987
Merge pull request #6338 from mahdihijazi/settings_enhancements
Update Android UI Settings to have the most common used settings
2018-07-04 21:50:09 +02:00
Markus Wick 0cf205f947
Merge pull request #7211 from mahdihijazi/upgrade_targetsdk
Android: Upgrade targetSDK to 27 and androidSupportVersion to 7.1.1
2018-07-04 21:45:13 +02:00
mahdihijazi e8ad6e4d49 Upgrade targetSDK to 27 and androidSupportVersion to 7.1.1 2018-07-02 16:40:16 +02:00
mahdihijazi 03fd8ddce6 Disable automatic backup
Since we don't have proper confuguration file of what to include/exclude
in the backup, this better be disabled because it will lead to unexpected
state. This will solve any issue that was keep hapenning even after fresh
install of the emulator until you manually clear the app data.
2018-07-02 16:24:57 +02:00
mahdihijazi 77e51ab527 Android: Make the header focusable
otherwise the settings list scrolling is not working properly
on Android Oreo(Tv)
2018-07-01 22:25:14 +02:00
mahdihijazi a639fa9a81 Android: Expose arbitrary mipmap detection toggle in UI 2018-07-01 22:25:14 +02:00
mahdihijazi e7d295894a Android: Support GameCube System Language 2018-07-01 22:25:14 +02:00
mahdihijazi d5a048a2ba Android: Create didcated sections for GameCube & Wii
This align the Android UI with the desktop UI
2018-07-01 22:25:14 +02:00
mahdihijazi 5010dfde7e Android: Support WideScreen Hack 2018-07-01 22:25:13 +02:00
mahdihijazi 84229c0c05 Android: Support SpeedLimit config option 2018-07-01 22:25:13 +02:00
mahdihijazi b924445e48 Android: Support Post Processing Shaders 2018-07-01 22:25:13 +02:00
mahdihijazi b4bb213ffd Android: Add Force 24-Bit Color enhancement option 2018-07-01 22:25:12 +02:00
mahdihijazi ef23d97063 Android: Refine the Graphics Settings Screen
1. Add General Section
2. Move the Aspect Ration Settings from the Enhancmenets Section to
the General section to match the desktop GUI.
2018-07-01 22:25:12 +02:00
mahdihijazi e0e9b43559 Android: Rename main settings buttons to match the desktop version
- Video Settings to Graphics Settings
- CPU Settings to Config
2018-07-01 22:25:12 +02:00
mahdihijazi 9316537964 Android: Change the incremental value of the slider to be 5% instead of 20% 2018-07-01 22:25:12 +02:00
mahdihijazi 87534f1b2f RfC: Refactor the settings for Android to use dedicated tags
Before we used different way of identifying which settings menu to
show, someotimes we used the section name, other times we used the
settings file name. This one replaces all those different ways by just
one way based on a menu tag which is more clear and easy to follow.
2018-07-01 22:25:05 +02:00
Greg Wicks 82ec3c929c Android: Make touch joystick re centering configurable 2018-06-29 16:09:59 -04:00
JosJuice 1073aa4602
Merge pull request #7181 from Ebola16/R
Android: Properly set default Internal Resolution
2018-06-29 09:40:09 +02:00
Ryan Meredith cdbc61dd0e Android: Properly set default Internal Resolution 2018-06-28 22:14:53 -04:00
JosJuice d1a82182ac Android: Use case insensitive sorting in game list 2018-06-18 19:11:58 +02:00
Léo Lam bd85d63c62
Merge pull request #7120 from Ebola16/313
Update Android Gradle to 3.1.3 and minor improvements
2018-06-15 19:54:49 +02:00
Lioncash 6f473b96d0 PowerPC: Convert CPUCore enum into an enum class
Makes the enum values strongly-typed and prevents the identifiers from
polluting the PowerPC namespace. This also cleans up the parameters of
some functions where we were accepting an ambiguous int type and
expecting the correct values to be passed in.

Now those parameters accept a PowerPC::CPUCore type only, making it
immediately obvious which values should be passed in. It also turns out
we were storing these core types into other structures as plain ints,
which have also been corrected.

As this type is used directly with the configuration code, we need to
provide our own overloaded insertion (<<) and extraction (>>) operators
in order to make it compatible with it. These are fairly trivial to
implement, so there's no issue here.

A minor adjustment to TryParse() was required, as our generic function
was doing the following:

N tmp = 0;

which is problematic, as custom types may not be able to have that
assignment performed (e.g. strongly-typed enums), so we change this to:

N tmp;

which is sufficient, as the value is attempted to be initialized
immediately under that statement.
2018-06-15 10:27:59 -04:00
Ryan Meredith 31b3647d73 Android: Add Emulated CPU Clock description and minor cleanup 2018-06-14 23:15:39 -04:00
Ryan Meredith fb3ae94acb Android: Add AlertDialog for files without Game IDs in Game Settings 2018-06-09 11:30:20 -04:00
Ryan Meredith 569454c961 Update Android Gradle to 3.1.3 2018-06-07 22:15:11 -04:00
JosJuice f0f8ca2172 Android: Don't allow INI editing for DOL/ELF files 2018-06-06 17:34:08 +02:00
JosJuice 1c027bc148 Use UICommon's game list code on Android
Deduplicates code, and gets rid of some problems the old code had
(such as: bad performance when calling native functions, only one
disc showing up for multi-disc games, Wii banners being low-res,
unnecessarily much effort being needed for adding more metadata).
2018-06-06 17:34:07 +02:00
JosJuice daee5a4b43 Android: Store folders to scan in SharedPreferences instead of SQLite
Needed in order for the next commit to get rid of the SQLite database.
2018-06-04 22:12:25 +02:00
Léo Lam 34511b397e
Merge pull request #7067 from Ebola16/ASU3
Update Android Gradle Plugin
2018-06-04 19:37:33 +02:00
Ryan Meredith dad9c87d8c Update Android Gradle Plugin 2018-06-04 13:22:37 -04:00
Léo Lam 86368fcd4d
Merge pull request #6499 from Ebola16/SettingsGroup
Android: Initial implementation of Interface submenu
2018-06-03 12:02:56 +02:00
JosJuice 2062768bb2 Don't include the Themes directory in Android APKs
We already exclude the Resources folder. Let's do the same with Themes.
2018-06-03 11:11:24 +02:00
JosJuice 1b127bdf33 Android: Refresh all fragments, not just the selected one
This fixes the oddity of having to manually refresh after adding a
folder that contains games for a different tab than the one you're on.
2018-06-01 18:17:51 +02:00
Ryan Meredith 4e010912cd Android: Consistently use description 2018-06-01 09:58:34 -04:00
Lioncash 4288bfe0f9 Common: Move host communication enum to Host.h
Given this is actually a part of the Host interface, this should be
placed with it.

While we're at it, turn it into an enum class so that we don't dump its
contained values into the surrounding scope. We can also make
Host_Message take the enum type itself directly instead of taking a
general int value.

After this, it'll be trivial to divide out the rest of Common.h and
remove the header from the repository entirely
2018-05-28 14:34:59 -04:00
JosJuice cc42b4354d Reimplement custom PNG banners in game list
Fixes https://bugs.dolphin-emu.org/issues/10938
and makes PNG banners available in DolphinQt2 for the first time.
2018-05-20 15:34:03 +02:00
Ryan Meredith c448fceb26 Rename strings to specify INI vs submenus 2018-05-03 16:09:46 -04:00
Ryan Meredith 532493bed5 Android: Update Stereoscopy submenu string names 2018-05-03 16:09:45 -04:00
Ryan Meredith 4c40871fff Android: Add missing Show FPS description 2018-05-03 16:05:22 -04:00
Ryan Meredith c2355d4f63 Android Interface submenu: Add Show OSD Messages 2018-05-03 16:05:22 -04:00
Ryan Meredith 25179258b7 Android: Initial implementation of Interface submenu 2018-05-03 16:05:22 -04:00
Distro Lucas dbeec37b0f Fixed aspect ratio bigger than 16:9 on Android Devices 2018-05-02 22:21:28 -03:00
Stenzek ea4090d92c Dolphin: Add disable copy filter to graphics options 2018-04-29 19:05:20 +10:00
Ryan Meredith b00c29b70d Update Android Gradle Plugin 2018-04-17 16:54:14 -04:00
Tillmann Karras 4cfd900c67 Fix some warnings 2018-04-17 14:10:05 +01:00
Lioncash 21ee216e63
Android/CMakeLists: Remove usages of LIBS and SRCS variables
Instead, operate on the target itself.
2018-04-03 08:05:43 -04:00
JosJuice 3fe0051a53 Fix build error on Android
Caused by 4387432.
2018-04-03 08:32:55 +02:00
Léo Lam c82da2b978 Remove dead code
Unused, old code that is intended to be removed should not be left in
comments -- that is what version control is for.
2018-03-31 14:56:27 +02:00
JosJuice 4387432436 DiscIO: Don't use all uppercase for enum values
Also removing some prefixes that we don't need now that we're
using enum classes instead of plain enums.
2018-03-31 14:11:32 +02:00
Ryan Meredith 00db87e304 Android: Updates for Android Studio 3.1 2018-03-28 16:38:22 -04:00
Stenzek 2f1a7cbee1 Implement "Skip" ubershader mode
Skip ubershader mode works the same as hybrid ubershaders in that the
shaders are compiled asynchronously. However, instead of using the
ubershader to draw the object, it skips it entirely until the
specialized shader is made available.

This mode will likely result in broken effects where a game creates an
EFB copy, and does not redraw it every frame. Therefore, it is not a
recommended option, however, it may result in better performance on
low-end systems.
2018-03-26 01:57:41 +10:00
JosJuice 828c2c44ca Bring the Android GUI setting for ubershaders up to date
9fa2470 changed how the ubershader setting is stored in INIs but didn't
update the Android GUI code to reflect that, so the setting in the
Android GUI has been broken starting with that commit.

Fixes https://bugs.dolphin-emu.org/issues/10947
2018-03-15 19:15:13 +01:00
Greg Wicks b28236611d Android: Make on-screen joysticks center on the initial touch input. 2018-02-21 20:36:03 -05:00
Markus Wick 9d3d31a8e8
Merge pull request #6387 from mahdihijazi/fix_build_no
Android: Use the git rev-list --count for versionCode
2018-02-20 10:42:22 +01:00
Stenzek 0dddaf9d7d Android: Update renderer surface before resuming emulation
Previously, this could cause a race condition which resulted in the
Vulkan backend attempting to acquire a swap chain image from a now
non-existant surface. By ensuring the backend knows about the surface
before a frame is presented, this race does not happen.
2018-02-20 01:15:55 +10:00
mahdihijazi 135ac2a7a8 Android: Use the git rev-list --count for versionCode 2018-02-19 15:33:46 +01:00
Greg Wicks e19922c5de Android: Implement game-specific settings overrides UI 2018-02-16 13:47:52 -05:00
Markus Wick 5ba18f642c
Merge pull request #6306 from mahdihijazi/fix_hardcoded_path2
Android: Don't hard code the user dircetory path to /sdcard/dolphin-emu
2018-01-26 11:38:51 +01:00
mahdihijazi ae8b469b80 Android: Don't hard code the user dircetory path to /sdcard/dolphin-emu
Android is allowed to pick any path for the external storage media and
that's why we should always use Environment.getExternalStorageDirectory()
to get the external storage path
2018-01-24 12:15:59 +01:00
Léo Lam c3dc8bf1c0
Merge pull request #6310 from mahdihijazi/fix_animation
Android: Fix settings screen animation if Animator Duration Scale is Off
2018-01-24 12:14:21 +01:00
Léo Lam 9a166dca57
Merge pull request #6313 from mahdihijazi/support_change_disc
Android: Support change disc
2018-01-24 12:07:10 +01:00
Ryan Meredith 765b20cc7a Update the Android Gradle plugin to version 3.0.1 2018-01-21 17:29:34 -05:00
mahdihijazi c9dc585dcb Android: Support change disc 2018-01-21 13:59:36 +01:00
mahdihijazi e2dbf10ee5 Android: Keep the local copy of the mSurface
onCreateView might not be called after resuming the emulatoin wich will
leed the game to stuck in the middle since mRunWhenSurfaceIsValid will be
true but surfaceChanged will never be called in this case.
2018-01-21 01:30:45 +01:00
mahdihijazi 53f2fcb571 Android: Fix settings screen animation if Animator Duration Scale is Off
If Animator Duration Scale is Off, the Enhancements/Hacks screens were
not visible unless you enable the Animator Duration Scale back. This
make sure screens will be visible regardless of your animation settings.
2018-01-19 11:55:20 +01:00
Léo Lam ec78118a43
Merge pull request #6302 from JosJuice/gradle-compile
Use "implementation" for all dependencies in build.gradle
2018-01-13 11:25:37 +01:00
JosJuice 83870fbcf0 Use "implementation" for all dependencies in build.gradle 2018-01-12 21:29:42 +01:00
Markus Wick 41fe276323
Merge pull request #6295 from 34will/master
Yes/No Dialogs for Android
2018-01-10 14:55:37 +01:00
34will 10ea9e5f5b Added an actual implementation for yes/no dialogs on Android using Object.wait and Object.notify.
Modified NativeLibrary to display alerts in AlertDialogs rather than Toast notifications, and allow yes/no options.
Modified MainAndroid to use the new displayAlertMsg, and to return its output.
2018-01-10 13:41:57 +00:00
Markus Wick a1467f0e5a
Merge pull request #6282 from mahdihijazi/replace_file_browser
[Android] Replace current file browser
2018-01-10 09:50:16 +01:00
mahdihijazi 409ae4c444 [Android] Replace current file browser
1. Allow users to pick games dircetory from external storage.
2. Better UX experince to distinguish between selecting a directory or
a game. The later is needed when we implement change disk for android.
2018-01-05 21:43:19 +01:00
Markus Wick e705d43312
Merge pull request #6270 from mahdihijazi/suppport_restore_state
[Android] Support restore emulator state
2018-01-05 13:45:36 +01:00
mahdihijazi 42fa129552 [Android] Fix refreshing the games list after adding a directory
This was a regression from the time we introrduced the Platform enums.
2018-01-03 19:39:28 +01:00
mahdihijazi 136e835fb4 [Android] Support restore emulator state after the emulation screen is killed
1) Most of the times the native heap is kept around even after the activity
is killed, we can ask the native code if it is still running and resume
the emulation if that is the case.

2) In case the native heap is freed and the emulation can't resume we used
a temporary state to load on the game boot.

I couldn't find a way to test this, if you want to test this schnario,
add this block to EmulationFragment.

public void onDestroy()
{
	stopEmulation();
	super.onDestroy();
}

onDestroy is only called if the acivity killed by the OS and not be rotation
change whihch in this case will make sure to kill the emulation and start
again when the activiy is re-created.
2017-12-28 23:50:25 +01:00
JosJuice 82a6701f79 Optionally delete savestate that gets loaded at boot 2017-12-28 23:15:48 +01:00
JosJuice b921f6cdef MainAndroid: Don't set User directory redundantly 2017-12-28 13:34:49 +01:00
JosJuice 3e6e66b0d9 Android: Don't return anything from HandleInit
It only ever returned false.
2017-12-28 12:51:45 +01:00
JosJuice d8f10ba177 Android: Always run HandleInit logic on app start
Note: By "HandleInit" in this commit message, I mean the code that is
in HandleInit in master except the part that launches EmulationActivity.
In other words, I mean the call to SetUserDirectory and the call to
DirectoryInitializationService.startService. Couldn't think of
something more accurate to call that than "HandleInit"...

In master, HandleInit only runs when the main activity is launched.
This is a problem if the app ends up being launched in some other way,
such as resuming EmulationActivity after the app has been killed in
order to reclaim memory. It's important that we run HandleInit, because
otherwise the native code won't know where the User and Sys folders are.

In order to implement this, I'm dropping the ability to set a custom
User folder in an intent. I don't think anyone is using that anyway.
It's not impossible to support it, but I can't see a way to support
it that doesn't involve something ugly like having code for calling
HandleInit in every activity (or at least MainActivity + TvMainActivity
+ EmulationActivity, with more activities potentially needing it in
the future if we expand the usage of native code for e.g. settings).
If we want to support setting a custom user directory, we should
consider another way to do it, such as a setting that's stored in
getFilesDir() or getExternalStorageDirectory(). Intents are intended
to control the behavior of a specific activity, not the whole app.
2017-12-28 12:51:00 +01:00
JosJuice f9a0511937 MainAndroid: Optionally wait for savestate to finish writing 2017-12-27 21:53:14 +01:00
JosJuice 87957faddd MainAndroid: Allow specifying savestate to load at boot 2017-12-27 21:53:13 +01:00