Commit Graph

364 Commits

Author SHA1 Message Date
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
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
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
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
Dr. Dystopia 9602f36248 Remove redundant semicolons 2024-08-20 14:59:54 +02:00
Dr. Dystopia 618b41a459 Use 'contains' method 2024-08-14 22:18:28 +02: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
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
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 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
Admiral H. Curtiss 2d8f54fdd2
Merge pull request #12862 from SuperSamus/debugger-fixes
Debugger: Various fixes
2024-07-23 20:36:34 +02:00
VampireFlower afa6e26e5d BreakpointWidget: Correct icon position
Co-Authored-By: TryTwo <10532806+TryTwo@users.noreply.github.com>
2024-07-09 15:20:56 -07:00
Martino Fontana 719af828e5 BreakpointWidget: Can create new breakpoints when emulation isn't running
It works perfectly fine, so why not? Also, consistency with CodeViewWidget.
2024-07-05 21:33:23 +02:00
Martino Fontana bd3cf67cbc Debugger: Rework temporary breakpoints
Before:
1. In theory there could be multiple, but in practice they were (manually) cleared before creating one
2. (Some of) the conditions to clear one were either to reach it, to create a new one (due to the point above), or to step. This created weird behavior: let's say you Step Over a `bl` (thus creating a temporary breakpoint on `pc+4`), and you reached a regular breakpoint inside the `bl`. The temporary one would still be there: if you resumed, the emulation would still stop there, as a sort of Step Out. But, if before resuming, you made a Step, then it wouldn't do that.
3. The breakpoint widget had no idea concept of them, and will treat them as regular breakpoints. Also, they'll be shown only when the widget is updated in some other way, leading to more confusion.
4. Because only one breakpoint could exist per address, the creation of a temporary breakpoint on a top of a regular one would delete it and inherit its properties (e.g. being log-only). This could happen, for instance, if you Stepped Over a `bl` specifically, and pc+4 had a regular breakpoint.

Now there can only be one temporary breakpoint, which is automatically cleared whenever emulation is paused. So, removing some manual clearing from 1., and removing the weird behavior of 2. As it is stored in a separate variable, it won't be seen at all depending on the function used (fixing 3., and removing some checks in other places), and it won't replace a regular breakpoint, instead simply having priority (fixing 4.).
2024-07-05 21:33:22 +02:00
Martino Fontana 037de1ce92 Debugger: fix Run to Here
Now it actually does what it says on the name, instead of creating a breapoint and doing nothing else (not even updating the widget).
Also, it now can't be selected if emulation isn't running.
Closes https://bugs.dolphin-emu.org/issues/13532
2024-07-02 18:29:42 +02:00
Martino Fontana 8235c38df7 Debugger: Small other cleanup
Change misleading names.
Fix function usage: Intepreter and Step Out will not check breakpoints in their own wrong way anymore (e.g. breaking on log-only breakpoints).
2024-07-02 18:29:42 +02:00
Martino Fontana 9aeeea3762 Debugger: Small Breakpoint cleanup
Reuse more code, change misleading names, remove useless documentation, add useful documentation
2024-07-02 18:29:42 +02:00
JosJuice bc67fc97c3 Revert "Audit uses of IsRunning and GetState"
This reverts commit 72cf2bdb87.

SYSCONF settings are getting cleared when they shouldn't be. Let's
revert the change until I get proper time to figure out why it's broken.
2024-06-26 20:36:46 +02:00
Admiral H. Curtiss 9b33b777cf
Merge pull request #12828 from JosJuice/unify-state-variables-2
Clean up Core::GetState
2024-06-22 20:20:54 +02:00
JosJuice 72cf2bdb87 Audit uses of IsRunning and GetState
Some pieces of code are calling IsRunning because there's some
particular action that only makes sense when emulation is running, for
instance showing the state of the emulated CPU. IsRunning is appropriate
to use for this. Then there are pieces of code that are calling
IsRunning because there's some particular thing they must avoid doing
e.g. when the CPU thread is running or IOS is running. IsRunning isn't
quite appropriate for this. Such code should also be checking for the
states Starting and Stopping. Keep in mind that:

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

This commit adds a new method Core::IsUninitialized, and changes all
callers of IsRunning and GetState that look to me like they should be
changed.
2024-06-21 20:52:55 +02:00
Admiral H. Curtiss 69fc754c65
Merge pull request #12799 from mitaclaw/branch-watch-tool-fixes-3
Branch Watch Tool: Add Set Breakpoints Submenu
2024-06-17 22:36:04 +02:00
mitaclaw eb26937a93 Branch Watch Tool: Add Set Breakpoints Submenu 2024-06-16 20:46:56 -07:00
mitaclaw 8050760fe9 BranchWatchTableModel: Assume Unreachable Code Truly Is 2024-06-05 19:59:39 -07:00
mitaclaw 7dc0bdd5df BranchWatchProxyModel: Avoid String Copies In filterAcceptsRow 2024-06-05 19:59:39 -07:00
mitaclaw cf6a392979 Branch Watch Tool: Smarter Context Menu
Also, right-clicking the table's scroll area when all columns are hidden will show the column visibility menu.
2024-06-01 07:23:05 -07:00
Admiral H. Curtiss 46a89936ae
Merge pull request #12780 from TryTwo/BreakpointWidget_Direct_Edit
BreakpointWidget: Add ability to directly edit breakpoints
2024-06-01 04:25:19 +02:00
TryTwo 3526f3cd9f
Color unused cells and disabled rows.
(bug?) Does not update on dark/light style change, as no signals are sent.
2024-06-01 03:42:25 +02:00
TryTwo 1396e927c7
BreakpointWidget: Give conditionals a popup text entry on click. 2024-06-01 03:42:25 +02:00
TryTwo e52b814eb2
BreakpointWidget: Direct editing of address cells. Prevent symbol cells from being affected. 2024-06-01 03:42:24 +02:00
TryTwo b740671792
BreakpointWidget: Make buttons, removing selecting row on clicking, and fix OnContextMenu which relied on select rows.
Add functions to edit breakpoints.
2024-06-01 03:42:18 +02:00
TryTwo b7b0842d2f BreakpointWidget: Fix Qt centering issues with a Custom Delegate 2024-05-25 17:09:21 -07:00
TryTwo d96840f808 BreakpointWidget: Move delete to the context menu. Selecting rows will be removed, so select -> delete is hard to maintain. 2024-05-25 17:09:21 -07:00
mitaclaw 3b214a4978 BranchWatchDialog: Resolve Linux FIXME
This stopped being an issue for me with a recent package update, so I guess Qt6 was fixed upstream?
2024-05-25 06:22:45 -07:00
mitaclaw 4a2ec86a9a Branch Watch Tool: Add Rule Of 5 And Remove Unnecessary Include 2024-05-25 06:22:44 -07:00
mitaclaw ecce8e81c8 BranchWatchDialog: Case-Insensitive Sorting 2024-05-24 15:42:04 -07:00
Admiral H. Curtiss c26373bd95
Merge pull request #12738 from mitaclaw/expression-sprs
Expression: Support All SPRs + MSR
2024-05-04 17:35:12 +02:00
Tilka c442c0d5e5
Merge pull request #10957 from Pokechu22/std-bitcast
Replace Common::BitCast with std::bit_cast
2024-05-04 08:24:59 +01:00
Admiral H. Curtiss 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
Pokechu22 fbbfea8e8e Replace Common::BitCast with std::bit_cast 2024-05-03 18:43:51 -07:00
mitaclaw 076bdf7a24 Expression: Support All SPRs + MSR 2024-05-03 17:56:58 -07:00
mitaclaw 0df401b164 Core::IsRunning: Avoid Global System Accessor 2024-05-01 08:54:17 -07:00
mitaclaw 0397339ab1 DolphinQt: Properly Delete (Some) Widgets
This is not every memory leak, just the ones that were obvious.
2024-04-30 11:17:28 -07:00
JosJuice 83b280d903 i18n: Add comments and improve source strings 2024-04-20 23:02:46 +02:00
mitaclaw 672be6a8cf PPCSymbolDB: GetDescription by std::string_view
Should save a lot of deep copies.
2024-04-13 00:19:01 -07:00
mitaclaw eb92d6f0a8 Core::GetState: Avoid Global System Accessor 2024-04-08 16:23:23 -07:00
Admiral H. Curtiss a2074a8583
Merge pull request #12645 from mitaclaw/ppc-symbols-signal
DolphinQt: A Ubiquitous Signal For When Symbols Change
2024-03-31 06:36:09 +02:00
mitaclaw b52a08d533 DolphinQt: A Ubiquitous Signal For When Symbols Change
There were three distinct mechanisms for signaling symbol changes in DolphinQt: `Host::NotifyMapLoaded`, `MenuBar::NotifySymbolsUpdated`, and `CodeViewWidget::SymbolsChanged`. The behavior of these signals has been consolidated into the new `Host::PPCSymbolsUpdated` signal, which can be emitted from anywhere in DolphinQt to properly update symbols everywhere in DolphinQt.
2024-03-28 09:57:22 -07:00
mitaclaw ae5da02cde DolphinQt Settings: Signal Debug Font By Const Reference 2024-03-22 07:52:52 -07:00
mitaclaw c24fa93965 PPCSymbolDB: Move instance to PowerPCManager 2024-03-13 22:58:14 -07:00
Admiral H. Curtiss 551dcec0b1
Merge pull request #12602 from mitaclaw/qt-memory-global-system
Memory(View)Widget: Avoid Global System Accessor
2024-03-12 04:12:52 +01:00
Jordan Woyak f86e9e9cbd
Merge pull request #12610 from mitaclaw/branch-watch-dialog-gcc
BranchWatchDialog: Fix GCC Warnings
2024-03-11 17:36:21 -05:00
mitaclaw 0645b4d579 BranchWatchDialog: Fix Misc. Errata
Window icon was missing from QDialog lacking a parent.
Giving the QDialog a parent revealed I had failed to make it properly non-modal, necessitating further changes.
Settings save less often, now only upon destruction.
Construction of BranchWatchDialog is now deferred.
2024-03-07 15:59:03 -08:00
mitaclaw 8d5e39751e BranchWatchDialog: Fix GCC Warnings
GCC can't lambda right.
2024-03-02 07:53:23 -08:00
Admiral H. Curtiss f2e04e0603
Merge pull request #12359 from mitaclaw/code-diff-dialog-refresh
BranchWatchDialog: A Total Replacement for CodeDiffDialog
2024-03-02 14:13:54 +01:00
mitaclaw 26141eece8 Memory(View)Widget: Avoid Global System Accessor 2024-03-01 07:09:20 -08:00
mitaclaw 8eeb93d51a CodeWidget: Simplify Case-Insensitive Contains 2024-02-27 12:03:38 -08:00
mitaclaw 8134c8a572 BranchWatchDialog: A Total Replacement for CodeDiffDialog
With a purpose-built Branch Watch feature built into the emulated system: BranchWatchDialog, replacing CodeDiffDialog, is now better than ever!
2024-02-27 11:40:58 -08:00
Admiral H. Curtiss e6ee217a7c
Core: Move Emulation IOS instance to System. 2024-02-07 22:07:30 +01:00
Lioncash 100242a380 GekkoSyntaxHighlight: Collapse cases for builtin color formats
Same behavior, but without as much duplication.
2024-01-23 18:39:59 -05:00
Lioncash e4fa5614d1 GekkoSyntaxHighlight: Fix FPR terminal highlighting being treated as GPRs
Copy-paste error. Ultimately GPR and FPRs use the same highlighting
style anyway, so this is mostly just a correctness change.
2024-01-23 18:38:06 -05:00
Mai d64705d691
Merge pull request #12512 from JosJuice/assembler-dirty-flag
DolphinQt: Rework dirty flag handling in AssemblerWidget::TabTextForEditor
2024-01-21 10:22:46 -05:00
JosJuice 6276232574 DolphinQt: Rework dirty flag handling in AssemblerWidget::TabTextForEditor
Putting the handling of the dirty flag in only one string makes it
clearer for translators what's going on.
2024-01-20 20:00:52 +01:00
JosJuice 6cd67e3937 Partially revert "DolphinQt/Assembler: improve translatability"
This reverts the parts of commit c8c9928eb1 that made translatability
worse rather than better. Changing "Error in column %2" to "%1 in column
%2" not only means that the translators have to check the i18n comments
to know what word hides behind %1, but there's also the problem that
the translator might need to translate "Error" in this context
differently from the standalone string "Error". Having to copy-paste
some HTML tags may be annoying for translators, but it's a far less
serious problem.
2024-01-20 14:46:41 +01:00
Lioncache 75ec350dc4 Core/Debugger_SymbolMap: Remove redundant system parameters from interface
The CPU thread guard already allows access to the system instance. We can
remove the system parameter to reduce rendundancy here.
2023-12-18 15:46:22 -05:00
Tilka 773ffd04b8
Merge pull request #11497 from vyuuui/debugger_assembler_ui
Built-in assembler for debugger interface
2023-12-16 21:15:31 +00:00
Tillmann Karras c8c9928eb1 DolphinQt/Assembler: improve translatability
Also, don't show error line numbers in the instruction patch dialog. The
input text field only accepts one line anyway.
2023-12-15 00:37:42 +00:00
vyuuui 38c15df464 Parser and Assembler implementations 2023-12-13 05:32:20 -08:00
Mai a65246ec3f
Merge pull request #11988 from JosJuice/jit-feature-flags
Jit: Replace "msrBits" with "featureFlags" and use for performance monitor
2023-12-05 03:13:50 -05:00
LillyJadeKatrin 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
JosJuice ca7e05bbc4 Jit: Replace "msrBits" with "featureFlags"
Preparation for the next commit.
2023-11-30 22:40:32 +01:00
Zopolis4 f0d2ce4683
Remove _M_X86 in favour of _M_X86_64 2023-11-28 23:03:20 +11:00
Mai d28155a7bb
Merge pull request #12265 from TryTwo/FuncFinder_bkup
CodeDiffDialog: Add saving/loading results to a file.
2023-11-27 19:00:27 +01:00
TryTwo 0826586f96 CodeDiffDialog: Add saving/loading function finder results. 2023-11-26 21:26:58 -07:00
Admiral H. Curtiss 937cb8ef3a
Merge pull request #12299 from TryTwo/PR_bugfix_frame_advance
Core: Add option to not report state change to SetState (bugfix)
2023-11-22 23:10:51 +01:00
TryTwo b57ba42a55 Core::SetState() allow state to change without sending a callback.
Some state changes are meant to be near instantanoues, before switching to something else. By reporting ithe instant switch, the UI will flicker between states (pause/play button) and the debugger will unnecessarily update. Skipping the callback avoids these issues.
2023-11-16 11:07:37 -07:00
Tilka 166423ad61
Merge pull request #12273 from Dentomologist/dolphinqt_remove_unnecessary_qoverloads
DolphinQt: Remove unnecessary qOverloads
2023-11-12 19:43:05 +00:00
TryTwo 2a5147a19b Dark style: add QTableCornerButton. Fix padding for tables.
CodeDiffDialog: Fix QTableWidget UI issues
2023-11-04 15:00:07 -07:00
Dentomologist 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
Sepalani 573863703a MemoryViewWidget: Fix some characters being truncated 2023-08-21 22:02:44 +04:00
Admiral H. Curtiss 24012cfc7f
DolphinQt: Adjust panel-specific colors and syntax highlighting for dark theme. 2023-08-12 19:43:12 +02:00
Admiral H. Curtiss e2fb8fab2f
DolphinQt: Set window decorations for all top-level QWidgets. 2023-08-12 16:54:54 +02:00
Lioncash 696087cae0 Qt/NetworkWidget: Get rid of some trivial sign conversions
In all instances, these variables should be signed rather than unsigned.
2023-06-17 10:48:49 -04:00
Lioncash 6e9afd9a73 BreakpointDialog: Mark breakpoint help text as translatable
We already mark the title of the dialog box as translatable, so it
would be a bit odd to not mark the containing text as translatable too.
2023-06-12 09:50:17 -04:00
Lioncash 2b0a9477d0 MemoryViewWidget: Use QStringView with ConvertTextToBytes
Allows for avoiding string copies. While we're at it, we can also mark
ConvertTextToBytes as const.
2023-06-08 12:01:59 -04:00
Lioncash cfd25f1d7c CodeDiffDialog: Construct Diff instance in CalculateSymbolsFromProfile() when necessary
We can move the construction of the Diff instance into the body of the
if statement, so that we only construct this if the condition is true.

While we're at it, we can move the symbol description string into the
instance, getting rid of a copy. The function itself can also be const
qualified.
2023-06-08 11:55:57 -04:00
Lioncash 496aea54c0 CodeDiffDialog: Pass QString by const reference to create_item
Avoids churning string copies when updating
2023-06-08 11:48:09 -04:00
Lioncash c99b0f2eb8 BreakpointWidget: Pass QString by const reference to create_item
Avoids churning string copies when performing updates.
2023-06-08 11:46:16 -04:00
Lioncash 867e7d259d BreakpointDialog: Pass QString by const reference to invalid_input
Gets rid of redundant copying.
2023-06-08 11:45:14 -04:00
Lioncash 21df3ca572 StringUtil: Move IsPrintableCharacter() into Common namespace 2023-05-16 14:17:54 -04: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
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