Commit Graph

382 Commits

Author SHA1 Message Date
TryTwo
2e006d9787 MemoryViewWidget: Refactor. Remove OnItemChanged signal and QSignalBlocker - replace with a signal that is only sent at the correct time. 2025-01-07 15:57:53 -07:00
mitaclaw
d92c68e1de Simplify std::find_if with Common::Contains 2025-01-01 09:52:03 -08:00
mitaclaw
97e2a43eac Branch Watch Tool: Refresh Context Menus OnEmulationStateChanged 2024-12-14 14:47:47 -08:00
Amber Brault
1c4bfc35d9 Core: Store object name separately for symbols 2024-11-11 12:36:53 -05:00
mitaclaw
0371b74ebf JitBlockTableModel: Update For Symbols Too
Flushing efficiency down the drain because I wrote unsafe code to achieve it... I hope I can recover this.
2024-10-24 18:10:52 -07:00
mitaclaw
3d9c728910 Host: Rename JitCacheInvalidation
There are two hard problems in computer science...
2024-10-23 23:43:24 -07:00
mitaclaw
9afd09598c DolphinQt: JIT Widget Refresh
Fulfilling a certain six-year-old todo.
2024-10-19 02:30:44 -07:00
mitaclaw
ca9222a16b Move UICommon/Disassembler to Common/HostDisassembler
A preliminary commit for a cleaner diff and an easier review
2024-10-19 00:14:54 -07:00
JosJuice
07605bf67c
Merge pull request #13090 from mitaclaw/ranges-modernization-1-trivial
Ranges Algorithms Modernization - Trivial
2024-10-15 17:08:55 +02:00
mitaclaw
e4fb837f4b Modernize std::find_if with ranges
In BTEmu.cpp, `std::mem_fn` was not necessary for the predicate to compile.
2024-10-10 15:28:11 -07:00
mitaclaw
e572081ac3 Modernize std::min_element with ranges 2024-10-10 00:53:48 -07:00
mitaclaw
ebf7cebc32 Modernize std::sort with ranges 2024-10-10 00:53:48 -07:00
JosJuice
6ca2da53e8 Partially revert "Revert "Audit uses of IsRunning and GetState""
This reverts the revert commit bc67fc97c3,
except for the changes in BaseConfigLoader.cpp, which caused the bug
that made us revert 72cf2bdb87. PR 12917
contains an improved change to BaseConfigLoader.cpp, which can be merged
(or rejected) independently.

A few changes have also been made based on review comments.
2024-10-04 18:35:41 +02: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
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
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
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