Commit Graph

34599 Commits

Author SHA1 Message Date
Admiral H. Curtiss ab98db445d
Common/MemArenaAndroid: Keep fastmem region mapped. 2023-05-11 03:01:05 +02:00
R c5d2ad99d2 Support Steam Deck controls directly through hidraw
This reads Steam Deck controls bypassing Steam Input. This allows for access to
motion controls as well as independent access to thumb sticks, trackpads, and
back grip buttons.
2023-05-10 13:28:32 +01:00
Admiral H. Curtiss 8c67083c87
Merge pull request #11813 from lioncash/insert
PPCSymbolDB: Use emplace() where applicable
2023-05-09 18:48:06 +02:00
Admiral H. Curtiss c766b2f8a2
Merge pull request #11815 from lioncash/ppcinc
PPCTables: Remove unnecessary includes
2023-05-09 18:45:45 +02:00
JosJuice 82f70cdf94 ControllerInterface/Android: Add some missing DeleteLocalRef calls 2023-05-07 18:44:43 +02:00
JosJuice 24a697514e ControllerInterface/Android: Use InputEvent.getDeviceId
Instead of InputEvent.getDevice followed by InputDevice.getId.
Should hopefully fix https://bugs.dolphin-emu.org/issues/13237,
while also being simpler.
2023-05-07 18:40:28 +02:00
Pokechu22 810eb70f0e DolphinAnalytics: Add READS_BOUNDING_BOX game quirk 2023-05-06 17:18:17 -07:00
Lioncash 2561028b91 PPCTables: Remove unnecessary includes
Gets rid of a lingering dependency on the interpreter in common code and
a bunch of indirect inclusions.
2023-05-03 21:47:10 -04:00
JosJuice 2319210d85
Merge pull request #11810 from lioncash/jitreg
Common/JitRegister: Move interface into Common namespace
2023-05-03 17:43:01 +02:00
Lioncash 15d1ae3a8a SymbolDB: Add constructors to Symbol
Allows for much more convenient in-place construction.
2023-05-02 16:04:47 -04:00
Lioncash a14d8003f4 PPCSymbolDB: Use emplace() where applicable
Avoids default constructing an entry in the map that just gets
immediately overwritten. Also gets rid of some redundant map lookups.
2023-05-02 15:51:52 -04:00
Lioncash 56775e4901 JitInterface: Remove global system accessor
We can use JitInterface's system member variable to avoid needing this
2023-05-02 15:21:58 -04:00
Mai 0b9b09ad32
Merge pull request #11796 from sepalani/gecko-sort
Gecko/ARCode: Add sort by enabled state
2023-05-02 14:59:08 -04:00
Sepalani 2635595737 ARCode: Add sort by enabled state 2023-05-02 22:24:21 +04:00
Sepalani 81ec90be9c GeckoCode: Add sort by enabled state 2023-05-02 22:23:43 +04:00
JosJuice 20e14aab06 Revert "DolphinQt: use default dpi rounding mode (passthrough)"
This reverts commit cfe3683668.

On Windows systems with 125% DPI scaling, this was causing both icons
and the OSD to be upscaled by 25% using nearest neighbor scaling, which
looks really bad. shuffle2 has said that this will be improved later,
but we should revert it for now for the sake of the upcoming beta build.
2023-05-02 20:18:56 +02:00
Lioncash 4db186f9ff Common/JitRegister: Move interface into Common namespace
Makes the namespace consistent with other common utilities.
2023-05-02 12:00:05 -04:00
sowens99 9b1d657614 Qt: Prevent savestate load/save on empty filename 2023-05-01 19:57:58 -04:00
Léo Lam 0eeeac2487
Merge pull request #11736 from noahpistilli/get-scheduler-stat
IOS/Network/KD: Implement GetSchedulerStat
2023-05-01 01:19:11 +01:00
Léo Lam 2e39c79984
Merge pull request #11805 from Dentomologist/remove_graphicswidget
Qt: Remove GraphicsWidget class
2023-04-30 02:15:30 +01:00
Léo Lam 3c9162f35e
Merge pull request #11807 from brad0/openbsd_thread_cpp_build_fix
Fix building on OpenBSD
2023-04-30 02:14:41 +01:00
Léo Lam f36e05ad3e
Merge pull request #11546 from deReeperJosh/disneyinfinitybase
Feature: Emulate Infinity Base
2023-04-30 02:13:39 +01:00
Brad Smith 29a8226ac5 Fix building on OpenBSD
86c1f6e1e7 introduced code that had not
been build tested on OpenBSD.

https://bugs.dolphin-emu.org/issues/13241
2023-04-29 19:21:48 -04:00
TellowKrinkle f92dde26a3 CMake: Fix storyboard copying 2023-04-29 16:10:38 -05:00
Dentomologist 5ca0430cb2 Qt: Remove GraphicsWidget class
The old tooltip description box used GraphicsWidget to provide shared
code to the Graphics config panes for adding descriptions to their
settings.

The description box has been replaced by BalloonTips and serves no
further purpose, so remove it and have the Graphics panes derive from
QWidget instead.
2023-04-29 14:10:37 -07:00
Mai d95a85212f
Merge pull request #11793 from brad0/openbsd_iconv_build_fix
Fix build of iconv code on OpenBSD
2023-04-29 17:08:36 -04:00
Dentomologist 57a1339cfb Qt: Rename GraphicsInteger to ConfigInteger
GraphicsInteger is used by the panes in the Graphics config window to
create spin boxes that change their associated config setting, and
update their own state when something else changes the config setting.

Despite its current name nothing about this class is particular to the
Graphics window, so renaming it to ConfigInteger better reflects its
purpose. This should also make it less confusing when ConfigIntegers
are added to other config windows.
2023-04-29 11:09:59 -07:00
Admiral H. Curtiss 6e6865a63a
Merge pull request #11785 from shuffle2/qtnext3
DolphinQt: cache icons instead of single pixmaps
2023-04-29 17:32:29 +02:00
Admiral H. Curtiss 79607a060c
Merge pull request #11802 from Dentomologist/rename_graphicsslider_to_configslider
Qt: Rename GraphicsSlider to ConfigSlider
2023-04-29 16:47:56 +02:00
Admiral H. Curtiss aaf11e626a
Merge pull request #11803 from LillyJadeKatrin/retroachievements-bugfix
Added Invalid Request Drop to AchievementManager Request
2023-04-29 16:46:59 +02:00
OatmealDome 28f1a4cec1
Merge pull request #11757 from TellowKrinkle/BCniOS
Enable BCn texture support on iOS where available
2023-04-29 08:54:18 +02:00
LillyJadeKatrin 9778640a84 Added Invalid Request Drop to AchievementManager Request
This fixes a crash I found in the Request function of AchievementManager where under certain conditions init_request would return an api_request with null post data, and Post would crash if it attempted to access it. Now the function aborts before the Post and returns an INVALID_REQUEST response type.
2023-04-29 00:05:32 -04:00
Dentomologist 1a2a99c9b3 Qt: Rename GraphicsSlider to ConfigSlider
GraphicsSlider is used by the panes in the Graphics config window to
create sliders that change their associated config setting, and update
their own state when something else changes the config setting.

Despite its current name nothing about this class is particular to the
Graphics window, so renaming it to ConfigSlider better reflects its
purpose. This should also make it less confusing when ConfigSliders are
added to other config panes.
2023-04-28 20:14:11 -07:00
TellowKrinkle 9cc3ba6fc6 VideoBackends:Metal: Enable BCn support on iOS 2023-04-28 20:35:54 -05:00
Joshua de Reeper 529d0a1c63 Infinity Base: Code tidyups and de-duplication 2023-04-28 16:51:43 +12:00
Dentomologist a7abd7dba0 Qt: Rename GraphicsRadioInt to ConfigRadioInt
GraphicsRadioInt is used by the panes in the Graphics config window to
create radio buttons that change their associated config setting, and
update their own state when something else changes the config setting.

Despite its current name nothing about this class is particular to the
Graphics window, so renaming it to ConfigRadioInt better reflects its
purpose. This should also make it less confusing when ConfigRadioInts
are added to other config panes.
2023-04-27 20:01:04 -07:00
Joshua de Reeper f632f94645 Feature: Emulate Disney Infinity Base
Create, Load and Clear Infinity figures on an emulated base in the UI
2023-04-28 12:29:34 +12:00
Dentomologist b59ca9682e Qt/GeneralWidget and GraphicsWidget: Remove unused member variable
m_xrr_config was used by the GeneralWidget::GetAvailableResolutions
function to get the list of supported fullscreen resolutions when
HAVE_XRANDR was set. aa4088a removed the ability to set that resolution
in the UI, leaving the GetAvailableResolutions function unused.

m_xrr_config is initialized in MainWindow which still uses it to toggle
fullscreen, but the references in GeneralWidget and GraphicsWidget
(which just ferried m_xrr_config from MainWindow to GeneralWidget) are
now unnecessary and removed in this commit.
2023-04-27 16:50:56 -07:00
Léo Lam a75d22d901
Merge pull request #11797 from Dentomologist/remove_unused_videoutils_function
VideoUtils: Remove unused function GetAvailableResolutions
2023-04-28 00:37:43 +01:00
Léo Lam c19be2a3cf
Merge pull request #11799 from Dentomologist/graphicswindow_remove_member_variables
Qt/GraphicsWindow: Remove unnecessary member variables
2023-04-28 00:36:56 +01:00
Léo Lam 89154c858b
Merge pull request #11787 from AdmiralCurtiss/ios-emulationkernel
IOS: Leverage Kernel/EmulationKernel difference for passing System to most IOS devices.
2023-04-28 00:36:03 +01:00
Dentomologist f4751b1547 Qt/GraphicsWindow: Remove unnecessary member variables
These variables are only used in CreateMainLayout and can thus be local
instead.
2023-04-26 16:46:45 -07:00
Dentomologist 1f74653501 VideoUtils: Remove unused function GetAvailableResolutions
The ability to change the fullscreen resolution througnh the UI was
removed in aa4088a, leaving this function unused.
2023-04-26 15:22:54 -07:00
Mai adbee91dca
Merge pull request #11794 from shuffle2/color-scheme-changed
DolphinQt: reset stylesheets on colorSchemeChanged
2023-04-26 04:12:03 -04:00
Mai e483b5693f
Merge pull request #11795 from Dentomologist/rename_graphicschoice_to_configchoice
Qt: Rename GraphicsChoice to ConfigChoice
2023-04-26 04:10:58 -04:00
Shawn Hoffman bb227ad7bb DolphinQt: reset stylesheets on colorSchemeChanged
This is required for switching system color scheme
(dark/light) dynamically at runtime.
2023-04-25 12:34:34 -07:00
Shawn Hoffman 51e528e45f DolphinQt: cache icons instead of single pixmaps
Fixes dynamically changing dpi scaling.
Load resources from svg if possible.
Currently svg support is not in Qt build in Externals,
and image files need to be added later.
2023-04-25 12:34:27 -07:00
Mai 8c2e924255
Merge pull request #11774 from shuffle2/qtnext
DolphinQt: fix some usability issues
2023-04-25 15:24:44 -04:00
Dentomologist 2237a4a7aa Qt: Rename GraphicsChoice to ConfigChoice
GraphicsChoice is used by the panes in the Graphics config window to
create combo boxes that change their associated config setting, and
update their own state when something else changes the config setting.

Despite its current name nothing about this class is particular to the
Graphics window, so renaming it to ConfigChoice better reflects its
purpose. This should also make it less confusing when ConfigChoices are
eventually added to the other config windows.
2023-04-25 11:39:24 -07:00
Shawn Hoffman b00e898aff DolphinQt: fix handling of Qt-specific cmdline args
QApplication should parse and remove and args it recognizes
before dolphin starts inspecting the args.
This allows using e.g. -style <style> on the commandline.
2023-04-25 10:50:49 -07:00
Shawn Hoffman b20cc6b67e DolphinQt: dont set dpi awareness in manifest
Qt already does this itself programmatically.
Setting in the manifest interferes with Qt's
internal handling of dpi awareness.
2023-04-25 10:49:46 -07:00
Shawn Hoffman 258cf0ff28 DolphinQt: assume QT_VERSION_CHECK >= 6.0.0 2023-04-25 10:39:05 -07:00
Shawn Hoffman ce9413e549 cmake: drop qt5 2023-04-25 10:37:26 -07:00
Shawn Hoffman 97157eaf5c DolphinQt: use new style of addAction API 2023-04-25 10:37:26 -07:00
Mai b9a7f577a5
Merge pull request #11765 from Minty-Meeo/ppc-cache-savestate
Fix PPCCache savestate behavior
2023-04-25 05:40:15 -04:00
Mai 6bdfcc606f
Merge pull request #11788 from shuffle2/qtdpiround
DolphinQt: use default dpi rounding mode (passthrough)
2023-04-25 04:05:41 -04:00
Brad Smith c9bbb12c2e Fix build of iconv code on OpenBSD 2023-04-25 01:22:05 -04:00
Admiral H. Curtiss 15a0860f15
IOS: Leverage Kernel/EmulationKernel difference for passing System to most IOS devices. 2023-04-25 02:22:34 +02:00
Léo Lam ba150a6824
Merge pull request #11790 from AdmiralCurtiss/network-widget-workaround
Qt/NetworkWidget: Don't update if not paused.
2023-04-25 01:07:42 +01:00
Léo Lam 77b334b47b
Merge pull request #11791 from lioncash/traverse
Common/Traversal: Move interface into Common namespace
2023-04-25 01:05:41 +01:00
Léo Lam e5f7522711
Merge pull request #11792 from lioncash/trace
Common: Move CodeTrace.cpp/.h into Core
2023-04-25 01:04:36 +01:00
Léo Lam 1379a33102
Merge pull request #11780 from Dentomologist/rename_graphicsbool_to_configbool
Qt: Rename GraphicsBool to ConfigBool
2023-04-25 01:03:22 +01:00
Lioncash d991cbaf3c Common: Move CodeTrace.cpp/.h into Core
This interface relies on Core details and shouldn't be in Common to
begin with, since it's not a general utility.
2023-04-24 09:10:43 -04:00
Lioncash 30e7ab94fa Common/TraversalProto: Move interface into Common namespace
Gets the types out of the global namespace.
2023-04-24 08:53:14 -04:00
Lioncash 27f38c6c8f Common/TraversalClient: Move interface into Common namespace
Gets the interface out of the global namespace.
2023-04-24 08:28:25 -04:00
Admiral H. Curtiss 8a6118bec6
Qt/NetworkWidget: Don't update if not paused.
This is similar to https://github.com/dolphin-emu/dolphin/pull/11623 where the Core state change invoked by the CPUThreadGuard does indirectly cause another Update() call.
2023-04-23 21:48:23 +02:00
Shawn Hoffman cfe3683668 DolphinQt: use default dpi rounding mode (passthrough) 2023-04-23 11:56:39 -07:00
Admiral H. Curtiss 4d49902b34
IOS: Only construct DolphinDevice on EmulationKernel IOS instances.
Doesn't make much sense to have this active without a game.
2023-04-23 20:09:32 +02:00
Admiral H. Curtiss ffbbd72741
Merge pull request #11767 from AdmiralCurtiss/wii-sock-man
IOS/WiiSockMan: Move instance to IOS Kernel.
2023-04-23 20:07:34 +02:00
Admiral H. Curtiss 5df7c8833a
Merge pull request #11784 from Minty-Meeo/mgba-screen-api
GBACore.cpp: Update to revised screen size/info API
2023-04-23 16:10:51 +02:00
Admiral H. Curtiss 653be9e45d
Merge pull request #11628 from Pokechu22/gles-32-only-multisample
OGL: Only specify precision for sampler2DMSArray when it is defined
2023-04-23 16:02:15 +02:00
Admiral H. Curtiss 00e4fc4b70
Netplay: Check if save is readable before marking it for sync. 2023-04-23 15:52:38 +02:00
get c9b26e3db2 Update mGBA submodule to 8739b22fbc90fdf0b4f6612ef9c0520f0ba44a51 2023-04-23 05:26:40 -05:00
get 0948f0ef69 Fix PPCCache savestate behavior
PR #11183 regressed the lookup table reconstruction and, for some reason, added an else clause that clobbered the dCache whenever dCache emulation is turned on.
2023-04-23 00:53:01 -05:00
Pokechu22 8fbfee03ab
Merge pull request #11764 from Minty-Meeo/ppc-cache-extendo-ram
Do not use magic numbers for RAM sizes/masks in PPCCache
2023-04-22 12:44:34 -07:00
Dentomologist 5fa27704c8 Qt: Rename GraphicsBool to ConfigBool
GraphicsBool is used by the panes in the Graphics config window to
create checkboxes that change their associated config setting, and
update their own state when something else changes the config setting.

Despite its current name nothing about this class is particular to the
Graphics window, so renaming it to ConfigBool better reflects its
purpose. This should also make it less confusing when ConfigBools are
eventually added to the other config windows.
2023-04-21 14:24:37 -07:00
get 9ba26670b8 Do not use magic numbers for RAM sizes/masks in PPCCache
Memory Override + Write-Back Cache emulation = game crash
2023-04-20 19:32:35 -05:00
Admiral H. Curtiss be1f2a6852
Merge pull request #11773 from lioncash/delete
Common/TraversalClient: Use correct deleter with g_MainNetHost
2023-04-20 22:17:19 +02:00
Mai c3cc1de54e
Merge pull request #11777 from Dentomologist/move_balloontip_files
Qt/Config: Move BalloonTip files from Graphics to ToolTipControls
2023-04-20 10:45:03 -04:00
Dentomologist 4174f0063e Qt: Remove unused class GraphicsBoolEx
In older versions of Dolphin GraphicsBoolEx was used to create a pair of
radio buttons selecting one of Virtual XFB and Real XFB, but this was
removed with the introduction of Hybrid XFB in 65cd085f.

In the meantime GraphicsRadioInt was introduced to allow for Graphics
radio buttons with multiple options, so GraphicsBoolEx is now redundant.
2023-04-19 16:58:42 -07:00
Dentomologist 7a78ace608 Qt/Config: Move BalloonTip.h/cpp from Graphics to ToolTipControls
BalloonTip.h/cpp are only used from the ToolTipControls folder, so move
them there.
2023-04-19 16:46:46 -07:00
Lioncash b4cc1ade02 Common/TraversalClient: Use correct deleter with g_MainNetHost
Previously this was using the default deleter (which just calls delete
on the pointer), which is incorrect, since the ENetHost instance is
allocated through ENet's C API, so we need to use its functions to
deallocate the host instead.
2023-04-19 12:38:16 -04:00
Lioncash 07ed932a09 Common/LinearDiskCache: Move interface into Common namespace
Gets the interface out of the global namespace.
2023-04-19 09:14:39 -04:00
Admiral H. Curtiss 2a0b90807d
Merge pull request #11770 from lioncash/err
Common/CommonFuncs: Move interface into Common namespace
2023-04-19 10:38:22 +02:00
Lioncash f1ad43afaf Common/CommonFuncs: Move interface into Common namespace
Gets these functions out of the global namespace.
2023-04-18 19:23:04 -04:00
OatmealDome 8aae296d4e
Merge pull request #11759 from TellowKrinkle/MTLPerfQueryFixes
VideoBackends:Metal: Fix perf queries
2023-04-18 22:15:50 +02:00
Admiral H. Curtiss 2e7f0d002e
Merge pull request #11760 from Minty-Meeo/embracing-nullptr
Embrace nullptr over NULL and 0
2023-04-18 22:14:11 +02:00
OatmealDome 8a355dbbd7
Merge pull request #11708 from TellowKrinkle/MetalMaxPixSamplers
VideoBackends:Metal: Use max pixel samplers constant
2023-04-18 22:11:06 +02:00
Admiral H. Curtiss a239af162d
Merge pull request #11768 from Pokechu22/temporary-debug-command-line
Treat --debugger command line as a temporary setting
2023-04-18 22:05:08 +02:00
Admiral H. Curtiss 361ffd5917
Merge pull request #11752 from LillyJadeKatrin/retroachievements-activate
Retroachievements activate
2023-04-18 18:38:53 +02:00
Admiral H. Curtiss 1c1b0fee25
Merge pull request #11769 from AdmiralCurtiss/ra-no-volume
AchievementManager: Fix crash when launching non-disc game.
2023-04-18 18:38:16 +02:00
JosJuice 969318ff66
Merge pull request #11761 from lioncash/mathrev
Common/MathUtil: Move remaining utilities into MathUtil namespace
2023-04-18 18:05:12 +02:00
Admiral H. Curtiss 9600bf1af9
Qt/WiiPane: Add setting for SD card file size when converting. 2023-04-18 11:04:26 +02:00
Admiral H. Curtiss d861b8caca
Config: Add setting for SD card file size when converting. 2023-04-18 11:04:26 +02:00
Admiral H. Curtiss a4e1e23c34
AchievementManager: Fix crash when launching non-disc game. 2023-04-18 11:01:11 +02:00
Pokechu22 801fa8e905 Only force-show the code widget when first enabling the debugger
Before, any call of Settings::SetDebugModeEnabled(true) would show it. This means that if the debugging UI is enabled, but the user manually closed the code widget, then toggling any option on the interface pane (such as "Pause on Focus Loss") would cause the code widget to reappear. Additionally, closing and reopening dolphin did not call SetDebugModeEnabled, so the code widget did not reappear in that case (it only appeared after touching the interface pane). This is a bit silly, so now only enabling the debugger does it.

This also somewhat resolves an inconsistency introduced by the previous commit: prior to it, --debugger would call SetDebugModeEnabled(true) and thus show the code pane; after these commits, it does not, as it acts like a config change. This is a behavior difference, but not a particularly important one.
2023-04-17 23:23:36 -07:00
Pokechu22 c0b6e9e69c Treat --debugger command line as a temporary setting
Before, Settings::SetDebugModeEnabled was used; this calls SetBaseOrCurrent() which will usually permanently change the base configuration setting for the debugger to true. Thus, the debugger would remain active even if the --debugger command line option was removed. Now, it remains active only for the current run, like other command-line options.

Note that SetBaseOrCurrent is also used by the "Show Debugging UI" option under Options -> Interface; this means that if the debugger is turned off (or off and then back on) by the user while --debugger is specified, this will be reset to whatever the base configuration had when Dolphin is closed and reopened. This behavior is consistent with the rest of the UI.

To my understanding, the --debugger option is something from 5.0 stable/DolphinWx where there was no way to toggle the debug UI in the settings (and the command-line option was the only way of enabling it). It's less useful nowadays.
2023-04-17 23:11:26 -07:00
Admiral H. Curtiss b2ee958058
IOS/WiiSockMan: Move instance to IOS Kernel. 2023-04-18 01:24:10 +02:00
Sketch 467b961e9c IOS/Network/KD: Implement GetSchedulerStat 2023-04-17 11:38:42 -04:00
Admiral H. Curtiss 37a30a5e50
IOS/WiiSockMan: Remove declaration to nonexistent DecodeError(). 2023-04-17 03:43:29 +02:00
Mai 1a2dcc53f2
Merge pull request #11742 from K0bin/document-provider-2
Android: Document Provider improvements
2023-04-16 04:21:33 -04:00
get a5d06fde4b Embrace nullptr over NULL and 0 2023-04-15 16:07:05 -05:00
Robin Kertels 57ed5320b5
Android: Fix various issues with the DocumentProvider
Fixes copying & deleting folders and copy conflict handling.
2023-04-15 20:53:01 +02:00
Lioncash 784a216927 Common/MathUtil: Move IntLog2 into MathUtil namespace
Gets this out of the global namespace.
2023-04-15 03:35:05 -04:00
Lioncash 5e0c20f8a5 Common/MathUtil: Remove MathFloatVectorSum()
This isn't used anywhere and not really a generic utility, so we can get
rid of it.

This also lets us remove MathUtil.cpp, since this was the only thing
within that file.
2023-04-15 03:25:38 -04:00
LillyJadeKatrin 31c3288fd5 Added ActivateDeactivateRichPresence to AchievementManager
RetroAchievements Rich Presence is a script that is run periodically on a game's memory to provide a detailed text description of what the player is doing. Existing Discord presence on Dolphin would update a player's Discord status to say not just that they are using Dolphin but that they are playing, for example, Sonic Adventure 2 Battle; Rich Presence would detail that the player is in City Escape with 5 lives and 142 rings.

Activating this in the runtime simply entails loading that text script, as returned by the FetchGameData API call, into the runtime, here only determined by whether rich presence is enabled in the achievement settings. Deactivating this is done via the same rcheevos method by setting the rich presence to an empty string.
2023-04-14 22:22:00 -04:00
LillyJadeKatrin 64e3a64c87 Added ActivateDeactivateLeaderboards to AchievementManager
This activates or deactivates leaderboards in the rcheevos runtime similarly to achievements. The logic is much more straightforward - all leaderboards are active together; there is nothing requiring some leaderboards to be active while others are unactive, and even a leaderboard that has been submitted to in this session is still active to be submitted to again. The only criteria are that leaderboards must be enabled in the settings, and hardcore mode must be on, the latter of which is false until a future PR.
2023-04-14 22:22:00 -04:00
LillyJadeKatrin da1de36cb9 Added LoadUnlockData and ActivateDeactivateAchievements to AchievementManager
LoadUnlockData and ActivateDeactivateAchievements are the public API components responding to the FetchUnlocks and A/DAchievement (singular) private methods.

LoadUnlockData is asynchronous and performs both a hardcore and a softcore unlock call, updating the unlock map and the active status of any achievements returned from these calls.

ActivateDeactivateAchievements calls ActivateDeactivateAchievement on every achievement ID found in m_game_data, initializing the unlock map for each ID if not already found.

Both of these are currently called in LoadGameByFilenameAsync once the game has been loaded properly. There's a lock around this, to ensure that the unlock map is initialized properly by ActivateDeactivate Achievements before FetchUnlockData makes modifications to it without stalling the async portions of FetchUnlockData.
2023-04-14 22:22:00 -04:00
LillyJadeKatrin db44e10057 Added FetchUnlockData to AchievementManager
FetchUnlockData is an API call to RetroAchievements that downloads a list of achievement IDs for a game that the user has already unlocked and published to the site. It accepts a parameter for whether or not hardcore or softcore achievements are being requested, so that must be provided as well. Once it has the requested list on hand, it updates each achievement's status in the unlock map and will activate or deactivate achievements as necessary.
2023-04-14 22:22:00 -04:00
LillyJadeKatrin 505f40cf9d Added ActivateDeactivateAchievement to AchievementManager
ActivateDeactivateAchievement is passed an Achievement ID as returned from the FetchGameData API call and determines whether to activate it, deactivate it, or leave it where it is based on its current known state and what settings are enabled.

Activating or deactivating an achievement entails calling a method provided by rcheevos that performs this on the rcheevos runtime. Activating an achievement loads its memory signature into the runtime; now the runtime will process the achievement each time the rc_runtime_do_frame function is called (this will be in a future PR) to determine when the achievement's requirements are met. Deactivating an achievement unloads it from the runtime.

The specific logic to determine whether an achievement is active operates over many fields but is documented in detail inside the function. There are multiple settings flags for which achievements are enabled (one flag for all achievements, an "unofficial" flag for enabling achievements marked as unofficial i.e. those that have logic on the site but have not yet been officially approved, and an "encore" flag that enables achievements the player has already unlocked) and this function also evaluates whether the achievement has been unlocked in hardcore mode or softcore mode (though currently every reference to the current hardcore mode state is hardcoded as false).
2023-04-14 17:15:45 -04:00
Admiral H. Curtiss e9dbb93cb5
Merge pull request #11756 from lioncash/ini
Common/IniFile: Move interface into Common namespace
2023-04-14 20:52:30 +02:00
TellowKrinkle 09c80513cd VideoBackends:Metal: Fix perf queries
Fixes an issue where perf queries could end up including counts from previous queries
2023-04-14 00:25:31 -05:00
Jeffrey Bosboom c6f9e61d38 XInput2: Accept input from keyboards other than the first master
XInput2 was created to support multiple pointer/keyboard pairs (often
called MPX for multi-pointer X).  Dolphin's XInput2 implementation has
always supported MPX by creating a KeyboardMouse object per master
pointer.  Since commit bbb12a7, Dolphin's keyboard state is filtered by
the output of XQueryKeymap.  As a core X function, XQueryKeymap queries
"the" keyboard, which by default is the first master keyboard.  As a
result, Dolphin will ignore keys pressed on other master keyboards
unless the first master is simultaneously pressing the same keys.

XInput2 doesn't provide a function to query the keyboard state.  There
is no XIQueryKeymap and the current state is not a member of the
XIKeyClassInfo returned by XIQueryDevice.  Instead, XInput2 allows a
master pointer to be nominated as "the" pointer on a per-client basis,
with "the" keyboard automatically becoming the associated master
keyboard.  The "documentation" [1] says passing None for the window is
only for debugging purposes, but it is documented in the
XISetClientPointer man page and seems to be the only way to query
keyboards beyond the first.

With this commit, Dolphin correctly reads keys from keyboards other than
the first master keyboard.  To test, use the xinput command-line utility
to create a master pointer and reattach a keyboard to the associated
master keyboard.

[1]: https://who-t.blogspot.com/2009/07/xi2-recipes-part-6.html
     (the XInput2 developer's blog)
2023-04-13 20:10:00 -07:00
Léo Lam ae18aa0639
Merge pull request #11687 from Minty-Meeo/warnings
Resolve GCC/Clang Warnings
2023-04-14 01:29:46 +01:00
Lioncash e4caace6bb Common/IniFile: Move interface into Common namespace
Gets this out of the global namespace and into the Common namespace
2023-04-13 10:19:28 -04:00
Lioncash f5bdfdde1a Common/UPnP: Move interface into Common namespace
Keeps these utilities consistent with the rest of most of the Common
library.
2023-04-12 14:15:58 -04:00
Minty-Meeo f29019180f Pragma diagnostic ignore [-Wregister] is no longer needed 2023-04-12 03:59:57 -05:00
Minty-Meeo 65edfb0eed Resolve [-Wunused-const-variable] 2023-04-12 03:59:57 -05:00
Minty-Meeo 244918acb8 Resolve [-Wdeprecated-declarations] 2023-04-12 03:59:57 -05:00
Minty-Meeo 528f7c90e9 Resolve [-Wtautological-constant-out-of-range-compare] 2023-04-12 03:59:57 -05:00
Minty-Meeo efd06a85d2 Resolve [-Wunused-but-set-variable] 2023-04-12 03:59:57 -05:00
Minty-Meeo 678c93589a Resolve [-Wclass-memaccess] 2023-04-12 03:59:57 -05:00
LillyJadeKatrin 8b57c4b239 Added LoadGameByFilenameAsync and CloseGame to AchievementManager
LoadGameByFilenameAsync sets up a volume reader and hashes the volume, then uses that hash to make the three consecutive API requests to resolve hash, start session and load game data.

CloseGame resets the m_is_game_loaded flag, wipes the queue, and destroys all the game data responses.
2023-04-12 03:08:47 -04:00
LillyJadeKatrin bd75ce6e6d Added FetchGameData to AchievementManager
FetchGameData is the big one - this retrieves the logic for all the achievements, leaderboards, and rich presence, and all the relevant metadata for the game.
2023-04-12 03:08:47 -04:00
LillyJadeKatrin 7e8a770b30 Added StartRASession to AchievementManager
Added a call to the RetroAchievements Start Session API to AchievementManager. This is primarily for client-side activation, so it doesn't return much of value, aside from its success/error information, but I'm storing the return structure in case this changes in the future.
2023-04-12 03:08:47 -04:00
LillyJadeKatrin 67ab4d2473 Added ResolveHash to AchievementManager
Added the ResolveHash method to AchievementManager. This is a blocking function to send a hash string to the RetroAchievements server to verify it and get a game ID back.
2023-04-12 03:08:47 -04:00
Admiral H. Curtiss 31d2dedcb1
Merge pull request #11749 from lioncash/copy
NetPlayServer: Prevent unnecessary copies in GetInterfaceSet()
2023-04-11 22:09:56 +02:00
Lioncash 09e11b8067 Common: Rename ENetUtil.cpp/.h to ENet.cpp/.h 2023-04-11 11:48:46 -04:00
Lioncash 81493ee910 NetPlayServer: Prevent unnecessary copies in GetInterfaceSet()
This was previously copying each pair out of the vector returned by
GetInterfaceListInternal() when we just need to emplace the first entry
of each pair.
2023-04-11 09:17:03 -04:00
Lioncash 64ce2012e3 Common/ENetUtil: Move interface into Common namespace
Rather than just being under a separate ENetUtil namespace, we can unify
this into the common namespace as Common::ENet.
2023-04-11 09:12:04 -04:00
Léo Lam e225ca87a9
Merge pull request #11722 from noahpistilli/write-dl-entry
IOS/Network/KD: Reload DLList on call to DownloadNowEx
2023-04-11 02:08:51 +01:00
Admiral H. Curtiss 948a548fb2
Merge pull request #11720 from Pokechu22/hookable-event-recursive-mutex
HookableEvent: Use std::recursive_mutex instead of std::mutex
2023-04-10 22:50:44 +02:00
Minty-Meeo 2bb619a508 Resolve [-Wstringop-overflow=] 2023-04-10 14:21:15 -05:00
Minty-Meeo 3282082599 Resolve [-Wwrite-strings] 2023-04-10 14:21:15 -05:00
Minty-Meeo d9a49c68d9 Resolve [-Wunused-lambda-capture] 2023-04-10 14:21:15 -05:00
Minty-Meeo 1cf30055b2 Resolve [-Wsign-compare] 2023-04-10 14:21:15 -05:00
Admiral H. Curtiss 5373fcc1e7
IOS/FS: Filter files exposed to the emulated system in ReadDirectory() and GetDirectoryStats(). 2023-04-10 19:50:08 +02:00
Admiral H. Curtiss 5c05155828
IOS/FS: Implement GetNandStats(). 2023-04-10 19:50:08 +02:00
Admiral H. Curtiss 8295d6d415
IOS/FS: More accurate cluster calculation in GetDirectoryStats(). 2023-04-10 19:50:08 +02:00
Admiral H. Curtiss 69d6be09f7
IOS/FS: GetDirectoryStats() should return an error if the given path is not a directory. 2023-04-10 19:50:08 +02:00
Admiral H. Curtiss 23843583bf
PowerPC: Refactor to class, move to System. 2023-04-09 21:48:37 +02:00
JosJuice 6b73a4772b
Merge pull request #11744 from AdmiralCurtiss/ios-di-registers
IOS/DI: Remove RegisterWrapper.
2023-04-09 08:55:07 +02:00
TellowKrinkle b9595a2230 CMake: Use find_package and imported targets for Iconv
Fixes us forgetting to add its include directories, which could result in linking to a dylib from MacPorts while using the system's header, and failing to link because they use different function names
2023-04-08 21:43:03 -05:00
Admiral H. Curtiss fe4aadc575
IOS/DI: Remove RegisterWrapper. 2023-04-09 04:20:46 +02:00
Sketch d11c8075e7 Reload DLList on call to KDDownload 2023-04-08 19:47:11 -04:00
Pokechu22 8b0bd31e72 OGL: Use GL_OES_texture_storage_multisample_2d_array when supported
See https://bugs.dolphin-emu.org/issues/13198
2023-04-08 15:32:27 -07:00
Pokechu22 3f143d1bc9 OGL: Only specify precision for sampler2DMSArray when it is defined
See https://bugs.dolphin-emu.org/issues/13198
2023-04-08 15:32:27 -07:00
Pokechu22 53beda526b OGL: Remove bSupports2DTextureStorageMultisample and bSupports3DTextureStorageMultisample
bSupports2DTextureStorageMultisample is completely unused, while bSupports3DTextureStorageMultisample is practically unused. In the past, these were checked and fell back to sampler2DMS instead of sampler2DMSArray on GLES 3.1, but this path was removed in f039149198 and Dolphin always uses array textures now.
2023-04-08 15:32:27 -07:00
Pokechu22 c68d484a65 OGL: Convert SupportedESPointSize to an enum class 2023-04-08 15:32:27 -07:00
Admiral H. Curtiss 79b8e136b7
Merge pull request #11740 from Pokechu22/interface-pane-mouse-lock-visibility
DolphinQt: Fix mouse lock checkbox appearing when it shouldn't
2023-04-08 22:59:31 +02:00
Robin Kertels 1596b13743
Android: Give Debug and Benchmark builds unique names
on the launcher and for the DocumentsProvider
2023-04-08 15:56:44 +02:00
Admiral H. Curtiss d5b811dd7f
Merge pull request #11738 from malleoz/malleo/tas_input_latency
DolphinQt: Prevent MemoryViewWidget updates when hidden
2023-04-08 13:46:56 +02:00
iwubcode e101f7f6ae VideoCommon: refactor GetTexture into a separate function for creation, separating the custom texture data path from the game's texture data path 2023-04-08 02:54:00 -05:00
Pokechu22 02cd8b6363 DolphinQt: Fix mouse lock checkbox appearing when it shouldn't
See https://bugs.dolphin-emu.org/issues/13232; this was introduced in 7dde0c3c31. Apparently, providing a parent for a widget that is not visible makes your new widget visible when the parent is later made visible, in addition to managing the deletion of the widget; the documentation does not specify this (only that if the parent is visible you need to explicitly show it).
2023-04-07 22:33:40 -07:00
TellowKrinkle ed177bdbd7 VideoBackends:Metal: Use max pixel samplers constant 2023-04-08 02:12:31 +02:00
OatmealDome 72d08f6c80 InputCommon: Remove OSX (IOKit) input backend 2023-04-07 15:40:14 -04:00
sowens99 44e3993f2f DolphinQt: Prevent MemoryViewWidget updates when hidden 2023-04-07 11:21:19 -04:00
Mai aaedc2827d
Merge pull request #11735 from Pokechu22/cmake-no-spirv-cross-on-linux
CMake: Don't include SPIRV-Cross except on Windows and macOS
2023-04-06 23:11:14 -04:00
Mai 5686c614ec
Merge pull request #11717 from AdmiralCurtiss/ppcstate-rest
Replace most remaining global ppcState references.
2023-04-06 22:35:32 -04:00
Mai 74da38916e
Merge pull request #11729 from AdmiralCurtiss/redundant-mov
Jit64: Fix possibly redundant MOV in ABI_CallFunctionPR().
2023-04-06 21:42:28 -04:00
Mai 8b9c1bff0b
Merge pull request #11731 from Pokechu22/typeutils-cc0
Common: Relicense TypeUtils to CC0
2023-04-06 21:41:56 -04:00
Pokechu22 56fcc97f6d CMake: Check `WIN32` instead of `CMAKE_SYSTEM_NAME STREQUAL Windows` 2023-04-06 18:37:45 -07:00
Minty-Meeo 1312624e05 Resolve [-Wshadow] 2023-04-06 19:25:26 -05:00
sowens99 cd79207853 DolphinQt: StickWidget and IRWidget check for changed x/y before signaling change 2023-04-06 01:54:20 -04:00
Pokechu22 b08d259d5c Common: Relicense TypeUtils to CC0
I am the sole contributor (apart from e149ad4f0a which only changed the license header).
2023-04-05 19:01:11 -07:00
Admiral H. Curtiss 62de9c593b
UnitTests: Avoid ppcState global. 2023-04-05 20:09:32 +02:00
Admiral H. Curtiss 2d1f661118
DolphinQt: Avoid ppcState global. 2023-04-05 20:09:32 +02:00
Admiral H. Curtiss 192d8b6e40
VideoCommon/CommandProcessor: Pass System to HandleUnknownOpcode(). 2023-04-05 20:09:32 +02:00
Admiral H. Curtiss e5941428d1
PowerPC/PPCTables: Pass instruction address to GetOpInfo(). 2023-04-05 20:09:32 +02:00
Admiral H. Curtiss 6018daa3fa
PowerPC/PPCCache: Access PowerPCState through System. 2023-04-05 20:09:32 +02:00
Admiral H. Curtiss aec3a882d7
PowerPC/JitInterface: Access PowerPCState through System. 2023-04-05 20:09:31 +02:00
Admiral H. Curtiss 18f8ae37ab
PowerPC/Expression: Pass System to EvaluateCondition(). 2023-04-05 20:09:31 +02:00
Admiral H. Curtiss 0a88c2329a
Merge pull request #11715 from JosJuice/dcbx-order
Jit: Change argument order for InvalidateICacheLine(s)FromJIT
2023-04-05 20:06:26 +02:00
Admiral H. Curtiss 2ac7b5a523
Jit64: Fix possibly redundant MOV in ABI_CallFunctionPR(). 2023-04-05 20:00:37 +02:00
Mai 25fba7247e
Merge pull request #11726 from mackal/dolphinqt-memory-leaks
DolphinQt: Fix memory leaks
2023-04-05 04:18:32 -04:00
Pokechu22 c55e08ff73 Jit64: Attempt to fix updating stores with an immediate value
See https://bugs.dolphin-emu.org/issues/13144
2023-04-04 23:30:40 -07:00
Pokechu22 497e938c8c Jit_LoadStoreFloating: Minor tidying
The inst.SIMM_16 change is for readability (though it also fixes a warning about potentially unintended uses of `||`).

The fallback change is because `b` is only meaningful for indexed instructions; this could theoretically lead to unintended fallbacks (but it seems unlikely).
2023-04-04 23:04:41 -07:00
OatmealDome 2995b5e061
Merge pull request #11667 from TellowKrinkle/DontSucceedOnLinkFail
CMake: Use generator expressions for codesign targets
2023-04-05 05:35:58 +02:00
Michael Cook (mackal) f424e7815a DolphinQt: Fix memory leaks in MemoryWidget
QMenuBar::addMenu does not take ownership of the QMenu, setting their
parent allows them to be cleaned up
2023-04-04 16:10:31 -04:00
Michael Cook (mackal) 7dde0c3c31 DolphinQt: non-Windows builds leak in InterfacePane
The m_checkbox_lock_mouse QCheckBox was only conditionally being added
to the layout, leaving it unmanaged and leaking

Setting the parent will allow it to be managed.
2023-04-04 16:07:06 -04:00
Michael Cook (mackal) e511718fbc DolphinQt: Fix leak in LogConfigWidget
The m_verbosity_debug button was only conditionally being added as
widget, this was done in order to hide the object, but this left it
unmanaged.

Unconditionally adding it to the layout and controlling it's visibility
will resolve these issues
2023-04-04 16:05:23 -04:00
Pierre Bourdon d8fabd37fb
Merge pull request #11417 from K0bin/vk-submit-thread-cleanup
VideoBackends:Vulkan: Clean up submission thread using WorkQueueThread
2023-04-04 22:02:39 +02:00
Pierre Bourdon c71a4c2751
Merge pull request #11719 from AdmiralCurtiss/enet-update
Update ENet to 8ae0e85298fafdb20777b4eb4241218f52f775b0
2023-04-04 22:00:45 +02:00
Michael Cook (mackal) 2dca24229b DolphinQt: Fix memory lkea in FilesystemWidget
QTreeView::setModel doesn't transfer ownership of the object.

Setting the parent resolves this
2023-04-04 15:59:45 -04:00
Pierre Bourdon b63b574a3f
Merge pull request #11669 from LillyJadeKatrin/retroachievements-rcheevos-integration
Retroachievements rcheevos integration
2023-04-04 12:34:20 +02:00
LillyJadeKatrin 84b3df0af2 Added Achievement Manager with Login
Added AchievementManager class. Upon startup (currently only in DolphinQt), logs into RetroAchievements with the login credentials stored in achievements.ini.

Co-authored-by: AdmiralCurtiss <AdmiralCurtiss@users.noreply.github.com>
2023-04-03 21:17:44 -04:00
LillyJadeKatrin 07d2f3d305 Added Initial Achievement Settings
Added AchievementSettings in Config with RA_INTEGRATION_ENABLED, RA_USERNAME, and RA_API_TOKEN. Includes code to load and store from Achievements.ini file in config folder.
2023-04-03 21:17:44 -04:00
Michael Cook (mackal) 241a739dc2 DolphinQt: RenderWidget fix heap-use-after-free
The QByteArray returned by QString::toUtf8() was being freed so the char
pointer was pointing to freed memory.

Found via ASan, didn't notice any issues during normal runtime.

This was triggered after hitting a key combo with alt (ex. toggle
fullscreen) probably happens with others
2023-04-03 10:43:49 -04:00
Mai 655fca3efe
Merge pull request #11712 from AdmiralCurtiss/nand-import-bounds
NANDImporter: Check data bounds.
2023-04-03 08:29:57 -04:00
Pokechu22 9e0755a598 HookableEvent: Use std::recursive_mutex instead of std::mutex
This fixes a crash when recording fifologs, as the mutex is acquired when BPWritten calls AfterFrameEvent::Trigger, but then acquired again when FifoRecorder::EndFrame calls m_end_of_frame_event.reset(). std::mutex does not allow calling lock() if the thread already owns the mutex, while std::recursive_mutex does allow this.

This is a regression from #11522 (which introduced the HookableEvent system).
2023-04-02 15:51:21 -07:00
Admiral H. Curtiss 1e1041f299
NetPlay: Limit ENet's MTU to 1392 as a workaround for dropped packets over VPN via WireGuard, see https://github.com/lsalzman/enet/issues/132 2023-04-02 17:23:10 +02:00
LillyJadeKatrin f3114b59f4 Added USE_RETRO_ACHIEVEMENTS compiler flag
Added a flag to VS and CMake for enabling RetroAchievements integration.
2023-04-02 08:28:25 -04:00
LillyJadeKatrin 2836feac71 Added rcheevos to Externals
Adds the rcheevos library from RetroAchievements to the Dolphin Externals as a submodule. Change was verified to import correctly and build both via Visual Studio and via cmake ninja.
2023-04-02 08:28:23 -04:00
JosJuice 6089310c80 Add Finnish translation
A lot of progress has been made on the Finnish translation over on
Transifex recently. Let's add it.
2023-04-02 11:33:42 +02:00
Admiral H. Curtiss c97c80d1cb
NANDImporter: Check data bounds. 2023-04-02 03:45:34 +02:00
Admiral H. Curtiss aaeaa9c6b6
Merge pull request #11714 from sepalani/check-wii-save-path
GameList: Check Wii save path
2023-04-02 02:44:29 +02:00
JosJuice 450ca0b69e
Merge pull request #11700 from AdmiralCurtiss/mmu-class
PowerPC/MMU: Refactor to class, move to System.
2023-04-01 18:02:04 +02:00
Admiral H. Curtiss e24e52af3c Jit64: Use utility function for function calls in dcbx.
We have these for a reason. I think this also fixes a theoretical
problem when `ABI_PARAM1 == loop_counter` where the first MOV destroys
the second's value; I'm not sure if this can actually happen in practice
though.
2023-04-01 15:30:03 +02:00
JosJuice 1bf593f65a Jit: Change argument order for InvalidateICacheLine(s)FromJIT 2023-04-01 14:34:30 +02:00
Sepalani 9ee564dde3 GameList: Check Wii save path
Make the behaviour consistent with GC save
2023-04-01 16:23:37 +04:00
Pierre Bourdon 7e9a63b987
Merge pull request #11704 from AdmiralCurtiss/more-log
Netplay: More logging before game start.
2023-03-30 19:26:49 +02:00
Admiral H. Curtiss 0ccf24b0c5
Netplay: More logging for server and client thread main loops. 2023-03-30 16:57:39 +02:00
Markus Wick 50a45bd614
Merge pull request #11673 from K0bin/vertex-loader-micro-opt
Vertex Loader Microoptimization
2023-03-30 11:05:02 +02:00
Admiral H. Curtiss bfe0940bbd
Netplay: More logging before game start. 2023-03-30 00:02:30 +02:00
Charles Lombardo 15be899580
Merge pull request #11689 from K0bin/android-open-user-folder
Android: Make button in the settings open user folder
2023-03-29 10:53:48 -07:00
Pierre Bourdon d62838a2f4
Merge pull request #11690 from degasus/asciiart
Shaders: Reintroduce the old Ascii-Art shader.
2023-03-28 11:17:27 +02:00
Admiral H. Curtiss 8dabd1a025
PowerPC/MMU: Refactor to class, move to System. 2023-03-28 03:47:51 +02:00
Mai 98fad9004b
Merge pull request #11698 from AdmiralCurtiss/mmu-comments
PowerPC/MMU: Clean up old comments.
2023-03-27 10:32:19 -04:00
Mai c096ee64f2
Merge pull request #11696 from AdmiralCurtiss/jit-interface-class
JitInterface: Refactor to class, move to System.
2023-03-27 10:31:53 -04:00
Robin Kertels ee563189fd
Android: Adjust user data text to match DocumentProvider 2023-03-26 20:32:43 +02:00
Admiral H. Curtiss d7fabf37d6
PowerPC/MMU: Clean up old comments. 2023-03-26 15:19:48 +02:00
MayImilae 0d74a8561a Remove GCI Folder Path from the Wrote to OSD Message
Follow up to PR11470. Forgot to do GCI as well. Oops.
2023-03-26 06:19:17 -07:00
Admiral H. Curtiss 7f50c070b2
JitInterface: Convert m_jit to unique_ptr. 2023-03-26 14:38:07 +02:00
Admiral H. Curtiss 9217a9eba4
JitInterface: Refactor to class, move to System. 2023-03-26 14:38:07 +02:00
Admiral H. Curtiss 1885ddcde2
JitArm64: Avoid System::GetInstance() and ppcState. 2023-03-25 15:47:30 +01:00
Admiral H. Curtiss 6b44947488
Merge pull request #11677 from AdmiralCurtiss/deglobal-jit
Avoid System::GetInstance() and ppcState global in Jit64 and CachedInterpreter.
2023-03-25 14:52:46 +01:00
Admiral H. Curtiss fc394bdbdb
Jit64: Avoid System::GetInstance() and ppcState. 2023-03-25 02:37:10 +01:00
Admiral H. Curtiss dfc14db313
CachedInterpreter: Avoid System::GetInstance() and ppcState. 2023-03-25 02:37:10 +01:00
Admiral H. Curtiss 9c0226b7e3
JitBase: Avoid System::GetInstance() and ppcState. 2023-03-25 02:37:00 +01:00
Admiral H. Curtiss b568cf5268
Interpreter: Remove remaining System::GetInstance() and global ppcState. 2023-03-24 21:58:41 +01:00
degasus 196c684ac1 Vulkan: Enable subgroupShuffle.
It is used as workaround for the missing subgroupBroadcastDynamicId flag on SPIR-V < 1.5.
2023-03-24 21:53:23 +01:00
JosJuice 7de01597c6
Merge pull request #11686 from t895/index-fix
Android: Ignore input from invalid pointer identifier
2023-03-24 17:57:19 +01:00
Admiral H. Curtiss 2edb69f89f
Merge pull request #11682 from lioncash/queue
Common: Move FixedSizeQueue into Common namespace
2023-03-24 12:55:10 +01:00
Robin Kertels 43d346aba4
Android: Open DocumentProvider directly when tapping the File Manager button 2023-03-24 00:33:42 +01:00
Charles Lombardo df806125b9 Android: Ignore input from invalid pointer identifier 2023-03-22 21:44:37 -04:00
Pierre Bourdon eb7d7836fd
Merge pull request #11685 from shuffle2/updater-test
test-updater.py: include space and unicode in paths to test
2023-03-22 23:40:24 +01:00
Shawn Hoffman fdc1626308 test-updater.py: include space and unicode in paths to test 2023-03-22 11:08:58 -07:00
Shawn Hoffman 3961afdbb9 windows: temporarily hardcode VCToolsVersion to 14.34.31931.0
this should be reverted after next beta is built
see https://bugs.dolphin-emu.org/issues/13206
2023-03-22 10:42:32 -07:00
Lioncash 0f326c6067 Common: Move FixedSizeQueue into Common namespace
Gets this out of the global namespace.
2023-03-22 01:23:15 -04:00
Charles Lombardo ce66d5875f Android: Fix long press action for leanback game cards 2023-03-21 19:12:28 -04:00
Charles Lombardo cf0706c239 Android: Remove deprecated use of launchWhenStarted/Resumed 2023-03-21 18:53:48 -04:00
Lioncash 0888c93d48 Common: Move FPU-related helpers into Common namespace
Makes these utilities' namespace consistent with the majority of the
Common library.
2023-03-21 10:58:13 -04:00
Pokechu22 df451b3d9e msvc: Nest implot under Externals 2023-03-20 22:27:39 -07:00
Admiral H. Curtiss 8f16fd60dd
JitArm64: Use 64-bit register for pointer when falling back to interpreter. 2023-03-21 02:46:29 +01:00
Robin Kertels 93fce0e4b6
VideoCommon:VertexManagerBase: Only calculate remaining indices once
Before, both of those were calculated 3 times due to the ASSERTs.
2023-03-20 20:59:50 +01:00
Robin Kertels 408b09da31
VideoCommon:VertexShaderManager: Inline SetVertexFormat & UpdateValue/Offset 2023-03-20 20:59:38 +01:00
Mai 9807961ff2
Merge pull request #11671 from AdmiralCurtiss/deglobal-interpreter
Deglobalize Interpreter
2023-03-20 15:55:14 -04:00
Robin Kertels c1be9628fc
VideoBackends:Vulkan: Use WorkQueueThread 2023-03-20 16:40:32 +01:00
Robin Kertels 9d422d14d5
WorkQueueThread: Fix WaitForCompletion 2023-03-20 16:31:40 +01:00
Robin Kertels 9186050daa
VideoBackends:Vulkan: Clean up submission thread BlockingLoop usage 2023-03-20 16:23:35 +01:00
Robin Kertels 7703fef3a4
VideoCommon:VertexLoaderManager: Only update vertex format in shader manager if necessary. 2023-03-20 00:41:16 +01:00
JosJuice 002a96adb0
Merge pull request #11662 from t895/kotlin-settings
Android: Convert Settings to Kotlin
2023-03-19 17:15:22 +01:00
Admiral H. Curtiss 454d2fd9ab
Interpreter: Avoid ppcState global (Interpreter_SystemRegisters.cpp). 2023-03-19 03:11:22 +01:00
Admiral H. Curtiss c582aad0c7
Interpreter: Avoid ppcState global (Interpreter_Paired.cpp). 2023-03-19 03:11:18 +01:00
Admiral H. Curtiss 514a7af473
Interpreter: Avoid ppcState global (Interpreter_LoadStorePaired.cpp). 2023-03-19 03:11:13 +01:00
Admiral H. Curtiss 9af8410e4c
Interpreter: Avoid ppcState global (Interpreter_LoadStore.cpp). 2023-03-19 03:11:09 +01:00
Admiral H. Curtiss 8b13349886
Interpreter: Avoid ppcState global (Interpreter_Integer.cpp). 2023-03-19 03:11:05 +01:00
Admiral H. Curtiss 2ce86a890a
Interpreter: Avoid ppcState global (Interpreter_FloatingPoint.cpp). 2023-03-19 03:11:01 +01:00
Admiral H. Curtiss d4ca591e02
Interpreter: Avoid ppcState global (Interpreter_Branch.cpp). 2023-03-19 03:10:56 +01:00
Admiral H. Curtiss 68ab623764
Interpreter: Avoid ppcState global (Interpreter.cpp). 2023-03-19 03:10:42 +01:00
Admiral H. Curtiss 3d67c11b91
Interpreter: Move global state into class, move instance to System. 2023-03-19 03:05:20 +01:00
Admiral H. Curtiss 919182eda2
Interpreter: Pass Interpreter to CPU instruction functions. 2023-03-19 03:05:11 +01:00
Admiral H. Curtiss a4d3342419
Merge pull request #11665 from JosJuice/fix-movie-wii-save
Core: Fix starting movie recording with existing Wii save
2023-03-19 01:46:21 +01:00
Admiral H. Curtiss fb7a371ac0
Merge pull request #11666 from AdmiralCurtiss/updater-spaces
WinUpdater: Quote path for args when relaunching Dolphin.
2023-03-18 18:32:35 +01:00
Pierre Bourdon 04915d6749
Merge pull request #11670 from JosJuice/android-open-mode
Android: Translate C++ "w" to ParcelFileDescriptor "wt"
2023-03-18 18:20:17 +01:00
JosJuice 8e363c0995 Android: Translate C++ "w" to ParcelFileDescriptor "wt"
Previously we were translating "w" to "w", which unlike in C++ doesn't
truncate. See https://issuetracker.google.com/issues/180526528, and for
reference, https://en.cppreference.com/w/cpp/io/c/fopen and
https://en.cppreference.com/w/cpp/io/basic_filebuf/open.

This issue was brought to my attention by the recently published issue
CVE-2023-21036 in the screenshot editing tool on Pixel phones. I'm not
aware of any code in Dolphin that actually uses "w" with an existing
file on Android (when we ask the user for a location to save to using
SAF, a new file is always created), but still, best to fix this.
2023-03-18 13:44:01 +01:00
Admiral H. Curtiss 33d0ec97e9
WinUpdater: Quote path for args when relaunching Dolphin. 2023-03-17 12:48:39 +01:00
TellowKrinkle d037c60caf CMake: Use proper dependency tracking command for storyboard compiling 2023-03-17 01:28:33 -05:00
TellowKrinkle 66936f2087 CMake: Use generator expressions to get codesigning targets
Also works around a bug where CMake's ninja generator doesn't properly handle ||'s on POST_BUILD commands, making the || apply to the whole build like `<link> && custom0 || custom1`
2023-03-17 01:28:16 -05:00
Pokechu22 4dd658f4da Remove PPCTables::UsesFPU
We don't have getters for other flags, so it's not useful to have that.
2023-03-16 18:39:41 -07:00
Pokechu22 164ea57790 Split PPCTables from Interpreter_Tables
This also allows use of constexpr in both places. Some additional work was needed in PPCTables due to mutable data associated with each opcode.
2023-03-16 18:36:25 -07:00
Pokechu22 cd627d1232 PPCTables: Fix OPLOG system
Since OPLOG is defined in PPCTables.cpp only, it isn't visible elsewhere. This broke in 3ede866c37.
2023-03-16 18:36:25 -07:00
Pokechu22 34f39ee22e JitArm64_Tables: Use C++20 features 2023-03-16 18:36:25 -07:00
Pokechu22 ec7432ef36 Jit64_Tables: Use C++20 features 2023-03-16 18:36:25 -07:00
Pokechu22 14a93d24e1 Common: Add constexpr Fill function 2023-03-16 18:36:25 -07:00
JosJuice d179acef38 Core: Refactor InitializeDeterministicWiiSaves
Some simple deduplication.
2023-03-16 22:49:46 +01:00
JosJuice 9e7409e71e Core: Fix starting movie recording with existing Wii save
A change made in 0d095b4 didn't take into account that the movie system
doesn't set sync_titles.
2023-03-16 22:45:40 +01:00
JosJuice 6b545eaada
Merge pull request #11659 from JosJuice/android-after-dirinit-runner-cleanup
Android: Clean up AfterDirectoryInitializationRunner
2023-03-16 17:12:58 +01:00
Pierre Bourdon d623871f3e
Merge pull request #11664 from OatmealDome/macos-updater-test-mode
MacUI: Add stub implementation of UI::IsTestMode()
2023-03-16 15:24:49 +01:00
OatmealDome bbe2bd5fec MacUI: Add stub implementation of UI::IsTestMode() 2023-03-16 02:44:36 -04:00
Charles Lombardo a32d66e5ec Android: Upgrade Kotlin to 1.8.10 2023-03-15 23:58:11 -04:00
Charles Lombardo f06c0897ab Android: Update gradle to 8.0 2023-03-15 23:58:11 -04:00
Charles Lombardo de34c962d7 Android: Upgrade AGP to 7.4.2 2023-03-15 23:58:11 -04:00
Charles Lombardo 7e84285047 Android: Upgrade dependencies
Desugar JDK 2.0.0 -> 2.0.2
Androidx Appcompat 1.6.0 -> 1.6.1
Androidx Exif Interface 1.3.5 -> 1.3.6
Material Components 1.7.0 -> 1.8.0
Androidx recyclerview 1.2.1 -> 1.3.0
Androidx viewmodel ktx 2.5.1 -> 2.6.0
Androidx viewmodel 2.5.1 -> 2.6.0
2023-03-15 23:58:11 -04:00
Charles Lombardo 805f921b55 Android: Remove unused benchmark flags 2023-03-15 23:57:47 -04:00
Charles Lombardo 2782318b8c Android: Update ndk version to 25.2.9519653 2023-03-15 23:57:47 -04:00
Charles Lombardo 9020b6aeb9 Android: Convert SettingsAdapter to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 673c8d9cb2 Android: Convert SettingsActivity to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 4cbbe15e77 Android: Convert SettingsFragment to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo cea882181d Android: Convert SettingsActivityPresenter to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 3b32ff6980 Android: Convert SettingsFile to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 92f39a98d6 Android: Convert SwitchSettingViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 49e480ee53 Android: Convert SubmenuViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 760417b08f Android: Convert SliderViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 9b79f5fa5d Android: Convert SingleChoiceViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 917a0c2287 Android: Convert SettingViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 7b7ee13162 Android: Convert RunRunnableViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 6a08b12c9b Android: Convert InputStringSettingViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo bc6d10e29a Android: Convert HeaderViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 789493b722 Android: Convert HeaderHyperLinkViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 220cdafbaa Android: Convert FilePickerViewHolder to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo f0304d80ef Android: Convert SettingsViewModel to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 508e56e2bf Android: Convert SettingsFragmentView to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo 656d91cd18 Android: Convert SettingsFragmentPresenter to Kotlin 2023-03-15 17:35:48 -04:00
Charles Lombardo c78cde2e18 Android: Convert SettingsActivityView to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo dc77ee140d Android: Convert MenuTag to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 2af8efdd72 Android: Convert SwitchSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo ab11b44938 Android: Convert SubmenuSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 065c80fb4d Android: Convert SliderSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 3c6bb9e0c9 Android: Convert SingleChoiceSettingDynamicDescriptions to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo d51f504629 Android: Convert SingleChoiceSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 1fc9f03b27 Android: Convert RunRunnable to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 62679bacc1 Android: Convert PercentSliderSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 72be338d56 Android: Convert LogSwitchSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 56c33890b9 Android: Convert InvertedSwitchSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 2369977e14 Android: Convert IntSliderSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 826e849a7b Android: Convert InputStringSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo fc97c4d35a Android: Convert HyperLinkHeaderSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo f95fd7788e Android: Convert HeaderSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 1e2e9e004b Android: Convert FloatSliderSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo f7ad065408 Android: Convert FilePicker to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 1553477c09 Android: Convert StringSetting to Kotlin 2023-03-15 17:35:34 -04:00
Charles Lombardo 2c560e05a8 Android: Convert Settings to Kotlin 2023-03-15 17:35:21 -04:00
Charles Lombardo dee85cead8 Android: Convert PostProcessing to Kotlin 2023-03-15 17:35:21 -04:00
Charles Lombardo 42f4fb815f Android: Convert NativeConfig to Kotlin 2023-03-15 17:35:21 -04:00
Charles Lombardo 7c59640f8e Android: Convert IntSetting to Kotlin 2023-03-15 17:35:21 -04:00
Charles Lombardo 46e68171b9 Android: Convert FloatSetting to Kotlin 2023-03-15 17:34:49 -04:00
Charles Lombardo 3ac72855e3 Android: Convert BooleanSetting to Kotlin 2023-03-15 17:34:21 -04:00
Charles Lombardo 84c23c14db Android: Convert AdHocStringSetting to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo a8f3d4291a Android: Convert AdHocBooleanSetting to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo f1028b4652 Android: Convert AbstractStringSetting to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo 32f9e48257 Android: Convert AbstractIntSetting to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo baeeaa2a43 Android: Convert AbstractFloatSetting to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo 5bc2b46983 Android: Convert AbstractBooleanSetting to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo 21e0b5b9d9 Android: Convert AbstractSetting to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo 43fa5cf5e4 Android: Convert SettingsItem to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo 6dc6720250 Android: Convert StringSingleChoiceSetting to Kotlin 2023-03-15 15:49:37 -04:00
Charles Lombardo 98ab893be7 Android: Create extension functions for serializables
Getting serializables without explicitly stating the type is deprecated in Android 13. However we still need a way to get a serializable in versions below that. Now with these we can avoid repeating the same if block.
2023-03-15 14:26:37 -04:00
Pierre Bourdon 91fca0783e
Merge pull request #11647 from AdmiralCurtiss/perfquery-inconsistency
Fix PerfQuery inconsistencies across backends.
2023-03-15 15:20:11 +01:00
JosJuice fe8be906f3 Android: Use LifecycleOwner instead of subtype 2023-03-14 23:03:13 +01:00
JosJuice 846f5f6671 Android: Clean up outdated comment in AfterDirectoryInitializationRunner 2023-03-14 23:03:13 +01:00
Mai 4281606838
Merge pull request #11641 from JosJuice/android-remove-old-config
Android: Remove support for the old config system
2023-03-14 15:48:04 -04:00
Pierre Bourdon e83b6e19ab
Merge pull request #11655 from AdmiralCurtiss/dtk-heap
HW/DVDInterface: Avoid heap allocation in DTK callback.
2023-03-14 13:45:41 +01:00
Admiral H. Curtiss 4c21cdd0e6
HW/DVDInterface: Do DTK math in blocks instead of in samples. 2023-03-14 13:19:44 +01:00
Pierre Bourdon aceafc9d26
Merge pull request #11652 from t895/header-padding
Android: Make header padding appear even
2023-03-14 13:03:19 +01:00
Admiral H. Curtiss 66b6a60afe
HW/DVDInterface: Avoid heap allocation in DTK callback. 2023-03-14 10:58:03 +01:00
Pierre Bourdon 3783bedc25
Merge pull request #11635 from Dentomologist/wiimote_fix_disconnection_deadlock
ControllerInterface: Fix deadlock when Wii Remote disconnects
2023-03-14 02:41:36 +01:00
Admiral H. Curtiss aac9647ba2
Divide by MSAA for PerfQuery in all backends. 2023-03-14 02:13:25 +01:00
Admiral H. Curtiss ddd2b598da
Return quarter value for PerfQuery in all backends. 2023-03-14 02:08:20 +01:00
Pierre Bourdon 970ddf0ea0
Merge pull request #11651 from JosJuice/android-profile-off-by-one
Android: Fix per-game profile setting off-by-one
2023-03-14 02:02:00 +01:00
Admiral H. Curtiss 43a5d506c8
Merge pull request #11644 from deReeperJosh/trapteamaudio
Skylander Portal: Play Trap Team Audio
2023-03-14 01:29:20 +01:00
Admiral H. Curtiss 26605c0184
Merge pull request #11649 from Pokechu22/tas-controller-input-update-widgets
DolphinQt: Fix TAS widgets not updating with enable controller input
2023-03-14 01:21:17 +01:00
Pierre Bourdon 5c962ea71f
Merge pull request #11650 from AdmiralCurtiss/more-system
More passing of System instead of using the singleton.
2023-03-13 23:36:17 +01:00
Pierre Bourdon 936c05e600
Merge pull request #11599 from shuffle2/vs17.5
vs: update to 17.5
2023-03-13 20:43:48 +01:00
Charles Lombardo 4f610bb354 Android: Make header padding appear even 2023-03-13 15:27:09 -04:00
JosJuice 5818685911 Android: Fix per-game profile setting off-by-one 2023-03-13 18:30:55 +01:00
Admiral H. Curtiss 3006c23c85
Core/CPUThreadGuard: Fetch System from Guard. 2023-03-13 18:13:20 +01:00
Admiral H. Curtiss 31d33d0efd
HW/ProcessorInterface: Store reference to System in class. 2023-03-13 18:13:20 +01:00
Admiral H. Curtiss ba852a7812
HW/Memmap: Store reference to System in MemoryManager. 2023-03-13 18:13:20 +01:00
Admiral H. Curtiss 026b6a3e0f
HW: Pass System to functions. 2023-03-13 18:13:20 +01:00
Mai 137b9d1da1
Merge pull request #11646 from AdmiralCurtiss/si-class
HW/SerialInterface: Refactor to class.
2023-03-13 13:09:51 -04:00
Pierre Bourdon a6b2655631
Merge pull request #11636 from shuffle2/updater-test
Add test for Updater
2023-03-13 15:47:37 +01:00
Pokechu22 3f6b931150 DolphinQt: Fix TAS widgets not updating with enable controller input
This regressed in 0300b44d23. Specifically, the sliders and the stick/IR widgets did not update, but the spin boxes did update.
2023-03-12 17:58:48 -07:00
Joshua de Reeper f27e8216a5 Skylander Portal: Play Trap Team Audio
Asserts and length handling
2023-03-13 13:01:48 +13:00
Admiral H. Curtiss bf2f901a99
HW/SerialInterface: Refactor to class. 2023-03-12 16:08:56 +01:00
Robin Kertels 784ce78eaf
Android: Use $applicationId for DocmentProvider authority
Fixes side by side installation of debug, benchmark and release builds.
2023-03-12 15:28:21 +01:00
Admiral H. Curtiss d371b17f37
HW/SerialInterface: Pass System to ISIDevice. 2023-03-12 14:19:38 +01:00
Mai ab05dfc263
Merge pull request #11642 from shuffle2/winupdater-fail
winupdater: improve wording of UI::Error
2023-03-12 04:11:16 -04:00
Mai ee28d332b0
Merge pull request #11640 from AdmiralCurtiss/vi-class
HW/VideoInterface: Refactor to class.
2023-03-11 18:00:24 -05:00
Shawn Hoffman ab3da5e4ce winupdater: improve wording of UI::Error 2023-03-11 13:25:38 -08:00
Shawn Hoffman 06cb4ffa64 winupdater: fix CR getting into parsed VCToolsUpdateURL 2023-03-11 12:58:33 -08:00
Shawn Hoffman 0a8725e4a9 updater: add test for update flow
currently windows-only
2023-03-11 12:58:33 -08:00
Shawn Hoffman de0bc06856 updater: flush log after each write 2023-03-11 12:58:33 -08:00
JosJuice 804b94ee9e
Merge pull request #11524 from K0bin/document-provider
Android: Implement DocumentProvider
2023-03-11 19:24:19 +01:00
JosJuice 08334015f9 Android: Remove SettingsActivityView parameters from Settings
No longer used for anything.
2023-03-11 18:49:43 +01:00
JosJuice 99600ef781 Android: Rework the "global" settings functions
getXGlobal() is now identical to getX(), and setXGlobal(int, X) is now
identical to setX(int, X) in the cases where setX(int, X) exists.
We can remove/rename them.
2023-03-11 18:49:43 +01:00
JosJuice 58fc347f8d Android: Don't require Settings object for reading a setting
Made unnecessary by the previous commit.
2023-03-11 18:49:43 +01:00
JosJuice 68fd133057 Android: Remove support for the old config system
All settings that we care about from an Android perspective are now
supported by the new config system, so we can remove all the Android code
for the old config system. This should have no impact on users.
2023-03-11 17:51:59 +01:00
JosJuice 53e7090f55 Migrate game INI profile setting to new config system 2023-03-11 17:51:58 +01:00
Admiral H. Curtiss 069280ddc6
HW/VideoInterface: Refactor to class. 2023-03-11 12:50:35 +01:00
Admiral H. Curtiss 2102e64299
HW/VideoInterface: Savestate members individually. 2023-03-11 12:48:02 +01:00
JosJuice 62ff2f1030
Merge pull request #11385 from JosJuice/android-input-overhaul
Android input overhaul
2023-03-11 12:37:44 +01:00
Admiral H. Curtiss 84542d915d
HW/MemoryInterface: Refactor to class. 2023-03-11 00:57:16 +01:00
Admiral H. Curtiss bf95d4012f
HW/EXI: Refactor ExpansionInterface to class. 2023-03-11 00:56:37 +01:00
Mai e4df388128
Merge pull request #11638 from JosJuice/tas-input-motionplus
DolphinQt: Add MotionPlus support to TAS input
2023-03-10 16:54:35 -05:00
Admiral H. Curtiss d31733ce64
HW/DVD: Rename DVDThreadManager to DVDThread. 2023-03-10 20:22:29 +01:00
Admiral H. Curtiss 25e883280a
HW/DVD: Merge DVDThread namespace into DVD. 2023-03-10 20:20:19 +01:00
JosJuice 4d34f86121 DolphinQt: Add MotionPlus support to TAS input
Will manually controlling both an accelerometer and a gyroscope at the
same time be reasonable to do? No idea. Was this easy to implement
thanks to the input override system? Yes.

Fixes https://bugs.dolphin-emu.org/issues/12443.
2023-03-10 19:36:17 +01:00
Admiral H. Curtiss d26a540253
HW/DVD: Rename DVDInterfaceManager to DVDInterface. 2023-03-10 18:37:46 +01:00
Admiral H. Curtiss ee35103ed9
HW/DVD: Rename DVDInterface namespace to DVD. 2023-03-10 18:37:18 +01:00
Admiral H. Curtiss dca8e9dc1e
HW/DVDThread: Refactor to class. 2023-03-10 18:12:59 +01:00
Admiral H. Curtiss eb25c46a91
HW/DVDInterface: Refactor to class. 2023-03-10 18:12:59 +01:00
Admiral H. Curtiss 929222ffbd
HW/DSP: Refactor to class. 2023-03-09 22:35:29 +01:00
Mai 40ff9b25b7
Merge pull request #11633 from AdmiralCurtiss/ai-class
HW/AudioInterface: Refactor to class.
2023-03-09 11:59:47 -05:00
Admiral H. Curtiss 1023e5dd4f
Merge pull request #11441 from JosJuice/jit64-lea-fixup
Jit64: Fix the offsetAddedToAddress correction
2023-03-09 16:13:25 +01:00
Admiral H. Curtiss 9ed388fc8a
Merge pull request #11557 from AdmiralCurtiss/split-file-reader
DiscIO: Add support for CleanRip-style split ISOs.
2023-03-09 16:13:15 +01:00
Admiral H. Curtiss 8c7997d6ca
Merge pull request #11601 from Dentomologist/bluetooth_adapter_missing_message
Config: Restore Bluetooth adapter missing message in Controller Settings
2023-03-09 16:10:14 +01:00
Admiral H. Curtiss 234c5dd90e
Merge pull request #11622 from JosJuice/tas-input-nonblocking
DolphinQt: Rework TAS input threading
2023-03-09 16:08:30 +01:00
Charles Lombardo a6b1b2f9a5
Merge pull request #11631 from K0bin/pref-divider
Android: Only show divider in settings for headers
2023-03-08 23:56:39 -05:00
Admiral H. Curtiss d638d2dcb7
HW/AudioInterface: Refactor to class. 2023-03-09 02:40:29 +01:00
Dentomologist d6a8e6caaf ControllerInterface: Fix deadlock when Wii Remote disconnects
In UpdateInput, lock m_devices_population_mutex before m_devices_mutex
to be consistent with other ControllerInterface functions. Normally the
former lock isn't needed in UpdateInput, but when a Wii Remote
disconnects it calls RemoveDevice which results in the mutexes being
locked in the wrong order.
2023-03-08 17:22:27 -08:00
Robin Kertels 13ed46a488
Android: Implement DocumentProvider
This allows users to access the Dolphin user directory.
2023-03-08 23:09:49 +01:00
Admiral H. Curtiss a1c2651fee
HW/EXI: Pass System to IEXIDevice. 2023-03-08 22:51:17 +01:00
Admiral H. Curtiss 7044cff011
Core/Boot: Pass around System. 2023-03-08 22:41:43 +01:00
Admiral H. Curtiss 912cd456fb
Core: Add System parameter to CPUThreadGuard. 2023-03-08 22:41:42 +01:00
Robin Kertels 1b47144312
Android: Center list view headers 2023-03-08 18:57:19 +01:00
Robin Kertels edde253724
Android: Only show divider in settings for headers 2023-03-08 18:57:08 +01:00
Mai c592c94395
Merge pull request #11630 from AdmiralCurtiss/globals-cpu
HW/CPU: Refactor to class, move to System.
2023-03-08 11:52:30 -05:00
JosJuice 0300b44d23 DolphinQt: Rework TAS input threading, part 2 (analog inputs) 2023-03-08 17:49:03 +01:00
JosJuice 11e4d46927 DolphinQt: Remove unneeded out parameters in TASInputWindow
IIRC we needed this before the input override system was added.
2023-03-08 17:49:03 +01:00
JosJuice 3eac1fc284 DolphinQt: Rework TAS input threading, part 1 (buttons)
This gets rid of a blocking operation, improving performance and fixing
https://bugs.dolphin-emu.org/issues/12893.

This also makes us no longer directly access the state of certain UI
elements from the CPU thread, which probably wasn't thread-safe but
doesn't seem to have caused any observable issues so far.
2023-03-08 17:49:02 +01:00
Admiral H. Curtiss 3b364c5c16
HW/CPU: Refactor to class, move to System. 2023-03-08 12:23:37 +01:00
Mai f1e4b6a141
Merge pull request #11494 from t895/orientation-jank
Android: Rewrite Wii system updates in Kotlin
2023-03-08 01:42:53 -05:00
Admiral H. Curtiss 0b9002ec2a
Merge pull request #11568 from SMarioMan/socket-broadcast
Network/Socket: Enable broadcast permissions in socket requests
2023-03-08 00:11:44 +01:00
Charles Lombardo 75ce7a04ca Android: Use coroutine for system updates 2023-03-07 15:45:41 -05:00
Charles Lombardo d66d8210bf Android: Switch to indeterminate progress bar on system update cancel 2023-03-07 15:45:41 -05:00
Charles Lombardo 917ca2273e Android: Remove hardcoded strings from system update dialogs 2023-03-07 15:45:41 -05:00
Charles Lombardo 410aaef56e Android: Remove orientation lock on system update dialog 2023-03-07 15:45:41 -05:00
Charles Lombardo c0868f04a9 Android: Use Kotlin extensions for lifecycle components 2023-03-07 15:45:41 -05:00
Charles Lombardo 5eeb0a540b Android: Convert OnlineUpdateRegionSelectDialogFragment to Kotlin 2023-03-07 15:45:41 -05:00
Charles Lombardo 0ac4fe763b Android: Convert SystemMenuNotInstalledDialogFragment to Kotlin 2023-03-07 15:45:41 -05:00
Charles Lombardo c8907349be Android: Convert SystemUpdateResultFragment to Kotlin 2023-03-07 15:45:40 -05:00
Charles Lombardo 60cb886cd4 Android: Convert WiiUtils to Kotlin 2023-03-07 15:45:40 -05:00
Charles Lombardo 2b17e0334a Android: Convert SystemUpdateViewModel to Kotlin 2023-03-07 15:45:40 -05:00
Charles Lombardo 6dfa555099 Android: Convert SystemUpdateProgressBarDialogFragment to Kotlin 2023-03-07 15:45:40 -05:00
Mai 16023ece6d
Merge pull request #11621 from deReeperJosh/skylandersfilefix
Skylander Portal: Clearing and Reloading fix
2023-03-07 15:24:46 -05:00
Admiral H. Curtiss 6d38dd9821
Qt/WatchWidget: Don't update if not paused. 2023-03-07 20:31:15 +01:00
JosJuice 75fb1a7edf Android: Disable input device sensor input due to crash 2023-03-07 17:39:34 +01:00
JosJuice 1788a797e7 Android: Add "more settings" button to overlay control setting dialog
Some people might wonder where the ability to select an extension
and the Sideways Wii Remote went. This button will take them to the
general settings, which is where those settings now live.

At some point in the future, we should probably move everything to the
general settings. But this pull request is already big enough as it is!
2023-03-07 17:39:34 +01:00
JosJuice 6b5f82c12f Android: Change how the overlay controller setting works, part 2
The previous commit wasn't enough for getting inputs to work for
controllers 2-4.
2023-03-07 17:39:34 +01:00
JosJuice 1b55d7c594 Android: Change how the overlay controller setting works
Up until now, there have been two settings on Android that stored the
selected Wii Remote extension: the normal one that's also used on PC,
and a SharedPreferences one that's used by the overlay controls to
determine what controls to show. It is possible for these two to end up
out of sync, and my input changes have made that more likely to happen.

To fix this, let's rework how the overlay controller setting works.
We don't want it to encode the currently selected Wii Remote extension.
However, we can't simply get rid of the setting, because for some Wii
games we need the ability to switch between a GameCube controller and a
Wii Remote. What this commit does is give the user the option to select
any of the 4 GameCube controllers and any of the 4 Wii Remotes. (Before,
controllers 2-4 weren't available in the overlay.) Could be useful for
things like the Psycho Mantis fight in Metal Gear Solid. I'm also
switching from SharedPreferences to Dolphin.ini while I'm at it.
2023-03-07 17:39:34 +01:00
JosJuice 4c326f2030 Android: Remove the in-emulation IR sensitivity options
This too can be set in the normal controller settings now.
2023-03-07 17:39:34 +01:00
JosJuice ee2c7dc24b Android: Remove the in-emulation motion control options
You can set this in the normal controller settings now.
2023-03-07 17:39:34 +01:00
JosJuice 9b9b6d97bc Config: Simplify IsSettingSaveable's handling of Android section
The Android-specific controller mapping system is now gone,
so IsSettingSaveable can be greatly simplified.
2023-03-07 17:39:34 +01:00
JosJuice 32cb41007b Android: Allow changing controller settings during emulation 2023-03-07 17:39:34 +01:00
JosJuice c2779aef06 Android: Add the advanced input mapping dialog
It's missing a lot of features from the PC version for now, like
buttons for inserting functions and the ability to see what the
expression evaluates to. I mostly just wanted to get something in
place so you can set up rumble.

Co-authored-by: Charles Lombardo <clombardo169@gmail.com>
2023-03-07 17:39:30 +01:00
Admiral H. Curtiss f389da2a33
HW/HSP: Refactor to class, move to System. 2023-03-07 02:11:39 +01:00
Admiral H. Curtiss 655cc7f75c
DiscIO: Add support for CleanRip-style split ISOs. 2023-03-05 19:23:55 +01:00
Scott Mansell 4acdbc0e84
Merge pull request #11625 from phire/eventhook_nodiscard
Fix KillRenderer config changed regression
2023-03-06 03:09:12 +13:00
Scott Mansell 901f12c935 HookableEvents: Add [[nodiscard]] to Register 2023-03-06 00:12:26 +13:00
Scott Mansell b7db2510ef Don't discard ConfigChanged callback handle 2023-03-06 00:12:26 +13:00
Scott Mansell 70cfb46f8e Fix duplicated FPS
This is a small regression from KillRenderer, which caused duplicated
frames to be counted on the FPS counter when the "Skip Presenting
Duplicated Frames" option was disabled.
2023-03-05 23:31:12 +13:00
Shawn Hoffman 5bf9ad7d82 msvc: enable compiler checks added in vs 17.5 2023-03-04 14:18:18 -08:00
Shawn Hoffman 35bde3e7c8 msvc: bump required version to align with vs 17.5 2023-03-04 14:18:18 -08:00
Joshua de Reeper 2585ae9b2c Skylander Portal: Clearing and Reloading fix 2023-03-04 20:13:54 +13:00
JosJuice 42943672bb Android: Add selecting input profile per game 2023-03-03 22:28:25 +01:00
JosJuice 1eeded23df Android: Add input profile management
Co-authored-by: Charles Lombardo <clombardo169@gmail.com>
2023-03-03 22:28:25 +01:00
JosJuice 7ef229d908 Android: Show warning when using old pre-defined controller INIs
Co-authored-by: Charles Lombardo <clombardo169@gmail.com>
2023-03-03 22:28:25 +01:00
JosJuice 8b78f73e80 Android: Add Default and Clear actions for controllers 2023-03-03 22:28:25 +01:00
JosJuice ea3200d4ba Android: Prevent showing mapping dialog with no device selected 2023-03-03 22:28:25 +01:00
JosJuice a1cc19f443 Android: Add "Create mappings for other devices" 2023-03-03 22:28:24 +01:00
JosJuice 2b1dd52750 Android: Add input device selection 2023-03-03 22:28:24 +01:00
JosJuice 2113bf5e3a Android: Implement enabling/disabling control groups
All this code for just a single checkbox... Ah well, it has to be done
2023-03-03 22:28:24 +01:00
JosJuice a78dca5fb0 Android: Move Sideways Wii Remote setting one submenu up
A slight departure from DolphinQt, but I think it makes sense, because
it will make the important Sideways Wii Remote setting easier to find.
2023-03-03 22:28:24 +01:00
JosJuice e7530a1cb9 Android: Split Wii Remote settings into submenus
Too much stuff on one screen otherwise. This split matches DolphinQt.
2023-03-03 22:28:24 +01:00
JosJuice 0dd8bbbbbb Android: Add extension selection 2023-03-03 22:28:24 +01:00
JosJuice 1c26a85e35 Android: Add NumericSetting support 2023-03-03 22:28:24 +01:00
JosJuice 2c529b9db1 Android: Add new input mapping implementation 2023-03-03 22:28:24 +01:00
JosJuice dd8976f18d Android: Remove old input mapping implementation
This old code is of no use now that ButtonManager is gone.
2023-03-03 22:28:24 +01:00
JosJuice 304d898966 Android: Remove copyAsset's overwrite parameter
Because of the previous commit, this is no longer needed.
2023-03-03 22:28:24 +01:00
JosJuice 93657cce54 Android: Stop extracting pre-defined controller INIs 2023-03-03 22:28:24 +01:00
JosJuice 9a8a395560 GCPadEmu/WiimoteEmu: Reorder control groups
This way, Android (which will show groups in the order they're defined)
will show groups in a more logical order similar to DolphinQt.

The main thing that was annoying me was how early Rumble was for
Wii Remotes. Some of the other changes I'm making in this commit,
like the order of Shake/Tilt/Swing, are more arbitrary and were
made for consistency with DolphinQt. But there are also places
where I didn't go all the way with matching DolphinQt. Most notably,
DolphinQt puts sticks before buttons, but I don't see any reason
to do that for Android.
2023-03-03 22:28:24 +01:00
JosJuice e0562abb7d ControllerEmu: Add default mappings for Android
Unlike PCs, Android doesn't really have any input method (not counting
touch) that can reasonably be expected to exist on most devices.
Because of this, I don't think shipping with a default mapping for the
buttons and sticks of GameCube controllers and Wii Remotes makes sense.
I would however like to ship default mappings for a few things:

1. Mapping the Wii Remote's accelerometer and gyroscope to the device's
   accelerometer and gyroscope. This functionality is useful mainly
   for people who use the touchscreen, but can also be useful when
   using a clip-on controller. The disadvantage of having this mapped
   by default is that games disable pointer input if the accelerometer
   reports that the Wii Remote is pointed at the ceiling.

2. Mapping GC keyboards for use with a physical keyboard, like on PC.
   After all, there's no other way of mapping them that makes sense.

3. Mapping rumble to the device's vibrator.

Aside from the GC keyboards, this approach is effectively the same as
what we were doing before the input overhaul.
2023-03-03 22:28:23 +01:00
JosJuice 8e33458f48 ControllerInterface/Android: Implement rumble 2023-03-03 22:28:23 +01:00
JosJuice 065481d989 ControllerInterface/Android: Automatically suspend sensors
This is a battery-saving measure. Whether a sensor should be suspended
is determined in the same way as whether key events and motion events
should be handled by the OS rather than consumed by Dolphin.
2023-03-03 22:28:23 +01:00
JosJuice 36acb17700 ControllerInterface/Android: Implement sensor input for InputDevices
This functionality was added in Android 12 to let apps get motion data
for gamepads.
2023-03-03 22:28:23 +01:00
JosJuice 5e51b56d72 ControllerInterface/Android: Implement sensor input 2023-03-03 22:28:23 +01:00
JosJuice 104ea09892 ControllerInterface/Android: Implement hotplug 2023-03-03 22:28:23 +01:00
JosJuice d6af294a23 ControllerInterface/Android: Return whether input was handled
When Android presents an input event to an app, it wants the app to
return true or false depending on whether the app handled the event or
not. If the event wasn't handled by the app, it will be passed on to
the system, which may decide to take an action depending on what kind
of input event it is. For instance, if a B button press is passed on to
the system, it will be turned into a Back press. But if an R1 press is
passed on to the system, nothing in particular happens.

It's important that we get this return value right in Dolphin. For
instance, the user generally wouldn't want a B button press to open
the EmulationActivity menu, so B button presses usually shouldn't be
passed on to the system - but volume button presses usually should be
passed on to the system, since it would be hard to adjust the volume
otherwise. What ButtonManager did was to pass on input events that are
for a button which the user has not mapped, which I think makes sense.
But exactly how to implement that is more complicated in the new input
backend than in ButtonManager, because now we have a separation between
the input backend and the code that keeps track of the user's mappings.

What I'm going with in this commit is to treat an input as mapped if
it has been polled recently. In part I chose this because it seemed
like a simple way of implementing it that wouldn't cause too many
layering violations, but it also has two useful side effects:

1. If a controller is not being polled (e.g. GameCube controllers in
   Wii games that don't use them), its mappings will not be considered.
2. Once sensor input is implemented in the Android input backend,
   we will be able to use this "polled recently" tracking to power down
   the sensors at times when the game is using a Wii Remote reporting
   mode that doesn't include motion data. (Assuming that the sensor
   inputs only are mapped to Wii Remote motion controls, that is.)
2023-03-03 22:28:23 +01:00
JosJuice ca508e4503 ControllerInterface/Android: Handle input events
Android doesn't let us poll inputs whenever we want. Instead, we
listen to input events (activities will have to forward them to the
input backend), and store the received values in atomic variables
in the Input classes. This is similar in concept to how ButtonManager
worked, but without its homegrown second input mapping system.
2023-03-03 22:28:23 +01:00
JosJuice 792cb62195 ControllerInterface/Android: Implement device population 2023-03-03 22:28:23 +01:00
JosJuice 68ebb5c33e Android: Remove old rumble implementation 2023-03-03 22:28:23 +01:00
JosJuice 9e7a2ee0fb Android: Remove old motion input implementation 2023-03-03 22:28:23 +01:00
JosJuice 0150f521f7 ControllerInterface/Android: Rip out ButtonManager
ButtonManager is very different from how a normal input backend works,
and is making it hard for us to improve controller support on Android.
The following commits will add a new input backend in its place.
2023-03-03 22:28:23 +01:00
JosJuice 95ce41ac56
Merge pull request #11399 from JosJuice/jit-one-stack
Jit: Don't use a second stack
2023-03-03 22:27:16 +01:00
Minty-Meeo bf079d6d3a [[unlikely]] ASSERT
and other ASSERT usage changes
2023-03-02 19:54:15 -06:00
Mai 6361586a04
Merge pull request #11582 from Pokechu22/software-crash-on-startup
Software: Fix regressions from "Kill Renderer"
2023-03-02 15:13:00 -05:00
Mai ab2f8d3475
Merge pull request #11607 from AdmiralCurtiss/sd-progress
Qt/WiiPane: Add progress window for SD card conversion.
2023-03-02 15:08:18 -05:00
Mai 6fcec80eb0
Merge pull request #11605 from JosJuice/android-mappings-button
Android: Add a button for accessing controller mappings
2023-03-02 15:06:47 -05:00
Mai cbbc518bc4
Merge pull request #11612 from iwubcode/custom_texture_data
VideoCommon: move hirestexture data to reusable class called CustomTextureData
2023-03-02 15:05:46 -05:00
Mai 78e8669bac
Merge pull request #11614 from t895/kotlin-cheats
Android: Convert Cheats Activity to Kotlin
2023-03-02 15:04:19 -05:00
Mai 1b7969bc62
Merge pull request #11615 from t895/kotlin-riivolution
Android: Convert Riivolution Boot Activity to Kotlin
2023-03-02 15:03:43 -05:00
Mai b9fd7e7bd4
Merge pull request #11616 from t895/kotlin-skylanders
Android: Convert Skylanders code to Kotlin
2023-03-02 15:03:18 -05:00
Pokechu22 9cdc0aca9b Software: Fix "Auto-Adjust Window Size"
This also needs to be handled on the software renderer path.
2023-03-02 11:08:49 -08:00
Pokechu22 78428dd8db Software: Fix crash on startup when using "Compile Shaders Before Starting"
When that setting is enabled, m_xfb_entry is initially not present (during the phase where a shader compilation progress bar would be shown). The main path checks for m_xfb_entry, but the software renderer fallback path didn't.

Fixes another aspect of https://bugs.dolphin-emu.org/issues/13172.
2023-03-02 11:08:49 -08:00
Pokechu22 4a2d3c83c7 Software: Implement GetSurfaceInfo()
Before, it used a fallback where it returned a default object, where the width and height were set to 0. Presenter::Initialize() used GetSurfaceInfo to set the backbuffer size, then used that size when initializing the on-screen UI (even for the software renderer, where the on-screen UI isn't currently present), which meant that ImGui got a window size of 0 and thus resulted in a failed assertion.

Although BindBackbuffer checks for size changes, it doesn't help because ImGui has already been initialized, and the size hasn't actually changed since initialization occured.

Fixes one aspect of https://bugs.dolphin-emu.org/issues/13172.
2023-03-02 11:08:49 -08:00
JosJuice 96deb2d897 Android: Hide controller mappings button when controller type is None
Also removed the make_sure_continuous_scan_enabled message.
It doesn't make sense with the new UX.
2023-03-02 18:25:10 +01:00
Charles Lombardo 2067c8eed1 Android: Convert ConvertActivity to Kotlin 2023-03-02 01:54:46 -05:00
Charles Lombardo fb432dd58a Android: Convert ConvertFragment to Kotlin 2023-03-02 01:54:46 -05:00
SMarioMan 078730c873
Avoid altering TCP sockets
Co-authored-by: sepalani <sepalani@hotmail.fr>
2023-03-01 20:52:43 -05:00
Charles Lombardo 7efb672be6 Android: Convert SkylanderSlotAdapter to Kotlin 2023-03-01 17:32:19 -05:00
Charles Lombardo 36f1315513 Android: Convert SkylanderSlot to Kotlin 2023-03-01 17:32:07 -05:00
Charles Lombardo bbc1951afb Android: Convert SkylanderConfig to Kotlin 2023-03-01 17:32:07 -05:00
Charles Lombardo 71e82d76b5 Android: Convert SkylanderPair to Kotlin 2023-03-01 17:13:42 -05:00
Charles Lombardo 85b30f198b Android: Convert Skylander to Kotlin 2023-03-01 17:13:01 -05:00
Charles Lombardo 4045e213ba Android: Convert RiivolutionAdapter to Kotlin 2023-03-01 14:39:18 -05:00
Charles Lombardo df21663d4c Android: Convert RiivolutionBootActivity to Kotlin 2023-03-01 14:38:59 -05:00
Charles Lombardo 79d0ff55d2 Android: Convert RiivolutionItem to Kotlin 2023-03-01 14:38:37 -05:00
Charles Lombardo e37503675a Android: Convert RiivolutionViewHolder to Kotlin 2023-03-01 14:38:19 -05:00
Charles Lombardo ec7b811de3 Android: Convert RiivolutionPatches to Kotlin 2023-03-01 14:38:02 -05:00
Charles Lombardo 3935449ca0 Android: Convert TwoPaneOnBackPressedCallback to Kotlin 2023-03-01 13:47:28 -05:00
Charles Lombardo 6bc4ae7438 Android: Convert SettingDisabledWarningFragment to Kotlin 2023-03-01 13:41:55 -05:00
Charles Lombardo 53d404c5a0 Android: Convert HeaderViewHolder to Kotlin 2023-03-01 13:41:02 -05:00
Charles Lombardo 58b7b80902 Android: Convert GraphicsModsDisabledWarningFragment to Kotlin 2023-03-01 13:40:48 -05:00
Charles Lombardo a8da5902bb Android: Convert CheatViewHolder to Kotlin 2023-03-01 13:40:28 -05:00
Charles Lombardo 25fb3218d9 Android: Convert CheatsDisabledWarningFragment to Kotlin 2023-03-01 13:40:08 -05:00
Charles Lombardo fcfde12c52 Android: Convert CheatsAdapter to Kotlin 2023-03-01 13:39:49 -05:00
Charles Lombardo 23d9def613 Android: Convert CheatsActivity to Kotlin 2023-03-01 13:39:23 -05:00
Charles Lombardo 3bcc4a0a59 Android: Convert CheatListFragment to Kotlin 2023-03-01 13:39:07 -05:00
Charles Lombardo d8c1381155 Android: Convert CheatItemViewHolder to Kotlin 2023-03-01 13:38:27 -05:00
Charles Lombardo cacbac9152 Android: Convert CheatItem to Kotlin 2023-03-01 13:37:57 -05:00
Charles Lombardo 5f5c95e7da Android: Convert CheatDetailsFragment to Kotlin 2023-03-01 13:37:21 -05:00
Charles Lombardo b2dd510d0a Android: Convert ActionViewHolder to Kotlin 2023-03-01 13:37:07 -05:00
Charles Lombardo fb177631ef Android: Convert ReadOnlyCheat to Kotlin 2023-03-01 13:36:53 -05:00
Charles Lombardo 59ecda7939 Android: Convert CheatsViewModel to Kotlin 2023-03-01 13:36:40 -05:00
Charles Lombardo 1b61f2c223 Android: Convert Cheat to Kotlin 2023-03-01 13:35:43 -05:00
Charles Lombardo fbc617c917 Android: Convert AbstractCheat to Kotlin 2023-03-01 13:35:33 -05:00
Charles Lombardo 37e8cd1789 Android: Convert GeckoCheat to Kotlin 2023-03-01 13:35:14 -05:00
Charles Lombardo 9e090c6bab Android: Convert GraphicsMod to Kotlin 2023-03-01 13:34:34 -05:00
Charles Lombardo 5f6995fe6c Android: Convert GraphicsModGroup to Kotlin 2023-03-01 13:34:09 -05:00
Charles Lombardo 9cbe66bce4 Android: Convert PatchCheat to Kotlin 2023-03-01 13:33:16 -05:00
Charles Lombardo 408b6cb50c Android: Convert ARCheat to Kotlin 2023-03-01 13:32:42 -05:00
iwubcode 42cb3f3904 VideoCommon: remove HiResTexture DDS loading, update hirestexture logic to use custom texture data 2023-03-01 12:11:04 -06:00
iwubcode 3e35255983 VideoCommon: add class to load custom texture data 2023-03-01 11:58:37 -06:00
Charles Lombardo a4730a9388 Android: Initialize TaskViewModel earlier in User Data Activity 2023-03-01 08:28:44 -05:00
Charles Lombardo 211be4698f
Merge pull request #11515 from t895/user-data-kotlin
Android: Rewrite User Data Activity in Kotlin
2023-02-28 23:47:00 -05:00
Charles Lombardo c904e068f0 Android: Use DialogFragments to direct UserData actions 2023-02-28 22:33:42 -05:00
Charles Lombardo 8d1cf14565 Android: Convert ThreadUtil to Kotlin 2023-02-28 22:21:18 -05:00
Admiral H. Curtiss e2bd7d1d95
Common/FatFsUtil: Close temp file before deleting it on conversion failure. 2023-02-28 20:31:56 +01:00
Admiral H. Curtiss fe26b54efd
Qt/WiiPane: Add progress window for SD card conversion. 2023-02-28 20:31:55 +01:00
Admiral H. Curtiss 435d8c39ee
Common/FatFsUtil: Add callback for cancelling SD card conversion. 2023-02-28 20:31:51 +01:00
JosJuice b6256a57ef Jit: Move stack handling code to JitBase
Deduplication between Jit64 and JitArm64.
2023-02-28 20:30:06 +01:00
JosJuice 86c1f6e1e7 Jit: Don't use a second stack
This second stack leads to JNI problems on Android, because ART fetches
the address and size of the original stack using pthread functions
(see GetThreadStack in art/runtime/thread.cc), and (presumably) treats
stack addresses outside of the original stack as invalid. (What I don't
understand is why some JNI operations on the CPU thread work fine
despite this but others don't.)

Instead of creating a second stack, let's borrow the approach ART uses:
Use pthread functions to find out the stack's address and size, then
install guard pages at an appropriate location. This lets us get rid
of a workaround we had in the MsgAlert function.

Because we're no longer choosing the stack size ourselves, I've made some
tweaks to where the put the guard pages. Previously we had a stack of
2 MiB and a safe zone of 512 KiB. We now accept stacks as small as 512 KiB
(used on macOS) and use a safe zone of 256 KiB. I feel like this should
be fine, but haven't done much testing beyond "it seems to work".

By the way, on Windows it was already the case that we didn't create
a second stack... But there was a bug in the implementation!
The code for protecting the stack has to run on the CPU thread, since
it's the CPU thread's stack we want to protect, but it was actually
running on EmuThread. This commit fixes that, since now this bug
matters on other operating systems too.
2023-02-28 20:29:46 +01:00
JosJuice 0cdae98181 Jit: Fix GUARD_OFFSET calculation
Seems like this was broken all along. The safe zone is at the lower
addresses of the stack, not the higher addresses.
2023-02-28 19:11:35 +01:00
Admiral H. Curtiss a0974c18cd
RiivolutionPatcher: Use capitalization of file that exists in the host file system if possible.
Fixes https://bugs.dolphin-emu.org/issues/13138
2023-02-28 00:56:34 +01:00
Admiral H. Curtiss bdb19085c4
Common: Add utility function for case-insensitive string comparison. 2023-02-28 00:56:33 +01:00
JosJuice b827b155a0 Android: Refactor handleMenuTag
It was a bit silly having four functions for effectively the same thing
in all of SettingsFragmentView, SettingsFragment, SettingsActivityView,
SettingsActivity, and SettingsActivityPresenter.

With this change, we split on the four MenuTag types in
SettingsActivityPresenter instead of in SettingsAdapter.
2023-02-27 21:52:17 +01:00
JosJuice 8acc39cc3f Android: Add a button for accessing controller mappings
The settings GameCube Controller N and Wii Remote N (where N is a number)
have two purposes: You can select what controller type you want to use,
and also, when you select a controller type (even if you're selecting the
one that already is selected), the mapping settings open. This second part
is less discoverable than it ideally should be. I'm changing it so that
there now is a button for opening the mapping settings instead.
2023-02-27 20:10:24 +01:00
JosJuice 7586fc8134
Merge pull request #11608 from Dentomologist/fix_dynamicinputtextures_directory_error_logs
UICommon: Create Load/DynamicInputTextures directory on startup
2023-02-27 18:07:57 +01:00
Admiral H. Curtiss 251fb92b80
Merge pull request #11606 from JosJuice/control-group-save-enabled
InputCommon: Fix ControlGroup::SaveConfig with DefaultValue::Disabled
2023-02-27 12:02:25 +01:00
Admiral H. Curtiss c730ee2de2
Merge pull request #11596 from AdmiralCurtiss/copyany
Common/FileUtil: Migrate CopyDir() to a more clear interface.
2023-02-27 12:02:00 +01:00
Admiral H. Curtiss a11b9d585f
Common/FileUtil: Remove obsolete CopyDir() function. 2023-02-26 23:17:10 +01:00
Admiral H. Curtiss 4f462b4ef6
Migrate destructive calls of File::CopyDir() to File::Move(). 2023-02-26 23:17:10 +01:00
Admiral H. Curtiss 5367bf394c
Common/FileUtil: Add Move() function. 2023-02-26 23:17:09 +01:00
Dentomologist e62162e486 UICommon: Create Load/DynamicInputTextures directory on startup
Fix console error spam on Dolphin and game startup if the directory
doesn't exist.
2023-02-26 13:10:15 -08:00
Daniel Garza 02f7c0213f
Qt/GameList: Also filter by filename when searching. 2023-02-26 19:13:45 +01:00
JosJuice 9b3816c993 InputCommon: Fix ControlGroup::SaveConfig with DefaultValue::Disabled
I also changed LoadConfig, but that change doesn't affect correctness,
it's only so it looks neat by matching SaveConfig.

This bug was added in 18a4afb053, the
commit that introduced DefaultValue::Disabled. The bug can't actually be
triggered in master, but it can be triggered in the Android input
overhaul PR.
2023-02-26 17:45:09 +01:00
Admiral H. Curtiss 26adf78e45
Merge pull request #11602 from JosJuice/cpu-guard-expression
PowerPC: Rework CPUThreadGuard handling in Expression.cpp
2023-02-26 11:55:47 +01:00
Shawn Hoffman 28956cc6c2 workaround msvc optimizer bug 2023-02-25 23:26:27 -08:00
Dentomologist ad6e95afb4 D3D: Restore workaround for erroneous NaN optimization
The HLSL compiler incorrectly decides isnan can't be true, so this
workaround was originally added in 52c82733 but lost during the
conversion to SPIR-V.
2023-02-25 16:27:30 -08:00
JosJuice 19e8569634
Merge pull request #11594 from t895/autofit-grid
Android: Responsive autofit grid
2023-02-25 17:30:40 +01:00
Charles Lombardo a049a0d4bc Android: Remove unused refreshScreenshotAtPosition interface method 2023-02-25 11:17:16 -05:00
Charles Lombardo 5957d85178 Android: Create AutofitGridLayoutManager
Extends GridLayoutManager to make span changes much more responsive.
2023-02-25 11:17:16 -05:00
JosJuice ae5311d6e6 PowerPC: Rework CPUThreadGuard handling in Expression.cpp
See https://github.com/dolphin-emu/dolphin/pull/11554#discussion_r1113949572.
2023-02-25 16:13:34 +01:00
Dentomologist d18735e82e Qt/WiimoteControllersWidget: Add bluetooth unavailable message 2023-02-24 14:30:43 -08:00
Admiral H. Curtiss 1ed0e014cd
Migrate non-destructive calls of File::CopyDir() to File::Copy(). 2023-02-24 20:32:19 +01:00
Admiral H. Curtiss 884917a6d5
Common/FileUtil: Use non-throwing overload of is_directory() in CreateDir() and CreateFullPath(). 2023-02-24 20:32:19 +01:00
Admiral H. Curtiss e479f92418
Common/FileUtil: Add CreateDirs() function as a wrapper around std::filesystem::create_directories(). 2023-02-24 20:32:18 +01:00
Admiral H. Curtiss 616d57e7fc
Common/FileUtil: Add Copy() function as a wrapper around std::filesystem::copy(). 2023-02-24 20:32:18 +01:00
iwubcode 5d571b068f VideoBackends: rework d3d11 to specify samplers/bound textures using a bitset with a constant size, instead of hardcoding each individual enumeration value 2023-02-24 11:32:48 -06:00
Shawn Hoffman 2c2fb869a2 use std-provided randomness for JitArm64 unittests
decreases runtime significantly and lessens dependency on mbedtls
2023-02-22 12:55:12 -08:00
Admiral H. Curtiss e52aa52a66
Common/FileUtil: Rename Copy() to CopyRegularFile().
This is to clarify that it can only copy files, not folders.
2023-02-22 11:43:58 +01:00
Léo Lam 3c4a21315d
Merge pull request #11592 from Pokechu22/fix-delete-ticket
IOS/ES: Fix crash when deleting tickets
2023-02-21 10:53:37 +01:00
Pokechu22 f2ac3aec94 IOS/ES: Fix crash when deleting tickets
This broke formatting the system memory; see https://bugs.dolphin-emu.org/issues/13176. After calling ticket.DeleteTicket(), ticket.m_bytes was 0-length, but calling ticket.IsV1Ticket() still attempted to read from m_bytes.

This was introduced in 2fd9852ca8, although it didn't actually cause a crash until 929fba08e7.
2023-02-20 18:33:34 -08:00
JosJuice 2aedd8f568
Merge pull request #11590 from t895/unused-layout-class
Android: Remove SettingsFrameLayout
2023-02-20 23:33:07 +01:00
JosJuice 0fb9105700
Merge pull request #11408 from t895/coil
Android: Rewrite image loading with Kotlin and Coil
2023-02-20 20:51:36 +01:00
Charles Lombardo 0638e08989 Android: Remove SettingsFrameLayout 2023-02-20 14:11:08 -05:00
Mai 6f21ce7d95
Merge pull request #11555 from CookiePLMonster/wil-todos
Address WIL todos in UICommon.cpp
2023-02-20 10:14:49 -05:00
Charles Lombardo 28faca63a6 Android: Replace Glide with Coil image loading 2023-02-20 00:38:24 -05:00
Admiral H. Curtiss 4e6c89fbfd
Qt/CodeViewWidget: Don't read PC in Update() if we don't have a CPU thread guard. 2023-02-20 03:10:12 +01:00
Admiral H. Curtiss ef1520c2c6
Qt/CodeViewWidget: Don't try to pause emulator in Update() if we happen to be on a breakpoint. 2023-02-20 02:56:04 +01:00
Seeky 4e6e510003
Debugger: Add string comparison to conditional breakpoints. 2023-02-20 01:40:33 +01:00
JosJuice f2be35c7cd VideoCommon: Reword the unknown opcode error message
When faced with this error, users often don't try disabling dual core,
even though the error message suggests it. Perhaps the message is just
too long and lists too many things?

To try to improve the situation, I'm rewording the message and making it
say different things depending on what settings you are using.
2023-02-19 16:35:28 +01:00
JosJuice 78c53bfec8 Jit64: Fix the offsetAddedToAddress correction
The LEA that the signal handler is trying to undo the effects of is a
32-bit instruction, and the value in the register prior to the LEA is
also 32-bit, so the signal handler should use a 32-bit write.

(Actually, in the end this doesn't really matter, because the first
instruction that reads this value after backpatching is also a 32-bit
instruction...)
2023-02-18 21:14:31 +01:00
JosJuice e65167f9cd
Merge pull request #11521 from t895/adjust-grid-options
Android: Simplify the grid options dialog fragment
2023-02-18 15:42:46 +01:00
Admiral H. Curtiss 8db35e6d04
Merge pull request #11578 from Pokechu22/memory-leaks-feb-2023
Fix various memory leaks
2023-02-18 13:56:34 +01:00
Pokechu22 c94aacc968 AudioPane: Fix inconsistent initial state of audio stretching labels
This resulted in the labels being solid black even when audio stretching is disabled the first time the settings are opened, but then properly being greyed out after changing a setting (even the audio backend or DSP emulation engine, not just whether audio stretching is enabled).
2023-02-17 18:51:41 -08:00
Pokechu22 f1f3fd5d9d InputCommon: Fix memory leak in ExpressionParser
We allocate in MakeSuppressor via `return unique_ptr(std::make_unique<...>(...).release(), InvokingDeleter{}`, so it wasn't properly getting freed.
2023-02-17 18:29:36 -08:00
Pokechu22 b6d476241a CodeViewWidget: Fix memory leak
Per https://doc.qt.io/qt-6/qabstractitemview.html#setItemDelegateForColumn setItemDelegateForColumn does not take ownership of the parameter, so it was not being deleted. Specifying a parent to QObject (via QStyledItemDelegate's constructor) will allow it to automatically be deleted, per https://doc.qt.io/qt-6/objecttrees.html. The other instance of a QItemDelegate in IOWindow.cpp already used this.
2023-02-17 18:29:32 -08:00
Pokechu22 1c5e223532 MemoryViewWidget: Fix memory leaks
bp_item/row_item/item were never deleted, and the normal Qt ownership system wasn't applying to them because they were being cloned.
2023-02-17 18:17:01 -08:00
Admiral H. Curtiss 74abf48234
Merge pull request #11576 from yannhodiesne/convert-prevent-file-deletion
Check the input and destination paths before converting a game file onto itself
2023-02-17 18:49:15 +01:00
Markus Wick b381df700c
Merge pull request #11577 from JosJuice/android-armeabi-v7a
Android: Fix armeabi-v7a build
2023-02-17 17:57:38 +01:00
JosJuice 90b676d368 Android: Fix armeabi-v7a build
This very much isn't a build configuration that we're going to ship,
but I want to be able to tell people that they can build it on their
own if they really want to see how terribly it performs :)

Just like before, you'll need to edit two lines in app/build.gradle to
define ENABLE_GENERIC=ON and actually enable armeabi-v7a if you want an
armeabi-v7a build. This commit just fixes some compilations errors that
crop up if you do so.
2023-02-17 16:58:24 +01:00
Yann Hodiesne 49e897422f
Use a success count instead of files count 2023-02-17 15:49:31 +01:00
Yann Hodiesne cb42a03299
Check the input and destination paths before converting a game file onto itself
Before these changes you could tell Dolphin to convert a game file into the same format it is already in, leading to the FileDialog using the input path as the default destination path
An unsuspecting user could then click Save and Dolphin would try to convert the input file by writing the destination file on top of it... leading to an I/O error and the input file being entirely removed
2023-02-17 14:26:50 +01:00
Scott Mansell 28331c5905
Merge pull request #11574 from K0bin/val-fix
VideoBackends:Vulkan: Fix printing validation errors
2023-02-17 14:52:45 +13:00
Admiral H. Curtiss 0c48324c75
Jit64: Use 5 byte jump in mtmsr for the CP interrupt check.
WriteExternalExceptionExit() can write more than the maximum offset of the small jump.
2023-02-16 19:26:19 +01:00
Robin Kertels 2695666e6d
VideoBackends:Vulkan: Fix printing validation errors 2023-02-16 17:53:15 +01:00
Scott Mansell 6038a6e2db
Merge pull request #11569 from Hibyehello/patch-1
VideoBackend: Make Metal Default on MacOS
2023-02-16 21:08:35 +13:00
Pokechu22 74a14c7d1f ControllerInterface: Fix uninitialized variables in DualShockUDPClient
Strangely, this case did not trigger a C26495 warning in Visual Studio's analyzer; instead, I spotted this when using Valgrind.
2023-02-15 19:23:47 -08:00
Pokechu22 67381cdb8b VideoCommon: Remove unused ShutdownImGui function declaration
This was moved to the ~OnScreenUI() destructor in 0d4537d60f.
2023-02-15 19:20:59 -08:00
Pokechu22 8802f96b7e Fix uninitialized variable warnings (C26495) 2023-02-15 19:18:39 -08:00
Charles Lombardo 8d16aed581 Android: Convert UserDataActivity to Kotlin 2023-02-15 18:50:33 -05:00
Josh cd38ed76e2
Keep Vulkan precedence over OpenGL 2023-02-15 12:22:56 -06:00
Josh 546a016dc8
VideoBackend: Make Metal Default on MacOS 2023-02-15 12:05:54 -06:00
SMarioMan 301e97f7f7
Remove WinAPI-specific type from socket request 2023-02-15 09:29:21 -05:00
SMarioMan a45f6d9438
Enable broadcast permissions in socket requests 2023-02-15 07:59:38 -05:00
Admiral H. Curtiss c36994a90d
Add unit test for File::CreateFullPath(). 2023-02-15 02:56:10 +01:00
Admiral H. Curtiss 0758e00cfe
Common/FileUtil: Revert behavior of CreateFullPath().
This was accidentally changed in 7e6436db34.
2023-02-15 02:21:50 +01:00
Admiral H. Curtiss 661b74f4a3
Merge pull request #11564 from JosJuice/jitarm64-cmp-order
JitArm64: Fix special cases of cmp
2023-02-14 20:19:07 +01:00
Admiral H. Curtiss e1d3237dbd
Merge pull request #11342 from TellowKrinkle/GLLayerMac
VideoCommon: Fix stereoscopic 3D on OpenGL < 4.3 (macOS)
2023-02-14 20:17:22 +01:00
JosJuice 0049a76775 JitArm64: Fix special cases of cmp
This fixes a regression from 592ba31. When `a` was a constant 0 and `b`
was a non-constant 0x80000000, the 32-bit negation operation would
overflow, causing an incorrect result. The sign extension needs to happen
before the negation to avoid overflow.

Note that I can't merge the SXTW and NEG into one instruction.
NEG is an alias for SUB with the first operand being set to ZR,
but "SUB (extended register)" treats register 31 as SP instead of ZR.

I've also changed the order for the case where `a` is a constant
0xFFFFFFFF. I don't think the order actually affects correctness here,
but let's use the same order for all the cases since it makes the code
easier to reason about.
2023-02-14 19:16:00 +01:00
Admiral H. Curtiss 22ed084209
Merge pull request #11563 from JosJuice/host-lock-cpu-fixups
Follow-up fixes for "Properly lock CPU before accessing emulated memory"
2023-02-14 19:04:21 +01:00
JosJuice 5b6784432c Follow-up fixes for "Properly lock CPU before accessing emulated memory" 2023-02-14 18:44:16 +01:00
TellowKrinkle f25a0b43b6 VideoCommon: Fix stereoscopic 3D on OpenGL < 4.3 (macOS) 2023-02-14 18:25:33 +01:00
Pokechu22 4f6ce51d69 VideoCommon: Clear blend configuration if color/alpha update disabled
This works around an Intel driver bug where, on D3D12 only, dual-source blending behaves incorrectly if the second source is unused on. This bug is visible in skyboxes in Super Mario Sunshine, which first draw clouds and sun flare in greyscale and then draw the sky afterwards with a source factor of 1 and a dest factor of 1-src_color (this results in the clouds being tinted blue). This process is done on an RGB888 framebuffer, so alpha update is disabled. (Color update is enabled; note that if you look at this in Dolphin's fifo analyzer, it won't be enabled because they use the BP mask functionality to only change the blending functions and not alpha/color update, for whatever reason.)
2023-02-13 18:22:41 -08:00
Admiral H. Curtiss 5f929d00eb
Merge pull request #11560 from phire/EventHook_construct_on_first_use
HookableEvent: Switch to construct on first use
2023-02-14 01:01:03 +01:00
Admiral H. Curtiss 34a459bed7
Merge pull request #11445 from JosJuice/jit64-wraparound-backpatch
Jit64: Properly handle backpatching overflowed address calculations
2023-02-14 01:00:13 +01:00
Admiral H. Curtiss 3458c58c7d
Merge pull request #11503 from JosJuice/ppcanalyst-read-cr
PPCAnalyst: Actually check if instructions want CR
2023-02-14 00:55:24 +01:00
Admiral H. Curtiss e2d7b6d079
Merge pull request #11559 from Pokechu22/cache-fix-plru-updates
PPCCache: Update PLRU on any cache access
2023-02-14 00:50:54 +01:00
Admiral H. Curtiss 8f91cb62e6
Merge pull request #11426 from shuffle2/stdfs
fileutil: use std::filesystem
2023-02-14 00:50:34 +01:00
Admiral H. Curtiss e1dbea3658
JIT: Fix calls to HLE::Execute.
This got broken in 7cecb28bdf.
2023-02-13 11:47:47 +01:00
Scott Mansell 05181f6b88 HookableEvent: Switch to construct on first use
A registration might happen during static initialization, which opens
us up to issues with ordering of static initialization.
2023-02-13 18:48:43 +13:00
Scott Mansell 1fc5d37fd2
Merge pull request #11558 from Pokechu22/vertex-loader-size-assertion-details
VertexLoader: Add more info to m_vertex_size == m_src_ofs assertion
2023-02-13 17:34:04 +13:00
Pokechu22 cc411c4e41 VertexLoader: Add more info to m_vertex_size == m_src_ofs assertion 2023-02-12 20:10:38 -08:00
Pokechu22 14c4f4e7f6 PPCCache: Update PLRU on any cache access
The previous code only updated the PLRU on cache misses, which made it so that the least recently inserted cache block was evicted, instead of the least recently used/hit one.

This regressed in 9d39647f9e (part of #11183, but it was fine in e97d380437), although beforehand it was only implemented for the instruction cache, and the instruction cache hit extremely infrequently when the JIT or cached interpreter is in use, which generally keeps it from behaving correctly (the pure interpreter behaves correctly with it).

I'm not aware of any games that are affected by this, though I did not do extensive testing.
2023-02-12 19:59:19 -08:00
Scott Mansell a4729a026f
Merge pull request #11554 from JosJuice/host-lock-cpu
DolphinQt: Properly lock CPU before accessing emulated memory
2023-02-13 16:08:36 +13:00
Scott Mansell f37113204f
Merge pull request #11550 from iwubcode/set_common_samplers_count
VideoCommon: add constant value for maximum number of pixel samplers
2023-02-13 16:05:51 +13:00
Scott Mansell 2c24d07837
Merge pull request #11538 from t895/disc-speed-stuff
Rename "Speed up Disc Transfer Rate" to "Emulate Disc Speed"
2023-02-13 15:46:56 +13:00
Charles Lombardo 0ed64b080f Rename Fast Disc Speed to Emulate Disc Speed and invert option 2023-02-12 16:20:38 -05:00
Charles Lombardo d0941342d2 Android: Expose Emulate Disc Speed 2023-02-12 16:20:38 -05:00
Admiral H. Curtiss 300d63b492
DiscIO/FileBlob: Make m_size unsigned. 2023-02-12 20:51:08 +01:00
JosJuice 611e721a4d Jit64: Properly handle backpatching overflowed address calculations
Previously we would only backpatch overflowed address calculations
if the overflow was 0x1000 or less. Now we can handle the full 2 GiB
of overflow in both directions.

I'm also making equivalent changes to JitArm64's code. This isn't because
it needs it – JitArm64 address calculations should never overflow – but
because I wanted to get rid of the 0x100001000 inherited from Jit64 that
makes even less sense for JitArm64 than for Jit64.
2023-02-12 20:48:27 +01:00
Admiral H. Curtiss c3dee1f11c
Merge pull request #11499 from iwubcode/graphics-mod-pass-base-path
VideoCommon: allow graphics mods to have access to the file path where the config exists to load additional files
2023-02-12 19:04:59 +01:00
Silent 9f3d3e2b9c
Address WIL todos in UICommon.cpp 2023-02-12 15:05:54 +01:00
JosJuice 6f0266e8de DolphinQt: Only update call stack if paused
This avoids a pseudo infinite loop where CodeWidget::UpdateCallstack
would lock the CPU in order to read the call stack, causing the CPU to
call Host_UpdateDisasmDialog because it's transitioning from running to
pausing, causing Host::UpdateDisasmDialog to be emitted, causing
CodeWidget::Update to be called, once again causing
CodeWidget::UpdateCallstack to be called, repeating the cycle.

Dolphin didn't go completely unresponsive during this, because
Host_UpdateDisasmDialog schedules the emitting of Host::UpdateDisasmDialog
to happen on another thread without blocking, but it was stopping certain
operations like exiting emulation from working.
2023-02-12 12:50:28 +01:00
JosJuice 7cecb28bdf DolphinQt: Properly lock CPU before accessing emulated memory
This fixes a problem I was having where using frame advance with the
debugger open would frequently cause panic alerts about invalid addresses
due to the CPU thread changing MSR.DR while the host thread was trying
to access memory.

To aid in tracking down all the places where we weren't properly locking
the CPU, I've created a new type (in Core.h) that you have to pass as a
reference or pointer to functions that require running as the CPU thread.
2023-02-12 11:27:50 +01:00
MayImilae 508c79a66f Rename VI Skip to VBI Skip
VI Skip was very hard to explain on the blog, so this small changes
clarifies what VI Skip is to resolve that issue.
2023-02-11 20:28:41 -08:00
iwubcode 20dc4401c5 VideoCommon: pass a graphics mod base path to the graphics mod, so it can lookup other relative files if necessary 2023-02-11 00:21:40 -06:00
Admiral H. Curtiss 2f6e7d497d
ENetUtil: Add check for valid socket in SendPacket(). 2023-02-10 19:32:40 +01:00
Admiral H. Curtiss 9b5c52ad8d
Merge pull request #11541 from Pokechu22/dsptool-no-redefine-label
DSPTool: Fix missing error when redefining labels
2023-02-10 11:02:36 +01:00
Admiral H. Curtiss 3c2933cad2
Merge pull request #11549 from Pokechu22/texturecachebase-bitset-include
TextureCacheBase: Remove unused bitset include
2023-02-10 10:55:07 +01:00
JMC47 258151fe5a
Merge pull request #11523 from degasus/OGL_KHR_subgroup
VideoBackend/OGL: Prefer KHR_shader_subgroup over NV_shader_thread.
2023-02-10 04:47:20 -05:00
iwubcode af313f8419 VideoCommon: add constant value to set the allowed maximum number of pixel samplers 2023-02-10 00:46:11 -06:00
Pokechu22 3024ca2146 Suppress memcpy writing to an object with no trivial copy-assignment warnings
We need to copy padding in most of these cases, and the objects are trivially copyable; however, BitField prevents trivial copy-assignment.
2023-02-09 16:23:49 -08:00
Pokechu22 ac7a17579e BreakPoints: Fix shadowing warning 2023-02-09 16:23:02 -08:00
Pokechu22 3bd655463d MemoryViewWidget: Fix warning: enumeration value ‘Null’ not handled in switch [-Wswitch] 2023-02-09 16:23:02 -08:00
Pokechu22 5c8d8383e2 CodeWidget: Fix shadowing warning 2023-02-09 16:23:02 -08:00
Pokechu22 470115fd4f TextureDecoder: Fix warning: array subscript has type ‘char’ [-Wchar-subscripts] 2023-02-09 16:23:02 -08:00
Pokechu22 debed35c10 State: Fix shadowing warnings 2023-02-09 16:23:02 -08:00
Pokechu22 9559c45cae CommandProcessor: Fix shadowing warnings 2023-02-09 16:23:02 -08:00
Pokechu22 f1b1f5c013 IOS: Fix shadowing warnings 2023-02-09 16:23:02 -08:00
Pokechu22 8d71f542cb Boot: Fix shadowing warning 2023-02-09 16:23:02 -08:00
Pokechu22 39c5d55f03 VertexLoaderBase: Fix shadowing warning 2023-02-09 16:23:02 -08:00
Pokechu22 95bee485c9 GraphicsModManager: Fix shadowing warning 2023-02-09 16:23:02 -08:00
Pokechu22 7fafb00561 InputCommon/XInput2: Fix shadowing warning 2023-02-09 16:23:02 -08:00
Pokechu22 edcc4a6578 AudioInterface: Fix warning: declaration of ‘state’ shadows a previous local 2023-02-09 16:23:02 -08:00
Pokechu22 8ad7d58303 DSP: Fix warning: declaration of ‘state’ shadows a previous local 2023-02-09 16:23:02 -08:00
Pokechu22 24df509447 DVDInterface: Fix warning: declaration of ‘state’ shadows a previous local 2023-02-09 16:23:02 -08:00
Pokechu22 9c52c600c4 EXI_DeviceEthernet: Fix warning: operation on ‘current_rwp’ may be undefined [-Wsequence-point] 2023-02-09 16:23:01 -08:00
Pokechu22 1465620721 GCMemcardDirectory: Fix variable shadowing warning 2023-02-09 16:23:01 -08:00
Pokechu22 c555a4f0c6 SerialInterface: Fix warning: declaration of ‘state’ shadows a previous local 2023-02-09 16:23:01 -08:00
Pokechu22 72b4675c8f VideoInterface: Fix warning: declaration of ‘state’ shadows a previous local 2023-02-09 16:23:01 -08:00
Pokechu22 49a84cbc4c Resolve various "no previous declaration" warnings 2023-02-09 16:23:01 -08:00
Pokechu22 2288ba28ae Software/Tev: Fix member shadowing warnings 2023-02-09 16:23:01 -08:00
Pokechu22 8b98dd9be3 Move s_using_custom_client to DiscordPresence.cpp
Otherwise, files that include the header get warning: ‘Discord::s_using_custom_client’ defined but not used.
2023-02-09 16:23:01 -08:00
Pokechu22 b316ce6fdd Fix warning: implicit capture of ‘this’ via ‘[=]’ is deprecated in C++20 2023-02-09 16:23:01 -08:00
Pokechu22 af5013b60f Suppress -Winvalid-offsetof for PowerPC::PowerPCState
This code doesn't need to be portable (since the goal is to have a smaller offset for x64 codegen), so if it's not supported there are other problems. Similar code exists in e.g. DSP.cpp.
2023-02-09 16:23:01 -08:00
Pokechu22 5283a85205 TextureCacheBase: Remove unused bitset include
It was used for valid_bind_points, which was removed in 88bd10cd30 (and the declaration was more recently removed in 606c18210d).
2023-02-09 16:04:48 -08:00
JMC47 a88e5ef390
Merge pull request #11498 from iwubcode/save_pipeline_config
VideoCommon: store the configuration used to create the AbstractPipeline
2023-02-09 18:38:49 -05:00
Markus Wick a38e365931
Merge pull request #11547 from JosJuice/fix-gles
OGL: Fix GLES crashing on initialization
2023-02-09 18:16:48 +01:00
JosJuice 6dfd582de6 OGL: Fix GLES crashing on initialization
Fixes a regression from PR 11522 ("Kill Renderer").
2023-02-09 18:09:03 +01:00
Markus Wick 17d7b75a9b
Merge pull request #11544 from jmallach/spng
Allow building against system libspng
2023-02-09 14:47:58 +01:00
degasus 4b2aa948e6 VideoBackend/OGL: Prefer KHR_subgroup over NV_shader_thread.
While the NV extension is totally fine, the KHR extension should be able to support more hardware.

For NVIDIA, the hardware either supports both or neither, it just needs a driver from the last two years.
For AMD, the drivers from late 2022-12 seems to bring support for the KHR extension.
For Intel, the KHR is also supported for some years.
2023-02-09 13:27:02 +01:00
iwubcode d0c6b6c9ed VideoCommon: store the configuration used to create the AbstractPipeline on the pipeline itself, so that it's easy to duplicate pipelines with slightly altered configuration 2023-02-09 02:13:53 -06:00
Scott Mansell aaad0cd39f
Merge pull request #11539 from phire/improve_workqueuethread
Various WorkQueueThread improvements
2023-02-09 20:00:04 +13:00
Scott Mansell ccf92a3e56
Merge pull request #11522 from phire/KillRendererWithFire
Kill Renderer (with phire)
2023-02-09 19:59:16 +13:00
Scott Mansell 5c1b3ac61d Hook up Presenter's ConfigChanged function
Fixes issue with post-processing not working
2023-02-09 18:36:20 +13:00
Scott Mansell 9c1fe59cc9 Insert a more solid abstraction between Qt and Imgui 2023-02-09 18:36:20 +13:00
Scott Mansell b2a31103b4 Presenter: Handle blanked frames correctly 2023-02-09 18:36:20 +13:00
Scott Mansell 83b7b01265 Fix XFB duplicate detection
Frame duplicate detection was inverted. Huge problem for 60fps games
where it would see all frames as "duplicates" and nothing would ever be
presented.
2023-02-09 18:36:20 +13:00
Scott Mansell d3ddd96cee Make sure m_prev_efb_format is initilized 2023-02-09 18:36:20 +13:00
Scott Mansell 59a4b026f6 Better documentation for HookableEvent. 2023-02-09 18:36:20 +13:00
Scott Mansell 8c8bd0e7ac Rename to HookableEvent. Because naming conflict 2023-02-09 18:36:20 +13:00
Scott Mansell 60f2b5af7b Apply suggestions from code review
Co-authored-by: Mai <mathew1800@gmail.com>
Co-authored-by: BhaaL <bhaalsen@gmail.com>
Co-authored-by: iwubcode <iwubcode@users.noreply.github.com>
2023-02-09 18:36:20 +13:00
Scott Mansell e0a1631659 Add comment about "end of frame" 2023-02-09 18:36:20 +13:00
Scott Mansell 43b6a49012 Apply suggestions from code review
Co-authored-by: Mai <mathew1800@gmail.com>
2023-02-09 18:36:20 +13:00
Scott Mansell 05fad53fa0 Update STATE_VERSION
Co-authored-by: BhaaL <bhaalsen@gmail.com>
2023-02-09 18:36:20 +13:00
Scott Mansell e2de281897 Make sure pixel shaders pick up Initial EFB Scale 2023-02-09 18:36:20 +13:00
Scott Mansell cf9a6f8477 Lint fixes 2023-02-09 18:36:20 +13:00
Scott Mansell f7ad825736 fix fbdev 2023-02-09 18:36:20 +13:00
Scott Mansell 628af9d564 Fix builds with FFMPEG disabled 2023-02-09 18:36:20 +13:00
Scott Mansell 4422af1272 Cleanup headers 2023-02-09 18:36:20 +13:00
Scott Mansell 5803786beb Move UseVertexDepthRange() out of Renderer
There wasn't really a good place for it, but this will do
2023-02-09 18:36:20 +13:00
Scott Mansell 2cfc02a116 Move m_prev_efb_format into FramebufferManager 2023-02-09 18:36:20 +13:00
Scott Mansell 9b5397abdb Move WidescreenHeuristic to it's own class
It's about the only thing left in renderer
2023-02-09 18:36:20 +13:00
Scott Mansell 31cfe8250d Lint fixes 2023-02-09 18:36:20 +13:00
Scott Mansell 11de923dcb Move xfb tracking and IR scaling out of RenderBase 2023-02-09 18:36:20 +13:00
Scott Mansell e009002411 Refactor ClearRegion
And fix bug where opengl was getting the wrong coordinates
2023-02-09 18:36:20 +13:00
Charles Lombardo e6583f8bec Android: Convert image loading code to Kotlin 2023-02-08 19:34:27 -05:00
Jordi Mallach 4d164fcb77 Allow building against system libspng 2023-02-06 13:30:46 +01:00
Joshua de Reeper e0b3dd0dcf Remove Imaginators Skylanders from list
Add Vicarious Visions variant
2023-02-06 15:16:06 +13:00
Admiral H. Curtiss ca0b61be91
Merge pull request #11459 from OatmealDome/steam-user-dir
CommonPaths: Add Steam-specific user directory and clean up
2023-02-05 23:52:41 +01:00
Scott Mansell 2ff155f742 Optimise cond_var predicate order
m_items.empty() is by far the most likely reason for a notification.
2023-02-05 17:20:00 +13:00
Scott Mansell 271ffde71d Prevent WaitForCompletion shutdown deadlock.
Adjust shutdown order to prevent potential deadlocks
when one thread calls Shutdown, and another calls WaitForCompletion.
2023-02-05 17:17:16 +13:00
Scott Mansell 9c012b09b3 Address review feedback 2023-02-05 16:52:53 +13:00
Pokechu22 a244cb868b DSPTool: Fix missing error when redefining labels
The logging was broken in 958cbf38a4 (DSPTool doesn't use dolphin's logging system, so it just produced nothing; the same thing affected comparing before 693a29f8ce).

AssemblerError::LabelAlreadyExists (previously ERR_LABEL_EXISTS) simply was never used.
2023-02-04 17:31:06 -08:00
Scott Mansell 7c4fcc30a3 WorkQueueThread: provide name and function at same time 2023-02-04 15:56:27 +13:00
Scott Mansell 6594532f10 WorkQueueThread: rework Cancel/Shutdown workflow
- Cancel doesn't shut down anymore.
   Allowing it to be used multiple times thoughout the life of
   the WorkQueue
 - Remove Clear, so we only have Cancel semantics
 - Add IsCancelling so work items can abort early if cancelling
 - Replace m_cancelled and m_thread.joinable() guars with m_shutdown.
 - Rename Flush to WaitForCompletion (As it's ambiguous if a function
   called flush should be blocking or not)
 - Add documentation
2023-02-04 14:58:12 +13:00
Scott Mansell acdb0c5be1 WorkQueueThread: Implement thread name
Otherwise we will end up with a dozen threads named "WorkQueueThread"
2023-02-04 14:58:12 +13:00
Robin Kertels 94a0c50bf8 WorkQueueThread: Rework without Flags/Events 2023-02-04 14:31:16 +13:00
Robin Kertels 9affbfe683 WorkQueueThread: Implement proper Flush
and rename the existing Flush to FlushOne.
2023-02-04 14:31:16 +13:00
Robin Kertels 9badcc6eb8 WorkQueueThread: Add Push 2023-02-04 14:31:16 +13:00
Scott Mansell 512273a507 WorkQueueThread: Add flush capability 2023-02-04 14:31:16 +13:00
Sam Belliveau 4a97dc7c81 Let VI Skip work if variance > fallback 2023-02-02 20:59:17 -05:00
Sam Belliveau 87d5d39dfe Set VI Skip Activation to Half The Audio Buffer 2023-02-02 20:55:13 -05:00
Joshua de Reeper 680db55239 Android: Add Skylanders Portal
Co-Authored-By: Charles Lombardo <clombardo169@gmail.com>
2023-02-02 21:16:14 +13:00
Pierre Bourdon c92de420ef
lint: update to clang-format-13 2023-02-02 04:56:08 +01:00
Admiral H. Curtiss 69b178e95f
Merge pull request #11157 from h3xx/use-gnuinstalldirs
Use GNUInstallDirs for installation paths
2023-02-01 19:35:46 +01:00
Admiral H. Curtiss e55a0f4fff
Merge pull request #11495 from OatmealDome/android-cmake
Android: Don't enforce a particular CMake version
2023-02-01 19:35:09 +01:00
Charles Lombardo 2ec7577788 Android: Fix settings being editable when marked otherwise 2023-02-01 00:51:48 -05:00
OatmealDome 234de8af09 UICommon: Don't check the registry key or use the old user directory path on Windows builds for Steam 2023-01-31 17:57:09 -05:00
OatmealDome 7240290382 CommonPaths: Add Steam-specific user directory 2023-01-31 17:57:09 -05:00
OatmealDome 59a44bea50 CommonPaths: Split platform-specific definitions for user directories into two blocks 2023-01-31 17:57:09 -05:00
OatmealDome af33d4f13f CommonPaths: Split PORTABLE_USER_DIR into "portable" and "embedded" to accomodate macOS 2023-01-31 17:57:09 -05:00
OatmealDome 7f962a4146 UICommon: Use NORMAL_USER_DIR for Windows 2023-01-31 17:57:09 -05:00
OatmealDome 5e3d77adae CommonPaths: Rename DOLPHIN_DATA_DIR to NORMAL_USER_DIR 2023-01-31 17:57:08 -05:00
OatmealDome 846eef2a05 CommonPaths: Rename USERDATA_DIR to PORTABLE_USER_DIR 2023-01-31 17:57:08 -05:00
Pierre Bourdon 2a2ee5d543
Merge pull request #11434 from momocaoo/graphics-mod-folder-button
DolphinQt: Add button to open graphics mod folder on settings
2023-01-31 14:35:21 +01:00
Scott Mansell e98ab0784d
Merge pull request #11501 from iwubcode/abstract_texture_load_specify_layer
VideoBackends: add a way to load data into a specific level AND layer
2023-02-01 00:03:59 +13:00
Scott Mansell c6b851c2b6
Merge pull request #11506 from phire/cmake_fixes
CMake/MSVC fixes
2023-01-31 23:53:31 +13:00
Scott Mansell 12431a83ba
Merge pull request #11435 from techydude0713/wc24-utc-fix
NetKDTime: Use UTC based timestamp instead of localtime.
2023-01-31 23:40:15 +13:00
Scott Mansell 6bb2e4d706 CMake/MSVC: Fix warnings about conflicting /Zi and /Z7 2023-01-31 23:21:07 +13:00
Scott Mansell 854a73dee0 CMake/MSVC: Fix PCH disabled build 2023-01-31 23:21:07 +13:00
Scott Mansell 1956ce151f Cmake/MSVC: Fix Qt6 discover for IDEs other than Visual Studio
CMakeSettings.json is a Visual Studio only extention to cmake that isn't
supported anywhere else. Not even Visual Studio Code.

So we set CMAKE_PREFIX_PATH inside DolphinQt's CMakeLists.txt instead.
2023-01-31 23:19:46 +13:00
OatmealDome 0f037a1af8
Merge pull request #10864 from TellowKrinkle/BetterLogicBlend
VideoCommon: Better logic op invert approximation
2023-01-31 01:55:55 -05:00
Scott Mansell b753641dd4 Add some descriptions to new classes 2023-01-31 19:41:24 +13:00
Scott Mansell abfc75f362 Cleanup headers 2023-01-31 19:41:24 +13:00
Scott Mansell ec8f46b02c Expose Renderer's Framecount
We don't want to move it, because we want to complete
this refactor without changing savestate version
2023-01-31 19:41:24 +13:00
Scott Mansell 3be63221c7 Renderer still needs to track swaps for savestates 2023-01-31 19:41:24 +13:00
Scott Mansell 3ae78b8e76 Also use events for config changed 2023-01-31 19:41:24 +13:00
Scott Mansell 0da69055d9 Split out everying remaining from Swap 2023-01-31 19:41:24 +13:00
Scott Mansell 2a18b34a73 Wire up frame before/after events 2023-01-31 19:41:24 +13:00
Scott Mansell 154cb4f722 Introduce an Event system to VideoCommon
A lot of the remaining complexity in Renderer is the massive Swap function
which tries to handle a bunch of FrameBegin/FrameEnd events.

Rather than create a new place for it. This event system will try
to distribute it all over the place
2023-01-31 19:41:24 +13:00
Scott Mansell d6cd8de1a7 Delete unused EFBHasAlphaChannel function 2023-01-31 19:41:24 +13:00
Scott Mansell 9d125a6e43 Move ConfigChanged out of RenderBase
There is this nice VideoConfig file that's perfect for it
2023-01-31 19:41:24 +13:00
Scott Mansell ca5ec13e13 Move GraphicsMod out of RenderBase 2023-01-31 19:41:24 +13:00
Scott Mansell 55d15bdd6e Move utiltily drawing out of RenderBase 2023-01-31 19:41:24 +13:00
Scott Mansell 99d3e489ea Move BoundingBox out of RenderBase
They were essentially just pass-though methods
2023-01-31 19:41:24 +13:00
Scott Mansell 35a69cb1bb Fix missing include 2023-01-31 19:41:24 +13:00
Scott Mansell 8ad59f8ccf Add AbstractGfx for DX12 2023-01-31 19:41:24 +13:00
Scott Mansell 5a2d119bda Implement AbstractGfx for Dx11 2023-01-31 19:41:24 +13:00
Scott Mansell 8bc8e43dd6 Add virtual Initialize() to PerfQueryBase
Both DX12 and Vulkan already had one.
2023-01-31 19:41:24 +13:00
Scott Mansell 3c73707dfe Fix dead code. 2023-01-31 19:41:24 +13:00
Scott Mansell eaae5b4a45 Implement AbstactGfx for Metal 2023-01-31 19:41:24 +13:00
Scott Mansell 89d9ec0a84 Fix warning 2023-01-31 19:41:24 +13:00
Scott Mansell b007b8e104 Replace BeginUI/EndUI 2023-01-31 19:41:24 +13:00
Scott Mansell 18c799f0b6 Present: Set surface info before initializing ImGui
Otherwise you get subtle bugs in vulkan that take hours to track down.
2023-01-31 19:41:24 +13:00
Scott Mansell 06ae08ca8b Fix misnamed local variable 2023-01-31 19:41:24 +13:00
Scott Mansell f158ff300b Handle VideoSoftware's present fallback better
Not a good idea to abuse bSupportsPostProcessing
2023-01-31 19:41:24 +13:00
Scott Mansell 26e00c3bb4 Fix warning about using & with bools 2023-01-31 19:41:23 +13:00
Scott Mansell 74d3b3443a Fix warning about compare sign mismatch 2023-01-31 19:41:23 +13:00
Scott Mansell 8f5b196019 Minimise include polution from RenderState 2023-01-31 19:41:23 +13:00
Scott Mansell 2a2014af09 Implement AbstractGfx for Vulkan 2023-01-31 19:41:23 +13:00
Scott Mansell 58b70b2fb2 Don't set common globals from Video Backends 2023-01-31 19:41:23 +13:00
Scott Mansell d37f83ffeb Implement AbstractGfx for Software & Null 2023-01-31 19:41:23 +13:00
Charles Lombardo be8cbe3c66
Merge pull request #11513 from JosJuice/android-scaled-int-setting
Android: Create ScaledIntSetting class
2023-01-31 01:05:36 -05:00
Scott Mansell f0336a3129 Implement AbstractGfx for OpenGL
Mostly involves moving contents of OGLRender
to OGLGfx and OGLConfig
2023-01-31 18:46:04 +13:00
Scott Mansell 8a23629345 Split AbstractGfx out of Renderer
Almost all the virtual functions in Renderer are part of dolphin's
"graphics api abstraction layer", which has slowly formed over the
last decade or two.

Most of the work was done previously with the introduction of the
various "AbstractX" classes, associated with texture cache cleanups
and implementation of newer graphics APIs (Direct3D 12, Vulkan, Metal).
We are simply taking the last step and yeeting these functions out
of Renderer.

This "AbstractGfx" class is now completely agnostic of any details
from the flipper/hollywood GPU we are emulating, though somewhat
specialized.

(Will not build, this commit only contains changes outside VideoBackends)
2023-01-31 18:46:02 +13:00
Scott Mansell e57eb04ed3 Rename FrameDump.{cpp,h} to FrameDumpFFMpeg.{cpp,h}
The name kind of conflicts with a new FrameDumper class
2023-01-31 18:45:29 +13:00