Commit Graph

28342 Commits

Author SHA1 Message Date
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 a68b8202e1
Merge pull request #6957 from spycrab/qt_bold_header
Qt/GameList: Fix bold header when selecting a game
2018-05-24 17:55:55 +02: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 4c1425b419
Merge pull request #6952 from spycrab/qt_map_all
Qt/Mapping: Add option to map all devices at once
2018-05-24 01:21:23 +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
Léo Lam dfb1dbad47
Merge pull request #6951 from JosJuice/game-inis-2018-05-23
Update game INIs
2018-05-23 21:32:22 +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
JosJuice e6ed919672 Remove enforced inaccurate settings from Lemony Snicket game INI
I have no idea why these were here... And the SkipIdle setting
doesn't even exist anymore.
2018-05-23 19:45:20 +02:00
JosJuice a9ffd13305 Game INI updates
https://bugs.dolphin-emu.org/issues/7104
https://bugs.dolphin-emu.org/issues/8452
https://bugs.dolphin-emu.org/issues/9040
https://bugs.dolphin-emu.org/issues/10554
https://bugs.dolphin-emu.org/issues/10059
https://bugs.dolphin-emu.org/issues/10155
https://bugs.dolphin-emu.org/issues/10324
https://bugs.dolphin-emu.org/issues/10758
https://bugs.dolphin-emu.org/issues/10759
https://bugs.dolphin-emu.org/issues/10930
https://github.com/dolphin-emu/dolphin/pull/5702#issuecomment-318903278
https://github.com/dolphin-emu/dolphin/pull/5717
https://forums.dolphin-emu.org/Thread-big-brain-academy-problem
https://forums.dolphin-emu.org/Thread-netflix-instant-streaming-disc-testing
https://forums.dolphin-emu.org/Thread-wii-new-carnival-games?pid=469822#pid469822
2018-05-23 19:43:46 +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
JosJuice 517af3f044 Add vertex rounding to game INIs for certain titles
https://bugs.dolphin-emu.org/issues/10186
2018-05-23 16:05:30 +02:00
JosJuice 8ff3124e5e Remove remaining EmuState sections from game INIs 2018-05-23 15:58:07 +02:00
JosJuice 052ac16650
Merge pull request #6948 from leoetlino/testing
Core: Only init Wii FS contents in Wii mode
2018-05-23 13:53:33 +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 db65e44335
Merge pull request #6882 from spycrab/qt_fifo_analyzer
Qt/FIFOPlayer: Implement Analyzer
2018-05-23 00:03:20 +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 43680f314c
Merge pull request #6942 from lioncash/const
BreakPoints: Make OverlapsMemcheck() a const member function
2018-05-22 19:14:27 +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
Markus Wick 0979febe78
Merge pull request #6941 from stenzek/unaligned-texture-load
HiresTextures: Do not load compressed textures with unaligned dimensions
2018-05-22 09:57:26 +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 f64bd401b6
Merge pull request #6937 from spycrab/hotfix_fifo
Qt: Fix crash on game start
2018-05-22 04:44:14 +02: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 59be5da24c
Merge pull request #6935 from spycrab/qt_fifo_range
Qt/FIFOPlayerWindow: Properly reset ranges
2018-05-22 02:24:39 +02:00
spycrab 54f85c3320 Qt/FIFOPlayerWindow: Properly reset ranges 2018-05-22 01:32:26 +02:00
spycrab 302093d777
Merge pull request #6934 from riking/runonobject
QtUtils/RunOnObject: Make safe under object destruction
2018-05-22 01:03:20 +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