Commit Graph

21548 Commits

Author SHA1 Message Date
Techjar bc15eb2d57 Expose arbitrary mipmap detection toggle in UI 2018-07-01 04:42:47 -04:00
spycrab 8e1425b363
Merge pull request #7193 from spycrab/qt_mac_bgcolor
Qt/WrapInScrollArea: Ensure correct macOS background colors
2018-07-01 04:02:56 +02:00
Cuyler36 c4db7475d5 Fix Address Search Box Focus Lost 2018-06-30 17:47:16 -04:00
spycrab a4ef6f40d0
Merge pull request #7194 from Techjar/qt-pp-state
Qt/EnhancementsWidget: Fix post-processing options not being disabled when they should
2018-06-30 21:52:37 +02:00
Mike Ravenelle 8218de0762 QT: Removed iterative input in options groups. 2018-06-30 14:38:42 -05:00
Techjar 68b8cd1e7c Qt/EnhancementsWidget: Fix post-processing options not being disabled when they should 2018-06-30 14:59:19 -04:00
spycrab e23a2e3063
Merge pull request #7189 from Techjar/qt-backend-translated
Qt: Fix inability to select translated video backend names
2018-06-30 20:32:12 +02:00
spycrab 4bf276e912 Qt/WrapInScrollArea: Ensure correct macOS background colors 2018-06-30 20:15:22 +02:00
Techjar 5adeca4087 Add "Reduce Polling Rate" option to NetPlay
Normally, SI is polled at a rate defined by the game, and we have to send the pad state to other clients on every poll or else we'll desync. This can result in fairly high bandwidth usage, especially with multiple controllers, mostly due to UDP/IP overhead.

This change introduces an option to reduce the SI poll rate to once per frame, which may introduce up to one frame of additional latency, but will reduce bandwidth usage substantially, which is useful for users on very slow internet connections.

Polling SI less frequently than the game asked for did not seem to cause any problems in my testing, so this should be perfectly safe to do.
2018-06-30 13:13:44 -04:00
spycrab a9841e4fc4
Merge pull request #7190 from Techjar/video-backend-translation
Mark all video backend names for translation
2018-06-30 15:48:32 +02:00
Techjar b59387a65d Qt: Fix inability to select translated video backend names 2018-06-30 07:31:44 -04:00
Techjar dc2f22516c Mark all video backend names for translation 2018-06-30 06:30:19 -04:00
Techjar 7785255470 Qt: Add titles to various message boxes 2018-06-29 23:29:23 -04:00
spycrab e22c5333ab
Merge pull request #6819 from spycrab/delete_wx
Remove DolphinWX
2018-06-30 00:12:24 +02:00
spycrab 227290055d
Merge pull request #7184 from spycrab/qt_tas_round
Qt/TAS: Fix slightly off-center default values
2018-06-29 11:47:32 +02:00
spycrab eac5d3d089 Qt/TAS: Fix slightly off-center default values 2018-06-29 11:39:36 +02:00
Techjar d94805bab3 Qt/GameList: Explicitly set minimum section size 2018-06-29 05:22:26 -04:00
spycrab bd28bf6b1e
Merge pull request #7164 from Techjar/gamelist-multiselect
Qt/GameList: Reimplement multiselection functionality from WX
2018-06-29 11:14:28 +02:00
spycrab a595ac6b27
Merge pull request #7169 from Techjar/qt-memcard-creation
Qt/GameCubePane: Fix inability to create new memory card file
2018-06-29 11:07:56 +02:00
spycrab 9b00045220
Merge pull request #7168 from Techjar/qt-image-columns
Qt/GameList: Adjust image column widths for equal padding
2018-06-29 11:05:39 +02:00
spycrab a9f065a559 Qt/GameList: Fix some resizing bugs 2018-06-29 09:22:18 +02:00
spycrab 3eef8145d2
Merge pull request #7172 from spycrab/qt_np_map
Qt/PadMappingDialog: Retain previous settings
2018-06-29 01:01:42 +02:00
spycrab 6700cc4234
Merge pull request #7174 from spycrab/qt_fs_export
Qt/FilesystemWidget: Suggest default filename when exporting files
2018-06-28 22:32:22 +02:00
spycrab 317de3cf5b
Merge pull request #7173 from spycrab/qt_np_dclick
Qt/NetPlay: Make double clicking game entries confirm dialogs
2018-06-28 20:02:55 +02:00
spycrab 727b6ba81a Qt/GameList: Fix empty columns showing up when they should get hidden 2018-06-27 14:10:53 +02:00
spycrab c8e4b692a4 Qt/FilesystemWidget: Suggest default filename when exporting files 2018-06-27 14:04:41 +02:00
spycrab 4af021ea03 Qt/PadMappingDialog: Retain previous settings 2018-06-27 13:40:39 +02:00
spycrab 1bc8c34f8b Qt/NetPlay: Make double clicking game entries confirm dialogs 2018-06-27 13:35:34 +02:00
spycrab 1ec0a39cf1 Qt/GameList: Fix search messing up columns 2018-06-27 12:57:32 +02:00
spycrab 44b22c90df Remove DolphinWX 2018-06-26 20:50:39 +02:00
Techjar a9222bf969 Qt/GameList: Adjust image column widths for equal padding 2018-06-26 14:31:54 -04:00
Techjar 2491c53b92 Qt/GameCubePane: Fix inability to create new memory card file 2018-06-26 00:37:08 -04:00
spycrab beeb6754d2
Merge pull request #7166 from spycrab/qt_columns
Qt/GameList: Fix column (re)sizing issues
2018-06-25 22:41:46 +02:00
spycrab d746a8dae3 Qt/GameList: Fix weird column resizing 2018-06-25 22:37:43 +02:00
Stenzek 2debe9e9d1
Merge pull request #7167 from Techjar/patch-437
VideoCommon: Fix auto IR being very overzealous
2018-06-25 15:43:37 +10:00
Techjar 25bfee2233 VideoCommon: Fix auto IR being very overzealous 2018-06-25 00:48:57 -04:00
Pierre Bourdon 86edf7f848
Merge pull request #7087 from spycrab/qt_disable_watcher
Qt: Add option to disable auto-refresh
2018-06-25 01:46:19 +02:00
Pierre Bourdon 212adc7b87
Merge pull request #7115 from Sintendo/double2singleopt
Jit64Common: Eliminate branch in ConvertDoubleToSingle
2018-06-25 01:45:11 +02:00
Pierre Bourdon 1453a314df
Merge pull request #7130 from 8times9/master
Qt: Add Vulkan to graphics backend description
2018-06-25 01:43:41 +02:00
Pierre Bourdon 307d705654
Merge pull request #7152 from lioncash/dsp-interp
DSPIntExtOps: Minor cleanups
2018-06-25 01:42:42 +02:00
Pierre Bourdon 8129a3db6c
Merge pull request #7156 from lioncash/psq
Interpreter_LoadStorePaired: Generate a program exception if non-indexed paired-single load/stores are used and HID2.LSQE is not set
2018-06-25 01:41:48 +02:00
Pierre Bourdon 4200d2e5e3
Merge pull request #7155 from degasus/arm_registers
JitArm64: Drop the plattform register.
2018-06-25 01:38:29 +02:00
Pierre Bourdon 2cfdf89898
Merge pull request #6983 from yourWaifu/add-discord-rpc-support
Add Discord Rich Presence support
2018-06-25 00:06:27 +02:00
Techjar 9a26cc18c9 Qt/GameList: Reimplement multiselection functionality from WX 2018-06-24 15:57:45 -04:00
spycrab 7e881288a2 Qt/GameList: Fix some columns being too wide 2018-06-24 15:58:42 +02:00
Shawn Hoffman 553ac7e7cd Add nag dialog to get users to explain why they still use DolphinWX 2018-06-23 19:15:09 -07:00
Lioncash bc8f932f0c BTEmu: Make WriteToEndpoint's reference parameter const
This function doesn't modify anything being referenced.
2018-06-22 20:59:00 -04:00
Léo Lam 971972069c
Merge pull request #7148 from lioncash/build
Common, DSP: Only compile in x86-64 emitter related utilities on x86 platforms
2018-06-22 23:55:37 +02:00
Léo Lam 1da868ee82
Merge pull request #7150 from lioncash/naming
BTEmu: Amend variable naming
2018-06-22 22:50:48 +02:00
Léo Lam d07e599a74
Merge pull request #7151 from lioncash/const
Movie: Make pointer parameters const where applicable
2018-06-22 22:50:25 +02:00
Léo Lam e16cadf982
Merge pull request #7153 from lioncash/deduplicate
DSPTables: Deduplicate FindByOpcode() implementations in DSP opcode tables
2018-06-22 22:49:16 +02:00
Léo Lam 167c19ae19
Merge pull request #7154 from lioncash/emitter
DSPEmitter: Make member functions, aliases and constants private where applicable
2018-06-22 22:47:34 +02:00
spycrab 308d4bb670 Qt/Mapping: Fix "Options" entries disappearing 2018-06-22 00:16:28 +02:00
Lioncash 8d9f74b762 DSPEmitter: Make member functions, aliases and constants private where applicable
Given we now use a base class for the interface, we can make all member
functions, types and constants that aren't directly related to
instructions private.
2018-06-21 17:29:33 -04:00
Lioncash 47acf794c7 Interpreter_LoadStorePaired: Generate a program exception if non-indexed paired-single load/stores are used and HID2.LSQE is not set
HID2.LSQE is the Load/store quantize enable bit for non-indexed format
instructions (which are psq_l, psq_lu, psq_st, and psq_stu). If this bit
is not set and any of these instructions are attempted to be executed,
then a program exception is supposed to occur.
2018-06-21 17:16:54 -04:00
degasus ecf86bbf7b JitArm64: Drop the plattform register.
This register is defined as "optional reserved" within the aarch64 ABI.
Linux doesn't use it, but we must not modify it on ios or windows.
As we have plenty of registers on aarch64, let's just always skip this one.
2018-06-21 22:39:15 +02:00
Lioncash fd1ad02c5c DSPTables: Deduplicate FindByOpcode() implementations in DSP opcode tables
This function was duplicated across all the opcode tables: the main info
tables, the interpreter tables, and the x86-64 JIT tables. However, we
can just make the type of the std::array parameter a template type and
get rid of this duplication.
2018-06-21 13:35:06 -04:00
Lioncash fdf057efce DSPIntExtOps: Remove unnecessary const from function prototypes
const on a parameter being passed by value in a prototype doesn't actually signify
anything, these are only applicable in the definition, where they make
the opcode parameter immutable.
2018-06-21 13:00:08 -04:00
Lioncash 42846e6ef1 DSPIntExtOps: Correct casing of functions
Corrects several functions to conform to our coding style.
2018-06-21 12:53:22 -04:00
Lioncash 4367e3aeda DSPIntExtOps: Make IsSameMemArea internally linked
inline has external linkage, which doesn't really make sense here, given
the function is only used within this translation unit. So we can
replace inline with static.

While we're at it, the code within the function can also be compressed
to a single return statement.
2018-06-21 12:46:01 -04:00
Lioncash 2354d933c8 Movie: Make pointer parameters const where applicable
A few functions don't actually modify the data being pointed to, so
these can be made pointer-to-const.
2018-06-21 12:27:30 -04:00
Lioncash 25e3ec23f8 BTEmu: Rename AccessWiiMote to AccessWiimote
Everywhere else throughout the codebase we use "Wiimote" when referring
to the Wii Remote as a shorthand. This makes the casing consistent.
2018-06-21 11:36:02 -04:00
Lioncash 56b8d1803e BTEmu: Amend parameter and local variable naming 2018-06-21 11:35:31 -04:00
Lioncash 16c6e9fa57 BTEmu: Amend class member variable naming 2018-06-21 10:53:07 -04:00
spycrab 77f6e50493
Merge pull request #7134 from spycrab/qt_housekeep
Qt: Basic housekeeping
2018-06-21 14:24:53 +02:00
Lioncash c4fb07f428 Common, DSP: Only compile in x86-64 emitter related utilities on x86 platforms
Previously these were required to be built into the executable so that
the JIT portion of the DSP code would build properly, as the
x86-64-specifics were tightly coupled to the DSP common code. As this is
no longer the case, this is no longer necessary.
2018-06-21 06:53:31 -04:00
Markus Wick 630c3f0805
Merge pull request #7147 from lioncash/emitter
DSP: Replace x64 JIT pointer with a pointer to an architecture-agnostic base
2018-06-21 12:34:13 +02:00
Markus Wick 52990d215d
Merge pull request #7145 from lioncash/mtspr
Interpreter_SystemRegisters: Handle mtspr to HID1 and PVR properly
2018-06-21 11:36:12 +02:00
Lioncash b7301bee29 DSP: Replace x64 JIT pointer with a pointer to an architecture-agnostic base
This adds a base class that is used to replace the concrete instance of
the x64 JIT pointer within DSPCore. This fully removes the direct use
(read: non-ifdefed) usage of x86-64-specifics within the main DSP code.

Said base can also be used for creating JITs for other architectures,
such as AArch64, etc.
2018-06-21 05:20:22 -04:00
Mat M 8b68a7d88a
Merge pull request #7109 from degasus/cached_interpreter
CachedInterpreter: Implement breakpoints.
2018-06-21 04:23:38 -04:00
Markus Wick 5f7dc31a9f
Merge pull request #7138 from lioncash/dsp-table
DSPTables: Separate interpreter and JIT functions from main info table
2018-06-21 10:23:03 +02:00
Lioncash 474c1bb4f7 DSPTables: Separate interpreter and JIT functions from main info table
This is one of the last things that needed to be done in order to
finally separate the x86-64-specific code from the rest of the common
DSP code. This splits the tables up similar to how it's currently done
for the PowerPC CPU tables.

Now, the tables are split up and within their own relevant source files,
so the main table within the common DSP code acts as the "info" table
that provides specifics about a particular instruction, while the other
tables contain the actual instruction.

With this out of the way, all that's left is to make a general base for
the emitters and we can then replace the x64 JIT pointer in DSPCore with
it, getting all x64 out of the common code once and for all.

While shuffling all the code around, the removal of the DSPEmitter
includes in some places uncovered indirect inclusions, so this also
fixes those as well.
2018-06-21 04:21:44 -04:00
Markus Wick 0459a1a9e6
Merge pull request #6875 from JonnyH/WIP/mipmap-heuristic-tweaks
Make arbitrary mipmap detection a config option
2018-06-21 10:19:47 +02:00
Markus Wick bf50348d9f
Merge pull request #6539 from degasus/async
VideoCommon: Flush the GPU pipeline on async requests.
2018-06-21 10:16:54 +02:00
Markus Wick d8ba3034c3
Merge pull request #7133 from lioncash/assembler
DSPAssembler: Minor changes
2018-06-21 10:02:36 +02:00
Markus Wick b4b9b53239
Merge pull request #7143 from lioncash/bt-helper
BTEmu: Make m_WiiMotes private
2018-06-21 10:00:28 +02:00
Markus Wick 4ca05810be
Merge pull request #7144 from lioncash/cast
ActionReplay: Use Common::BitCast instead of reinterpret_cast in Subtype_AddCode()
2018-06-21 09:56:05 +02:00
Markus Wick 966cc5bc01
Merge pull request #7142 from lioncash/shadow
Common/MemoryPatches: Silence variable shadowing warnings
2018-06-21 09:52:47 +02:00
Markus Wick 9f03d8ca6a
Merge pull request #7139 from lioncash/tb
PowerPC: Add functions to read/write the full timebase value
2018-06-21 09:52:13 +02:00
Markus Wick 3816e825c9
Merge pull request #7135 from JosJuice/cant-load-state
Only show savestate version mismatch OSD message when relevant
2018-06-21 09:28:47 +02:00
Lioncash 540bb1a1b0
Software: Don't link against X11 libraries
The software backend doesn't actually use X11 in any capacity directly.
2018-06-21 01:47:37 -04:00
Lioncash d0fbba9ac1 Interpreter_SystemRegisters: Handle mtspr to HID1 and PVR properly
Despite both being documented as read-only registers, only one of them
is truly read-only. An mtspr to HID1 will steamroll bits 0-4 with
bits 0-4 of whatever value is currently in the source register, the rest
of the bits are not modified as bits 5-31 are considered reserved, so
these ignore writes to them.

PVR on the other hand, is truly a read-only register. Attempts to write
to it don't modify the value within it, so we model this behavior.
2018-06-20 18:50:33 -04:00
Lioncash 7eb86cdb67 BTEmu: Add helper function for accessing WiimoteDevice instances by index
This makes it much more straightforward to access WiimoteDevice
instances and also keeps the implementation details of accessing those
instances in one spot.

Given as all external accesses to the WiimoteDevice instances go through
this function, we can make the other two private.
2018-06-20 17:05:54 -04:00
Lioncash 0e437c41e5 ActionReplay: Use Common::BitCast instead of reinterpret_cast in Subtype_AddCode()
Using reinterpret_cast (or a C-styled equivalent) to reinterpret
integers as floating-point values and vice-versa invokes undefined
behavior. Instead, use BitCast, which does this in a well-defined
manner.
2018-06-20 16:38:30 -04:00
Lioncash e4b6d7626b WiimoteDevice: Make Callback_WiimoteInterruptChannel() accept its data as a u8* rather than void*
All current usages of the function pass in either u8 arrays or pointers,
so we can make this part of the function a concrete type.
2018-06-20 16:04:10 -04:00
Lioncash 2b60fe684c BTEmu: Make m_WiiMotes private
We can already utilize the public interface to access the necessary
instance without exposing a private data member.
2018-06-20 15:15:05 -04:00
spycrab 583ddfa8f0 Qt/GCMemcardManager: Update free blocks when a memcard is changed 2018-06-20 12:33:14 +02:00
spycrab ce126f1cfe Qt/Mapping: Remove "Iterative Input" everywhere 2018-06-20 12:33:14 +02:00
yourWaifu 63f03455f3 Discord Rich Presence CMake integration
I have no idea if this works or not. Hopefully the build bot will tell me.
2018-06-19 22:43:03 -04:00
Lioncash dddac76b8c Common/MemoryPatches: Silence variable shadowing warnings 2018-06-19 21:33:50 -04:00
Lioncash 72e21bc679 Interpreter_FPUtils: Handle the FPSCR.ZE and FPSCR.VE flags with arithmetic instructions
According to PEM 3.3.6.1, if a division by zero occurs and FPSCR.ZE is
set, then the result of the instruction operation is unchanged (see
table 3-13). Similarly, if an invalid operation occurs and FPSCR.VE is
set, then the destination should also remain unchanged (see table 3-12).
Hardware also matches this behavior.

We were handling this for other relevant instructions, but we weren't
doing so for the arithmetic instructions. This corrects that.

This also alters our NI_* functions to return an FPResult type, which
allows us to see which kind of exception in particular is set in
exceptional cases. This is necessary for cases like the fdiv
instructions, which requires handling both ZE and VE being potentially
set.
2018-06-19 18:09:03 -04:00
Léo Lam bdfc6de9fd
Merge pull request #7137 from lioncash/copy
GameFile: Avoid copying map pairs in GetLanguages()
2018-06-19 22:57:29 +02:00
Léo Lam de0b153867
Merge pull request #7136 from lioncash/unused
GameFile: Remove unused variable within GetUniqueIdentifier()
2018-06-19 22:57:00 +02:00
Léo Lam e728c0c948
Merge pull request #7132 from lioncash/table
BTEmu: Make read-only arrays const
2018-06-19 22:56:10 +02:00
Lioncash 6066ca30b2 DolphinQt2/RegisterWidget: std::move std::function instances in AddRegister()
These can be moved into the RegisterColumn constructor, which avoids
potential allocations in the case a std::function would otherwise need
to allocate to hold all of it's captured data.

Also tidy up the inclusion order while we're at it.
2018-06-19 13:40:22 -04:00
Lioncash 562d2a700b PowerPC: Add functions to read/write the full timebase value
Allows us to get rid of a silly pointer cast and deduplicate some code
from the front-end when it comes to reading the value.
2018-06-19 13:26:08 -04:00
Lioncash d3ed750c9d GameFile: Avoid copying map pairs in GetLanguages()
We can just reference the pairs instead of taking them by value,
avoiding copying std::string instances.
2018-06-19 12:25:16 -04:00
Lioncash 1e4f3607c3 GameFile: Remove unused variable within GetUniqueIdentifier() 2018-06-19 12:18:09 -04:00
JosJuice 860a89b943 Only show savestate version mismatch OSD message when relevant
We used to show it for all failed savestate loads, no matter what the
failure reason was. Fixes https://bugs.dolphin-emu.org/issues/9815
2018-06-19 16:15:18 +02:00
8times9 33691d2992 Qt: Add Vulkan to graphics backend description 2018-06-19 08:38:48 -05:00