Commit Graph

237 Commits

Author SHA1 Message Date
72cf2bdb87 Audit uses of IsRunning and GetState
Some pieces of code are calling IsRunning because there's some
particular action that only makes sense when emulation is running, for
instance showing the state of the emulated CPU. IsRunning is appropriate
to use for this. Then there are pieces of code that are calling
IsRunning because there's some particular thing they must avoid doing
e.g. when the CPU thread is running or IOS is running. IsRunning isn't
quite appropriate for this. Such code should also be checking for the
states Starting and Stopping. Keep in mind that:

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

This commit adds a new method Core::IsUninitialized, and changes all
callers of IsRunning and GetState that look to me like they should be
changed.
2024-06-21 20:52:55 +02:00
22aa88109f Use a stub AchivementManager when USE_RETRO_ACHIEVEMENTS isn't defined
This lets us reduce the number of USE_RETRO_ACHIEVEMENTS ifdefs in the
code base, reducing visual clutter. In particular, needing an ifdef for
each call to IsHardcodeModeActive was annoying to me. This also reduces
the risk that someone writes code that accidentally fails to compile
with USE_RETRO_ACHIEVEMENTS disabled.

We could cut down on ifdefs even further by making HardcodeWarningWidget
always exist, but that would result in non-trivial code ending up in the
binary even with USE_RETRO_ACHIEVEMENTS disabled, so I'm leaving it out
of this PR. It's not a lot of code though, so I might end up revisiting
it at some point.
2024-06-06 08:26:20 +02:00
de9326bd53 InterfacePane: Add BalloonTip to user style combobox 2024-05-31 19:10:30 +02:00
33b64d6c91 InterfacePane: Add BalloonTip to cursor visible radio buttons 2024-05-31 19:09:00 +02:00
a581fa2bfa InterfacePane: Add BalloonTip to lock mouse checkbox 2024-05-31 19:07:33 +02:00
9ed1688d09 InterfacePane: Add BalloonTip to pause on focus lost checkbox 2024-05-31 19:06:50 +02:00
14f01bb12c InterfacePane: Add BalloonTip to show active title checkbox 2024-05-31 19:06:11 +02:00
c5532b19e6 InterfacePane: Add BalloonTip to enable on-screen display checkbox 2024-05-31 19:05:35 +02:00
16cdd0a961 InterfacePane: Add BalloonTip to use panic handlers checkbox 2024-05-31 19:04:57 +02:00
dc15a555c9 InterfacePane: Add BalloonTip to confirm on stop checkbox 2024-05-31 19:04:18 +02:00
d1ac66824e InterfacePane: Add BalloonTip to disable screensaver checkbox 2024-05-31 19:03:19 +02:00
26758716ae InterfacePane: Add BalloonTip to use covers checkbox 2024-05-31 19:01:43 +02:00
78ab53a6e4 InterfacePane: Add BalloonTip to focused hotkeys checkbox 2024-05-31 19:01:03 +02:00
afe5bfd512 InterfacePane: Add BalloonTip to debugging enabled checkbox 2024-05-31 18:59:24 +02:00
7d704ca9ca InterfacePane: Add BalloonTip to language combobox 2024-05-31 18:57:28 +02:00
266bbeefc8 InterfacePane: Add BalloonTip to top window checkbox 2024-05-31 18:52:22 +02:00
55aaa323ec InterfacePane: Add BalloonTip to theme combobox 2024-05-31 18:52:13 +02:00
ae0914174f InterfacePane: Add BalloonTip to title database checkbox 2024-05-31 18:25:47 +02:00
626369fc00 DolphinQt/Settings/GeneralPane: Don't emit a ConfigChanged signal while saving config
Doing this causes the settings to be reloaded before they're done saving, effectively discarding the user's changes.
2024-05-18 15:45:10 +02:00
2328539a76 Add Discord Presence setting to Achievement Settings dialog
Setting is only enabled when Rich Presence is enabled. Toggling either Rich Presence or Discord Presence will immediately update the Discord status.
2024-05-08 07:08:31 -04:00
c23562b7b5 Merge pull request #12695 from mitaclaw/core-global-system-4
Core::IsRunning: Avoid Global System Accessor
2024-05-04 05:15:35 +02:00
ad969dfc0d Disabled Hardcore Mode when Achievements disabled
Bugfix for hardcore-disabled items being disabled when hardcore was true but achievement integration was false, which should mean hardcore is effectively disabled. Now everything checks the IsHardcoreModeActive method in AchievementManager which processes the setting AND the game state to determine if hardcore mode is actually active.
2024-05-02 04:44:52 -04:00
0df401b164 Core::IsRunning: Avoid Global System Accessor 2024-05-01 08:54:17 -07:00
99a8849125 Qt: trigger first USB device scan without a timer
Currently the dialog makes you wait one second before it shows anything.
Instead, trigger the first scan manually.
2024-04-11 16:48:10 +02:00
eb92d6f0a8 Core::GetState: Avoid Global System Accessor 2024-04-08 16:23:23 -07:00
5d8a01cba7 respond to further review feedback 2024-03-17 18:37:55 -07:00
02deaa6748 Implement GC modem adapter
This implements the GameCube modem adapter. This implementation is stable but not perfect; it drops frames if the receive FIFO length is exceeded. This is probably due to the unimplemented interrupt mentioned in the comments. If the tapserver end of the connection is aware of this limitation, it's easily circumvented by lowering the MTU of the link, but ideally this wouldn't be necessary.

This has been tested with a couple of different versions of Phantasy Star Online, including Episodes 1 & 2 Trial Edition. The Trial Edition is the only version of the game that supports the Modem Adapter and not the Broadband Adapter, which is what made this commit necessary in the first place.
2024-03-17 18:37:55 -07:00
083116a89c rewrite tapserver interface for better error handling 2024-03-17 18:37:55 -07:00
0c364cbb4c implement tapserver BBA on all platforms
This expands the tapserver BBA interface to be available on all platforms. tapserver itself is still macOS-only, but newserv (the PSO server) is not, and it can directly accept local and remote tapserver connections as well. This makes the tapserver interface potentially useful on all platforms.
2024-03-17 18:37:55 -07:00
07c035e659 Core/SystemTimers: Refactor to class, move to System. 2024-01-04 23:35:19 +01:00
3aebbbb3e7 Disable cheats in hardcore mode
RetroAchievements does not allow cheats such as Action Replay or Gecko in hardcore mode, for fairness.
2023-12-02 16:41:17 -05:00
cb2fa9a1f2 Disable Debug Mode in hardcore mode
Debug Mode gives players direct read and write access to memory, which could be used to completely manipulate RetroAchievements logic and therefore is not allowed in hardcore mode.
2023-12-02 16:41:16 -05:00
166423ad61 Merge pull request #12273 from Dentomologist/dolphinqt_remove_unnecessary_qoverloads
DolphinQt: Remove unnecessary qOverloads
2023-11-12 19:43:05 +00:00
ed6014ddb5 DolphinQt/InterfacePane: Rework style dropdown so the built-in light/dark style can be manually selected. 2023-11-05 12:59:32 +01:00
8f55c28472 DolphinQt/Settings: Add option to force the light or dark style on Windows. 2023-11-05 12:59:32 +01:00
6d585b6eb6 DolphinQt/Settings: Split setting of the user style into two functions.
This makes it so that if you just want to reload the current style (eg. on program start, or in response to a system event), you don't need to know the name of the currently selected user style. It's also more consistent with the way the 'userstyle/enabled' flag works.
2023-11-05 12:58:11 +01:00
43e69d3e6a DolphinQt: Remove unnecessary qOverloads
qOverload is used to disambiguate pointers to overloaded functions, but
most of the usages in the code base were with non-overloaded functions.
2023-11-04 14:14:14 -07:00
b3bfcc5d7f PowerPC: Allow toggling write-back cache during emulation
Now that PR 10575 is merged, the JIT automatically clears its cache
when this setting is changed, making this reasonable to implement.
2023-10-31 19:43:49 +01:00
e7c2133160 Fixes to translatable strings 2023-08-21 16:29:52 +02:00
a34f221782 Core/PowerPC: Return AvailableCPUCores() as a std::span. 2023-08-16 19:25:03 +02:00
51f807b63a DolphinQt/AdvancedPane: Update all GUI elements from config in Update(). 2023-08-16 19:25:03 +02:00
ccee66dc80 DolphinQt/AdvancedPane: Use ConfigBool for MMU, Pause on Panic, and Write-Back Cache. 2023-08-16 19:25:03 +02:00
e2fb8fab2f DolphinQt: Set window decorations for all top-level QWidgets. 2023-08-12 16:54:54 +02:00
7e38ff496c Rename "Show Debugging UI" to "Enable Debugging UI"
This will hopefully reduce confusion on e.g. https://bugs.dolphin-emu.org/issues/13306.
2023-07-23 15:17:04 -07:00
f9f8e94e30 Add default support for WiiLink + configuration 2023-06-25 14:57:15 -04:00
get
1df482d51f Prefer static const std::regex
std::regex has a relatively expensive constructor, and these are unchanging regexes.
2023-06-08 09:39:23 -05:00
ca484c7a65 Merge pull request #11609 from AdmiralCurtiss/sd-size-select
Add SD card size option for converting folder -> file.
2023-06-02 20:52:08 +02:00
9600bf1af9 Qt/WiiPane: Add setting for SD card file size when converting. 2023-04-18 11:04:26 +02:00
get
a5d06fde4b Embrace nullptr over NULL and 0 2023-04-15 16:07:05 -05:00
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