Commit Graph

36390 Commits

Author SHA1 Message Date
Dentomologist
0a1084fad5 VideoBackendBase: Check Core state in PopulateBackendInfo
Remove the PopulateBackendInfoFromUI function, which had a single caller
(GraphicsWindow::OnBackendChanged) and checked that the core wasn't
running or starting before calling PopulateBackendInfo.

Move the core state check into PopulateBackendInfo and have
OnBackendChanged call that instead. This guarantees the check is
performed by all callers of PopulateBackendInfo, preventing
potential reintroduction of the crash fixed in 3d4ae63f if another call
to PopulateBackendInfo is added.

As of the previous commit the only other caller of PopulateBackendInfo
is Core::Init shortly before s_state is set to Starting, so it will
always pass the check and so maintain its current behavior.
2024-09-26 17:12:26 -07:00
Dentomologist
2b82c34ea8 Core: Remove redundant call to PopulateBackendInfo
Remove the second of two calls to PopulateBackendInfo during emulation
startup. This call was originally the only one, but b214e0e added an
earlier call to handle the backend being changed by the GameINI.

The PR discussion doesn't explain why the original call was left in; I
suspect it was just overlooked.

As a bonus, this removes one of the extra copies of the "Video Info" On
Screen Display message at startup when using OpenGL.
2024-09-26 17:12:26 -07:00
Dentomologist
91f7b776ca GraphicsWindow: Fix crash when opening during emulation startup
Fix a crash when opening the Graphics window for the first time during
emulation startup when the backend is Vulkan, D3D11, or D3D12.

Don't call PopulateBackendInfo() from the Host thread when the core is
starting up. First, the function has already been called in Core::Init()
so we don't need to again. More importantly, PopulateBackendInfo() calls
g_video_backend->InitBackendInfo(), and the Vulkan and D3D
implementations of those functions load and then unload libraries (and
their associated function pointers) which are potentially in use by
other threads.

This crash was reliably reproducible with the following steps:
1) Select an affected backend.
2) Enable "Compile Shaders Before Starting"
3) Delete the cached shaders (but not the .uidcache file) for the game
   you're testing.
4) Close and reopen Dolphin.
5) Start the game.
6) While the game is still booting or compiling shaders, open the
   Graphics window for the first time in that Dolphin session.

Fixes https://bugs.dolphin-emu.org/issues/13634.
2024-09-26 17:12:26 -07:00
JMC47
b1cd4a6690
Merge pull request #13068 from mitaclaw/redundant-case-insensitive
IniFile: Migrate `Common::CaseInsensitiveLess` to StringUtil
2024-09-26 18:24:36 -04:00
JMC47
d4d3acb796
Merge pull request #13065 from mitaclaw/ppc-breakpoints-signal
DolphinQt: A Ubiquitous Signal For When Breakpoints Change
2024-09-26 18:20:43 -04:00
JMC47
0d7e94e8b3
Merge pull request #13070 from mitaclaw/remove-join-strings
StringUtil: Remove `JoinStrings`
2024-09-26 18:20:14 -04:00
JMC47
4bc1546596
Merge pull request #13071 from Pokechu22/cheat-search-crash
Fix random crash when using the cheat search
2024-09-25 15:05:19 -04:00
Tillmann Karras
0a299a4e1e Sw/Tev: drop unused macro 2024-09-24 22:00:03 +01:00
Tillmann Karras
98add9faf0 Sw/Rasterizer: fix two elder typos, AD 2009 2024-09-24 22:00:03 +01:00
Pokechu22
b34b7f63ee Fix random crash when using the cheat search
Before, Dolphin would randomly crash when updating the cheat search when automatic refresh was enabled. (Having a large number of addresses listed, e.g. by starting with an "any value" search, may contribute). The crash was due to QTableWidget::item returning nullptr in RefreshGUICurrentValues, presumably due to the table being resized on the UI thread while the emulated CPU thread was updating the values. I've fixed this by pausing the CPU thread for the entirety of OnNextScanClicked; this eliminated crashes in my testing.
2024-09-23 22:47:44 -07:00
mitaclaw
5f90673686 StringUtil: Remove JoinStrings
With 12 uses of `JoinStrings` in the codebase vs 36 uses of `fmt::join`, fmtlib's range adapter for string concatenation with delimiters is clearly the preferred option.
2024-09-22 21:09:36 -07:00
JosJuice
0c1070a07b Android: Add the "Real Balance Board" setting 2024-09-22 21:51:12 +02:00
mitaclaw
508ccc2054 IniFile: Migrate Common::CaseInsensitiveLess to StringUtil
Migrating `Common::CaseInsensitiveLess` to StringUtil.h will hopefully discourage rolling one's own solution in the future for case-insensitive associative containers when this (quite robust!) solution already exists.

`Common::CaseInsensitiveStringCompare::IsEqual` was removed in favor of using the `Common::CaseInsensitiveEquals` function.

The `a.size() != b.size()` condition in `Common::CaseInsensitiveEquals` can be removed, since `std::ranges::equal` already checks this condition (confirmed in libc++).
2024-09-21 23:15:42 -07:00
mitaclaw
671958f141 GeckoCode: Remove Dead Code 2024-09-21 15:33:40 -07:00
JMC47
3b9a70a435
Merge pull request #13053 from Dentomologist/texture_dumping_show_osd_on_startup_and_toggle
Texture Dumping: Show OSD message on startup and when toggled
2024-09-21 15:17:54 -04:00
mitaclaw
4f821f4332 BreakpointWidget: Update when Host::PPCSymbolsChanged
Otherwise, outdated symbol names will remain.
2024-09-20 18:39:20 -07:00
mitaclaw
7c2a39706e DolphinQt: A Ubiquitous Signal For When Breakpoints Change
There were three distinct mechanisms for signaling breakpoint changes in DolphinQt, and the wiring had room for improvement. The behavior of these signals has been consolidated into the new `Host::PPCBreakpointsChanged` signal, which can be emitted from anywhere in DolphinQt to properly update breakpoints everywhere in DolphinQt.

This improves a few things:
- For the `CodeViewWidget` and `MemoryViewWidget`, signals no longer need to propagate through the `CodeWidget` and `MemoryWidget` (respectively) to reach their destination (incoming or outgoing).
- For the `BreakpointWidget`, by self-triggering from its own signal, it no longer must manually call `Update()` after all of the emission sites.
- For the `BranchWatchDialog`, it now has one less thing it must go through the `CodeWidget` for, which is a plus.
2024-09-20 18:37:39 -07:00
Tilka
af921685f7
Merge pull request #13035 from retroNUC/cheevo-hash
Add generation of rcheevos hash as an option in DolphinTool
2024-09-15 22:18:58 +01:00
retroNUC
a74b2a4dde Add generation of rcheevos hash to DolphinTool
Fixed coding standards issue

CalculateHash return string instead of using char array param
2024-09-15 15:52:04 +01:00
Dentomologist
694f2ee995 Graphics: Clarify relationship between incompatible settings
Explicitly state that Manual Texture Sampling disables Anisotropic
Filtering and that GPU Texture Decoding disables Arbitrary Mipmap
Detection.
2024-09-10 11:35:15 -07:00
Tilka
5fe9e2f6ed
Merge pull request #13057 from JosJuice/rvzpack-typo
DiscIO: Fix a typo in an RVZPack comment
2024-09-08 16:08:57 +01:00
JosJuice
4eec061824
Merge pull request #12813 from Geotale/interpreter-subnormal-rounding
Proper Subnormal Rounding When Interpreting
2024-09-08 14:22:02 +02:00
JosJuice
e72b23df91 DiscIO: Fix a typo in an RVZPack comment 2024-09-08 12:38:10 +02:00
JosJuice
0c1cd13b23
Merge pull request #12981 from Geotale/proper-integer-rounding
Improve Integer Rounding Accuracy
2024-09-08 12:09:58 +02:00
JMC47
2c15d7af7f
Merge pull request #12966 from Dentomologist/cheatsmanager_create_code_widgets_only_once
CheatsManager: Create Action Replay and Gecko code widgets only once
2024-09-07 15:13:18 -04:00
JosJuice
f9f832fa88
Merge pull request #13051 from mitaclaw/dead-config-code-2
SI_Device: Remove Dead Config Code
2024-09-07 13:40:34 +02:00
Tilka
2417545b63
Merge pull request #13052 from Tilka/ax
DSPHLE/AX: fix low-pass/biquad clipping
2024-09-07 11:36:06 +01:00
Dentomologist
c3d6d2189a Texture Dumping: Show OSD message on startup and when toggled
If texture dumping is enabled, notify the user on emulation startup
using an On Screen Display message.

Also notify the user when texture dumping is toggled.

Addresses https://bugs.dolphin-emu.org/issues/12445.
2024-09-06 13:00:25 -07:00
TellowKrinkle
dc6ccfb2ab VideoBackends:Vulkan: Use Vulkan 1.2 driverID to detect MoltenVK
Previously we'd assume all Apple GPUs were MoltenVK, including those running on Asahi Linux with open source Honeykrisp drivers.
2024-09-05 22:15:30 -05:00
TellowKrinkle
1416dc7e6a VideoBackends:Vulkan: Consolidate feature checking into one struct 2024-09-05 22:15:29 -05:00
JMC47
efc395f7f4
Merge pull request #12977 from mitaclaw/branch-watch-tool-fixes-4
Branch Watch Tool: Refactors, Fixes, and Features
2024-09-04 19:36:24 -04:00
Tillmann Karras
eb54721475 DSPHLE/AX: fix low-pass/biquad clipping
The low-pass and biquad filters run in set40 mode where accessing ac#.m
returns the value of ac#.hm clamped to 16 bits.

This fixes the crackling in "Need for Speed: Nitro" (issue 13610).

Also make the lower bound match hardware (-0x8000 instead of -0x7FFF).
2024-09-04 22:33:31 +01:00
mitaclaw
e67e579b38 SI_Device: Remove Dead Config Code 2024-09-04 08:31:00 -07:00
Geotale
ffa680b15c Proper Subnormal Rounding When Interpreting
During 25-bit rounding, subnormals are "normalized"
This would normally mean that the exponent needs to be able to be <-1023
Instead, you can modify at what bit you round and get the same results!
This is done by finding the highest bit and shifting right the round bit

Co-Authored-By: JosJuice <josjuice@gmail.com>
2024-09-03 11:33:32 -05:00
Geotale
2f45391ca5 Improve Integer Rounding Accuracy
Changes integer rounding to more closely meet the documentation
The documentation explains to round before doing any bounds checks
All this really does is make sure some exception bits won't be set wrong
This depends on the rounding mode, fixing cases such as:
- Round to even, (0x7fffffff, 0x7fffffff.8)
- Round to down, (0x7fffffff, 0x80000000)

This change also uses some standard functions for rounding
Previously using them was casting to an s32 directly, now keeps the f64
RoundToIntegerMode introduced due to roundeven not being part of C++17

Finally, it can change a >0x7fffffff to >=0x80000000, done because:
- It looks nicer now with integers (I liked 0s)
- It gives ever so slightly better codegen on Aarch64

Co-Authored-By: JosJuice <josjuice@gmail.com>
2024-09-03 11:17:24 -05:00
mitaclaw
5a95c5dd14 CachedInterpreterEmitter: Fix std::memcpy UB
I wasn't aware that even with a size of zero, it's still not safe to pass a nullptr to `std::memcpy`. When `CachedInterpreterEmitter::PoisonCallback` is written, UB is happening.
2024-09-01 19:36:21 -07:00
mitaclaw
2a20e6e3df Branch Watch Tool: Toolbar Visiblity Menu
Adds the ability to hide unneeded features of the controls toolbar.
2024-08-31 15:37:34 -07:00
mitaclaw
8f76a32be4 Branch Watch Tool: New Conditional Branch Inspection Tools
Invert conditions, invert decrement checks, and make conditional branches unconditional. USnapshotMetadata in prior versions of Dolphin is forward-compatible with these changes (tested on x86_64).
2024-08-31 15:37:34 -07:00
mitaclaw
8bdfdc88b2 Branch Watch Tool: Ignore Apploader Branch Hits Concurrency Fix
Also removed worthless `Start` and `Pause` helpers from `Core::BranchWatch`.
2024-08-31 15:37:34 -07:00
mitaclaw
e4500b5798 BranchWatchDialog: Improve Branch Was/Not Overwritten Buttons
Giving a warning if these are used when not usable is bad UX.
2024-08-31 15:37:34 -07:00
mitaclaw
f5e7b45773 BranchWatchDialog: Listen For clicked Signal Rather Than pressed
The latter signal was used by mistake, see PR #8263.
2024-08-31 15:37:24 -07:00
mitaclaw
0c889c715d BranchWatchDialog: Const Correctness
m_index_list_temp should not be imagined as a member of `BranchWatchDialog`, so it is now mutable to allow for more const member functions.
2024-08-31 15:31:26 -07:00
mitaclaw
7ce703a4a8 BranchWatchDialog: Refactor Context Menus
Instead of one wildly complex context menu constructed lazily, now three manageable context menus are constructed proactively.
2024-08-31 15:11:25 -07:00
mitaclaw
107c08b77f BranchWatchDialog: Clean Up Object Parenting and Prefer Auto
Objects which get parented automatically by later processing now pass a nullptr to the constructor to make the intent clearer. Also fixed "true" and "false" not being translatable strings.
2024-08-31 15:11:25 -07:00
mitaclaw
f9f0806022 BranchWatchDialog: Disconnect Slots When Hidden 2024-08-31 15:11:24 -07:00
Tilka
a293abbfd0
Merge pull request #13044 from JosJuice/subfic-carry
Interpreter: Fix subfic carry calculation
2024-08-31 17:24:17 +01:00
JosJuice
ff75cc80aa Interpreter: Fix subfic carry calculation
This was accidentally using the instruction's output instead of the
instruction's input when the input and output registers were the same.
2024-08-31 17:24:55 +02:00
Admiral H. Curtiss
e1b1e4b4cf
Merge pull request #13031 from parona-source/libfmt-11
Add support for libfmt-11
2024-08-31 15:34:48 +02:00
Tilka
157be45d6b
Merge pull request #13042 from homeisfar/vk_improve_logger
vulkan: Add line number to vulkan error logger
2024-08-31 13:05:28 +01:00
Tilka
38b189e13d
Merge pull request #13039 from Dentomologist/mainwindow_fix_hidden_confirm_on_stop_dialog
MainWindow: Prevent Confirm On Stop dialog from being hidden by the Render window
2024-08-31 00:08:45 +01:00
Tilka
8b7268ddef
Merge pull request #13038 from Ferdi265/fix-rvz-clang-ub
RVZ: Fix undefined behaviour when copying 0 bytes to a null pointer
2024-08-31 00:06:38 +01:00
Ali Homafar
02e9a8feaf vulkan: Add line number to vulkan error logger
This is a minor improvement to add line numbers to the LOG_VULKAN_ERROR
define. Basically error logs for Vulkan will now look like:

```
// This
25:03:347 VideoBackends/Vulkan/VulkanLoader.cpp:247 E[Video]: (WaitForCommandBufferCompletion:278) vkWaitForFences failed:  (2: VK_TIMEOUT)

// Instead of
15:45:154 VideoBackends/Vulkan/VulkanLoader.cpp:247 E[Video]: (WaitForCommandBufferCompletion) vkWaitForFences failed:  (2: VK_TIMEOUT)
```
2024-08-28 17:42:54 -04:00
Dentomologist
9bdf862460 MainWindow: Prevent Confirm On Stop dialog from being hidden
Set the Render Window as the parent of the Confirm On Stop confirmation
dialog when Keep Window On Top is enabled, ensuring it will always be
visible.

Previously, when Confirm On Stop and Keep Window On Top were both
enabled the Confirm On Stop dialog could be hidden by the render window
in the following situations:
* Clicking Stop in the Main Window
* Clicking the Main Window's close button
* Pressing the Stop hotkey while in FullScreen mode

This was particularly troublesome because the confirm dialog is modal,
preventing the user from moving the render window out of the way if it
was obscuring the dialog.

Fixes https://bugs.dolphin-emu.org/issues/13247.
2024-08-27 15:28:05 -07:00
Tilka
22ed1dddca
Merge pull request #13037 from Dentomologist/hotkeyscheduler_handle_wiimote_connections_independently
HotkeyScheduler: Handle Wii Remote connections independently
2024-08-27 18:54:52 +01:00
Ferdinand Bachmann
6245dcd57d RVZ: Fix undefined behaviour when copying 0 bytes to a null pointer
A vector of length 0 can have a null data pointer, which causes UB when
passed to memcpy, so only copy when we actually have data to copy. This
caused crashes in certain cases when compiling Dolphin with Clang and
LTO enabled.
2024-08-27 18:16:43 +02:00
Dentomologist
16bf5a86d3 HotkeyScheduler: Handle Wii Remote connections independently
Allow connecting or disconnecting multiple Wii Remotes simultaneously
instead of only handling the highest index whose hotkey is pressed. This
allows using a single hotkey to toggle multiple remotes.
2024-08-26 21:30:30 -07:00
Dentomologist
9e6a4e9d35 ARCodeWidget: Remove unnecessary call to OnSelectionChanged
Before the call to OnSelectionChange, m_code_edit and m_code_remove are
disabled and UpdateList calls m_code_list->clear(), thereby deselecting
any selected items.

When no items are selected, OnSelectionChange disables m_code_edit and
m_code_remove and then returns. Since that was already done, the call
doesn't change anything and can be removed.
2024-08-25 23:44:17 -07:00
Dentomologist
f4db168a8e CheatsManager: Create ARCodeWidget and GeckoCodeWidget only once.
Create ARCodeWidget and GeckoCodeWidget once on startup rather than
every time a game is launched or shutdown.

In addition to losing focus on the tab (since the previous widget and
tab no longer existed), the behavior prior to this commit could cause a
crash if the user initiated a game shutdown and then opened a code edit
window since the AR/GeckoCodeWidget would get deleted in the meantime.
2024-08-25 23:44:17 -07:00
Dentomologist
232d24109d Extract ARCodeWidget/GeckoCodeWidget code loading to functions 2024-08-25 23:44:17 -07:00
Dentomologist
ee35aa49a2 ARWidget: Disable Edit and Remove buttons when no code is selected
Also some minor refactoring of nearby/related code:
* Make non-obvious variable types explicit instead of auto.
* Throw some consts around.
* Use setDisabled(empty) instead of setEnabled(!empty).
2024-08-25 23:44:17 -07:00
Tillmann Karras
2669d0d8af AX: add analytics quirks for wiimote filters
I'm fairly sure the implementation is correct but I've not been able to
find a game that actually makes use of these filters.
2024-08-24 19:47:22 +01:00
Tillmann Karras
6946f17b8c AX: enable low-pass/biquad filtering of Wiimote audio 2024-08-24 16:31:59 +01:00
Tillmann Karras
9d2841be10 AX: add support for biquad filtering
This fixes e.g. the overly loud wind in "I SPY: Spooky Mansion".
2024-08-24 16:31:59 +01:00
JosJuice
f85c4413bd
Merge pull request #13009 from BryanJacobs/master
Graphics: Adapt aspect ratio when SBS/TAB 3D is used
2024-08-24 16:38:16 +02:00
mitaclaw
ffaba26830 BranchWatchDialog: Refactor For LoadQSettings / SaveQSettings 2024-08-24 00:29:53 -07:00
mitaclaw
7b89730daa BranchWatchDialog: Defer Layout Construction When Possible
The main layout, tool controls layout, and misc. controls layout all don't need the QLayout constructed so early.
2024-08-24 00:29:52 -07:00
mitaclaw
9eb79f1d28 BranchWatchDialog: De-lambda-ize Constructor 2024-08-24 00:29:52 -07:00
mitaclaw
b6c20b715a BranchWatch: Don't Save Irrelevant Hits In Reduction Phase 2024-08-24 00:29:52 -07:00
Tilka
1f5e100a0e
Merge pull request #13033 from mitaclaw/remove-common-fill
TypeUtils: Remove Common::Fill
2024-08-23 09:16:13 +01:00
lycheefox
1108ccd62f Skylanders: Fix Hot Head (Sparkle) 2024-08-22 20:57:18 -04:00
mitaclaw
76a998ecf9 TypeUtils: Remove Common::Fill
This temporary solution is no longer needed.
2024-08-22 17:29:26 -07:00
Alfred Wingate
d7c93d87be
Add support for libfmt-11
fmt::join was moved into fmt/ranges.h

Signed-off-by: Alfred Wingate <parona@protonmail.com>
2024-08-22 16:54:35 +03:00
Bryan Jacobs
7ec6d116e8 Graphics: Adapt aspect ratio when SBS/TAB 3D is used
Adds support for choosing to present the full resolution
independently to each eye when using side-by-side or
top-and-bottom 3D.
2024-08-22 07:11:43 +10:00
OatmealDome
93617e96c3
Merge pull request #13029 from JosJuice/sddress
DolphinQt: Fix "Sddress" typo
2024-08-21 12:32:49 -04:00
JosJuice
9f95a8fa8a DolphinQt: Fix "Sddress" typo 2024-08-21 18:12:04 +02:00
OatmealDome
2058439598
Merge pull request #13028 from lycheefox/skylanders
Skylanders: Add Mobile Hot Streak and fix typo
2024-08-21 11:44:22 -04:00
lycheefox
b71474ec64 Skylanders: Add Mobile Hot Streak and fix typo 2024-08-20 21:45:36 -04:00
Dr. Dystopia
9602f36248 Remove redundant semicolons 2024-08-20 14:59:54 +02:00
NivekH
db9b3592e1
Add instructive text to disabled RetroAchievements login button
Changes the RetroAchievements "Log In" button's text to "To log in, stop the current emulation." when the button is disabled because an emulation session is active. This allows a user to understand why the button is disabled, and how this state can be resolved.

Previously, it could be unclear why this button was disabled without an understanding of the underlying system.

Co-Authored-By: JosJuice <josjuice@gmail.com>
2024-08-19 10:15:44 +02:00
JosJuice
0b33d293ee DolphinQt: Simplify the Speed Limit description
The description of the Speed Limit setting currently uses a lot of
complicated terms, like "emulated time" (known to many Dolphin
developers, but in my experience not known by even advanced emulator
users) and "maximum time scale" (I have never heard it before). The
meaning of "sustainable" is also unclear in context.

This commit rewords the description to be easier to understand.
2024-08-18 15:35:19 +02:00
Tilka
10f06a48ef
Merge pull request #12863 from JosJuice/android-gamepad-sensors
Android: Fix and enable input device sensor input
2024-08-18 13:48:30 +01:00
Tilka
3cd506b685
Merge pull request #13021 from Pokechu22/stereo-post-processing-ui
Fix postprocessing shader not changing when setting stereo mode
2024-08-18 12:27:21 +01:00
Pokechu22
307c8c273e Fix postprocessing shader not changing when setting stereo mode
Fixes https://bugs.dolphin-emu.org/issues/13593. Before, it would attempt to
use the old shader, which did not exist for the new stereo mode. Changing the
postprocessing shader afterwards would work properly, although passive 3D only
has one option, so it was just broken without restarting Dolphin.

This also fixes the UI not updating when using one of the stereo toggle hotkeys.
2024-08-17 22:09:12 -07:00
Tillmann Karras
f358b67205 GameSettings: remove patches for "Wallace & Gromit in Project Zoo"
These patches were added in bde9a459cd
and enabled by default in 36ecfdd6b5.
They allowed the game to run in Dolphin but disabled dynamic shadows.
The game adds 4 to the start address of otherwise valid display lists
for no obvious reason. Now that Dolphin forces 32-byte alignment these
patches are no longer needed.
2024-08-18 05:00:38 +01:00
Tillmann Karras
20f4643c74 VideoCommon: force 32-byte alignment for display list address and size 2024-08-18 05:00:38 +01:00
Tilka
36414bdb55
Merge pull request #12773 from Tilka/zelda_filters
DSPHLE/Zelda: Add two missing filters
2024-08-18 04:52:31 +01:00
Tilka
f3debc47ac
Merge pull request #13019 from JosJuice/clear-sys-2
UnitTests: Remove MSBuild input/output tracking
2024-08-18 00:39:13 +01:00
JosJuice
9594ce871d UnitTests: Remove MSBuild input/output tracking
Input/output tracking is intended to speed up incremental builds by
skipping a target when it doesn't need to be built. However, this seems
to be unreliable for UnitTests' AfterBuild target. Let's remove it.

It's still the case that UnitTests' AfterBuild target will be skipped if
UnitTests doesn't need to be rebuilt. (Note that UnitTests always needs
to be rebuilt if SCMRevGen changed.)

I haven't seen these problems with DolphinQt's rather similar
input/output tracking. This may be because DolphinQt's one also has the
exe file as an input/output.
2024-08-17 15:59:45 +02:00
Tilka
5f39db5876
Merge pull request #13008 from noahpistilli/kd-get-time-triggers
IOS/KD: Implement Get Time Triggers
2024-08-17 04:19:23 +01:00
Tilka
b3652a6fe7
Merge pull request #12889 from mitaclaw/constexpr-bitutils-1
BitUtils: Constexpr BitCastToArray, Remove BitCastFromArray
2024-08-17 03:28:06 +01:00
mitaclaw
6ffd71ffae BitUtils: Constexpr BitCastToArray, Remove BitCastFromArray
`std::bit_cast` participates in overload resolution only if `sizeof(To) == sizeof(From)` and both `To` and `From` are *TriviallyCopyable* types, so the static assertions here can be removed. `[[nodiscard]]` was added as well.
2024-08-16 12:21:49 -07:00
JosJuice
f695a65aad UnitTests: Delete output Sys folder before copying to it
Like the previous commit, but for UnitTests. This time all operating
systems were affected.

I also made UnitTests.vcxproj use the same way of copying as
DolphinQt.vcxproj, just for consistency.
2024-08-16 21:09:10 +02:00
JosJuice
a62f8eac1a DolphinQt: Delete output Sys folder before copying to it
For a long time now, we've had a problem where game INIs persist in
the copied Sys folder if they've been deleted from the original Sys
folder. (I still have hundreds of game INIs locally that only set
EmulationStateId, and we removed those game INIs 6 years ago. On the
buildbot, we do occasionally clear out the build directories manually,
so I'd assume it's not quite as bad there.)

This commit fixes the problem by deleting the output Sys folder before
copying the original Sys folder to the output Sys folder. This should be
a bit slower, but in my testing, the difference seems small. At least if
you have an SSD, which I really hope people have nowadays!

Operating systems other than Windows have not been touched, because:

* Android: Already explicitly deletes the output Sys folder.
* macOS: Does some magic to put the Sys folder in the app bundle, which I
  will simply assume isn't affected by this problem, without testing.
* Linux: Expects the person building to manually manage the Sys folder.
2024-08-16 21:09:10 +02:00
JosJuice
30c58eba96 MSBuild: Use SkipUnchangedFiles with Copy
Just a bit of simplification.
2024-08-16 21:09:10 +02:00
Tilka
07557e5d9c
Merge pull request #13015 from tygyh/Use-boolean-literals
Replace boolean constants with boolean literals
2024-08-16 20:04:45 +01:00
Tilka
45d6653a6d
Merge pull request #13010 from OatmealDome/goodbye-steam
Remove Steam support
2024-08-16 20:03:38 +01:00
Tillmann Karras
884a38f04d DolphinTool: print title IDs in hex 2024-08-16 18:39:23 +01:00
Tillmann Karras
214756dd18 Small wording changes for dump conversions 2024-08-16 18:39:23 +01:00
Tilka
d10c3aaf29
Merge pull request #13012 from mitaclaw/Use-contains-method-2
Use contains method 2
2024-08-16 18:31:07 +01:00
OatmealDome
7c21bcd991
Merge pull request #10556 from cpba/detectflatpak
Detect when running inside a flatpak sandbox
2024-08-16 12:48:28 -04:00
LillyJadeKatrin
8bcaf6ef26 Fixed missing game badge in achievements dialog 2024-08-15 21:48:50 -04:00
mitaclaw
de1c47a701 Misc. Container Find Changes 2024-08-15 14:25:51 -07:00
mitaclaw
9fa4eb9aab Use 'contains' method 2024-08-15 14:20:16 -07:00
OatmealDome
c28fd445d7 DolphinQt: Remove Steam runtime build support 2024-08-15 12:42:16 -04:00
OatmealDome
f10f08d1c2 UICommon: Remove Steam user directory logic 2024-08-15 12:42:16 -04:00
OatmealDome
8a93620d06 DolphinQt: Remove entitlements for Steam overlay 2024-08-15 12:42:15 -04:00
Dr. Dystopia
309df9ed5b Replace boolean constants with boolean literals 2024-08-15 07:14:43 +02:00
Sketch
7bc09bba87 IOS/KD: Implement Get Time Triggers 2024-08-14 21:44:36 -04:00
Tilka
18ac8bf405
Merge pull request #12990 from tygyh/Use-contains-method
Use 'contains' method
2024-08-14 23:54:16 +01:00
Dr. Dystopia
618b41a459 Use 'contains' method 2024-08-14 22:18:28 +02:00
Tilka
1e8b3a58b2
Merge pull request #13006 from tygyh/Remove-self-comparison
Remove self-comparison
2024-08-14 19:49:44 +01:00
OatmealDome
1b808789bc
Merge pull request #12986 from mitaclaw/actually-fix-llvm
CMakeLists: Fix LLVM Usage In UICommon
2024-08-14 13:10:44 -04:00
OatmealDome
a345cb0131
Merge pull request #12969 from mitaclaw/cached-interpreter-2.1a-profile
CachedInterpreter: Software JIT Profiling Support
2024-08-14 13:09:34 -04:00
Dr. Dystopia
15500198d8 Remove self-comparison 2024-08-14 14:50:15 +02:00
Tilka
d5522e218f
Merge pull request #12997 from tygyh/Remove-constness
Constness of 'result' prevents automatic move [performance-no-automatic-move]
2024-08-14 02:28:23 +01:00
Tilka
f712ea71f1
Merge pull request #13004 from Dentomologist/menubar_update_select_state_slot_on_hotkey
MenuBar: Update checkmarked Select State Slot when hotkeys are pressed
2024-08-14 02:27:36 +01:00
Dentomologist
134313e313 MenuBar: Update checkmarked Select State Slot when hotkey pressed
Update the checkmarked slot in the Select State Slot menu when the
Increase Selected State Slot or Decrease Selected State Slot hotkeys are
pressed.

The actual selected save slot was being changed correctly before this
commit; this just fixes the menu checkmark.
2024-08-13 12:53:29 -07:00
Dr. Dystopia
c6eb7c566d Constness of 'result' prevents automatic move [performance-no-automatic-move] (0 issues) 2024-08-13 21:51:43 +02:00
Tilka
d4ec524f21
Merge pull request #12996 from tygyh/Fix-retro-achievement-comment
Fix comment
2024-08-13 16:35:18 +01:00
Admiral H. Curtiss
54fdeb50b1
Merge pull request #12998 from tygyh/Remove-unused-lambda-capture
Remove unused lambda capture
2024-08-13 16:14:18 +02:00
Dr. Dystopia
49134afb42 Remove unused lambda capture 2024-08-13 10:26:25 +02:00
Dr. Dystopia
b86291f868 Fix comments 2024-08-13 06:58:23 +02:00
Tilka
5af0ae25e6
Merge pull request #12979 from lycheefox/skylanders
Skylanders: Fix some skylanders and add missing ones.
2024-08-13 03:41:15 +01:00
Tillmann Karras
88bd81931f DSPHLE/Zelda: Add two missing filters
The biquad filter is used in all Pikmin games for cursor sound effects
in the main menu, although the difference is subtle.

The low-pass filter is used at least by Pikmin 2 Wii during the
spaceship crash in the intro and fixes the missing "puff" sound effects
whenever there is black smoke coming out of the engine.
2024-08-13 03:36:09 +01:00
Carles Pastor
7bef0188af Detect when running inside a flatpak sandbox 2024-08-12 18:53:12 +02:00
lycheefox
194a5f3996 Skylanders: Fix some skylanders and add missing ones. 2024-08-11 19:34:51 -04:00
JMC47
e4bd14257f
Merge pull request #12783 from Tilka/zelda_square
DSPHLE/Zelda: fix Pikmin 2 save sound (issue 8855)
2024-08-11 14:16:28 -04:00
JosJuice
6cc2133f27
Merge pull request #12811 from JosJuice/ppcanalyst-refactor-mtspr
PPCAnalyst: Refactor mtspr handling code
2024-08-11 15:33:46 +02:00
OatmealDome
430416484b
Merge pull request #12983 from OatmealDome/mac-updater-embed-3-cleanup
AutoUpdate: Remove the old updater app on macOS if it exists
2024-08-11 01:38:15 -04:00
Dr. Dystopia
8995975892 Replace redundant dereferencing 2024-08-10 14:18:44 +02:00
LillyJadeKatrin
8fac6061ac Display Achievements Message for Old Version
With this change, a different message is displayed if starting a game with RetroAchievements fails due to the Dolphin version being blocked as opposed to failing because the game hash is unsupported.
2024-08-08 21:38:16 -04:00
mitaclaw
9c5cd817e3 CMakeLists: Fix LLVM Usage In UICommon
This compile definition was removed in 68cbd2640d because it was complicated by changes in 50dc0ffbce. Thus, the LLVM disassembler would never be used in UICommon's Disassembler class.
2024-08-08 10:14:22 -07:00
mitaclaw
8e546e79aa DolphinQT: Listen For clicked Signal Rather Than pressed
The latter signal was likely used by mistake, e.g. https://github.com/dolphin-emu/dolphin/pull/8263.
2024-08-08 08:09:38 -07:00
OatmealDome
feb2b287e8 AutoUpdate: Remove the old updater app on macOS if it exists 2024-08-08 02:51:18 -04:00
OatmealDome
644508cfd7
Merge pull request #12968 from OatmealDome/mac-updater-embed-3
Embed the Updater into DolphinQt's app bundle on macOS
2024-08-08 02:07:58 -04:00
mitaclaw
e0e0c074ef JITs: Consistently Use Trivial IsDebuggingEnabled Getter 2024-08-07 04:44:45 -07:00
Tilka
9ae560d8a0
Merge pull request #12947 from Dentomologist/qtutils_clearlayoutrecursively_fix_potential_crash
QtUtils/ClearLayoutRecursively: Fix potential crash
2024-08-07 03:29:52 +01:00
Tilka
603c8fad85
Merge pull request #12961 from JosJuice/expression-parser-translation
InputCommon: Translate ExpressionParser error messages
2024-08-07 03:28:48 +01:00
Tilka
e736d611fc
Merge pull request #12963 from JosJuice/i18n-2024-07-28
i18n: Add comments and improve source strings
2024-08-07 03:28:01 +01:00
Tilka
56e7e37d4f
Merge pull request #12957 from Dentomologist/adjust_include_order_and_spacing
Adjust order and spacing of various #includes
2024-08-07 03:27:23 +01:00
Dentomologist
316f7bfcbf GeneralPane: Fix building with analytics disabled
Add #if statements to only create and set analytics descriptions if
analytics are enabled in the build settings.
2024-08-06 14:30:33 -07:00
Tilka
0fe2abf53c
Merge pull request #12973 from Tilka/debugger
Debugger: keep breakpoints ordered by address
2024-08-06 19:58:24 +01:00
JMC47
68fe6779eb
Merge pull request #12959 from SuperSamus/sysconf-dirty-fix
Config: Don't depend on `is_dirty` to save SYSCONF during restore
2024-08-05 11:42:56 -04:00
Tilka
bc72226668
Merge pull request #12891 from Sintendo/jitarm64-subfic
JitArm64_Integer: Optimize subfic for zero
2024-08-04 23:27:40 +01:00
Tillmann Karras
f1366a4546 Debugger: keep breakpoints ordered by address
Previously, breakpoints would move to the end of the list whenever
they were edited.
2024-08-04 19:36:20 +01:00
JosJuice
c824ee9758
Merge pull request #12829 from Dentomologist/generalpane_add_balloontips
GeneralPane: Add BalloonTips
2024-08-04 15:22:18 +02:00
mitaclaw
cde64b6a3d CachedInterpreter: Software JIT Profiling Support 2024-08-02 06:00:56 -07:00
OatmealDome
058000851b AutoUpdate: Use the embedded Updater on macOS 2024-08-01 22:09:52 -04:00
OatmealDome
7c94edb02c CMakeLists: Embed macOS Updater app inside DolphinQt
I accomplish this by adding a new step where a copy of the DolphinQt bundle is created, and then the Updater is inserted into it.
2024-08-01 22:06:55 -04:00
OatmealDome
16acdb630b MacUpdater: Post-process the bundle 2024-08-01 22:06:55 -04:00
OatmealDome
37a7b1e5c9 DolphinQt: Switch to mac-codesign script for code signing 2024-08-01 22:06:55 -04:00
OatmealDome
22dda0b0c4 DolphinQt: Disable Xcode code signing to avoid double code signing 2024-08-01 22:06:55 -04:00
OatmealDome
cbbffce79a MacUpdater: Switch to mac-codesign script for code signing 2024-08-01 22:06:51 -04:00
Sketch
ebb6255441 Display Taiwanese covers for Taiwanese games 2024-08-01 14:42:52 -04:00
OatmealDome
f74f748ff6 MacUpdater: Change bundle ID to org.dolphin-emu.updater
The domain "dolphinteam.com" is not under our control, so we shouldn't be using it.
2024-08-01 12:36:53 -04:00
OatmealDome
5c401bd5da MacUpdater: Change CFBundleName to match the bundle's output name 2024-08-01 12:36:53 -04:00
OatmealDome
8499b43501 MacUpdater: Always use the same signing identity as the DolphinQt bundle 2024-08-01 12:36:49 -04:00
JMC47
8a50676b83
Merge pull request #12952 from LillyJadeKatrin/retroachievements-change-discs-bug
Fixed achievements not working after a disc change.
2024-07-31 19:58:21 -04:00
OatmealDome
bb5326adf4 DolphinQt: Rename output bundle on macOS to DolphinQt 2024-07-30 21:44:46 -04:00
OatmealDome
0c18393691
Merge pull request #12965 from JosJuice/android-ndk-27
Android: Update to NDK 27.0.12077973
2024-07-30 13:09:53 -04:00
JosJuice
91a323df96 Android: Update to NDK 27.0.12077973 2024-07-30 18:24:48 +02:00
Dentomologist
6a735f3758 GeneralPane: Add BalloonTip to generate new identity checkbox 2024-07-29 14:00:46 -07:00
Dentomologist
5512b68020 GeneralPane: Add BalloonTip to enable analytics checkbox 2024-07-29 14:00:46 -07:00
Dentomologist
bfbc4c8cc7 GeneralPane: Add BalloonTip to fallback region combobox 2024-07-29 14:00:46 -07:00
Dentomologist
fa4803f38a GeneralPane: Add BalloonTip to auto update combobox 2024-07-29 14:00:46 -07:00
Dentomologist
427b85f2a1 GeneralPane: Add BalloonTip to speed limit combobox 2024-07-29 14:00:46 -07:00
Dentomologist
809b8a683f GeneralPane: Add BalloonTip to discord presence checkbox 2024-07-29 14:00:46 -07:00
Dentomologist
ce0ab58dc9 GeneralPane: Add BalloonTip to auto disc change checkbox 2024-07-29 14:00:46 -07:00
Dentomologist
755866b771 GeneralPane: Add BalloonTip to override region settings checkbox 2024-07-29 14:00:46 -07:00
Dentomologist
d9336a5de0 GeneralPane: Add BalloonTip to cheats checkbox 2024-07-29 14:00:46 -07:00
Dentomologist
b2107023ba GeneralPane: Add BalloonTip to dualcore checkbox 2024-07-29 14:00:46 -07:00
OatmealDome
75d49842c4
Merge pull request #12964 from mitaclaw/jit-profiling-android-correctness
MainAndroid: Thread Correctness In WriteJitBlockLogDump
2024-07-29 16:05:47 -04:00
OatmealDome
4883483d09 MacUpdater: Don't set bundle name via a CMake variable 2024-07-29 12:17:08 -04:00
OatmealDome
d4e6bd9d18 MacUpdater: Remove unused variables in CMakeLists 2024-07-29 12:16:13 -04:00
mitaclaw
4f0954dd44 MainAndroid: Thread Correctness In WriteJitBlockLogDump
In a race condition, the core could shut down between the `JitInterface::GetCore` nullptr check and the `JitInterface::JitBlockLogDump` call which constructs a `CPUThreadGuard`. In this scenario, nothing horrible happens—`JitBlockLogDump` also checks for a nullptr—but it would be a failure to display the correct feedback to the user.
2024-07-28 16:10:59 -07:00
OatmealDome
53d2311163
Merge pull request #12960 from mitaclaw/jni-false
MainAndroid: Use JNI_FALSE instead of static_cast<jboolean>(false)
2024-07-28 17:16:32 -04:00
JosJuice
9d2f5245f4 i18n: Add comments and improve source strings
Most of these changes are to improve consistency in capitalization.
2024-07-28 14:38:20 +02:00
MayImilae
9a730bacce Change Dual Core (speedup) to Dual Core (speedhack) 2024-07-28 03:56:58 -07:00
JosJuice
defc38b258 InputCommon: Translate ExpressionParser error messages
The _trans macro marks strings for translation but doesn't do anything
at runtime. For that, we need to use a function like GetStringT.
2024-07-28 12:09:15 +02:00
JosJuice
9193045989 Revert "Android: Disable input device sensor input due to crash"
This reverts commit 75fb1a7edf.
2024-07-28 11:29:17 +02:00
JosJuice
59cbe5a843 Android: Add workaround for AOSP input device sensor suspend bug 2024-07-28 11:29:17 +02:00
JosJuice
7b0a7f15b0 Android: Use structural equality for sensorDetails
To fix the crash in input device sensor handling, we should look up
Sensors using structural equality. Unfortunately, Sensor.equals
implements referential equality, and HashMap doesn't let us provide a
custom comparator. Because the number of sensors is relatively small,
and because we have a reason to keep a sorted list of sensors around
anyway, let's switch from HashMap to ArrayList.
2024-07-28 11:29:02 +02:00
mitaclaw
7cafd78ffc MainAndroid: Use JNI_FALSE instead of static_cast<jboolean>(false) 2024-07-27 20:22:25 -07:00
Martino Fontana
991bce2d68 Config: Don't depend on is_dirty to save SYSCONF during restore
`Layer::Save` only does its thing if the layer has `is_dirty == true`.
But SYSCONF could have been modified by other layers, so if the base layer wasn't made dirty by anything else, then it wouldn't be restored.
Fixes https://bugs.dolphin-emu.org/issues/13580
2024-07-27 16:45:33 +02:00
Dentomologist
d627b78c46 Adjust order and spacing of various #includes
Move some #includes around to match the Contributing guidelines.
2024-07-26 14:28:34 -07:00
LillyJadeKatrin
347aab7ab3 Fixed achievements not working after a disc change. 2024-07-25 20:46:46 -04:00
mitaclaw
6c3024c3b1 CachedInterpreter: Combine Interpret, CheckDSI, CheckProgram, and WritePC
I tried making the new templated Interpret callback test only the relevant exceptions (EXCEPTION_DSI, EXCEPTION_PROGRAM, or both), but didn't find a significant performance boost in it. As I am learning, the biggest bottleneck is the number of callbacks emitted, not usually the actual contents of them.
2024-07-23 14:09:57 -07:00
mitaclaw
ae43b10eff CachedInterpreter: Use CodeOp::canEndBlock
This was a bigger performance boost than I expected.
2024-07-23 14:07:02 -07:00
mitaclaw
818647d694 CachedInterpreter: WritePC optimizations
WritePC is now needed far less, only for instructions that end the block. Unfortunately, WritePC still needs to update `PowerPCState::npc` to support the false path of conditional branch instructions. Both drawbacks should be smoothed over by optimized cached instructions in the future.
2024-07-23 14:06:40 -07:00
mitaclaw
0282fa7adb CachedInterpreter: Exception Check Callback Micro-Optimization
This saves two register pushes / pops.
2024-07-23 14:06:22 -07:00
mitaclaw
f79520a906 Cached Interpreter 2.0
It now supports variable-sized data payloads and memory range freeing. It's a little faster, too.
2024-07-23 14:06:21 -07:00
Admiral H. Curtiss
c71ccb548e
AchievementManager: Fix incorrect check on network request return value in FetchBadge() 2024-07-23 20:49:12 +02:00
Admiral H. Curtiss
2d8f54fdd2
Merge pull request #12862 from SuperSamus/debugger-fixes
Debugger: Various fixes
2024-07-23 20:36:34 +02:00
Admiral H. Curtiss
7db5caf43e
Merge pull request #12943 from Tilka/list_recursively
DolphinTool: list filesystem recursively
2024-07-23 19:56:07 +02:00
mitaclaw
ffc7bcfbf8 Emitters: Define Trivial Getters Inline 2024-07-21 21:35:29 -07:00
Dentomologist
384e044437 QtUtils/ClearLayoutRecursively: Fix potential crash
Use QObject->deleteLater() instead of the delete operator to destroy
child widgets of the layout. This prevents crashes caused by pending
events trying to access the now-destroyed widget.
2024-07-21 17:36:05 -07:00
Tillmann Karras
191b36976c DolphinTool: list filesystem recursively 2024-07-21 19:16:00 +01:00
Tilka
7bd2a7bde3
Merge pull request #12945 from Tilka/erase_if
Use C++20 erase_if() instead of erase(remove_if()) (NFC)
2024-07-21 19:06:55 +01:00
SimoneN64
2dcb612497 Change OperandDesc variables to not be underscore-prefixed in order to comply with https://eel.is/c++draft/lex.name#3.1 (fixes compilation under newlib; e.g. devkitPro) 2024-07-21 18:35:38 +02:00
Tillmann Karras
982893b04c Use C++20 erase_if() instead of erase(remove_if()) (NFC) 2024-07-21 16:36:06 +01:00