Commit Graph

34102 Commits

Author SHA1 Message Date
LC aba179e4ba
Merge pull request #9385 from MerryMage/more-bmi2
Jit_Integer: Use SHLX, SHRX, SARX
2021-01-14 21:40:45 -05:00
LC 0c2bc3582d
Merge pull request #9425 from Sintendo/jit64subfx
Jit64: subfx optimizations
2021-01-14 21:40:05 -05:00
LC 8f67a1961f
Merge pull request #9442 from Stevoisiak/patch-1
Contributing.md: Code comment for do-while sample
2021-01-14 18:45:00 -05:00
Stevoisiak c121dc3410
Contributing.md: Code comment for do-while sample 2021-01-14 13:58:55 -05:00
Lioncash 5b4fced2ba DolphinQt: Resolve deprecated usages of setTime_t and toTime_t
These have been replaced with setSecsSinceEpoch() and
toSecsSinceEpoch(), respectively within Qt 5.8, so we can migrate over
to them.
2021-01-13 05:07:32 -05:00
Lioncash 892154f7ea DolphinQt: Resolve deprecated usage of margin()
This function has been marked as obsolete. In Qt 6.0 it's removed
entirely, so we must use getContentsMargin() explicitly instead
(margin() would do this for us).

Ditto for setMargin(), in which case we use setContentsMargin instead.
setMargin() would just pass its argument to all four parameters of
setContentsMargin(), so we can do the same.
2021-01-13 05:07:32 -05:00
Lioncash 46ca371ef3 DolphinQt: Migrate QRegExp over to QRegularExpression
Qt 5.0 introduced QRegularExpression to replace QRegExp. In Qt 6.0,
QRegExp is removed entirely in favor of it.
2021-01-13 05:07:29 -05:00
Lioncash 765a1b3c09 DolphinQt: Explicitly include <QActionGroup> where applicable
An indirect inclusion scenario that breaks on Qt 6.0
2021-01-13 04:46:11 -05:00
Lioncash f647ca4620 DolphinQt: Replace usages of QLatin1Literal with QStringLiteral
This literal was deprecated in 5.14.0. Not to mention it wasn't
documented as part of the API either: see the 5.14.0 changelog here:

https://code.qt.io/cgit/qt/qtbase.git/tree/dist/changes-5.14.0?h=v5.14.0

On Qt 6.0 this define is removed entirely. To stay forward compatible,
we can make use of QStringLiteral instead.
2021-01-13 03:50:42 -05:00
LC 7fdd4afd9c
Merge pull request #9437 from Pokechu22/GX_CMD_UNKNOWN_METRICS
Use GX_CMD_UNKNOWN_METRICS instead of magic number 0x44
2021-01-12 04:09:54 -05:00
Aminoa 23e565d94c DolphinQT: Gives option to add desktop shortcut
When a game is selected, the option to add a shortcut of the game to the desktop is given. Uses native Windows API since Qt lacks support for adding shortcuts.
2021-01-11 20:41:13 -08:00
Pokechu22 d55f9369c7 Use GX_CMD_UNKNOWN_METRICS instead of magic number 0x44 2021-01-11 12:41:04 -08:00
Shawn Hoffman 2ba4fd960e small prettification 2021-01-10 15:11:18 -08:00
Shawn Hoffman 49b9deeb03 msvc: add asan support (disabled by default) 2021-01-10 15:11:18 -08:00
LC 79a234eff7
Merge pull request #9435 from shuffle2/constexpr-error
BitUtils: cleanup constexpr usage for msvc clz
2021-01-10 14:58:20 -05:00
Shawn Hoffman fc65f65891 BitUtils: cleanup constexpr usage for msvc clz 2021-01-10 10:06:30 -08:00
LC 87debc6641
Merge pull request #9433 from shuffle2/constexpr-error
BitUtils: loosen clz to inline on msvc/arm64
2021-01-10 03:45:59 -05:00
Shawn Hoffman 65ecf1e43e BitUtils: loosen clz to inline on msvc/arm64 2021-01-09 23:44:00 -08:00
LC a613c2a5e4
Merge pull request #9429 from Sintendo/jit64fixoverflow
Jit64: Fix FinalizeCarryOverflow XER[OV/SO]
2021-01-10 01:58:06 -05:00
LC 59fa613020
Merge pull request #9431 from shuffle2/msvc-gdbstub
msbuild: enable USE_GDBSTUB
2021-01-10 01:56:46 -05:00
LC 75e19a0c29
Merge pull request #9430 from shuffle2/vsupdate
Bump msvc version check and revert a msvc workaround
2021-01-10 01:46:28 -05:00
LC 1f0e3371a3
Merge pull request #9432 from shuffle2/constexpr-error
BitUtils: initialize variables
2021-01-10 01:44:58 -05:00
Shawn Hoffman f0a6244768 msbuild: enable USE_GDBSTUB
this does nothing about it actually being usable
2021-01-09 22:26:55 -08:00
Shawn Hoffman 1e5e5ea855 BitUtils: initialize variables
fixes C3615 on some msvc/cmake configs
2021-01-09 22:18:29 -08:00
Shawn Hoffman cce275c16e Revert "msvc: temporary workaround for C4789 false positive"
This reverts commit deb73d0167.
2021-01-09 19:22:36 -08:00
Shawn Hoffman c8316f70a4 msvc: bump _MSC_FULL_VER check to 192829335 2021-01-09 19:21:03 -08:00
Sintendo 305cd31bd9 Jit64: Fix FinalizeCarryOverflow XER[OV/SO]
FinalizeCarryOverflow didn't maintain XER[OV/SO] properly due to an
oversight. Here's the code it would generate:

0:  9c                      pushf
1:  80 65 3b fe             and    BYTE PTR [rbp+0x3b],0xfe
5:  71 04                   jno    b <jno>
7:  c6 45 3b 03             mov    BYTE PTR [rbp+0x3b],0x3
000000000000000b <jno>:
b:  9d                      popf

At first glance it seems reasonable. The host flags are carefully
preserved with PUSHF. The AND instruction clears XER[OV]. Next, an
conditional branch checks the host's overflow flag and, if needed, skips
over a MOV that sets XER[OV/SO]. Finally, host flags are restored with
POPF.

However, the AND instruction also clears the host's overflow flag. As a
result, the branch that follows it is always taken and the MOV is always
skipped. The end result is that XER[OV] is always cleared while XER[SO]
is left unchanged.

Putting POPF immediately after the AND would fix this, but we already
have GenerateOverflow doing it correctly (and without the PUSHF/POPF
shenanigans too). So let's just use that instead.
2021-01-09 22:52:18 +01:00
Léo Lam 0776263c5e
Merge pull request #9428 from JosJuice/tv-folder-picker
Android: Use old folder picker on Android TV
2021-01-09 11:54:02 +01:00
JosJuice 116a5a79da Android: Use old folder picker on Android TV
See the comment I added to the code. This is a rather serious
issue for Android TV users from what I've heard.
2021-01-08 16:27:33 +01:00
Léo Lam 4cdcbb6ab2
Merge pull request #9308 from smurf3tte/re23_patch
Patches for Resident Evil 2/3 audio issues
2021-01-06 01:52:15 +01:00
Léo Lam 0b1db65aa1
Merge pull request #9405 from Filoppi/patch-7
Rename "Use Fullscreen" setting to "Start in Fullscreen"
2021-01-06 01:44:46 +01:00
Pierre Bourdon 27013e8d18
Merge pull request #9300 from leoetlino/ncd-wd-fixes
IOS: WD and NCD fixes
2021-01-06 00:51:33 +01:00
Sintendo df70077e6b JitArm64: subfx - Special case a == b 2021-01-05 18:52:24 +01:00
Léo Lam eafb9de047
Merge pull request #9323 from waddlesplash/haiku
Rehabilitate Haiku support.
2021-01-05 16:09:43 +01:00
Léo Lam 840ecfb32f
Merge pull request #9409 from AdmiralCurtiss/wii-save-import-tmd
Make WiiSave::Import() behave closer to the Wii System Menu's SD Card save copying.
2021-01-05 15:36:36 +01:00
Léo Lam e48377dfc6
Merge pull request #9404 from Filoppi/patch-5
Fix typos and code coding conventions
2021-01-05 15:33:43 +01:00
Filippo Tarpini a5a6ef8512
Fix a couple of typos
[committer note: fixed commit message style]
2021-01-05 15:24:21 +01:00
Filippo Tarpini 0805b58302
DolphinQt: Remove some useless includes
[committer note: fixed commit message style]
2021-01-05 15:24:13 +01:00
Filippo Tarpini 3acd1726b9
Core: Fix variable naming conventions
[committer note: squashed two commits]
2021-01-05 15:23:40 +01:00
Léo Lam ee25f03ff9
Merge pull request #9418 from Filoppi/patch-10
Fix DualShockUDP not adding/removing devices correctly
2021-01-05 15:15:53 +01:00
Léo Lam 9069ad6cce
Merge pull request #9420 from MerryMage/ext
Externals: Link against required libraries
2021-01-05 15:15:15 +01:00
Pierre Bourdon bd89523e63
Merge pull request #9392 from smurf3tte/audio_wmask
DSP: Fix write masks on AUDIO_*/AR_* MMIO registers
2021-01-05 15:08:06 +01:00
Sintendo c0be34aa81 Jit64: subfx - Special case a == b
Soul Calibur II does this.

Before:
2B F6                sub         esi,esi

After:
Nothing!
2021-01-05 00:26:26 +01:00
Sintendo b0be20560f Jit64: subfx - Special case b == 0
Happens in Super Mario Sunshine. You could probably do something similar
for b == -1 (like we do for subfic), but I couldn't find any titles that
do this.

- Case 1: d == a

Before:
41 8B C7             mov         eax,r15d
41 BF 00 00 00 00    mov         r15d,0
44 2B F8             sub         r15d,eax

After:
41 F7 DF             neg         r15d

- Case 2: d != a

Before:
BF 00 00 00 00       mov         edi,0
41 2B FD             sub         edi,r13d

After:
41 8B FD             mov         edi,r13d
F7 DF                neg         edi
2021-01-05 00:11:16 +01:00
Sintendo 57548b456b Jit64: subfx - Special case a == 0
Occurs a bunch of times in Super Mario Sunshine.

Before:
41 83 EE 00          sub         r14d,0

After:
Nothing!
2021-01-04 23:54:15 +01:00
Sintendo b805223108 Jit64: subfx - Optimize more constant a cases
Consider the case where d and a refer to the same PowerPC register,
which is known to hold an immediate value by the RegCache. We place a
ReadWrite constraint on this register and bind it to an x86 register.
The RegCache then allocates a new register, initializes it with the
immediate, and returns a RCX64Reg for both d and a.

At this point information about the immediate value becomes unreachable.
In the case of subfx, this generates suboptimal code:

Before 1:
BF 1E 00 00 00       mov         edi,1Eh       <- done by RegCache
8B C7                mov         eax,edi
8B FE                mov         edi,esi
2B F8                sub         edi,eax

Before 2:
BE 00 AC 3F 80       mov         esi,803FAC00h <- done by RegCache
8B C6                mov         eax,esi
8B 75 EC             mov         esi,dword ptr [rbp-14h]
2B F0                sub         esi,eax

The solution is to explicitly handle the constant a case before having
the RegCache allocate registers for us.

After 1:
8D 7E E2             lea         edi,[rsi-1Eh]

After 2:
8B 75 EC             mov         esi,dword ptr [rbp-14h]
81 EE 00 AC 3F 80    sub         esi,803FAC00h
2021-01-04 23:02:22 +01:00
Pokechu22 e825af7b1b Software: Remove normalization special case
The special case doesn't appear to make a significant difference in any games, and the current implementation has a (minor, fixable) issue that breaks Super Mario Sunshine (both with a failed assertion (https://bugs.dolphin-emu.org/issues/11742) and a rendering issue (https://bugs.dolphin-emu.org/issues/7476)).  Hardware testing wasn't able to reproduce the special case, either, so it may just not exist.

PR #9315 contains a fixed implementation of the special case on all video backends, and can serve as a basis for it being reintroduced if it is found to exist under more specific circumstances.  For now, I don't see a reason to keep it present.
2021-01-03 23:22:48 -08:00
Filippo Tarpini 1e4a1bee43 Fix DualShockUDP not adding/removing devices correctly
-If adding 2 devices with the same name, they their unique id wouldn't be increased, causing a conflict.
-Removing a device wouldn't actually remove it from the internal devices list because the list of devices had already been updated when going through it.
-It was possible to remove devices belonging to other sources by adding a device with the same name and then removing it.
2021-01-03 21:06:06 +02:00
JosJuice e957ed0809
Merge pull request #9422 from MerryMage/__builtin_clz
BitUtils: __builtin_clz is undefined when value == 0
2021-01-03 18:53:25 +01:00
MerryMage 6106d6481f BitUtils: __builtin_clz is undefined when value == 0 2021-01-03 17:35:15 +00:00