Commit Graph

45661 Commits

Author SHA1 Message Date
Tom Pratt
fa5facfdfb Create NetPlayServer and start game 2026-05-07 11:22:24 +02:00
Tom Pratt
ccce2b2e9a Hosting UI 2026-05-07 11:22:24 +02:00
Tom Pratt
7ea7e638bd Implement OnMsgPowerButton 2026-05-07 11:22:24 +02:00
Tom Pratt
2c82e5188e Game digest progress dialog
We just about get away with using a StateFlow in NetplaySession since the host sends AbortGameDigest when closing their own dialog. Without that it would be harder for the UI to distinguish between subsequent dialogs. If that wasn't the case then NetplaySession might need to expose the individual progress and result updates and have the view model assemble it into the overall GameDigestProgress.
2026-05-07 11:22:24 +02:00
Tom Pratt
8792a4b924 Handle desync messages
Show them in the chat window and also in a toast during game play.
2026-05-07 11:22:24 +02:00
Tom Pratt
1285cb2282 Make NetplaySession not a singleton
Create a new NetplaySession each time we try to join a netplay game. Hold onto it in NetplayManager so its available to the different activities that need to access it. Close the session when backing out of the netplay UI. Some guardrails in case things go out of sync: creating a session closes the old one if it is still around for some reason, finalizer in NetplaySession to release native resources if not closed explicitly for some reason. Profiling done to ensure all kotlin and native objects are successfully cleared / garbage collected.
2026-05-07 11:22:23 +02:00
Tom Pratt
371fa1a250 Use existing settings API instead of custom jni calls 2026-05-07 10:39:50 +02:00
Tom Pratt
3572afcbbf Show save transfer progress
When transferring saves from the host. Equivalent of ChunkedProgressDialog in QT.
2026-05-07 10:39:50 +02:00
Tom Pratt
ab6c2d0d56 Dont try to load temporary save states when launching netplay
An orientation change can trigger this code path immediately when a game starts. e.g. dolphin is portrait when launching the game but settings force gameplay to landscape. We want to avoid this and continue to the netplay launch code below.

If the user backgrounds dolphin during netplay and then resumes after the process has died it will actually resume from the save state in single player mode, not sure if thats good or bad but fine for now.

Netplay doesnt handle rotation very well, seems to go more and more out of sync the more rotations.
2026-05-07 10:39:50 +02:00
Tom Pratt
05cfd16665 Release boot session data during Netplay cleanup
Boot session data is already handled when the game is booted so this is just fallback in case the game launch fails in some weird way.

Add missing @Keep annotations to functions called from C++
2026-05-07 10:39:50 +02:00
Tom Pratt
ee1271e5b2 Implement OnConnectionLost, show a dialog on the main netplay screen forcing the user to exit 2026-05-07 10:39:49 +02:00
Tom Pratt
b21cbc63f7 Implement StopGame callback and use it to finish the emulation activity 2026-05-07 10:39:49 +02:00
Tom Pratt
fd21ca13ff Settings refactor
Remove the big saveSetup function and set individual settings immediately after being changed in the UI. Group them all under Netplay.Settings
2026-05-07 10:39:49 +02:00
Tom Pratt
a87d315283 Max buffer 2026-05-07 10:39:49 +02:00
Tom Pratt
64fd5de16b Put players table in an OutlinedBox, makes the UI look more consistent. 2026-05-07 10:39:49 +02:00
Tom Pratt
a5bd27d731 Implement more NetPlayUICallbacks
Includes chat, game changes, pad buffer changes and host input authority. Merges them all into the chat window.
2026-05-07 10:39:48 +02:00
Tom Pratt
d82a9242a1 Netplay chat UI 2026-05-07 10:39:48 +02:00
Tom Pratt
97279f24dd Implement player list 2026-05-07 10:39:48 +02:00
Tom Pratt
bfa68bf935 Reorder netplay class
Put all the boring settings at the bottom to reduce scrolling!
2026-05-07 10:39:48 +02:00
Tom Pratt
099243f2c6 Add mostly empty Netplay screen, equivalent of NetPlayDialog in QT.
All it can do at this point is quit the current netplay session when backing out of this screen.
2026-05-07 10:39:48 +02:00
Tom Pratt
43d592c912 Move NetplaySetupScreen to its own file 2026-05-07 10:39:48 +02:00
Tom Pratt
b2e900ce40 Show client connection errors and handle connection result
If result is a success sent event to launch the next netplay screen. if it fails, clear up the netplay client
2026-05-07 10:39:47 +02:00
Tom Pratt
12343ebf86 Store netplay BootSessionData and use it to run the netplay game 2026-05-07 10:39:47 +02:00
Tom Pratt
01c8c4aee2 Pass game list to NetPlayUICallbacks and implement OnMsgChangeGame, OnMsgStartGame, FindGameFile 2026-05-07 10:39:47 +02:00
Tom Pratt
2839a5d11b Add NetPlayClient join and stub NetPlayUICallbacks 2026-05-07 10:39:47 +02:00
Tom Pratt
00941050c7 Add Netplay settings JNI layer and wire up NetplaySetupViewModel 2026-05-07 10:39:47 +02:00
Tom Pratt
23f5f02c11 Netplay setup UI
Only for connecting, no hosting yet.
2026-05-07 10:39:46 +02:00
Tom Pratt
ec8253ebff Add compose dependencies for Android and empty NetplaySetupActivity
Derive compose colour theming from the existing XML styles already set at the activity level.
2026-05-07 10:39:46 +02:00
Dentomologist
6d5399246e
Merge pull request #14532 from Dentomologist/autoupdatechecker_fix_edge_cases
AutoUpdateChecker: Fix Edge Cases
2026-05-05 16:23:16 -07:00
Jordan Woyak
b0eb643c61
Merge pull request #14642 from SuperSamus/cpp-move-fixup-nocubeb
Fixup #14565 (compilation with `-DENABLE_CUBEB=OFF`)
2026-05-05 11:45:55 -05:00
Martino Fontana
3c06541718 Fixup #14565 (compilation with -DENABLE_CUBEB=OFF) 2026-05-05 13:50:05 +02:00
Jordan Woyak
e22551eae1
Merge pull request #14641 from Dentomologist/replace_maybe_unused_annotations_with_commented_names
Replace some [[maybe_unused]] annotations with commented names
2026-05-03 20:20:07 -05:00
Dentomologist
34646cb9a9 Replace some [[maybe_unused]] annotations with commented names
Remove the [[maybe_unused]] annotation from various parameters that are
unconditionally unused and comment out their names instead. This makes
it unambiguous that the variables are unused, while making the remaining
[[maybe_unused]] annotations more reliable indicators that those
variables are in fact used in some contexts.

These parameters are mostly in overridden functions where the override
doesn't need that particular variable.
2026-05-03 17:09:59 -07:00
Jordan Woyak
eb44b64c9e
Merge pull request #14628 from JosJuice/android-remove-hostthreadlock
Android: Remove HostThreadLock
2026-05-01 11:39:24 -05:00
Jordan Woyak
1907ffa45d
Merge pull request #14384 from ethanuppal/editdsuservers
Config: Add Edit button to DSU server menu
2026-04-30 20:50:17 -05:00
Ethan Uppal
4e55d2518a
Config: Add Edit button to DSU server menu
Signed-off-by: Ethan Uppal <113849268+ethanuppal@users.noreply.github.com>
2026-04-30 02:23:41 -04:00
JMC47
ecfaa95e5a
Merge pull request #14543 from spaceage64/add-classic-controller-codes
Update/Add cheats for Animal Crossing: City Folk
2026-04-29 19:52:37 -04:00
spaceage64
3944310308 Add Classic Controller support cheats for Animal Crossing (all regions) 2026-04-29 19:44:31 +02:00
JosJuice
c73dde2193 Android: Remove HostThreadLock
Follow-up to 068947e. HostThreadLock no longer serves a purpose.
2026-04-29 18:55:18 +02:00
Dentomologist
2b743639d8
Merge pull request #13505 from tygyh/Replace-find-with-contains
Source/Core: Replace `find(x) != npos` with `contains(x)`
2026-04-28 17:50:51 -07:00
Dentomologist
725a726174
Merge pull request #14602 from jordan-woyak/show-file-in-folder
QtUtils: Add ShowFileInFolder function and make GameList right-click menu actions use it.
2026-04-28 17:29:44 -07:00
JMC47
0e8fa3caca
Merge pull request #14601 from jordan-woyak/mkgp-wheel-fix
HW/Triforce/MarioKartGP: Tweak the steering wheel FFB device responses to prevent "Wheel Error" screens.
2026-04-27 16:48:28 -04:00
JMC47
ab6b30afe2
Merge pull request #14582 from jordan-woyak/gamesettings-allow-imm-xfb
GameSettings: Allow ImmediateXFB for a handful of games that seem fine with it.
2026-04-27 13:11:42 -04:00
JMC47
d47d5431a1
Merge pull request #14617 from jordan-woyak/gamesettings-secret-rings
GameSettings: Set SafeTextureCacheColorSamples for "Sonic and the Secret Rings".
2026-04-27 13:10:15 -04:00
JMC47
77b778302c
Merge pull request #14614 from jordan-woyak/gamesettings-metroid-prime
GameSettings: Disable EFBToTexture for "Metroid Prime 2: Dark Echoes (Wii)" to fix the scan visor.
2026-04-27 13:09:20 -04:00
JMC47
6409c5beb3
Merge pull request #13931 from SuperSamus/pikmin-squared-60fps
GameINI: Add 60 FPS code for Pikmin Squared
2026-04-27 13:09:00 -04:00
Jordan Woyak
5e1185b979 HW/Triforce/MarioKartGP: Tweak the steering wheel FFB device responses to prevent "Wheel Error" screens. 2026-04-27 11:59:12 -05:00
JMC47
4609cbf35b
Merge pull request #14513 from cristian64/gamesettings_mario_kart_arcade_gp2
GameSettings: Add INI files for Mario Kart Arcade GP 2.
2026-04-26 17:38:45 -04:00
OatmealDome
af15769d57
Merge pull request #14569 from Simonx22/android/convert-gamefilecachemanager-to-kotlin
Android: Convert GameFileCacheManager to Kotlin
2026-04-26 12:03:57 -04:00
Jordan Woyak
5588fe0022
Merge pull request #14308 from jordan-woyak/character-encoding
StringUtil: Make UTF16ToUTF8 and UTF8ToUTF16 use custom encoding/decoding implementation.
2026-04-25 14:59:27 -05:00