Commit Graph

1623 Commits

Author SHA1 Message Date
Admiral H. Curtiss
9b33b777cf
Merge pull request #12828 from JosJuice/unify-state-variables-2
Clean up Core::GetState
2024-06-22 20:20:54 +02:00
JosJuice
72cf2bdb87 Audit uses of IsRunning and GetState
Some pieces of code are calling IsRunning because there's some
particular action that only makes sense when emulation is running, for
instance showing the state of the emulated CPU. IsRunning is appropriate
to use for this. Then there are pieces of code that are calling
IsRunning because there's some particular thing they must avoid doing
e.g. when the CPU thread is running or IOS is running. IsRunning isn't
quite appropriate for this. Such code should also be checking for the
states Starting and Stopping. Keep in mind that:

* When the state is Starting, the state can asynchronously change to
  Running at any time.
* When we try to stop the core, the state gets set to Stopping before we
  take any action to actually stop things.

This commit adds a new method Core::IsUninitialized, and changes all
callers of IsRunning and GetState that look to me like they should be
changed.
2024-06-21 20:52:55 +02:00
deReeperJosh
a87ea694a9 Add 2 More Slots for Power Discs on Emulated Base 2024-06-20 10:22:26 +01:00
Admiral H. Curtiss
cd9521f293
Merge pull request #12807 from TacoTheDank/cleanupProguard
Android: Clean up ProGuard
2024-05-31 17:41:20 +02:00
TacoTheDank
51f4dfabc2 Android: Fix Gradle deprecation 2024-05-25 22:13:25 -04:00
TacoTheDank
5a6fbc4c57 Android: Clean up ProGuard 2024-05-25 21:56:19 -04:00
JosJuice
7a4740adf7 Android: Fix crash when no devices have outputs
Regression from 5171290bdb.
2024-05-20 21:36:00 +02:00
OatmealDome
59c6739013
Merge pull request #12727 from Simonx22/android-dependencies-042024
Android: Update dependencies
2024-04-21 13:54:37 -04:00
Admiral H. Curtiss
a46ffc5d08
Merge pull request #12686 from JosJuice/android-remove-strikeout
Android: Unset STRIKE_THRU_TEXT_FLAG for editable settings
2024-04-20 23:34:05 +02:00
Simonx22
e4f97a2532 Android: Update dependencies 2024-04-20 17:53:11 +02:00
Admiral H. Curtiss
3a0720dd1f
Merge pull request #12681 from nlebeck/taskviewmodel-refactor
Refactor `TaskViewModel` to track task-related state in a single `MutableLiveData` instance
2024-04-13 01:42:12 +02:00
Admiral H. Curtiss
b623a36005
Merge pull request #12688 from JosJuice/android-alert-synchronize
Android: Fix race condition in displayAlertMsg
2024-04-13 01:40:30 +02:00
mitaclaw
94712ea06f Android: Access Software JIT Profiling 2024-04-09 13:43:32 -07:00
mitaclaw
ee8bcf2ccc JitCache: Software Profiling Restoration
Rekindle software JIT profiling with a std::chrono conversion and a config connection.
2024-04-09 13:43:31 -07:00
Niel Lebeck
d7836efa1a Refactor TaskViewModel to track task-related state in a single MutableLiveData instance 2024-04-07 17:10:02 -07:00
mitaclaw
be27c4f877 NativeLibrary: Create displayToastMsg Method 2024-04-06 15:41:23 -07:00
JosJuice
9ca9d073df Android: Fix race condition in displayAlertMsg
It was possible for sAlertMessageLock.notify() to be called before
sAlertMessageLock.wait(), causing Dolphin to deadlock. In particular,
this was guaranteed to happen if displayAlertMsg was called from the UI
thread while the emulation activity is being destroyed, because
runOnUiThread runs the passed-in anonymous function immediately when
called from the UI thread.

By replacing Object.wait/Object.notify with Semaphore.acquire/
Semaphore.release, it no longer matters what order the methods are
called in.
2024-04-05 22:46:48 +02:00
JosJuice
eef71d50c3 Android: Unset STRIKE_THRU_TEXT_FLAG for editable settings
Because SettingViewHolder is used in RecyclerViews, we have to
explicitly unset STRIKE_THRU_TEXT_FLAG when we don't want it, otherwise
it might be left over from when the SettingViewHolder was representing
a different setting.
2024-04-05 20:14:41 +02:00
Matt
39f5597089 Add tapserver BBA and Modem Adapter UI config to Android
This PR simply exposes the tapserver options in Serial Port 1 on Android. They already exist and work, but are not selectable. I've tested the tapserver options myself with Phantasy Star Online Episode I & II and they work fine.
2024-03-25 17:37:29 +00:00
Martin Michelsen
02deaa6748 Implement GC modem adapter
This implements the GameCube modem adapter. This implementation is stable but not perfect; it drops frames if the receive FIFO length is exceeded. This is probably due to the unimplemented interrupt mentioned in the comments. If the tapserver end of the connection is aware of this limitation, it's easily circumvented by lowering the MTU of the link, but ideally this wouldn't be necessary.

This has been tested with a couple of different versions of Phantasy Star Online, including Episodes 1 & 2 Trial Edition. The Trial Edition is the only version of the game that supports the Modem Adapter and not the Broadband Adapter, which is what made this commit necessary in the first place.
2024-03-17 18:37:55 -07:00
Martin Michelsen
f90812d8e1 fix android syntax error 2024-03-17 18:37:55 -07:00
Martin Michelsen
0c364cbb4c implement tapserver BBA on all platforms
This expands the tapserver BBA interface to be available on all platforms. tapserver itself is still macOS-only, but newserv (the PSO server) is not, and it can directly accept local and remote tapserver connections as well. This makes the tapserver interface potentially useful on all platforms.
2024-03-17 18:37:55 -07:00
Mai
dd15c012f3
Merge pull request #12573 from JosJuice/android-wii-menu-download-size
Android: Mention download size in the Wii Menu not installed message
2024-02-11 13:52:01 -05:00
JosJuice
b404da78c4 Android: Mention download size in the Wii Menu not installed message
Google Play's policies require us to tell the user the size of any large
download.

The size seems to vary by just a megabyte or two across regions in my
testing, so I'm listing a rough size for all the regions.

I'm also taking the opportunity to shorten the message to make it easier
to read.
2024-02-11 11:34:51 +01:00
JosJuice
06964a921d Android: Don't check Wii Menu version before directory initialization
Fixes a crash.
2024-02-11 11:15:18 +01:00
JosJuice
48ae529762 Android: Update Load Wii System Menu string in onPrepareOptionsMenu
Because the wording of the Load Wii System Menu string can change
depending on the contents of the NAND, we should update that menu item in
a method that's guaranteed to get called every time the user opens the
menu rather than one that's only guaranteed to be called once.
2024-02-11 10:58:42 +01:00
JosJuice
6cf55ab1ee InputCommon: Unify GetProfileName and GetProfileDirectoryName
After reading the previous commit, you might think "hold on, what's the
difference between GetProfileName and GetProfileDirectoryName"? These
two are being used for the exact same thing - figuring out where
profiles are stored - yet they return different values for certain
controllers like GC keyboards! As far as I can tell, the existing code
has been broken for GC keyboards since they were introduced a decade
ago. The GUI (and more recently, also InputCycler) would write and read
profiles in one location, and our code for loading profiles specified in
a game INI file would read profiles in another location.

This commit gets rid of the set of values used by the game INI code in
favor of the other set. This does breaking existing setups where a
GCKey profile has been configured in a game INI, but I think the number
of working such setups is vanishingly small. The alternative would make
existing GCKey profiles go missing from the profile dropdown in the GUI,
which I think would be more disruptive. The alternative would also force
new GCKey profiles into the same directory as GCPad profiles.

This commit also fixes a regression from d6c0f8e749. The Android GUI was
using GetProfileName to figure out what key to use in the game INI,
which made it use incorrect game INI entries for GameCube controller
profiles but not Wii Remote profiles. Now the Android GUI uses
GetProfileKey for this, fixing the problem.
2024-02-04 17:55:08 +01:00
JosJuice
4e57b66dcf
Merge pull request #12375 from JosJuice/android-gate-size-crash
Android: Fix crash when trying to edit gate size setting
2024-01-07 19:34:06 +01:00
Mai
2f7f7afe6d
Merge pull request #12468 from JosJuice/android-targets-fixes
Android: Fix the targets line in build.gradle.kts
2024-01-05 01:55:11 -05:00
JosJuice
b56e6cc03d Android: Update the comment for the targets line in build.gradle.kts
This comment hasn't really made sense since 23bebc5270 commented out
the relevant line.
2023-12-30 14:16:28 +01:00
JosJuice
b5f41e0742 Android: Fix syntax of the targets line in build.gradle.kts
Seems like this was missed in the conversion to Kotlin in 001089dbf4.
2023-12-30 14:14:40 +01:00
BlakDulz
45d3c41d68 Make DocumentProvider Support Thumbnail
This  will make DocumentUI or the built-in Android System Internal Files Manager app showing Thumbnail of Image file instead of image type icon.
2023-12-24 15:34:10 +07:00
BlakDulz
d667fca8d3 Implement Refresh on DocumentProvider
"When interacting with DocumentUI or the built-in Android System Internal Files Manager app and performing Create, Rename, and Delete operations, DocumentsUI will not automatically refresh the changes.
Previously, users had to manually pull down from the top to refresh the changes. This commit aims to fix this issue by automatically notifying the system that changes have occurred and triggering a requery."
2023-12-23 23:26:54 +07:00
Admiral H. Curtiss
36cb8110f4
Merge pull request #12346 from iwubcode/arb_mipmaps_default_off
Core: disable arbitrary mipmap detection by default
2023-12-16 16:23:10 +01:00
JosJuice
fe014dac06
Merge pull request #12369 from t895/coil-cache
Android: Allow Coil image cache to use more memory
2023-12-13 21:11:59 +01:00
JosJuice
f87a4f0385
Merge pull request #12383 from iwubcode/android_new_sdk_for_cpp20
Android: update NDK to 26.1.10909125 in order to pick up new compiler features
2023-12-11 19:16:32 +01:00
iwubcode
b27cf432eb Android: update NDK to 26.1.10909125 in order to pick up new compiler with more C++20 features 2023-12-10 19:14:29 -06:00
JosJuice
c55f21729f Add "large entry points map" setting
To aid in debugging, this makes it possible to disable the recently
added 32/64 GiB region which hasn't had a proper name so far.
2023-12-10 21:07:27 +01:00
JosJuice
ab4f4c62ee Android: Fix crash when trying to edit gate size setting
The gate size is 79.37125 by default, and the step size is 0.5. Android
throws an exception if we try to show the slider with the value set to
something that isn't divisible by the step size. To avoid this problem,
round the value.
2023-12-10 10:49:16 +01:00
Charles Lombardo
93a5df3b92 android: Compile and target Android 14 2023-12-09 15:44:29 -05:00
Charles Lombardo
5d2e3de576 android Update dependencies 2023-12-09 15:44:29 -05:00
Charles Lombardo
c5d81c1006 android: Regenerate baseline profile module for AGP 8.2.0 2023-12-09 15:44:29 -05:00
Charles Lombardo
001089dbf4 android: Convert gradle files to kotlin gradle dsl 2023-12-09 14:57:09 -05:00
t895
42a4630245 Android: Allow Coil image cache to use more memory
Allows the Coil memory cache to use up to 90% of the application's available memory. Previously this could cause problems with reloading images in very large libraries of games.
2023-12-09 14:55:58 -05:00
JosJuice
a4eff2acc1 Android: Don't call Run before directory initialization
Combined with the previous commits, this finally fixes the bug where
Dolphin had a chance of crashing if you returned to it after Android
killed the Dolphin process.
2023-12-08 19:36:11 +01:00
JosJuice
a31214b8c6 Android: Fix EmulationActivity's handling of process recreation 2023-12-08 19:31:12 +01:00
JosJuice
5aa80603d7 Android: Reload EmulationActivity settings on title change
This way, we ensure that game INI settings are properly applied. I don't
think we actually expose the affected settings on a per-game basis in
the UI, but still.
2023-12-08 17:57:30 +01:00
JosJuice
11041e950d Android: Combine reading cutout setting with updateOrientation 2023-12-08 17:56:29 +01:00
JosJuice
4203632c93 Android: Improve GameFileCacheManager comments 2023-12-07 21:09:17 +01:00
JosJuice
3e7a16f225 Android: Use config changed callback for tracking recursive scan setting
This way the Settings class doesn't contain a hardcoded reference to
a specific setting. And Settings.loadSettings no longer calls
getBoolean, which is a step towards fixing the crash when recreating
EmulationActivity after process death.
2023-12-07 21:09:17 +01:00