Commit Graph
37 Commits
Author SHA1 Message Date
aldelaro5 b7fdf374e6 debugger: Add the XER to the register view 2017-12-01 05:31:41 -05:00
aldelaro5 8bf27cf42f Fix memory breakpoint when checking the middle of the data
If the delimiters of a memory aren't exactly the same as an address, but their size includes the memory breakpoint delimiter, the break will not go through.  This makes it so that you can specify a search for a memory breakpoint with a data size and will check if the data fits with that size on all memory breakpoints so the breaks go through.
2017-03-18 22:48:57 -04:00
aldelaro5 4738e3195c Fix memory breakpoints not triggering on Windows
For some reasons, they worked on Linux even though it was incorrect, this commit does it correctly and so it fixes that on Windows.
2017-03-16 16:31:20 -04:00
aldelaro5 654f582446 Don't save watches and breakpoints on stop and load on boot
Not only this is pretty pointless because there is a load and save button on the appropriate panels, but for the breakpoints one, it caused an error while mapping the memory since adding memory breakpoint requires to update the DBAT and this is done too early (right after boot).  This also only worked if you had the right panel on making it even more useless because it would fail to laod if you didn't have the right panel on.  It's better to just let the user click load and save.
2017-03-03 05:18:33 -05:00
aldelaro5 9ad6c8f334 Make memory breakpoint faster
Currently, slowmem is used at any time that memory breakpoints are in use.  This commit makes it so that whenever the DBAT gets updated, if the address is overllaping any memchecks, it forces the use of slowmem.  This allows to keep fastmem for any other cases and noticably increases performance when using memory breakpoints.
2017-03-02 04:46:27 -05:00
aldelaro5 52fe05af6b Make memory breakpoint faster
Currently, slowmem is used at any time that memory breakpoints are in use.  This commit makes it so that whenever the DBAT gets updated, if the address is overllaping any memchecks, it forces the use of slowmem.  This allows to keep fastmem for any other cases and noticably increases performance when using memory breakpoints.
2017-02-28 13:02:04 -05:00
aldelaro5 9dc9033b76 Fix symbols name from maps taking 2 lines instead of one
Symbols map may not only end with a \n, but they may also end with \r\n and only the \n would get removed.  This is the case with the Super Mario Sunshine map file which resulted in a weird looking symbols list and thus made it harder to scroll through it.  This removes the \r after the \n has been removed if it's present.
2017-02-07 09:56:19 -05:00
aldelaro5 334e33d4fa InputConfigDialog pass the device_cbox to the wiimote extension dialogs
This fixes a crash when trying to open the advanced input config dialog on the wiimote extensions.  The device_cbox wasn't initialised and it should have been with the wiimote one.
2017-01-27 01:06:38 -05:00
aldelaro5 cc7c410cf1 Add debugging hotkeys
They are separated into 3 groups and will only be shown in the input config dialog if the emulator was in debug mode.
2017-01-02 18:16:52 -05:00
aldelaro5 00e03f1436 Update the breakpoint list after an add from the parent
Doing it from the add dialogs instead would prevent the call to these dialogs outside of a breakpointWindow which would be necessary for hotkeys binding.
2017-01-02 15:39:21 -05:00
aldelaro5 d6674223db Fix some margin discrepancies 2016-12-31 17:58:39 -05:00
aldelaro5 42e4dde960 Add an empty spacer in the Mic Input config dialog
This is done to not have the device combo box be too small in width when making the main sizer fit into the window.  Not fitting the sizer would alternatively break Hidpi so it was best to just add an empty sizer to workaround this problem.
2016-12-31 16:17:47 -05:00
aldelaro5 a447213420 Remove the menu hotkeys of the debug menu bar
I think it's best to remove these if we are going to be adding new hotkeys since these would work no matter what so I can simply make these the default one instead.
2016-12-30 14:18:10 -05:00
aldelaro5 9ff95c58fa Add a special input configuration dialog for the GameCube Mic
This is more logical as the mic is plugged into an EXI slot so it should be configured via the GameCube config dialog.  This also allows to pass the right port number for the new dialog.
2016-12-05 18:09:31 -05:00
aldelaro5 431929fa1d Moved the Mic button of the GCPad to its own group.
This is needed to separate it from the GCPad input configuration dialog as it would be moved to its own dialog.
2016-12-05 18:09:23 -05:00
aldelaro5 f705d8378e Fix the order of the name of the hotkeys 2016-11-29 11:51:55 -05:00
aldelaro5 32a0dae257 Completely redo All configuration dialog
Hotkeys

Make a new class that inherits from InputConfigDialog with a specialised constructor.  The changes are mainly the top portion and it now uses tabs to categorise the hotkeys.

Redo the GCPad configuration dialog

The layout is similar, but it now allows flexibility to change it more easily.

Redo the GC Keyboard configuration dialog

Same layout.

Redo completely the Wiimote configuration dialog

Separated the controls into 2 tabs to make them less imposing overall.

Redo the Nunchuk configuration dialog

Similar layout, except for 2 control group sizers.

Redo the Classic controller configuration dialog

Same layout.

Redo the Guitar input configuration dialog

Stacked 2 sets of group together.

Redo the Turntable configuration dialog

More stacked groups and the window is much less wide.
2016-11-28 08:26:34 -05:00
aldelaro5 03e0cae9b7 Prepare for having different extensions dialogs
Just setting up a switch on the type so that different dialogs can be instantiated.  This also makes the extension type an enum because I don't see why not here and finally, it removes ControlGroupSizer.  This removal allows to not dynamically generate the UI, but instead, let the specialised constructors do the layout.
2016-11-28 08:26:34 -05:00
aldelaro5 00f680b830 Add flexibility to InputConfigDialog
Removed the unecessary forced tabbed layout, removed the layout part of the constructor and remade some method in preparation for tabbed styled input dialog such as the new hotkey configuration one.  It breaks every inputconfigDialog, but this will get fixed in the next commits.

Also moved to a folder since there will be many more files created in the next commits so it gives better separation.
2016-11-28 08:26:27 -05:00
aldelaro5 7e99d03b7f Add the ability to get partial input group
For hotkeys, changed HotkeyManager to allow to get and make partial groups of hotkeys.

Also preserved the old configuration naming scheme for the ini, this is done to preserve compatibility with the older groups structure.

Add the ability to get GCPad control groups

Used like the HotkeyManager methods, this is used for the new GCPad configuration dialog.

Add the ability to get groups of Keyboard input

Same reasons as the previous ones.

Add ability to get groups of Wiimote input

Add the ability to get extensions group

This needed to pass to 3 classes.  Will be used for their respective dialogs.
2016-11-25 02:37:22 -05:00
aldelaro5 c6b3c67ea1 Change the patch engine log to be debug level log
It was apparently causing heavy slowdowns on game even though it wouldn't spam much, probably caused by the amount of additional check caused by the logs levels changes.
2016-11-23 00:58:07 -05:00
aldelaro5 2f5d00450a Add precision about the names of r1, r2 and r13 for the register view
In the code view, it would never say r1 or r2, but rather sp (stack pointer) and rtoc (register of the table of content) respectively.  In the register view, all it says is the register number.  This is an inconvenience considering it might not be obvious which register belongs to which of these terms.

Also make r13 named the "sda" for small data area with the same convention as above.
2016-11-02 01:13:00 -04:00
aldelaro5 63546b4f2e Fix unnecessary Center PC calls in the CodeWindow
This not only fixes a regression where toggling a breakpoint using the CodeWindow would cause a Center PC, but it also removes several redundant JumpToAddress(PC) calls.
2016-10-29 01:08:27 -04:00
aldelaro5 ee201455a8 Move UiHasFocus into DolphinApp
Using a wxEVT_ACTIVATE_APP event.
2016-10-28 20:03:35 -04:00
aldelaro5 edd3177813 Fix a schedule event assert on ClearCacheThreadSafe
I didn't know that telling that you don't schedule from the CPU thread prevents an assert because it by default assumes you use the CPU thread, but in the case of ClearCacheThreadSafe, it's used from the GUI thread.
2016-10-21 20:25:11 -04:00
aldelaro5 549060c5b4 Label debugger memchecks as "Memory Breakpoints" in the GUI
This is done to remove confusions among potential debugger users and to also make it more accurately tell what this feature is actually doing.  Despite being true that it is using a memcheck (and it certianly checks that memory), the idea being to break on a memory access isn't really obvious especially considering that memchecks are also used in full MMU emulation to handle exceptions.  It also doesn't help that memchecks are now supported in every builds.

It also changes the corresponding log because this log would be wanted by the user which means it should be more obvious that it was caused by the "memory breakpoint".
2016-10-06 10:51:43 -04:00
aldelaro5 6ee799ba7c Reduces the the filename of logs
Using cmake and GCC, logs would contain the full file path when logging making logs lines unnecessarily long.  This is solved by just removing anything before "/Source/Core/" (where / is whatever your OS uses to separated directory).
2016-10-04 16:34:26 -04:00
aldelaro5 f0aa9b3751 Reorganise a ton of logs level
Most of this commits changes performance decreasing logs from info to debug and also cleans up innacurate levels.
2016-10-01 15:50:28 -04:00
aldelaro5 cd0116ccde Fix a bunch of debugger stepping issues.
Single step: Fix an oddity when a breakpoint is hit at the beginning of a block, then after, a single step is performed and finally, hitting play, the breakpoint will be skipped even in the case when it would be hit again.  This was done by using the interpreter version of single step.  Also, remove some redundant update request.

Step over: fix some GUI lags.

Step out: Add consideration for conditional branching by checking the condition as the interpreter does.  Now, every bclr instructions except those that changes the LR (because it would not be the end of the function) will cause the end of the step out and not just blr instructions.  Also now stops if a bp is detected and finally, remove redundant GUI updates calls.

This also removes a superfluous draw call on the GUI as the codeView was refreshing twice per event to do so.
2016-09-29 17:32:52 -04:00
aldelaro5 5e8fc4ebd9 Add consideration for the break flag of memChecks
It was never used, even when the code tried to make sure it was initialised and passed correctly.  This is a supplementary fix for the memCheck dialog as this option will now work correctly.
2016-09-27 01:22:23 -04:00
aldelaro5 efb7b1ceca Redo the MemCheck add dialog
The old one wasn't very optimal because not only the user would likely want to enter an address instead of a range, but it also made entering just one address confusing (you had to have the same value on both start and end).  Also, you should only chose one option between read, write or both, there is no point to not have any.

This is why I made more clear how to add an address and it is the default option using radio buttons and I also made the action flags and the flags to be radio buttons.
2016-09-27 01:22:23 -04:00
aldelaro5 08f28b5351 Enable the log level LINFO in every builds
It didn't really made sense to disable 2 logs levels in releases builds while the level LDEBUG should really be where logs that would impact performance be.  Info should be logs that report potentially usefull information and debug should report info that would only be usefull in debug context as they are called very often.  To make this work, a lot of info log would have to be made debug log.

It also avoid inaccurate logs level done due to not using debug builds.  While searching through the code, I saw a ton of logs that should have been info log, likely done to avoid using a debug build (which shouldn't happen considering the level debug exists anyway).

The whole idea is to have more meaningful logs in release builds while maintaining minimal performance loss from choosing the highest level.  This could potentially help to diagnose issues or to know more about what the emulator is actually doing.

The next commit aims to sort the log levels for this purpose.
2016-09-25 01:41:12 -04:00
aldelaro5 f689b1e6b5 Switch the CPU state to CPU_STEPPING before single stepping after unpausing
This fix a double break bug when hitting a memcheck and hitting play on the same instruction it broke to earlier.  The state is put back to CPU_RUNNING after.
2016-09-11 22:46:12 -04:00
aldelaro5 72f1d99634 Implement the configuration of how a breakpoint is added in the memory window
There might be a better way to highlight the options when adding the memory check, but for now, this works and the breakpoint list reports the right settings anyway.
2016-09-11 11:29:20 -04:00
aldelaro5 da55d2a381 Add options read, write and log when toggling a breakpoint
These are needed for the next commit. I had to modify the implementation of the DSP one too, but since it basically isn`t used, I don`t think it matters much.  These options only matters when adding one.
2016-09-10 22:38:57 -04:00
aldelaro5 7ad1f340df Fix the pause/play toolbar button not updating when reaching a breakpoint or a memory check 2016-08-15 14:08:19 -04:00
aldelaro5 5358e898c6 Fix the breakpoint list not updating after adding a memory check via the memory view.
Add the CCodeWindow to the constructor of the memoryWindow so it can call the notify update of the breakpoint list.

Add the case of breakpoint update when receiving an event (the update command was issued, but wasn't managed before).

Run clang format and renamed the code window names.
2016-08-11 15:38:17 -04:00