Commit Graph

20929 Commits

Author SHA1 Message Date
Lioncash
c7cd1424f4 Interpreter_FPUtils: Use Common::BitCast where applicable
Gets rid of now-unnecessary memcpy boilerplating for different bit
representations between integral and fp types.
2018-05-16 17:48:30 -04:00
Lioncash
e7403e121e EXI_DeviceEthernet: In-class initialize members
Gets rid of a second pair of ifdefs in the constructor. This also makes
sure the fd on Unix/BSD platforms is uniformly initialized. Previously
fd would be in an inconsistent state on FreeBSD or OpenBSD due to the
BSD OS checks not being present in the #elif within the constructor.
2018-05-16 16:55:07 -04:00
Lioncash
fc78a4c993 EXI_DeviceEthernet: Make internal members and functions private
Previously, the entirety of CEXIETHERNET was exposed publically, which
wasn't necessary. We simply make the thread function part of the
internal interface, which gives it access to internal data members,
while keeping everything else outside of it.
2018-05-16 16:55:02 -04:00
Markus Wick
b547f72878
Merge pull request #6871 from lioncash/virtual
DSPHLE/UCodes: Replace unnecessary virtual keywords with override
2018-05-16 22:16:26 +02:00
Markus Wick
8fa8aa3e1b
Merge pull request #6870 from lioncash/hash
Common/Hash: Namespace code under the Common namespace
2018-05-16 22:04:20 +02:00
Lioncash
a7b8b15e7f DSPHLE/UCodes: Replace unnecessary virtual keywords with override
Given these HLE classes inherit from a common base with a virtual
destructor, override is more appropriate here, as virtual propagates to
these destructors anyway.

This is also safer. If the base class' destructor is ever made
non-virtual, then these classes will cause a compilation error if they
aren't taken into account, as they'd be overriding a non-virtual
function (the destructor).
2018-05-16 15:57:55 -04:00
Lioncash
011ee110bc Common/Hash: Namespace code under the Common namespace
Brings more common code under the Common namespace.
2018-05-16 15:39:23 -04:00
master0fdisaster
2a9283ee3d
Fix "Show Input Display" 2018-05-16 21:07:15 +02:00
spycrab
b203024a26
Merge pull request #6868 from aldelaro5/qt-debugger-fix-updatediasm
Qt/Debugger: Use QApplication::instance() as the connection context in Host_UpdateDisasmDialog()
2018-05-16 18:54:21 +02:00
Léo Lam
47fd8c6eff
Merge pull request #6855 from aldelaro5/qt-render-min-width
Qt: allow to resize the render widget however wanted on render to main
2018-05-16 14:11:51 +02:00
Léo Lam
4de2c5040d
Merge pull request #6867 from jackoalan/code-view-bg
Qt/CodeViewWidget: Dynamic background dimming for dark themes
2018-05-16 14:08:02 +02:00
Léo Lam
9335400f65
Merge pull request #6862 from aldelaro5/qt-unify-pause-play
Qt: make the pause play button only one button
2018-05-16 14:07:35 +02:00
Jack Andersen
d14f6e9ee6 Qt/CodeViewWidget: Dynamic background dimming for dark themes 2018-05-15 18:59:40 -10:00
aldelaro5
33ed5b2e99
Qt/Debugger: Use QApplication::instance() as the connection context in Host_UpdateDisasmDialog()
Because running on the host instance doesn't actually allow to fire the event.  This fix a regression where stepping would not udpate the GUI at all.
2018-05-16 00:42:35 -04:00
aldelaro5
bc43f45119
Qt: make the pause play button only one button
This is to avoid several issue with using 2 actions and switching between them.  This commit will instead have one action get his property changed on pause and play.
2018-05-15 23:37:50 -04:00
Lioncash
947fa271be Common: Add MemArena.h/cpp to the Common namespace
Brings more common code under the Common namespace.
2018-05-15 18:27:32 -04:00
spycrab
6c09ce3d95 Qt: Use proper signals 2018-05-15 20:13:12 +02:00
spycrab
79533ef789 Qt/PathPane: Disable "Remove" button when not applicable 2018-05-15 20:13:12 +02:00
spycrab
40e6abad09 Qt/AudioPane: Improve layout 2018-05-15 20:13:12 +02:00
spycrab
54d81ed13a Qt/SettingsWindow: Wrap tabs in scrollareas 2018-05-15 20:13:12 +02:00
spycrab
b9bd4ecbcb Qt/Host: Fix random crashes when exiting fullscreen 2018-05-15 18:22:26 +02:00
spycrab
71f5fafb3b
Merge pull request #6861 from spycrab/qt_adapter_save
Qt/GeneralWidget: Restore the adapter properly
2018-05-15 11:10:12 +02:00
Markus Wick
b4324847fb
Merge pull request #6863 from booto/jit-ps-dsi
Prevent paired singles routines clobbering PC,SRR0
2018-05-15 11:07:21 +02:00
booto
c880302c6b Prevent paired singles routines clobbering PC,SRR0
Paired single (ps) instructions can call asm_routines that try to update
PowerPC::ppcState.pc. At the time the asm_routine is built, emulation has
not started and the PC is invalid (0). If the ps instruction causes an
exception (e.g. DSI), SRR0 gets clobbered with the invalid PC.

This change makes the relevant ps instructions store PC before calling out
to asm_routines, and prevents the asm_routine from trying to store PC
itself.
2018-05-14 20:49:13 -04:00
spycrab
e922f91cc3 Qt/GeneralWidget: Restore the adapter properly 2018-05-14 21:16:20 +02:00
Léo Lam
159f6115e2
Merge pull request #6851 from lioncash/usage
BreakpointWidget: Move variables closer to usage sites in OnLoad()
2018-05-14 19:18:05 +02:00
Léo Lam
b5761f9dc7
Merge pull request #6852 from lioncash/code
CodeViewWidget: Minor changes
2018-05-14 19:17:35 +02:00
Léo Lam
5b15060127
Merge pull request #6857 from spycrab/qt_minor_win
Qt: Minor window fixes
2018-05-14 19:11:56 +02:00
Zexaron
ff971b1a6f Qt/GeneralWidget remove unnecesary description wiring 2018-05-14 18:18:18 +02:00
spycrab
ca5dc25694
Merge pull request #6858 from lioncash/capture
DolphinQt2: Resolve unused lambda capture warnings
2018-05-14 16:47:55 +02:00
spycrab
26b1048975
Merge pull request #6850 from lioncash/moc
DolphinQt2: Add missing Q_OBJECT macro to all QObject-related classes missing it
2018-05-14 16:29:53 +02:00
Lioncash
e2543ea801
DolphinQt2: Resolve unused lambda capture warnings
Resolves -Wunused-lambda-capture warnings.
2018-05-14 10:11:47 -04:00
spycrab
7e9bf12246 Qt: Minor window fixes
* Remove some more "What's this?" buttons
* Add some missing titles
2018-05-14 11:10:04 +02:00
Markus Wick
db4d8d7ad3
Merge pull request #6854 from lioncash/access
Jit/CachedInterpreter: Minor cleanup to code buffer accesses
2018-05-14 07:49:22 +02:00
aldelaro5
6f2d8fad8f
Qt: allow to resize the render widget however wanted on render to main 2018-05-14 00:43:31 -04:00
Lioncash
7437f2efdc JitArm64: Clean up code buffer accesses in DoJit()
Done for the same reason this was done for Jit64. Avoids constantly
indexing for the same known object instance over and over.
2018-05-13 22:11:01 -04:00
Lioncash
f4affa3d1d CachedInterpreter: Clean up code buffer accesses in Jit()
Done similarly for the reasons Jit64 was done. Localizes indexing to one
place instead of repeatedly indexing the same place.
2018-05-13 22:11:01 -04:00
Lioncash
a16c0a6e16 Jit64: Clean up code buffer accesses in DoJit()
Moves the codebuffer access variables closer to their first use, and
gets rid of multiple indexing expressions. We already know which op
we're accessing in particular, so just make a reference to it and access
it instead of duplicating the expression all over the place.
2018-05-13 22:10:56 -04:00
Lioncash
d7a3ce26de CodeViewWidget: Get rid of magic values in OnInsertBLR() and OnInsertNOP()
A call like ReplaceAddress(address, 0) is pretty ambiguous; so is
ReplaceAddress(address, false), so use an enum class that tells people
straight-up what the replacer is.

This also gets rid of the really weird naming, where if 'blr' is true,
we'd be replacing the address with a NOP, rather than an actual BLR
instruction, so we invert that so it actually makes sense. There's no
actual bug fixed here though, considering the OnInsert functions
specified the correct values; it's literally just weird naming.
2018-05-13 18:33:51 -04:00
Lioncash
bbc0aee5ea CodeViewWidget: Replaces usages of QString::fromStdString with QStringLiteral where applicable
There's no need to construct a std::string here, when there's no dynamic
elements to the text.
2018-05-13 18:11:09 -04:00
Lioncash
644bbb29f3 CodeViewWidget: Remove unnecessary includes 2018-05-13 18:06:37 -04:00
Lioncash
7032863569 CodeViewWidget: Remove unnecessary QColor constructions
QBrush also accepts regular GlobalColor values as well.
2018-05-13 18:01:10 -04:00
Lioncash
a0a0295f9d BreakpointWidget: Move variables closer to usage sites in OnLoad()
In the early-out case, we now don't end up constructing two vectors
that aren't even used. It also keeps relevant code together.
2018-05-13 17:56:03 -04:00
aldelaro5
2c861e75f5
Qt/debugger: only consider debugger hotkeys if debugging is enabled 2018-05-13 17:39:44 -04:00
Léo Lam
f8e5e7126c
Merge pull request #6849 from leoetlino/oops
WiiSave: Fix out-of-bounds read
2018-05-13 23:34:32 +02:00
Léo Lam
345838d517
Merge pull request #6842 from spycrab/qt_map_apply
Qt/Mapping: Fix mapping changes not being applied instantly
2018-05-13 23:34:18 +02:00
Lioncash
222fe58e25 DolphinQt2: Add missing Q_OBJECT macro to all QObject-related classes missing it
Without this macro, if any signals or slots were attempted to be used,
they wouldn't work; neither would various other features of the Qt
meta-object system. This can also lead to weird behavior in other
circumstances. Qt's documentation specifically states:

"Therefore, we strongly recommend that all subclasses of QObject use the
Q_OBJECT macro regardless of whether or not they actually use signals,
slots, and properties."

on its page for "The Meta-Object System", which can be seen here:
https://doc.qt.io/qt-5/metaobjects.html

Let's opt for "always do the right thing", and keep the code extensible
for the future and not have random things blow up on us.
2018-05-13 17:33:32 -04:00
Léo Lam
3fbfa4335e WiiSave: Fix out-of-bounds read
Fixes the count argument for WriteArray. (I used it like WriteBytes.)
Whoops.
2018-05-13 23:18:28 +02:00
spycrab
c7a0b6c9f8
Merge pull request #6831 from spycrab/qt_memcard_fixes
Qt/GCMemcardManager: Fix multiple issues
2018-05-13 23:14:46 +02:00
Léo Lam
2be8c35d6d
Merge pull request #6844 from leoetlino/wii-save-cleanup2
WiiSave: Reuse IOS services where possible
2018-05-13 23:08:28 +02:00
JosJuice
74d561085c
Merge pull request #6848 from lioncash/guard
DolphinQt2: Add missing header guards for CheatCodeEditor and MappingIndicator
2018-05-13 22:21:40 +02:00
Lioncash
b03c433543 DolphinQt2: Add missing header guards for CheatCodeEditor and MappingIndicator
Prevents potential double inclusion issues from ever happening.
2018-05-13 16:11:30 -04:00
Léo Lam
8f44423a5b
Merge pull request #6846 from spycrab/qt_native_sep
Qt: Use native dir separators
2018-05-13 22:10:10 +02:00
Léo Lam
6c38e4b47f
Merge pull request #6847 from lioncash/fs-include
FilesystemWidget: Replace DiscIO includes with forward declarations
2018-05-13 22:08:09 +02:00
Lioncash
d1d584d16b FilesystemWidget: Replace DiscIO includes with forward declarations
Avoids the need to use an ugly ifdef around a header, and also resolves
an indirect inclusion in PropertiesDialog.
2018-05-13 16:01:16 -04:00
Léo Lam
1fe92b8be7
Merge pull request #6845 from lioncash/patch-dlg
NewPatchDialog/PatchesWidget: Use forward declarations where applicable
2018-05-13 22:00:43 +02:00
Léo Lam
07b57c7ac6
Merge pull request #6843 from lioncash/patch
PatchEngine: Minor changes
2018-05-13 21:58:55 +02:00
spycrab
5673a64612 Qt: Use native dir separators 2018-05-13 21:51:38 +02:00
Lioncash
5fd8cec7ea PatchEngine: Add s_ prefix to file-scope variables
Brings the translation unit in line with the convention used elsewhere
in the codebase.
2018-05-13 15:46:55 -04:00
Lioncash
0995cfef6a PatchEngine: Make PatchType an enum class
Makes the enum strongly typed. A function for retrieving the string
representation of the enum is also added, which allows hiding the array
that contains all of the strings from view (i.e. we operate on the API,
not the exposed internals). This also allows us to bounds check any
querying for the strings.
2018-05-13 15:46:51 -04:00
Lioncash
799e4154be PatchesWidget: Convert Core and UICommon includes into forward declarations
Avoids propagating inclusions through UI headers
2018-05-13 15:38:58 -04:00
Lioncash
df3f9af6d7 NewPatchDialog: Convert PatchEngine include into a forward declaration
Avoids needing to include Core headers in UI-related header files,
preventing unintentional propagation.
2018-05-13 15:34:46 -04:00
Léo Lam
b405a1fbb1 WiiSave: Reuse ES::GetInstalledTitles
Same thing, less code, no manual FS access.
2018-05-13 21:28:35 +02:00
Léo Lam
a2ffe010f3 WiiSave: Reuse IOSC::Sign for signing 2018-05-13 21:28:35 +02:00
Léo Lam
07caac1d23 WiiSave: Reuse IOSC for AES decryption/encryption
The SD key is already in IOSC.

This also prevents WiiSave from exposing an external library as part
of its interface.
2018-05-13 21:25:58 +02:00
spycrab
9e2f9db94c Qt/Mapping: Fix mapping changes not being applied instantly 2018-05-13 21:21:31 +02:00
spycrab
b9ae157835 Qt/RenderWidget: Fix render-to-main focus 2018-05-13 21:08:34 +02:00
Lioncash
a166cf2481 PatchEngine: Give Patch and PatchEntry default member initializers
Avoids potentially using the values uninitialized. While we're at it,
also drop the prefixed underscores from one of the constructors.
2018-05-13 15:08:32 -04:00
Lioncash
15a522fe9b DolphinQt2/NewPatchDialog: Remove unused <iostream> include
Including <iostream> causes a static constructor to be injected into the
translation unit, even if the everything from the header itself is
unused.
2018-05-13 14:04:22 -04:00
Léo Lam
9d1157f695
Merge pull request #6839 from spycrab/qt_start_top
Qt: Fix render widget not being on top when using -n / -e
2018-05-13 18:20:00 +02:00
Léo Lam
e828c243f3
Merge pull request #6836 from leoetlino/wii-save-cleanup
WiiSave: (not so) Minor cleanup
2018-05-13 18:19:22 +02:00
spycrab
17795a615b
Merge pull request #6838 from spycrab/qt_map_save
Qt/ControllersWindow: Fix changing devices while emulation is running
2018-05-13 18:17:13 +02:00
Léo Lam
80b3d7ccb8 WiiSave: Allow users to specify export directory
Export and ExportAll now open a directory picker (that defaults to the
previous default directory, i.e. the Dolphin user dir).

Also removes the need to return the path in the export functions since
the user knows which path they chose.
2018-05-13 17:42:56 +02:00
Léo Lam
87e5cd73dc WiiSave: Use std::array instead of C arrays
Makes copying, comparing more readable
2018-05-13 17:42:55 +02:00
Léo Lam
a93d816c28 WiiSave: Move dialogs to UI code
This moves the result dialogs to DolphinQt2, since WiiSave should not
really be responsible for interacting with the user as a simple
Wii save importing/exporting class.

This also fixes Wii save import/export showing result dialogs twice,
once from WiiSave, and another time from DolphinQt2.
2018-05-13 17:42:55 +02:00
Léo Lam
41c4486c65 WiiSave: Clean up constructors
Move the import/export operation into separate functions, as it doesn't
really make sense for the constructor to do *everything*, including
printing success/failure message boxes.

The existing constructor was split into two: one that takes a path,
and another taking a title ID. This makes it more obvious what is
actually done when a path/TID is passed and also clarifies what
parameters should be passed. (No more magic 0 or "" value.)
2018-05-13 17:42:55 +02:00
Léo Lam
fbf36b85d2 WiiSave: Remove unused Extract() member function 2018-05-13 17:42:55 +02:00
Léo Lam
956df21bd7 WiiSave: Use Common::BigEndianValue to simplify parsing
Gets rid of the need to manually cast when reading/writing, which is
error prone and repetitive.
2018-05-13 17:42:55 +02:00
Léo Lam
fb39efbf90 WiiSave: Fix struct member naming 2018-05-13 17:42:55 +02:00
Léo Lam
bae8bcde0a WiiSave: Do not expose internal constants 2018-05-13 17:42:55 +02:00
Léo Lam
00bc1f28f2 Rename CWiiSaveCrypted to WiiSave 2018-05-13 17:42:55 +02:00
spycrab
fa77e09239 Qt: Fix render widget not being on top when using -n / -e 2018-05-13 17:32:29 +02:00
Léo Lam
5564150dd6
Merge pull request #6833 from leoetlino/dns
Use resolver to get default DNS nameserver
2018-05-13 15:49:50 +02:00
Dexter Gerig
73bc20ead4 Use resolver to get default DNS nameserver 2018-05-13 14:05:23 +02:00
spycrab
2ca75ae05a Qt/ControllersWindow: Fix changing devices while emulation is running 2018-05-13 14:04:39 +02:00
Léo Lam
99dff10d43
Merge pull request #6837 from spycrab/qt_position
Qt/RenderWidget: Save position and size using QSettings
2018-05-13 11:47:04 +02:00
Markus Wick
c267262a66
Merge pull request #6786 from stenzek/crop-negative-y
RenderBase: Ensure the draw size does not exceed the window size
2018-05-13 08:55:59 +02:00
spycrab
760a0be28a Qt/RenderWidget: Save position and size using QSettings 2018-05-13 01:27:56 +02:00
Léo Lam
66c1b909c2
Merge pull request #6765 from aldelaro5/Qt-debugger-fixes
Qt/debugger: fix a bunch of things
2018-05-13 01:20:11 +02:00
Léo Lam
ad5a69be79
Merge pull request #6826 from spycrab/qt_netplay2
Qt/NetPlayDialog: Improve player list
2018-05-13 01:17:51 +02:00
aldelaro5
5c688b2d2b
Qt/debugger: Don't update the symbols list unnecessarily
It only needs to be updated when we changes the symbols, not every time the code widget updates and it does take a while to update them so this fixes some delay when updating the code window.
2018-05-12 19:15:26 -04:00
aldelaro5
be6b4edb0c
Qt/debugger: only resize the columns of the code view once per update
Putting the columns to resizeToContents causes way too much resizes per updates which can cause severe lags and even crashes.  This only does one resize at the end of the columns.
2018-05-12 19:15:26 -04:00
aldelaro5
daf8df951c
Qt/Debugger: Update the register view properly on pause and step 2018-05-12 19:15:24 -04:00
aldelaro5
7388774f10
Qt/debugger: fix some possible crashes and inconsistencies in the breakpoint widget
One, which was also possible in Wx is to add an mbp after the core stopped which shouldn't be possible as it needs to add the memcheck on the core thread which wouldn't be running.  The other fix is Qt specific where it doesn't clear the breakpoints on stop.
2018-05-12 19:06:18 -04:00
aldelaro5
09792fde70
Qt/debugger: recenter the code widget when selecting a breakpoint 2018-05-12 19:04:37 -04:00
aldelaro5
53803c1fca
Qt/debugger: fix minor issues in the breakpointWidget
The items were editable while you cannot edit the breakpoints at the moment and the last breakpoint deleted would not cause the row count to change to 0.
2018-05-12 19:04:37 -04:00
aldelaro5
238c801711
Qt/debugger: properly updates when we break
The Host_UpdateDisasmDialog was unimplemented in Qt which is required to get updates when we break.  Additionally, this updates the debugger toolbar.
2018-05-12 19:04:30 -04:00
Mat M
a4de3922e9
Merge pull request #6832 from leoetlino/wiiroot
WiiRoot: Copy initial NAND files with proper metadata
2018-05-12 18:25:21 -04:00
Lioncash
411fc01262 DolReader/ElfReader: Remove unnecessary FileUtil.h includes
These can be replace with File.h, as the only file-related things
necessary is the declaration of IOFile (which resides in File.h).
2018-05-12 17:41:17 -04:00
Lioncash
f7bc75ae6d Boot: Make BootExecutableReader's constructor take a std::vector by value
This allows avoiding two copies of the executable data being created in
the following scenario (using pseudocode):

some_function()
{
  std::vector<u8> data = ...;
  DolReader reader{data};

  ...
}

In this scenario, if we only use the data for passing it to DolReader,
then we have to perform a copy, as the constructor takes the std::vector
as a constant reference -- you cannot move from a constant reference,
and so we copy data into the DolReader, and perform another copy in the
constructor itself when assigning the data to the m_bytes member
variable. However, we can do better.

Now, the following is allowable as well:

some_function()
{
  std::vector<u8> data = ...;
  DolReader reader{std::move(data)};

  ...
}

and now we perform no copy at any point in the reader's construction, as
we just std::move the data all the way through to m_bytes.

In the case where we *do* want to keep the executable data around after
constructing the reader, then we can just pass the vector without
std::move-ing it, and we only perform a copy once (as we'll std::move
said copy into m_bytes). Therefore, we get a more flexible interface
resource-wise out of it.
2018-05-12 17:40:34 -04:00