Commit graph

21247 commits

Author SHA1 Message Date
spycrab
5829ad21b7 Qt/MappingWidget: Fix profiles not loading properly 2018-05-29 01:21:42 +02:00
spycrab
75e87a8a0d
Merge pull request #6945 from spycrab/qt_sighandler
Qt/Unix: Implement signal handler
2018-05-28 22:05:52 +02:00
Lioncash
7bfeffe32f Interpreter_FPUtils: Unset FPSCR.FI and FPSCR.FR when FPSCR.ZX is set in NI_div()
Another bit of behavior that we weren't performing correctly is the
unsetting of FPSCR.FI and FPSCR.FR when FPSCR.ZX is supposed to be set.
This is supported in PEM's section 3.3.6.1 where the following is
stated:

"
When a zero divide condition occurs, the following actions are taken:

- Zero divide exception condition bit is set FPSCR[ZX] = 1.
- FPSCR[FR, FI] are cleared.
"

And so, this fixes that behavior.
2018-05-28 16:03:59 -04:00
Lioncash
3deadd1fff Interpreter_FPUtils: Correct setting the FPSCR's zero divide exception flag in the 0/0 case
FPSCR[ZX] is the bit defined to represent the zero divide exception
condition bit, and is defined as (according to PowerPC Microprocessor
Family: The Programming Environments Manual for 32 and 64-bit
Microprocessors, which will be referred to as "PEM" for the rest of this
commit message) at section 3.3.6.1:

"
A zero divide exception condition occurs when a divide instructions is
executed with a zero divisor value and a finite, nonzero dividend value
or when a floating reciprocal estimate single (fres) or a floating
reciprocal square root estimate (frsqrte) instruction is executed with a
zero operand value.
"

Note that it states the divisor must be zero and the dividend must be
nonzero in order for ZX to be set. This means that the interpreter was
performing the wrong behavior for the case where 0/0 (with any sign on
the zeros) is performed. We would incorrectly set the ZX bit when only
the VXZDZ bit should be set.

It's also worth pointing out that N/0 (where N is any finite nonzero
value) and 0/0 are not within the same exception class. N/0 is a zero
divide exception case, while 0/0 is considered an invalid operation
exception case, which is also indicated in the PEM section 3.3.6.1 as
well where it lists the criteria for invalid operation exceptions.

Therefore we should only be setting the VXZDZ bit in the 0/0 case, not
VXZDZ and ZX. This was also verified via hardware tests to ensure that
this behavior indeed holds.
2018-05-28 16:00:23 -04:00
spycrab
112a174ae1 Qt/Unix: Implement signal handler 2018-05-28 21:47:46 +02:00
JosJuice
b2d8d2a398
Merge pull request #7004 from lioncash/bp
BPMemory: Silence a -Wmissing-braces warning
2018-05-28 21:16:28 +02:00
Léo Lam
f05eb10026
Merge pull request #7003 from lioncash/host
Common: Move host communication enum to Host.h
2018-05-28 20:57:34 +02:00
Lioncash
72feeb4d18 BPMemory: Silence a -Wmissing-braces warning
Fairly trivial to resolve, we just initialize the std::array with two
sets of braces (one set to create the array, the other to start and end the
aggregate data that we'll end up returning)
2018-05-28 14:52:59 -04:00
Lioncash
4288bfe0f9 Common: Move host communication enum to Host.h
Given this is actually a part of the Host interface, this should be
placed with it.

While we're at it, turn it into an enum class so that we don't dump its
contained values into the surrounding scope. We can also make
Host_Message take the enum type itself directly instead of taking a
general int value.

After this, it'll be trivial to divide out the rest of Common.h and
remove the header from the repository entirely
2018-05-28 14:34:59 -04:00
Lioncash
78a934bb12 Interpreter_FloatingPoint: Handle cases when FPSCR.VE is set and exceptions occur in fctiw and fctiwz
If invalid operation exceptions are enabled and an invalid operation
occurs, then the destination value remains untouched. This fixes issues
that may arise when using these two instructions where the destination
gets steamrolled by an infinity or NaN value.
2018-05-28 14:05:12 -04:00
Lioncash
8c4aa133ca Interpreter_FloatingPoint: Handle NaN flag setting within fctiw and fctiwz
If a NaN of any type is passed as the operand to either of these
instructions, we shouldn't go down the regular code path, as we end up
potentially setting the wrong flags. For example, we wouldn't set the
FPSCR.VXCVI bit properly. We'd also set FPSCR.FI, when in actuality it
should be unset.

If an SNaN is passed as an operand, we also need to set the FPSCR.VXSNAN
bit as well.

The flag setting behavior for these can be found in Appendix C.4.2 in
PowerPC Microprocessor Family: The Programming Environments Manual for
32 and 64-bit Microprocessors.
2018-05-28 14:05:08 -04:00
Lioncash
0125d9b099 Interpreter_FloatingPoint: Factor out common code from fctiw and fctiwz
fctiwz functions in the same manner as fctiw, with the difference being
that fctiwz always assumes the rounding mode being towards zero. Because
of this, we can implement fctiwz in terms of fctiw's code, but modify it
to accept a rounding mode, allowing us to preserve proper behavior for
both instructions.

We also move Helper_UpdateCR1 to a temporary home in
Interpreter_FPUtils.h for the time being. It would be more desirable to
move it to a new common header for all the helpers, so that even JITs
can use them if they so wish, however, this and the following changes
are intended to only touch the interpreter to keep changes minimal for
fixing instruction behavior.

JitCommon already duplicates the Helper_Mask function within
JitBase.cpp/.h, and the ARM JIT includes the Interpreter header in order
to call Helper_Carry. So a follow up is best suited here, as this
touches two other CPU backends.
2018-05-28 13:28:44 -04:00
Léo Lam
a9f022a067
Merge pull request #6993 from lioncash/nan
Interpreter_FPUtils: Set VXSNAN if any input operands are a signaling NaN in remaining NI_* functions
2018-05-28 18:49:13 +02:00
spycrab
42bd1a91a6 Qt/AdvancedPane: Show seconds in custom RTC 2018-05-28 13:37:46 +02:00
Léo Lam
bda668925a
Merge pull request #6989 from lcsondes/fix-vector-assert
UICommon: fix m_cached_files pruning.
2018-05-28 12:41:22 +02:00
Léo Lam
0cba9bb218
Merge pull request #7000 from lioncash/wii-extension
WiimoteEmu: Get rid of pointer casting in extension GetState() functions
2018-05-28 12:39:01 +02:00
Markus Wick
cddc2d52c2
Merge pull request #6965 from stenzek/d3d-feature-level-10
D3D: Don't emit uint outputs when logic op is unsupported
2018-05-28 09:52:07 +02:00
Markus Wick
9e102e1584
Merge pull request #6943 from lioncash/overflow
Interpreter/Jit64/JitArm64: Correct negative overflow handling for divw
2018-05-28 09:49:19 +02:00
Markus Wick
a4d25537a1
Merge pull request #6990 from leoetlino/save
Config: Fix path settings not being saved
2018-05-28 09:46:27 +02:00
Markus Wick
40d3163b12
Merge pull request #6998 from lioncash/log
Common: Remove unnecessary ~9 year old LOGGING preprocessor define
2018-05-28 09:33:21 +02:00
JosJuice
212d415c4b
Merge pull request #6996 from lioncash/color
ColorUtil: Namespace code under the Common namespace
2018-05-28 07:26:29 +02:00
Lioncash
6ad6781bd3 WiimoteEmu: Get rid of pointer casting in extension GetState() functions
We can just memcpy the data instead of pointer-casting data, which is
alignment-safe and doesn't run afoul of aliasing rules.

Previously it also made it seem as if data itself pointed to valid
usable data, but it doesn't, it simply functions as an out parameter
where we push data built up from the GetState() functions into it.
2018-05-27 22:33:26 -04:00
spycrab
6268c7b3d5 Qt: Sort includes properly 2018-05-28 04:31:38 +02:00
Lioncash
ee434d4f01 Common: Remove unnecessary ~9 year old LOGGING preprocessor define
This was added in 4bdb4aa0d1 back in
2009-02-27. The only usage spot of this macro involves the same checks
that were used to define that preprocessor macro, so we can simply
remove the macro
2018-05-27 21:33:25 -04:00
spycrab
d0e2c353a0 Qt: Fix using GC Adapter requiring restart 2018-05-28 03:15:45 +02:00
Lioncash
a745666a60 ColorUtil: Amend function name casing
Makes the function names conform to our coding style.
2018-05-27 21:04:48 -04:00
Lioncash
ac474ff1da ColorUtil: Namespace code under the Common namespace
Given this is within Common, it should be in the Common namespace
itself.
2018-05-27 21:00:54 -04:00
spycrab
18a31e12fd
Merge pull request #6987 from spycrab/qt_info_unknown
Qt/InfoWidget: Don't display unavailable information
2018-05-28 02:36:40 +02:00
Lioncash
c056708dc8 CDUtils: Remove unused parameter in IsCDROM()
It was only ever passed nullptr, and even then, nothing was actually
done with the parameter.
2018-05-27 18:48:23 -04:00
Lioncash
470b09fe9d CDUtils: Amend function names
Amends the function names to follow our coding style.
2018-05-27 18:48:09 -04:00
Lioncash
1f75fa0aff CDUtils: Namespace code under the Common namespace 2018-05-27 18:30:58 -04:00
Lioncash
f4ec419929 SymbolDB: Namespace code under the Common namespace
Moves more common code into the Common namespace where it belongs.
2018-05-27 18:01:40 -04:00
Lioncash
72e8058fb8 SymbolDB: Default constructor and destructor within the cpp file
Given this is a class with non-trivial data-members, it's preferable to
default the constructor and destructor in the cpp file.
2018-05-27 17:25:22 -04:00
Lioncash
a1a81c7bc9 SymbolDB: Convert typedefs into using aliases 2018-05-27 17:23:55 -04:00
Lioncash
e9b9797a86 SymbolDB: Normalize variable names
Normalizes variable naming so that it adheres to our coding style

While we're at it do minor cleanup relating to modified lines
2018-05-27 17:23:10 -04:00
lcsondes
7a13bdbdfb UICommon: fix m_cached_files pruning (partial revert of 68152faf43)
vector::pop_back invalidates all iterators
2018-05-27 22:15:16 +01:00
Lioncash
a4cc854351 Interpreter_FPUtils: Set FPSCR.VXSNAN if any operand to NI_msub is a signaling NaN
If any operand is a signaling NaN, we need to signify this by setting
the VXSNAN bit.

Fixes NaN flag setting for fmsub, fmsubs, fnmsub, fnmsubs, ps_msub, and
ps_nmsub instructions.
2018-05-27 16:41:57 -04:00
Lioncash
3ebd713c33 Interpreter_FPUtils: Set FPSCR.VXSNAN if any operand to NI_madd is a signaling NaN
If any operand is a signaling NaN, we need to signify this by setting
the VXSNAN bit.

Fixes NaN flag setting for fmadd, fmadds, fnmadd, fnmadds, ps_madd,
ps_nmadd, ps_madds0, and ps_madds1
2018-05-27 16:41:47 -04:00
Lioncash
b18dd442f7 Interpreter_FPUtils: Set FPSCR.VXSNAN if either operand to NI_sub is a signaling NaN
If either operand is a signaling NaN, we need to signify this by setting
the VXSNAN bit.

This fixes NaN flag setting for fsub, fsubs, and ps_sub instructions.
2018-05-27 16:29:42 -04:00
Lioncash
f4c5ceba1c Interpreter_FPUtils: Set FPSCR.VXSNAN if either operand to NI_div is a signaling NaN
If either operand is a signaling NaN, we need to signify that by setting
the VXSNAN bit.

This fixes NaN flag setting for fdiv, fdivs and ps_div instructions.
2018-05-27 16:29:42 -04:00
Léo Lam
44879f163e Config: Fix path settings not being saved
Forgot to add a few lines while cherry-picking the config changes
for https://dolp.in/pr6950

Fixes https://bugs.dolphin-emu.org/issues/11171
2018-05-27 21:03:01 +02:00
spycrab
4665a927ba Qt/InfoWidget: Don't display unavailable information 2018-05-27 16:27:29 +02:00
JosJuice
512c6fee51
Merge pull request #6986 from leoetlino/warnings
Debug: Add missing override specifiers
2018-05-27 16:16:13 +02:00
spycrab
ed0cefec78
Merge pull request #6976 from JosJuice/qt-addgame
GameListModel: Don't do a linear scan for each newly added game
2018-05-27 15:42:17 +02:00
spycrab
48961aa677
Merge pull request #6984 from Techjar/patch-2
Qt/GameConfigWidget: Fix Deterministic dual core not saving if changed to "Not Set"
2018-05-27 15:35:03 +02:00
Léo Lam
145258ad27 Debug: Add missing override specifiers 2018-05-27 14:39:01 +02:00
spycrab
febc1f8139
Merge pull request #6980 from spycrab/qt_fix_gamelist
Qt/GameTracker: Register missing metatype
2018-05-27 14:28:21 +02:00
spycrab
0cf59adeb5 Qt/GameTracker: Register missing metatype 2018-05-27 14:21:07 +02:00
Léo Lam
bea1e38c67 Move ECCSignature to Common::ec and give it a less confusing name 2018-05-27 14:01:38 +02:00
Léo Lam
44827ba369 Use CertECC struct instead of hardcoded offsets 2018-05-27 14:01:38 +02:00
Markus Wick
5de2f960a1
Merge pull request #6985 from degasus/arm_vertex_loader_fix
VertexLoaderArm: Fix 565 color format.
2018-05-27 12:11:40 +02:00
degasus
3307946e2a VertexLoaderArm: Fix 565 color format.
Copy & paste error for enforcing A=255.
It was copied from the 888X format, which stores the output data in another register.
2018-05-27 11:27:15 +02:00
JosJuice
a81a0d8c3e GameListModel: Don't do a linear scan for each newly added game 2018-05-27 11:27:06 +02:00
Léo Lam
e9ce75ccc4
Merge pull request #6977 from lioncash/add
Interpreter_FPUtils: Set FPSCR.VXSNAN if either operand to NI_add() is a signaling NaN
2018-05-27 10:21:20 +02:00
Léo Lam
8f003f995b
Merge pull request #6981 from lioncash/const
CodeWidget/CodeViewWidget: Make symbol pointers const where applicable
2018-05-27 10:20:38 +02:00
Techjar
694f0842ce Qt/GameConfigWidget: Fix Deterministic dual core not saving if changed to "Not Set" 2018-05-27 04:20:04 -04:00
JosJuice
c0553afff1 DolphinQt2: Fix a race condition in GameTracker
We need to make sure that LoadCache finishes before Start begins
accessing m_cache. The old solution with mutexes didn't do this.
2018-05-27 07:38:33 +02:00
Lioncash
880f7871d9 CodeWidget/CodeViewWidget: Make symbol pointers const where applicable
These aren't used to modify the data they point to, so make that
explicit. Also while we're at it, add const to any nearby variables that
can be made so.
2018-05-26 23:43:28 -04:00
spycrab
7b07424885
Merge pull request #6975 from JosJuice/qt-fast-gamelist
DolphinQt2: Show cached games before checking whether they exist on disk
2018-05-27 04:31:32 +02:00
spycrab
0c2538f17f
Merge pull request #6960 from spycrab/update_manually
Qt: Add option to invoke the updater manually
2018-05-27 04:29:02 +02:00
spycrab
ec322271ee Qt: Add option to invoke the updater manually 2018-05-27 04:12:21 +02:00
spycrab
6b71217268 Qt/SettingsWindow: Fix SelectGeneralPane opening the Audio pane 2018-05-27 03:36:25 +02:00
Lioncash
054c1b32eb Interpreter_FPUtils: Set FPSCR.VXSNAN if either operand to NI_add() is a signaling NaN
This corrects VXSNAN flag setting for fadd, fadds, ps_add, ps_sum0, and ps_sum1
2018-05-26 16:05:33 -04:00
JosJuice
fd651cf5e6 GameFileCache: Fix a comment mistake 2018-05-26 20:21:22 +02:00
JosJuice
f2103c1b51 DolphinQt2: Avoid an unnecessary string conversion 2018-05-26 20:21:21 +02:00
JosJuice
68152faf43 DolphinQt2: Show cached games before checking whether they exist on disk
DolphinWX already has this improvement in startup time, and it matters
a lot when you have a large game list.
2018-05-26 20:21:17 +02:00
Léo Lam
f568e41fac
Merge pull request #6972 from JosJuice/default-jit
When CPU core is invalid, fall back to JIT instead of interpreter
2018-05-26 20:18:31 +02:00
spycrab
71c6eb2a5d
Merge pull request #6372 from spycrab/wasapi
AudioCommon: Implement WASAPI (Exclusive Mode)
2018-05-26 20:04:55 +02:00
spycrab
d3eff93140 Qt/EnhancementsWidget: Fix missing / duplicate anaglyph options 2018-05-26 17:52:28 +02:00
spycrab
30aa291e83 Qt/EnhacementsWidget: Default anaglyph to "dubois" 2018-05-26 17:38:42 +02:00
spycrab
538aa3197f Qt/EnhancementsWidget: Fix "feature not supported" not disappearing when switching backends 2018-05-26 17:38:14 +02:00
spycrab
f7507a84f0
Merge pull request #6973 from JosJuice/qt-cpu-core-generic
DolphinQt2: Provide proper CPU core options for non-x64 systems
2018-05-26 16:37:20 +02:00
JosJuice
17be4c69b9 DolphinQt2: Provide proper CPU core options for non-x64 systems 2018-05-26 15:16:08 +02:00
spycrab
59cd188391
Merge pull request #6970 from spycrab/qt_win32_weight
Qt/Win32: Remove font weight calculation
2018-05-26 15:09:22 +02:00
JosJuice
792446e1da When CPU core is invalid, fall back to JIT instead of interpreter
This might happen if someone moves settings between e.g. a PC and
an Android device, or if someone was using JITIL and updates Dolphin.

I also made the panic alert a bit more explanatory.
2018-05-26 14:19:53 +02:00
JosJuice
76c9eed848 InfoWidget: Use configured language by default
Fixes the second half of https://bugs.dolphin-emu.org/issues/11085
2018-05-26 14:06:51 +02:00
spycrab
69e0d892aa Qt/Win32: Remove font weight calculation 2018-05-26 13:24:50 +02:00
spycrab
a196dfe50d AudioCommon: Implement WASAPI 2018-05-26 13:08:10 +02:00
Léo Lam
92ec97f899
Merge pull request #6947 from JosJuice/unencrypted-wii-disc
Make the support for unencrypted Wii disc images less broken
2018-05-26 11:56:51 +02:00
Léo Lam
3f81c30e8a
Merge pull request #6949 from leoetlino/stop
Remove useless BootManager::Stop
2018-05-26 11:45:14 +02:00
Léo Lam
98e288cb4b
Merge pull request #6966 from lioncash/fmul
Interpreter_FPUtils: Set FPSCR.VXSNAN if either operand to NI_mul() is a signaling NaN
2018-05-26 11:43:11 +02:00
Léo Lam
f802dc14c1 Remove useless BootManager::Stop
It's not used anywhere other than in DolphinQt2, where the usage is
incorrect and stupid since we shouldn't be trying to stop the core
and 'restore config' that was changed by the core at app exit time,
but immediately when the core is being shut down.
2018-05-26 11:33:13 +02:00
Léo Lam
f64cbc86b1
Merge pull request #6968 from lioncash/mmu
MMU: Normalize parameter naming
2018-05-26 11:18:32 +02:00
Léo Lam
41fe7970da
Merge pull request #6969 from lioncash/namespace
Common: Namespace GekkoDisassembler.cpp/.h
2018-05-26 11:18:10 +02:00
spycrab
f2e6545adf
Merge pull request #6967 from spycrab/qt_anagylph_fix
Qt/Graphics: Fix broken stereoscopy settings
2018-05-26 00:53:25 +02:00
Lioncash
b60ad2425d Common: Namespace GekkoDisassembler.cpp/.h
Moves more common code into the Common namespace where it belongs
2018-05-25 16:55:09 -04:00
Lioncash
5d42f31539 MMU: Normalize parameter naming
Makes all of the naming consistent with our code style, and makes
parameters match their header equivalents.

Essentially just a clean-up of things that weren't migrated over
already.
2018-05-25 16:14:47 -04:00
spycrab
928a64dc6a Qt/EnhancementsWidget: Add missing anaglyph options 2018-05-25 22:05:12 +02:00
spycrab
08b0725aee
Merge pull request #6961 from spycrab/info_improvements
Qt/InfoWidget: Improve information display
2018-05-25 21:48:10 +02:00
spycrab
157e263e05 Qt/Graphics: Fix broken stereoscopy settings 2018-05-25 21:37:22 +02:00
Lioncash
3da751f054 Interpreter_FPUtils: Set FPSCR.VXSNAN if either operand to NI_mul() is a signaling NaN
If either of the operands are signaling NaNs, then an invalid operation
exception needs to be indicated within the FPSCR.

This corrects SNaN flag setting for fmul, fmuls, ps_mul, ps_muls0, and
ps_muls1.
2018-05-25 12:15:02 -04:00
Stenzek
57976c947b ShaderGen: Don't emit integer outputs when logic op is unsupported
This may have been causing issues for D3D10 hardware, where logic op was
not supported.
2018-05-26 00:09:29 +10:00
Stenzek
9a5c2119e5 ShaderCache: Remove unused UID bits before inserting into shader map 2018-05-26 00:09:10 +10:00
Stenzek
640bfb8135 VideoConfig: Add a field for indicating logic op support in the backend 2018-05-26 00:07:20 +10:00
Léo Lam
3d44dc3981
Merge pull request #6958 from lioncash/rsqrte
Interpreter_FloatingPoint: Handle SNaN flag setting in frsqrte
2018-05-25 15:11:28 +02:00
Léo Lam
56217fd42f
Merge pull request #6956 from lioncash/flag
Interpreter_FPUtils: Set the FPSCR.VX bit if any invalid operation exception bits are set
2018-05-25 15:10:05 +02:00
Léo Lam
9d1785718f
Merge pull request #6955 from lioncash/nan
Interpreter_FloatingPoint: Set FPSCR.VXSNAN if input to fres is a signaling NaN
2018-05-25 15:09:04 +02:00
Léo Lam
647309a650
Merge pull request #6959 from leoetlino/gcc
ES/Formats: Work around a GCC bug
2018-05-25 13:08:57 +02:00
spycrab
89ec040b1a
Merge pull request #6962 from spycrab/qt_renderwidget_fixes
Qt: Fix stop emulation confirmation prompt bugs
2018-05-25 10:09:44 +02:00
spycrab
39706748e7 Qt/InterfacePane: Toggle panic handlers instantly 2018-05-25 04:17:04 +02:00
spycrab
fc928ddfc8 Qt: Show exit confirmation prompt on main window 2018-05-25 03:53:40 +02:00
spycrab
7931d2d00d Qt: Fix game not getting paused when exit prompt is open 2018-05-25 03:53:05 +02:00
spycrab
97383645e7 Qt/InfoWidget: Don't show apploader date if it's not present 2018-05-25 03:23:56 +02:00
spycrab
a19e5b3f7a Qt/InfoWidget: Don't show banner details if no data is present 2018-05-25 03:23:56 +02:00
Léo Lam
7c6844e895 ES/Formats: Work around a GCC bug
In old GCC versions, capturing 'this' does not work for some lambdas.
The workaround is to not use auto for the parameter (even though the
type is obvious). This can be dropped once we require GCC 7.
2018-05-24 21:27:40 +02:00
Lioncash
155bcb1649 Interpreter_FloatingPoint: Set FPSCR.VXSNAN if the input to frsqrte is a signaling NaN
If the input is a signaling NaN, then we need to signal that via setting
the FPSCR.VXSNAN bit. We also shouldn't update the FPRF flags if
FPSCR.VE is set.
2018-05-24 14:37:09 -04:00
Lioncash
31504f85a7 Interpreter_FloatingPoint: Don't update FPRF in frsqrte in certain exceptional cases
If the FPSCR.VE bit is set and an invalid operand is passed in, then the FPRF
shouldn't be updated. Similarly this is also the case when the FPSCR.ZE bit
is set and negative or positive zero is passed in as the operand.
2018-05-24 14:32:40 -04:00
spycrab
a0b2cdbffc Qt/GameList: Fix bold header when selecting a game 2018-05-24 13:48:14 +02:00
Lioncash
34adc529a7 Interpreter_FloatingPoint: Don't update the FPRF in fres in certain exceptional cases
If FPSCR.ZE is set and a divide by zero exception is signaled, then the
FPRF shouldn't be updated with a result. Similarly, if the input is an
SNaN and FPSCR.VE is set, then the FPRF shouldn't be updated.
2018-05-23 23:31:58 -04:00
Lioncash
dfea5cb00d Interpreter_FPUtils: Set the FPSCR.VX bit if any invalid operation exception bits are set
The VX bit is intended to be a summary bit indicating the occurrence of
any kind of invalid operation. Therefore, whenever an invalid operation
exception is set, also set VX.

This corrects our CR flag setting for multiple instructions in certain
scenarios. This corrects flag setting cases in fadd, fadds, fctiw, fctiwz, fdiv,
frsp, frsqrte, fsub, and fsubs (and technically every floating-point
instruction that we make more accurate in the future with regards to
flag setting).
2018-05-23 21:53:37 -04:00
Lioncash
8a79f9099c Interpreter_FloatingPoint: Set FPSCR.VXSNAN if input to fres is a signaling NaN
fres is defined as having the VXSNAN bit set if an input to the
instruction is a signaling NaN
2018-05-23 21:13:02 -04:00
spycrab
a60bba37cd
Merge pull request #6953 from spycrab/qt_map_unresponsive
Qt/MappingButton: Fix window becoming unresponsive after mapping
2018-05-24 01:21:53 +02:00
spycrab
574c609709 Qt/Mapping: Add option to map all devices at once 2018-05-24 01:13:47 +02:00
spycrab
c39f00194d Qt/MappingButton: Fix window becoming unresponsive after mapping 2018-05-24 00:01:05 +02:00
spycrab
7620e1d5f8
Merge pull request #6950 from leoetlino/nand-path
Port FS, SD and dump path to onion config
2018-05-23 20:39:23 +02:00
Léo Lam
c99ac40700 Port FS, SD and dump path to onion config
This ports the Wii filesystem root, Wii SD card path and dump path
settings to the new config system (OnionConfig).

My initial plan was to wait until DolphinWX was removed before porting
most of the Main (Core, DSP, General) settings to onion config, but
I've decided to submit a small part of those changes to fix
[issue 10566](https://bugs.dolphin-emu.org/issues/10566).

Removes the need to manually set the FileUtil path in the UI frontends
and gets rid of some more members that don't really belong in SConfig.

Also fixes a bug which would cause the dump path not to get created
after change.
2018-05-23 16:07:18 +02:00
Léo Lam
93f49b1ca4 Config: Make Load() and Save() slightly faster
Only invoke config changed callbacks from Config::Save, not
Layer::Save. The latter results in callbacks being called
once per layer, up to 7 times per save.
2018-05-23 16:07:18 +02:00
Léo Lam
4fd1674c49 Core: Only init Wii FS contents in Wii mode
There's no filesystem when not in Wii mode, so... bad things
would happen.
2018-05-23 13:39:53 +02:00
Léo Lam
da03ff2e25
Merge pull request #6944 from leoetlino/init-fs-contents
Move Wii FS content init to happen after Boot
2018-05-23 11:37:10 +02:00
JosJuice
58743416bb Make the support for unencrypted Wii disc images less broken
These disc images are only used on dev units and not retail units.
There are two important differences compared to normal Wii disc images:

- The data starts 0x8000 bytes into each partition instead of 0x20000
- The data of a partition is stored unencrypted and contains no hashes

Our old implementation was just guesswork and doesn't work at all.
According to testing by GerbilSoft, this commit's implementation
is able to read and extract files in the filesystem correctly,
but the tested game still isn't able to boot. (It's thanks to their
info about unencrypted disc images that I was able to make this commit.)
2018-05-23 08:40:37 +02:00
spycrab
51410b7672
Merge pull request #6946 from spycrab/qt_rob
Qt/RunOnObject: Fix no result being returned
2018-05-23 01:15:59 +02:00
spycrab
1f3df1811b Qt/RunOnObject: Fix no result being returned 2018-05-23 01:07:08 +02:00
spycrab
94e97d47a0 Qt/FIFOPlayer: Implement Analyzer 2018-05-22 23:51:01 +02:00
Lioncash
6a4f12d785 JitArm64: Correct negative overflow handling for divw 2018-05-22 13:52:56 -04:00
Lioncash
5abe6c264a Jit64: Correct negative overflow handling for divw 2018-05-22 13:52:51 -04:00
Léo Lam
0e9255c469
Merge pull request #6932 from sepalani/debug-patches
DebugInterface: MemoryPatches methods added
2018-05-22 19:15:51 +02:00
Léo Lam
593f58be6c Move Wii FS content init to happen after Boot
Initialising Wii filesystem contents should be done after Boot and
not in HW to ensure that we operate with the correct title context
and to make sure required title directories exist (so that Movie and
Netplay code can copy data from and to the temporary NAND).
2018-05-22 19:05:45 +02:00
Lioncash
2ca1ac3370 Interpreter_Integer: Correct negative overflow handling for divw
Previously, given cases such as 0x80000000 / 0xFFFFFFFF we'd incorrectly
set the destination register value to zero. If the dividend is negative,
then the destination should be set to -1 (0xFFFFFFFF), however if the
dividend is positive, then the destination should be set to 0.

Note that the 750CL documents state that:

"If an attempt is made to perform either of the divisions --
0x80000000 / -1 or <anything> / 0, then the contents of rD are
undefined, as are the contents of the LT, GT, and EQ bits of the CR0
field (if Rc = 1). In this case, if OE = 1 then OV is set."

So this is a particular behavior of the hardware itself.
2018-05-22 10:39:08 -04:00
Lioncash
22ece80f19 BreakPoints: Make OverlapsMemcheck() a const member function
This doesn't modify class state, it only queries said state.
2018-05-22 09:42:20 -04:00
Tilka
5ac05725c8
Merge pull request #6938 from lioncash/priv
Interpreter: Check processor privilege level when executing supervisor instructions
2018-05-22 10:04:53 +01:00
Markus Wick
76eac56a07
Merge pull request #6940 from stenzek/ogl-msaa-efb-access
OGL: Fix EFB access in MSAA-mode
2018-05-22 09:58:58 +02:00
Sepalani
8fa898fe9a DebugInterface: MemoryPatches methods added
CodeView: Restore instruction added
2018-05-22 10:31:31 +04:00
Stenzek
f7a0cae7f4 HiresTextures: Do not load compressed textures with unaligned dimensions
D3D11 cannot handle block compressed textures where the first mip level
is not a multiple of the block size. The simple fix for texture pack
authors: leave these textures uncompressed. You can still use a .dds
container.
2018-05-22 16:15:18 +10:00
Stenzek
d0c025bf0b OGL: Fix EFB access in MSAA-mode 2018-05-22 15:35:20 +10:00
Stenzek
7eaba154a4
Merge pull request #6936 from stenzek/copy-filter-depth-fix
EFB2RAM: Apply copy filter as a float coefficient after sampling
2018-05-22 13:52:26 +10:00
Lioncash
9a088e008f Interpreter: Check processor privilege level when executing supervisor instructions
Executing a supervisor-level instruction in user mode is supposed to
cause a program exception to occur.

The following supervisor instructions are present:

- dcbi
- mfmsr
- mfspr
- mfsr
- mfsrin
- mtmsr
- mtspr
- mtsr
- mtsrin
- rfi
- tlbie
- tlbsync

In 0337ca116a checks within mfspr and
mtspr were added. This change adds the trivial checks to the other
instructions.
2018-05-21 23:47:49 -04:00
spycrab
6747543502 Qt: Fix crash on game start 2018-05-22 04:37:08 +02:00
Stenzek
f74dbc794c EFB2RAM: Apply copy filter as a float coefficient after sampling
Using 8-bit integer math here lead to precision loss for depth copies,
which broke various effects in games, e.g. lens flare in MK:DD.

It's unlikely the console implements this as a floating-point multiply
(fixed-point perhaps), but since we have the float round trip in our
EFB2RAM shaders anyway, it's not going to make things any worse. If we
do rewrite our shaders to use integer math completely, then it might be
worth switching this conversion back to integers.

However, the range of the values (format) should be known, or we should
expand all values out to 24-bits first.
2018-05-22 12:24:08 +10:00
spycrab
54f85c3320 Qt/FIFOPlayerWindow: Properly reset ranges 2018-05-22 01:32:26 +02:00
riking
268b424843 QtUtils/RunOnObject: Make safe under object destruction
Co-Authored-By: cancel <cancel@cancel.fm>
2018-05-21 15:49:19 -07:00
spycrab
f31f1a08fb
Merge pull request #6927 from spycrab/qt_mpwnd_size
Qt/MappingWindow: Make sure widgets don't need scrolling by default
2018-05-21 21:16:32 +02:00
Léo Lam
32c4f3d158
Merge pull request #6930 from lioncash/post
VideoCommon/PostProcessing: Minor changes
2018-05-21 21:12:27 +02:00
Léo Lam
db5c2ffb41
Merge pull request #6931 from lioncash/vulkan-post
Vulkan/PostProcessing: Make file-scope std::string instances const char arrays
2018-05-21 21:11:40 +02:00
Lioncash
3e996dc0f1 Interpreter_SystemRegisters: Get rid of implicit sign conversions
Keeps signed values out of bit arithmetic (not that there's any issues
that could arise from it in these situations, but it does look more
consistent, and silences compiler warnings)
2018-05-21 13:45:47 -04:00
Lioncash
8a1a924e2e Vulkan/PostProcessing: Make file-scope std::string instances const char arrays
Avoids performing avoidable file-scope heap allocations
2018-05-21 12:29:05 -04:00
Lioncash
c4d27cc8ec PostProcessing: Make GetShader() return by constant reference
We don't need to create copies of the shader string when they can be
avoided.
2018-05-21 12:07:51 -04:00
Lioncash
9d1b6cdea4 PostProcessing: Make member functions const qualified where applicable
These functions don't modify internal class state
2018-05-21 11:59:08 -04:00
Lioncash
8ce6f9bae5 PostProcessing: Replace typedef with a using alias 2018-05-21 11:57:15 -04:00
Lioncash
f9c20571ab PostProcessing: Default constructor and destructor of PostProcessingShaderConfiguration
Also ensure that all members of the class are initialized on
construction as well. Previously the bool indicating if options are
dirty wouldn't be initialized, which could be read uninitialized if an
instance was constructed and then IsDirty() is called.
2018-05-21 11:54:56 -04:00
spycrab
42a1545f8e
Merge pull request #6924 from flatulation/shaderconfig
Qt: Reimplement post-processing shader configuration window
2018-05-21 17:22:41 +02:00