Commit Graph

21087 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
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
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
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
flatulation
93e0a2e52a Qt: Implement post-processing shader configuration window 2018-05-21 16:09:04 +01:00
Léo Lam
cb850707c0 WiiSave: Fix typo 2018-05-21 16:41:15 +02:00
spycrab
9eb3bce520 Qt/MappingWindow: Make sure widgets don't need scrolling by default 2018-05-21 15:47:09 +02:00
Léo Lam
af97df74e1
Merge pull request #6895 from leoetlino/hardcoded
IOSC: Fix hardcoded MS and CA IDs
2018-05-21 15:27:31 +02:00
Léo Lam
12e2012465 IOSC: Fix hardcoded MS and CA IDs
The values that are used for the MS and CA IDs come from the SEEPROM.
Also, the default CA and MS values are respectively 2 and 3,
not 1 and 2.
2018-05-21 15:11:25 +02:00
Lioncash
3edf0f1cf9 Interpreter: Move common exception functions to ExceptionUtils.h
Keeps all of the interpreter-specific exception handling functions
together in a reusable way across translation units, similar to
FPUtils.h for reusable floating-point functions.
2018-05-20 18:25:32 -04:00
Léo Lam
3d8e63fffd
Merge pull request #6914 from leoetlino/verifysign
ES: Implement VerifySign (last remaining unimplemented, actually used ioctlv)
2018-05-20 23:11:49 +02:00
Léo Lam
79edd57b96
Merge pull request #6920 from lioncash/priv
Interpreter_SystemRegisters: Check processor privilege level in mfspr and mtspr
2018-05-20 23:08:59 +02:00
Léo Lam
73fde6d84d
Merge pull request #6923 from lioncash/prototype
DolphinQt2/GeckoCodeWidget: Remove unimplemented OnDelete() prototype
2018-05-20 23:02:26 +02:00
Lioncash
437c954b60 DolphinQt2/GeckoCodeWidget: Remove unimplemented OnDelete() prototype
Tidies up the interface a little (and prevents a linker error from
occurring in the future, should it ever have been called).
2018-05-20 16:42:13 -04:00
Markus Wick
c145d7ee63
Merge pull request #6922 from lioncash/interface
VideoBackendBase: Include parameter names in member function declarations
2018-05-20 22:39:31 +02:00
Lioncash
ba94ffd51d VideoBackendBase: Include parameter names in member function declarations
Given this is a base class, we should clearly state what the parameters
to the functions in its exposed interface actually mean or represent.
This avoids needing to hunt for the definition of the functions in cpp
files.

While we're at it, normalize said parameter names so they follow our
naming guidelines.
2018-05-20 16:27:16 -04:00
Markus Wick
7563c82162
Merge pull request #6921 from lioncash/mmu
MMU: Avoid sign conversions in EFB_Read and EFB_Write
2018-05-20 22:18:40 +02:00
Lioncash
edb38ff144 MMU: Avoid sign conversions in EFB_Read and EFB_Write
There's no reason to use int here as opposed to an unsigned value.
Video_AccessEFB() takes its arguments as u32 values, so we'd be doing
sign conversions for no reason here (along with causing avoidable
compiler warnings).
2018-05-20 16:13:53 -04:00
Lioncash
0337ca116a Interpreter_SystemRegisters: Check processor privilege level in mfspr and mtspr
If a program executing in user mode tries to write to any SPRs other than
XER, LR, or CTR registers, then a program exception occurs. Similarly
this also applies for reading SPRs as well, however the upper and lower
timebase halves can also be read (but not written to).
2018-05-20 15:51:52 -04:00
spycrab
8af8c58eb9
Merge pull request #6917 from spycrab/qt_mpbtn_size
Qt/MappingButton: Enforce more consistent size
2018-05-20 21:27:41 +02:00
spycrab
f7323a4419
Merge pull request #6916 from spycrab/qt_indicator_aa
Qt/MappingIndicator: Improve render quality
2018-05-20 21:21:08 +02:00
spycrab
0e8aa213a3 Qt/MappingButton: Enforce more consistent size 2018-05-20 21:20:45 +02:00
spycrab
b4f1c489a3 Qt/MappingIndicator: Center trigger labels 2018-05-20 21:16:14 +02:00
Léo Lam
4284952538
Merge pull request #6919 from lioncash/nop
Interpreter_LoadStore: No-op dcbt and dcbtst if HID0.NOOPTI is set
2018-05-20 20:33:38 +02:00
Lioncash
d05c1b257c Interpreter_LoadStore: No-op dcbt and dcbtst if HID0.NOOPTI is set
If HID0.NOOPTI is set, then dcbt and dcbtst are no-oped globally. We
currently don't perform data cache emulation, but we put this in anyway
so this detail isn't forgotten about if data cache emulation is
introduced at some point in the future.
2018-05-20 14:23:51 -04:00
Léo Lam
5ce1b83d97
Merge pull request #6918 from lioncash/cast
Interpreter_LoadStore: Remove unnecessary cast in lhzx()
2018-05-20 20:21:16 +02:00
Lioncash
940f41f593 Interpreter_LoadStore: Remove unnecessary cast in lhzx()
This is only moving a smaller unsigned integral type into a larger
unsigned integral type, so there's no loss of information that could
occur.
2018-05-20 14:06:59 -04:00
Léo Lam
4b0f8d9f85 ES: Implement VerifySign
This implements ES_VerifySign which is notably used by the system menu
when importing saves.

Now *all* ES commands that are actually used by titles are implemented.
2018-05-20 20:04:53 +02:00
Léo Lam
cec7fded60 IOSC: Implement VerifyPublicKeySign for ECC 2018-05-20 20:04:53 +02:00
Léo Lam
b86f1ea7b3 ES / IOSC: Add support for ECC certificates 2018-05-20 20:04:53 +02:00
Léo Lam
355b1b5d5b ec: Improve readability and clarity
- Move all of the ec functions into the Common::ec namespace.

- Give the public functions better names and some usage information.

- Move all of the "elt" related functions into an "elt" class including
  all of the arithmetic operations, so that the logic becomes clearer
  and feels less like assembly.

  This also makes it much more obvious what the parameters are, instead
  of only using unsigned char* (which doesn't tell anything about what
  the pointer is used for or the size).

- Similarly, add a new "Point" class and move point functions there.
  Overload the arithmetic operators to make calculations easier to read
2018-05-20 19:59:26 +02:00
Léo Lam
e83591f188 ec: Avoid exposing internal function 2018-05-20 19:59:26 +02:00
Léo Lam
b9dd94b9b2 bn: Use int instead of u32 for sizes
The loops relied on unsigned integer overflow, which is not immediately
obvious. Replace them with less clever variants that are clearer.

Also implement bn_compare using std::memcmp.
2018-05-20 19:59:26 +02:00
spycrab
b0b14853c4 Qt/MappingIndicator: Improve render quality 2018-05-20 17:50:26 +02:00
JosJuice
cc42b4354d Reimplement custom PNG banners in game list
Fixes https://bugs.dolphin-emu.org/issues/10938
and makes PNG banners available in DolphinQt2 for the first time.
2018-05-20 15:34:03 +02:00
JosJuice
10ff6d73c2 Fix compatibility with versions of libpng older than 1.5 2018-05-20 13:44:42 +02:00
Emmanuel Gil Peyrot
c51ae9c62a Remove SOIL altogether from the project. 2018-05-20 13:44:42 +02:00
Emmanuel Gil Peyrot
6d0143647e VideoCommon: Remove a workaround mutex used for SOIL 2018-05-20 13:44:41 +02:00
Emmanuel Gil Peyrot
17e65a7167 VideoCommon: Replace SOIL with libpng for hires textures 2018-05-20 13:44:38 +02:00
Léo Lam
0706add584
Merge pull request #6699 from 404-Name-Not-Found/alphabetize-gecko-qt
Adds a toggleable function for sorting the gecko codes alphabetically to the gecko code menu
2018-05-20 11:13:38 +02:00
Justin Futrell
c7f0c7484d GeckoCodeWidget: Add a Sort button 2018-05-20 11:05:11 +02:00
Léo Lam
eae45e0e2c
Merge pull request #6911 from lioncash/analyst
PPCAnalyst: Replace memset usages with list initialization
2018-05-20 10:45:44 +02:00
Léo Lam
464bfb073e
Merge pull request #6912 from spycrab/qt_jit_widget
Qt/JITWidget: Add object name
2018-05-20 10:44:21 +02:00
spycrab
f7b188c7b4 Qt/JITWidget: Add object name 2018-05-20 03:58:54 +02:00
Lioncash
ced806a00a PPCAnalyst: Replace memset usages with list initialization
Allows the use of non-trivially-copyable objects within the relevant
structs should it ever be needed.
2018-05-19 18:37:54 -04:00
spycrab
07e0b9c0d2
Merge pull request #6907 from spycrab/qt_gfx_sr_backend
Qt/SoftwareRendererWidget: Fix backend info not getting updated properly
2018-05-19 23:33:24 +02:00
spycrab
ef803613d0 Qt/SoftwareRendererWidget: Fix backend info not getting updated properly 2018-05-19 23:28:23 +02:00
Lioncash
5de99288bf PPCAnalyst: Clean up indexing expressions in Analyze()
Given we just access the same member repeatedly, just use a reference
and avoid repeated unnecessary indexing.
2018-05-19 15:31:38 -04:00
Léo Lam
c6bd237534
Merge pull request #6908 from Tilka/warnings
Fix -Wignored-qualifiers warnings
2018-05-19 21:06:29 +02:00
spycrab
49f8d5aefb Qt/AdvancedWidget: Save progressive scan when toggled 2018-05-19 20:59:30 +02:00
Tillmann Karras
1993eb436c Fix -Wignored-qualifiers warnings 2018-05-19 17:18:45 +01:00
spycrab
bc504d9f84 Qt/GraphicsWindow: Show display name in title 2018-05-19 17:44:22 +02:00
spycrab
7a8b2da55e Qt/ToolBar: Fix checkbox not properly reflecting toolbar visibility 2018-05-19 15:50:21 +02:00
Léo Lam
fc525bdf8f
Merge pull request #6898 from leoetlino/certreader
ES/Formats: Deduplicate signed blob reading code
2018-05-19 12:11:02 +02:00
Léo Lam
d399b0f59e
Merge pull request #6900 from lioncash/buffer
PPCAnalyst: Make CodeBuffer an alias for std::vector<CodeOp>
2018-05-19 12:10:19 +02:00
spycrab
bf0fbdbc52
Merge pull request #6893 from spycrab/qt_gc_checkboxes
Qt/GameConfigWidget: Fix checkboxes not being saved properly
2018-05-19 03:34:24 +02:00
spycrab
adcaf3c581
Merge pull request #6887 from spycrab/qt_slider_accuracy
Qt/HacksWidget: Fix slider not showing overridden settings
2018-05-19 03:00:34 +02:00
Lioncash
9ad7d9ff87 Jit64/JitArm64: Remove unnecessary code buffer parameter for DoJit()
This function in both JITs is only ever called by passing the JIT's code
buffer into it. Given this is already accessible, since the functions
are part of the respective JIT class, we can just remove this parameter.
This also cleans up accesses with the new code buffer, as we don't need
to do janky looking dereference-then-index expressions.
2018-05-18 17:19:49 -04:00
Lioncash
3a8a67025e PPCAnalyst: Make CodeBuffer an alias for std::vector<CodeOp>
This class effectively acted as a "discount vector", that would simply
allocate memory and then delete it in the destructor when it goes out of
scope.

We can just use a std::vector directly to reduce this boilerplate.
2018-05-18 17:19:45 -04:00
Léo Lam
33c5fd6f5a IOSC: Verify that RSA signature size is correct 2018-05-18 23:12:07 +02:00
Léo Lam
964d00447d IOSC: Reuse CertReader for cert imports 2018-05-18 23:12:07 +02:00
Léo Lam
90e86fa9a6 ES/Formats: Move sha1 calculation to SignedBlobReader 2018-05-18 22:40:38 +02:00