Commit Graph

22388 Commits

Author SHA1 Message Date
Techjar 7778859b55 Qt/GameCubePane: Fix issues with changing memcard slots while game is running
Selecting Dummy or Memory Card would pass wrong values to EXI::ChangeDevice and not work as expected
Changing path had no effect until device was changed as it didn't call EXI::ChangeDevice at all
2018-06-17 14:04:37 -04:00
spycrab e3f7b0274c Qt/HotkeyScheduler: Fix 3D Mode hotkeys not behaving properly 2018-06-16 21:38:14 +02:00
spycrab b5e6cd9725
Merge pull request #7122 from spycrab/qt_table_perf
Qt/GameList: Greatly improve performance (List view)
2018-06-16 12:40:13 +02:00
Lioncash de9c5fd375 ConfigManager: Convert GPUDeterminismMode into an enum class
Makes the values strongly-typed and gets more identifiers out of the
global namespace.

We are forced to use anything that is not "None" to mean none, because
X11 is garbage in that it has:

\#define None 0L

Because clearly no one else will ever want to use that identifier for
anything in their own code (and is why you should prefix literally
any and all preprocessor macros you expose to library users in public
headers).
2018-06-15 14:45:30 -04:00
Léo Lam 0ee9b884ca
Merge pull request #7123 from lioncash/enum
DSPCore: Convert core type enum into an enum class
2018-06-15 19:52:57 +02:00
Lioncash 6f473b96d0 PowerPC: Convert CPUCore enum into an enum class
Makes the enum values strongly-typed and prevents the identifiers from
polluting the PowerPC namespace. This also cleans up the parameters of
some functions where we were accepting an ambiguous int type and
expecting the correct values to be passed in.

Now those parameters accept a PowerPC::CPUCore type only, making it
immediately obvious which values should be passed in. It also turns out
we were storing these core types into other structures as plain ints,
which have also been corrected.

As this type is used directly with the configuration code, we need to
provide our own overloaded insertion (<<) and extraction (>>) operators
in order to make it compatible with it. These are fairly trivial to
implement, so there's no issue here.

A minor adjustment to TryParse() was required, as our generic function
was doing the following:

N tmp = 0;

which is problematic, as custom types may not be able to have that
assignment performed (e.g. strongly-typed enums), so we change this to:

N tmp;

which is sufficient, as the value is attempted to be initialized
immediately under that statement.
2018-06-15 10:27:59 -04:00
Lioncash 161dffe2f9 DSPCore: Rename JIT core type to JIT64
This changes the identifier to represent the x86-64 DSP emitter. If any
other JITs for the DSP are added in the future, they all can't use the
same generic identifier.
2018-06-15 07:59:05 -04:00
Lioncash 98af5e4c10 DSPCore: Convert core type enum into an enum class
Prevents pollution of the surrounding scope and makes the values
strongly-typed.
2018-06-15 07:55:31 -04:00
spycrab daebbabb35 Qt/GameList: Greatly improve performance (List view) 2018-06-15 12:05:11 +02:00
Léo Lam 58606702f7
Merge pull request #7107 from lioncash/mac
Common/Network: Get rid of out parameters for MAC address utilities
2018-06-14 19:44:09 +02:00
Léo Lam c7280707ec
Merge pull request #7113 from lioncash/mask
Gekko: Centralize bitmasking of the FPSCR within UReg_FPSCR
2018-06-14 18:28:11 +02:00
Léo Lam 59cd9a5af7
Merge pull request #7118 from lioncash/hotkey-str
HotkeyManager: Minor changes
2018-06-14 18:26:03 +02:00
Lioncash 189d277cfc Common/Random: Add convenience template for simple arithmetic values
In cases where we just want a random value for a primitive arithmetic
type, we can wrap this in a template to allow convenient direct
assignment instead of keeping declaration and initialization separate
(making it more difficult to use values uninitialized). This also allows
the use of Common::Random with functions such as std::generate, making
it more flexible in how random values can be generated.
2018-06-14 10:31:13 -04:00
spycrab e69c6cdaab
Merge pull request #7114 from Techjar/patch-3
Qt/GameCubePane: Fix memcard browsing starting in working directory instead of User/GC/ directory
2018-06-14 16:13:21 +02:00
Lioncash 410792d922 HotkeyManager: Add missing s_ prefixes to internally-linked file-scope variables
Previously there was an intermixing of no prefixing and prefixing. This
makes the notation consistent.
2018-06-14 10:07:22 -04:00
Lioncash d22d32372e HotkeyManager: Use std::array where applicable 2018-06-14 10:07:01 -04:00
Lioncash aae06f1cf7 HotkeyManager: Move HotkeyGroupInfo struct into the cpp file
This is only ever used internally. Also change the std::string name over
to a const char*, so that we don't need to potentially allocate anything
on the heap at immediate runtime.
2018-06-14 09:12:19 -04:00
Techjar 027fc6efd5 Qt/GameCubePane: Fix memcard browsing starting in working directory instead of User/GC/ directory 2018-06-14 09:11:54 -04:00
Lioncash d459470fee HotkeyManager: Convert file-scope std::string array to constexpr const char* array
Previously, a total of 114 std::string instances would need to construct
(allocating on the heap for larger strings that can't be stored with
small string optimizations). We can just use an array of const char*
strings instead, which allows us to avoid this.
2018-06-14 09:04:57 -04:00
Markus Wick 1f49a9c87c
Merge pull request #7116 from lioncash/log
JitCommon/JitBase: Rename x86-specific logging define to be platform agnostic
2018-06-14 15:00:34 +02:00
Lioncash 065aba43e2 JitBase: Remove unused rewriteStart data member from JitState 2018-06-14 08:46:34 -04:00
Lioncash ace24c2932 JitCommon/JitBase: Rename x86-specific logging define to be platform agnostic
Given JitBase shouldn't include platform specifics, we can generalize this
preprocessor define and allow any JIT to use it to indicate that generated code should be logged.

While we're at it, also move these defines beneath the includes with the
rest of the defines.
2018-06-14 08:35:35 -04:00
spycrab e8c1e5af63
Merge pull request #7112 from spycrab/qt_macos_layout
Qt/macOS: Make configuration layout consistent with other platforms
2018-06-14 12:29:24 +02:00
Sintendo 78bc9690e2 Eliminate branch in ConvertDoubleToSingle 2018-06-13 23:02:50 +02:00
degasus 03c88c83ac CachedInterpreter: Implement breakpoints.
There were missed on the initial implementation of the cached interpreter.
2018-06-13 08:33:57 +02:00
spycrab 09df03382d
Merge pull request #7094 from spycrab/qt_fs_fixes
Qt: Fix multiple fullscreen issues
2018-06-12 22:46:29 +02:00
Lioncash 0049ef3a2a Gekko: Centralize bitmasking of the FPSCR within UReg_FPSCR
Rather than introduce this handling in every system instruction that modifies
the FPSCR directly, we can instead just handle it within the data structure
instead, which avoids duplicating mask handling across instructions.

This also allows handling proper masking from the debugger register
windows themselves without duplicating masking behavior there either.
2018-06-12 14:15:50 -04:00
spycrab f2c6a97916 Qt/macOS: Make configuration layout consistent with other platforms 2018-06-12 15:45:33 +02:00
Léo Lam f3a18db9e0
Merge pull request #7106 from lioncash/name
WiimoteDevice: Amend variable naming
2018-06-11 11:12:08 +02:00
Lioncash 59846378b3 BTReal: Handle case where a link key may be invalid within LoadLinkKeys()
This can only occur if a user purposely corrupts their config file, but
still, we may as well protect users from themselves.
2018-06-10 16:11:36 -04:00
Lioncash ce69201f33 Common/Network: Get rid of out parameters for MAC address utilities
Given we have std::array and std::optional, we can use these in
conjunction with one another to avoid the need for out parameters.
2018-06-10 15:43:26 -04:00
Mat M b6592723a7
Merge pull request #7103 from leoetlino/master
BTReal: Fix unsafe reinterpret_casts
2018-06-10 14:27:19 -04:00
Lioncash 925348cdd1 WiimoteDevice: Amend variable naming for class member variables
Gets rid of inconsistencies related to class variables concerning casing
and the lack of prefixes on some variables, while others contain them.
2018-06-10 14:23:36 -04:00
Lioncash eaace415d3 WiimoteDevice: Amend variable naming for non-class member variables
This file is quite out of sync when it comes to our naming conventions,
this brings it back in line with it.
2018-06-10 14:23:31 -04:00
Markus Wick 70417c8d16
Merge pull request #7096 from lioncash/jit-buffer
JitBase: Centralize location of code buffer
2018-06-10 17:59:41 +02:00
Lioncash 0d0f58005b WiimoteDevice: Make channel reference const qualified
This is only used for reading data, not modifying it, so make the type
system enforce that.
2018-06-10 09:08:33 -04:00
Lioncash 5548316d32 WiimoteDevice: Remove unnecessary cast in ExecuteL2capCmd()
pData is already a u8*, so a cast isn't necessary here.
2018-06-10 09:04:42 -04:00
Léo Lam fca6d80740
Merge pull request #7101 from lioncash/ios
WiimoteDevice: Minor changes
2018-06-10 14:35:41 +02:00
Léo Lam 8bb08d1ca6 BTReal: Fix unsafe reinterpret_casts
Using reinterpret_cast like that is possibly UB.
Replace them with structs/memcpy calls where applicable.
2018-06-09 23:04:04 +02:00
Lioncash c825eecbc9 ChunkFile: Remove unnecessary includes
ChunkFile doesn't use any of the file utilities, so we can drop these
headers to avoid pulling in unnecessary dependencies. This also
uncovered a few indirect inclusions.
2018-06-09 16:49:59 -04:00
Lioncash 647da59679 WiimoteDevice: Move channel state booleans into a struct
These were essentially duplicated for both channels, when they could be
implemented in terms of a struct, which allows for simplifying the reset
case.
2018-06-09 16:35:32 -04:00
Lioncash 94fd8505d6 WiimoteDevice: Make DoesChannelExist() a const member function
This only queries internal class state, it doesn't modify it.
2018-06-09 16:35:32 -04:00
Lioncash f906785e88 WiimoteDevice: Make EventPagingChanged() a const member function
This only queries internal state, it doesn't modify it. With minor
adjustments to BTEmu, this also allows us to make its usage instance a
constant reference.
2018-06-09 16:35:32 -04:00
Lioncash 38d155f993 WiimoteDevice: Make ConnectionState enum an enum class
Avoids polluting class scope and makes it strongly typed.
2018-06-09 16:35:27 -04:00
Léo Lam f564c28040
Merge pull request #7099 from lioncash/compiler
Common: Add Compiler.h header for compiler-specifics
2018-06-09 20:19:49 +02:00
Lioncash b5d89294f7 WiimoteHIDAttr: Make file-scope packet data arrays immutable
Given these are only ever returned from a function as const u8*, we can
go ahead and make these fully immutable.
2018-06-09 13:46:28 -04:00
Lioncash 7b11ce3dd2 Compiler: Use [[maybe_unused]] in the Windows DOLPHIN_UNUSED macro
The required version of MSVC already supports [[maybe_unused]], so we
can utilize this here. When GCC 7 and clang 3.9 become hard
requirements, we can eliminate this macro entirely and replace it with
[[maybe_unused]].
2018-06-09 12:20:29 -04:00
Lioncash d8f6d60189 Compiler: Rename UNUSED macro to DOLPHIN_UNUSED
UNUSED is quite a generic macro name and has potential to clash with
other libraries, so rename it to DOLPHIN_UNUSED to prevent that, as well
as make its naming consistent with the force inline macro
2018-06-09 12:20:29 -04:00
Lioncash 3f210836ad Compiler: Rename __forceinline define to DOLPHIN_FORCE_INLINE
This is much better as prefixed double underscores are reserved for the
implementation when it comes to identifiers. Another reason its better,
is that, on Windows, where __forceinline is a compiler built-in, with
the previous define, header inclusion software that detects unnecessary
includes will erroneously flag usages of Compiler.h as unnecessary
(despite being necessary on other platforms). So we define a macro
that's used by Windows and other platforms to ensure this doesn't
happen.
2018-06-09 12:20:25 -04:00
Lioncash 03414e8e84 Common: Add header for compiler-specifics
Instead of globbing things under an ambiguous Common.h header, move
compiler-specifics over to Compiler.h. This gives us a dedicated home
for anything related to compilers that we want to make functional across
all compilers that we support.

This moves us a little closer to eliminating Common.h entirely.
2018-06-09 12:10:05 -04:00
Lioncash e18824e3f3 PPCAnalyst: get rid of code buffer size variable
Rather than have a separate independent variable that we need to keep
track of in conjunction with the JIT code buffer size itself, amend the
analyst code to use the code buffer constant in JitBase.

Now if the size ever changes, then the analyst will automatically adjust
to handle it.
2018-06-09 08:17:17 -04:00
Lioncash a3f2941173 JitBase: Centralize location of code buffer
Given the code buffer is something truly common to all JIT
implementations, we can centralize it in the base class and avoid
duplicating it all over the place, while still allowing for differently
sized buffers.
2018-06-09 08:16:53 -04:00
Léo Lam 1d87584d69
Merge pull request #7097 from lioncash/dsp-disas
DSPDisassembler: Remove unnecessary includes
2018-06-09 07:58:39 +02:00
Lioncash 61ff11c266 DSPDisassembler: Remove unnecessary includes
Gets rid of an inclusion dependency with the DSP interpreter, as well as
a header-based dependency on the DSP opcode tables. This also uncovered
an indirect inclusion on the logger within DSPSymbols.cpp
2018-06-08 18:55:57 -04:00
Lioncash d1e278218e Common/CMakeLists: Link in libraries privately for traversal_server
Without this, CMake script errors can occur, as explicit linkage
specifiers and non-explicit specifier commands aren't compatible with
one another.
2018-06-08 17:40:44 -04:00
spycrab 0273cae3a2 Qt: Restore fullscreen resolution when regaining focus 2018-06-08 20:47:15 +02:00
spycrab 6c19b5947b Qt: Fix exclusive fullscreen not being entered on startup 2018-06-08 19:59:41 +02:00
Léo Lam 48b7cfa75c
Merge pull request #7062 from robopilot99/master
Add auto-hide option to Wii IR pointer
2018-06-08 14:04:03 +02:00
JosJuice ca3d68cee5
Merge pull request #7076 from JosJuice/android-gamelist-uicommon
Use UICommon's game list code on Android
2018-06-08 13:59:45 +02:00
Léo Lam d23c3e9524
Merge pull request #7093 from lioncash/log
Interpreter_SystemRegisters: Change PanicAlert to INFO_LOG in mtspr()
2018-06-07 19:01:39 +02:00
Lioncash 5db2137538 Interpreter_SystemRegisters: Change PanicAlert to INFO_LOG in mtspr()
As peculiar as this may be, decrementer exceptions by means of setting
the decrementer's zeroth bit from 0 to 1 is valid behavior by software
(and is defined in Programming Environments for 32-bit Microprocessors
in section 2.3.14.1 -- Decrementer operation). Given it's valid behavior,
it doesn't necessarily make sense to use a panic alert and halt, as this
isn't a condition where everything should be considered in a critical
state.

Instead, change it to an info log, so we still make note of it, but
without potentially tearing down state or halting emulation.
2018-06-07 12:14:46 -04:00
Pierre Bourdon de0fe0e210
Merge pull request #6928 from leoetlino/random
Common: Add Random utilities
2018-06-08 00:41:08 +09:00
Léo Lam b51fbaa5b0
Merge pull request #7084 from lioncash/mask
Interpreter_SystemRegisters: Ensure FPSCR modifying instructions don't set bit 20
2018-06-07 16:51:36 +02:00
Léo Lam 34d6a49842
Merge pull request #7088 from Ebola16/TFD
Give "Dump TEV Stages" and "Dump Texture Fetches" descriptions
2018-06-07 16:50:15 +02:00
Léo Lam ca32b4127e
Merge pull request #7089 from spycrab/qt_refresh_hotkey
Qt: Implement "Refresh Game List" hotkey
2018-06-07 16:49:09 +02:00
Léo Lam 18d5ba30d6
Merge pull request #7085 from master0fdisaster/Add-Volume-Hotkeys-OSD-Message
Add OSD message for Volume Hotkeys
2018-06-07 16:46:19 +02:00
Léo Lam dd7c558be3
Merge pull request #7092 from JosJuice/wii-devkit
Set 0x0000002C to NDEV 2.1 when running a debug-signed Wii disc
2018-06-07 15:52:07 +02:00
JosJuice af5d9f693a Set 0x0000002C to NDEV 2.1 when running a debug-signed Wii disc
This fixes the The Last Story prototype that GerbilSoft was testing,
because the apploader is a bit more lenient with the max size of DOL
sections when it detects that you're using a devkit console.
2018-06-07 10:14:32 +02:00
Sleepy Flower Girl 57bd13a0ce Use new config system for Discord Rich Presence option
This doesn't feel like a mirror change to me.
2018-06-07 00:59:31 -04:00
spycrab 23394164de Qt: Implement "Refresh Game List" hotkey 2018-06-06 18:30:46 +02:00
Ryan Meredith 5fcb509702 Give "Dump TEV Stages" and "Dump Texture Fetches" descriptions 2018-06-06 11:59:29 -04:00
JosJuice 1c027bc148 Use UICommon's game list code on Android
Deduplicates code, and gets rid of some problems the old code had
(such as: bad performance when calling native functions, only one
disc showing up for multi-disc games, Wii banners being low-res,
unnecessarily much effort being needed for adding more metadata).
2018-06-06 17:34:07 +02:00
master0fdisaster 7a90ea2752 Add OSD message for Volume Hotkeys
This pr adds an OnScreenDisplay message when you use the Volume hotkeys.
Just to have visual feedback.
2018-06-06 17:11:43 +02:00
Léo Lam c93210155f
Merge pull request #7075 from Ebola16/DumpObjects
Software Renderer "Dump Objects" needs dedicated folder and tooltip
2018-06-06 15:20:14 +02:00
Ryan Meredith 7340935b38 QT: Use brackets for description arrays 2018-06-06 09:05:18 -04:00
Ryan Meredith 45b9b7d211 Give Dump Objects dedicated folder and tooltip 2018-06-06 08:42:41 -04:00
spycrab ee479260d0 Qt: Add option to disable auto-refresh 2018-06-06 13:49:45 +02:00
Markus Wick 3860219899 VideoCommon: Flush the GPU pipeline on async requests. 2018-06-06 09:22:01 +02:00
8times9 70b7e852f8 Qt: Remove Dolphin prefix from NetPlay window titles
This makes the NetPlay window titles consistent with other window titles in Dolphin.
2018-06-05 22:27:07 -05:00
Mat M 0dfd0cfa24
Merge pull request #7083 from leoetlino/consistency
ES: Return ReturnCode in DiVerify for consistency
2018-06-05 17:24:17 -04:00
Lioncash 11a35d47ef Interpreter_SystemRegisters: Ensure FPSCR modifying instructions don't set bit 20
Bit 20 is defined as being reserved and attempts to set it are ignored
by hardware, so we should be doing the same thing.
2018-06-05 16:27:10 -04:00
Léo Lam 85baca386a ES: Return ReturnCode in DiVerify for consistency
No reason to return a s32 instead of an IOS return code (like every
other function in the ES API)
2018-06-05 22:07:59 +02:00
Anthony 36ff2a20d5
Merge pull request #6954 from degasus/coherent
OGL/Streambuffer: Use coherent mapping by default.
2018-06-05 12:06:17 -07:00
spycrab e3e451b34e Qt/InfoWidget: Don't prefix maker id with '0x' 2018-06-05 20:25:15 +02:00
Léo Lam f422b88ed9
Merge pull request #7078 from spycrab/qt_gc_adapter_fix
Qt/GCPadWiiUConfigDialog: Fix settings not being loaded properly
2018-06-05 19:37:56 +02:00
spycrab 08561b4b43
Merge pull request #7079 from spycrab/qt_open_remember
Qt/MainWindow: Remember last directory in "Open" prompt
2018-06-05 19:02:17 +02:00
spycrab 8a24eac0de Qt/GCPadWiiUConfigDialog: Fix settings not being loaded properly 2018-06-05 19:00:51 +02:00
spycrab c6704b1323 Qt/MainWindow: Remember last directory in "Open" prompt 2018-06-05 18:56:21 +02:00
Léo Lam 21d0d6711f
Merge pull request #7073 from leoetlino/fix
WiiSave: Fix the way paths are handled
2018-06-05 18:32:13 +02:00
Léo Lam bfbd890caa
Merge pull request #7080 from spycrab/qt_noprop_elfdol
Qt/GameList: Don't show certain options when a DOL/ELF is selected.
2018-06-05 15:57:11 +02:00
spycrab 07b26f8bca Qt/GameList: Don't show certain options when a DOL/ELF is selected. 2018-06-05 13:28:16 +02:00
spycrab 63460834a5 Qt/CheatCodeEditor: Don't accept rich text 2018-06-05 12:45:08 +02:00
spycrab 8675fa09b8
Merge pull request #7071 from spycrab/qt_gamelist_refresh
Qt: Add Refresh button
2018-06-05 04:29:23 +02:00
robopilot99 ab02499ce7 Add auto-hide option to Wii IR pointer 2018-06-04 17:58:21 -05:00
Léo Lam b7a8deda96
Merge pull request #7074 from lioncash/paired
Interpreter_LoadStorePaired: Simplify type aliases in QuantizeAndStore() and LoadAndDequantize()
2018-06-05 00:08:00 +02:00
Léo Lam 226f88bcb6
Merge pull request #7069 from leoetlino/player-id
PadMappingDialog: Show player ID in player dropdown
2018-06-05 00:02:04 +02:00
Lioncash 25d38c0a23 Interpreter_LoadStorePaired: Simplify type aliases in QuantizeAndStore() and LoadAndDequantize()
These can just use the _t variant of make_unsigned, which eliminates the
need to pull the type from the ::type member type.
2018-06-04 17:57:05 -04:00
Léo Lam d1e2cc7b92
Merge pull request #7070 from spycrab/qt_prop_width
Qt/PropertiesDialog: Fix tabs being cut off due to small window size
2018-06-04 23:49:28 +02:00
spycrab 4415417deb Qt: Add Refresh button 2018-06-04 23:44:53 +02:00
Léo Lam 14d37e0493 WiiSave: Fix the way paths are handled
All paths in SaveFile are relative to the title data directory, not
absolute. Fixes an accidental regression from 5.0-7988 (PR #7059).
2018-06-04 23:31:00 +02:00
Léo Lam 8fe7f8d80d
Merge pull request #7072 from lioncash/emitter
DSPEmitter: Make m_unresolved_jumps private
2018-06-04 22:26:24 +02:00
Léo Lam d797bf2ee7 PadMappingDialog: Show player ID in player dropdown
Makes it easier to differentiate players that have the same name.
2018-06-04 22:24:35 +02:00
JosJuice 5e0da225ee
Merge pull request #7068 from lioncash/const
DSPAccelerator: const qualify pointer parameter for Read()
2018-06-04 22:05:26 +02:00
Lioncash bbd2fd080e DSPEmitter: Make m_unresolved_jumps private
By making the jitted function a private static function of DSPEmitter,
we can allow access to data members within the context of the function
without making them public overall.

This finally makes all data members for the x64 DSP emitter private.
2018-06-04 15:46:08 -04:00
spycrab b3c3b58aec Qt/PropertiesDialog: Fix tabs being cut off due to small window size 2018-06-04 21:11:55 +02:00
Léo Lam 5f29e891d3
Merge pull request #7063 from lioncash/fifr
Interpreter: Unset FPSCR.FI and FPSCR.FR for QNaN and infinity input operands
2018-06-04 20:53:58 +02:00
Léo Lam 6ce9c96d91
Merge pull request #7027 from leoetlino/cleanup
Use some C++17 features available since GCC 6
2018-06-04 20:50:50 +02:00
Lioncash 1e3e11d0f5 DSPAccelerator: const qualify pointer parameter for Read()
The data pointed to is only ever read, so make this explicit.
2018-06-04 14:50:42 -04:00
Léo Lam 2a89ad9c39
Merge pull request #7066 from spycrab/qt_fs_exit
Qt: Always return to windowed when confirming exit
2018-06-04 20:48:22 +02:00
spycrab 53ed455d76 Qt: Always return to windowed when confirming exit
If we don't do this the prompt *may* appear behind the fullscreened window
and thus cause confusion. This happens both with exclusive fullscreen and
borderless fullscreen (e.g. for OpenGL).
2018-06-04 20:32:36 +02:00
Léo Lam 9b43180731
Merge pull request #7040 from JMC47/enableadouble2single
[JIT] Enable Accurate Double to Single Conversion
2018-06-04 20:29:15 +02:00
spycrab afc2c51e34
Merge pull request #7065 from spycrab/qt_pause_exit
Qt: Fix emulation still not being paused when confirming exit
2018-06-04 19:16:16 +02:00
spycrab b13cf2e16e Qt: Fix emulation still not being paused when confirming exit 2018-06-04 18:13:05 +02:00
Michael M 932ca644aa Add hotplug support to SDL2 controller backend 2018-06-04 17:50:08 +02:00
Michael M 7062967b5b SDLJoystick: store name on creation
Otherwise, Dolphin will crash when the joystick is removed.
2018-06-04 17:49:21 +02:00
Michael M 0eb47e1071 CMake: make SDL a private dep of InputCommon 2018-06-04 17:49:21 +02:00
JMC47 2795376b61 Enable Accurate Double to Single Conversion 2018-06-04 11:49:12 -04:00
Léo Lam 8e0ea92ec3
Merge pull request #7058 from JosJuice/move-titledatabase-usage
Don't store custom names from TitleDatabase in GameFileCache
2018-06-04 14:59:05 +02:00
Léo Lam 8074192a85
Merge pull request #7057 from leoetlino/string
Config/StringUtil/IniFile: Get rid of some duplicated code
2018-06-04 12:44:57 +02:00
JosJuice 85e94cc510 Don't store custom names from TitleDatabase in GameFileCache
This saves us from having to update the GameFileCache when the
TitleDatabase changes (for instance when the user changes language).
2018-06-04 07:45:22 +02:00
Lioncash 9068109b3e Interpreter: Unset FPSCR.FI and FPSCR.FR for QNaN and infinity input operands
This hardware behavior makes sense, as the FI bit is used to signify an
inexact result. An inexact result is a form of value that results during
the rounding phase of denormalization. If any bits of the significand
are lost during said rounding, then the result is considered to be
inexact.

However NaN and infinity are not classed as subnormals and therefore
don't undergo the denormalization step, making loss of precision not
possible (in NaN's case, numerically rounding something that is
literally Not a Number doesn't even make sense).

FR is set to indicate whether or not the last arithmetic or rounding and
conversion instruction that rounded the intermediate result incremented
the fractional portion of the result. Given neither input types would be
affected by this, this should also be unset.

This corrects more of the exceptional case handling for these values to
match hardware.
2018-06-03 18:15:47 -04:00
Léo Lam 0ecec33567 WiiRoot: Use a namespace alias for FS to reduce noise 2018-06-03 21:37:28 +02:00
Sleepy Flower Girl f25d833dbd Fixed issue Discord RPC library not clearing presence during shutdown 2018-06-03 15:37:27 -04:00
Sleepy Flower Girl e1a9cf3b44 Add option to disable Discord Presence in WX UI 2018-06-03 15:29:28 -04:00
Sleepy Flower Girl ae2337aff6 Add option to disable Discord Presence in Qt UI 2018-06-03 15:29:25 -04:00
Sleepy Flower Girl d9351a5b45 Added INI setting for Discord Rich Presence 2018-06-03 15:29:21 -04:00
Sleepy Flower Girl 678f8da95b Moved Discord RPC library's source code to external 2018-06-03 15:29:01 -04:00
Sleepy Flower Girl d5303ddf0b Add Discord Rich Presence support 2018-06-03 15:27:20 -04:00
Léo Lam c1428b6da0 WiiRoot: Use new filesystem interface
This gets rid of remaining direct accesses to the Wii filesystem
in WiiRoot by using WiiSave to copy saves and the FS interface
2018-06-03 21:21:32 +02:00
Léo Lam 8fce18e4ff
Merge pull request #7059 from leoetlino/fs-wiisave
WiiSave: Use new filesystem interface
2018-06-03 21:05:22 +02:00
Léo Lam 6b9aef7042 FS: Add a struct for modes
As suggested here: https://dolp.in/pr7059#pullrequestreview-125401778

More descriptive than having a std::tuple of FS::Mode, and lets us
give names to known triplets of modes (like in ES). Functions that
only forward mode arguments are slightly less verbose now too.
2018-06-03 20:45:35 +02:00
Lioncash 06056d4f45 Gekko: Make register constructors explicit where applicable
Prevents implicit conversions to types and requires explicitly
specifying them in order to construct instances of them. Given these are
used within emulation code directly, being explicit is always better
than implicit.
2018-06-03 12:37:17 -04:00
Léo Lam d1a8661709 WiiSave: Save and restore files and banner with correct mode 2018-06-03 17:23:40 +02:00
Léo Lam fd3472442d WiiSave: Use new filesystem interface
Converts WiiSave to the new filesystem interface.
2018-06-03 17:01:14 +02:00
Léo Lam c22205cd7e
Merge pull request #7053 from lioncash/frfi
Interpreter_FPUtils/FloatingPoint/Paired: Amend cases where FPSCR.FR and FPSCR.FI should be unset
2018-06-03 15:36:12 +02:00
Léo Lam 83324fe77d StringUtil: Remove ValueToString(std::string)
Doesn't make a lot of sense to have a function that gives the string
representation for a string.
2018-06-03 15:11:59 +02:00
Léo Lam 7e79bf97ab IniFile: Use templates for Get()
Gets rid of duplicated code.
2018-06-03 14:53:56 +02:00
Léo Lam cba32b12e7 IniFile: Use templates for Set() 2018-06-03 14:53:56 +02:00
Lioncash 3e63d71046 Gekko: Add helper function for clearing both FPSCR.FI and FPSCR.FR 2018-06-03 08:27:18 -04:00
Léo Lam fc0193c4b1 Move Config ValueToString to StringUtil
An identical implementation is used by IniFile, so move those functions
to StringUtil. A future commit will modify IniFile to use them.
2018-06-03 14:10:52 +02:00
spycrab 0cc20e95fe Qt/HotkeyWindow: Always show debugging tab 2018-06-03 13:40:57 +02:00
spycrab 9c26a1a458 Qt/Hotkeys: Implement missing "Other State Management" tab 2018-06-03 12:44:02 +02:00
Léo Lam 1e51e263e0
Merge pull request #6988 from leoetlino/wii-save-refactor
WiiSave: Refactor the import/export code
2018-06-03 12:05:43 +02:00
Léo Lam 86368fcd4d
Merge pull request #6499 from Ebola16/SettingsGroup
Android: Initial implementation of Interface submenu
2018-06-03 12:02:56 +02:00
Lioncash d6bafbfaaf Interpreter_Paired: Handle signaling NaNs within ps_res and ps_rsqrte
Like regular fres and frsqrte, these also signal whether or not either
of the inputs are signaling NaNs.
2018-06-02 20:47:18 -04:00
Lioncash d05c2ef90d Interpreter_Paired: Unset FPSCR.FI and FR in ps_res and ps_frsqrte in exceptional cases
If invalid operation exceptions or zero divide exceptions occur in
either of these instructions, FI and FR are supposed to be unset.
2018-06-02 20:42:47 -04:00
Lioncash 83774f72ad Interpreter_FloatingPoint: Unset FPSCR.FI and FPSCR.FR if a division by zero exception occurs in fres and frsqrte
Within the programming environments manual, part of the behavior of a
zero divide exception condition is that FI and FR be cleared.
2018-06-02 20:26:20 -04:00
Lioncash 468efb7243 Interpreter_FPUtils: Unset FPSCR.FI and FPSCR.FR if an invalid operation occurs in NI_* functions
If an invalid operation occurs, FI and FR bits are defined to be cleared
to zero for arithmetic operations.
2018-06-02 20:18:51 -04:00
Anthony 0f7370a22c
Merge pull request #7051 from lioncash/frsqrte
Interpreter_FloatingPoint: Don't store to destination in frsqrte if VE or ZE is set and a relevant exception occurs
2018-06-02 13:49:09 -07:00
spycrab ba471c3214
Merge pull request #7048 from spycrab/qt_fs_size
Qt/FilesystemWidget: Add size column
2018-06-02 21:45:02 +02:00
Léo Lam 396810c450
Merge pull request #7050 from lioncash/ptr
WiimoteDevice: Get rid of pointer casting in CBigEndianBuffer
2018-06-02 21:35:43 +02:00
Lioncash 21add26b71 Interpreter_FloatingPoint: Clear FPSCR.FI and FPSCR.FR in invalid operation cases
As explained within 179d73ac0d, the table
within the Programming Environments Manual for PowerPC lists the FI and
FR bits as cleared for invalid operation cases. So, we amend the
relevant cases here in order to be accurate to hardware.
2018-06-02 15:30:56 -04:00
Lioncash b71a9e658f Interpreter_FloatingPoint: Don't store to destination in frsqrte if VE or ZE is set and a relevant exception occurs
As explained within commit a08ad82ace, if
an invalid exception occurs and VE is set, then the destination register
should remain unchanged. Ditto for when ZE is set and a zero divide
exception occurs.
2018-06-02 15:27:14 -04:00
Lioncash f6c4c05d93 WiimoteDevice: Make CBigEndianBuffer's constructor explicit
Prevents implicit construction of buffers.
2018-06-02 15:10:51 -04:00
Lioncash 4601136b08 WiimoteDevice: Get rid of pointer casting in CBigEndianBuffer
Gets rid of more places where we can violate alignment requirements and
aliasing rules.
2018-06-02 15:02:03 -04:00
Lioncash 13e828fd4d WiimoteDevice: Move CBigEndianBuffer to the cpp file
This is only used internally, so we don't need to expose it in the
header. This also allows getting rid of inclusion of the byte swapping
utilities in the header as well.
2018-06-02 14:55:05 -04:00
Anthony 8d1b2f9cae
Merge pull request #7045 from lioncash/fres
Interpreter_FloatingPoint: Don't store to destination in fres if VE or ZE is set and a relevant exception occurs
2018-06-02 11:42:34 -07:00
Lioncash b1c7ce75e4 EXI_DeviceIPL: Replace superfluous virtual with override on destructor 2018-06-02 14:18:49 -04:00
Lioncash 0d89650950 EXI_DeviceIPL: Use std::array where applicable 2018-06-02 14:18:02 -04:00
Lioncash bf4775f95f EXI_DeviceIPL: Normalize variable names
Makes naming consistent with our coding style.
2018-06-02 14:14:08 -04:00
Lioncash b6203c66c2 EXI_DeviceIPL: In-class initialize data members where applicable 2018-06-02 14:08:01 -04:00
spycrab f6865117e4 Qt/FilesystemWidget: Add size column 2018-06-02 18:59:56 +02:00
Léo Lam 62fdef0e6c
Merge pull request #7046 from lioncash/priv
EXI_DeviceMic: Make data members of CEXIMic private
2018-06-02 11:53:07 +02:00
Stenzek bc96557ec4 Externals: Update glslang to upstream commit 32d3ec3 2018-06-02 07:34:31 +00:00
spycrab 0e8db9fd1d Analytics: Report update track 2018-06-02 05:59:03 +02:00
Lioncash 3906859984 EXI_DeviceMic: Remove unimplemented StreamLog function prototype 2018-06-01 20:43:28 -04:00
Lioncash 9e068ad2c4 EXI_DeviceMic: Make data members of CEXIMic private
Given they were only made public so that the callback could access class
state, we can simply make the callback a private static function of
CEXIMic, which allows access to members from the callback function
without making all of said members public.
2018-06-01 20:43:28 -04:00
Lioncash 179d73ac0d Interpreter_FloatingPoint: Clear FPSCR.FI and FPSCR.FR if an SNaN is an input to fres
In the PEM manual, within Table 3-12, which lists what should occur for
invalid operation exceptions, the FPSCR.FI and FPSCR.FR bits are listed
as "Cleared" for when FPSCR.VE is unset and set. So we clear these bits
as well to match hardware behavior.
2018-06-01 20:21:13 -04:00
Lioncash a08ad82ace Interpreter_FloatingPoint: Don't store to destination in fres if VE or ZE is set and a relevant exception occurs
In the PowerPC Microprocessor Family: The Programming Environments
Manual for 32 and 64-bit Microprocessors, in section 3.3.6.1, Table
3-12 lists what should occur if an invalid operation exception occurs in
situations where VE is set and when VE is not set. In the case where VE
is set, it lists the frD as "Unchanged". It also lists the FPRF flags as
"Unchanged".

Further down in Table 3-13, the listings for what should occur when zero
divide exceptions occur is listed, both for when ZE is set, and when it
isn't. When ZE is set, it lists frD as "Unchanged". It also lists the
FPRF flags as "Unchanged" as well.

This also alters the code so that we don't even calculate the result if
we don't need to compute it, making it a little bit less wasteful.
2018-06-01 20:21:09 -04:00
Léo Lam 69abaf3ec4 WiiSave: Merge Header and DataBinHeader to reduce noise
DataBinHeader is not used anywhere in the code other than via Header,
so let's merge them to reduce noise when accessing header fields
(currently we have to do header.hdr which looks silly).
2018-06-01 23:45:58 +02:00
Léo Lam 210377816d WiiSave: Get rid of some magic numbers
It would make sense for 0x80 and 0xf0c0 to be respectively
sizeof(BkHeader) and sizeof(Header) as Nintendo is signing anything
that comes after the header, including the BkHeader.
2018-06-01 23:44:24 +02:00
Léo Lam 8eafd1928e WiiSave: Move user interaction to UI frontends 2018-06-01 20:46:35 +02:00
Léo Lam 4df266f943 WiiSave: Use the correct length for paths
Paths can never exceed 0x40 characters as this is the maximum length
that is allowed by IOS (and probably the common FS library too).
2018-06-01 20:46:35 +02:00
Léo Lam 8af16fdd28 WiiSave: Use an enum class for save file type 2018-06-01 18:58:34 +02:00
Anthony a9684b5c67
Merge pull request #7041 from spycrab/qt_dbg_bselect
Qt/MemoryWidget: Allow operating on columns
2018-06-01 09:05:52 -07:00
Anthony d935f78692
Merge pull request #7043 from JosJuice/gamefile-includes
GameFile: Include necessary DiscIO headers
2018-06-01 09:05:10 -07:00
spycrab 3b59ebb226 Qt: Exit exclusive fullscreen on confirmation prompt 2018-06-01 17:40:07 +02:00
JosJuice 533a49460a GameFile: Include necessary DiscIO headers 2018-06-01 14:19:16 +02:00
Léo Lam 94953670f2 WiiSave: Move overwrite prompt to Import
WriteHeader should just write the header and not do anything else.
2018-06-01 00:14:48 +02:00
spycrab 5f5b05f3dc Qt/MemoryWidget: Allow operating on columns 2018-05-31 22:07:05 +02:00
Léo Lam a46a8dd378 WiiSave: Refactor import/export code
The current WiiSave code is extremely messy, as it exposes all kinds of
implementation details in the header (including internal struct
definitions and magic numbers that don't have to be).

The read/write code is intermingled, so it's hard to tell which members
are used, or when/where they are set at all.

It also implicitly relies on some functions being called in a specific
order since it doesn't seek manually every time, which makes the code
even more fragile.

The logic is also hardcoded to only support bin->nand or nand->bin,
even though it would be useful to support nand->nand (for the
Movie save copying code, for example).

This commit attempts to solve these problems by getting rid of the
WiiSave class:

* Read/write code is moved to new Storage classes (NandStorage and
  DataBinStorage) with small, clear functions that do one and only
  one thing.

* The import/export logic was refactored into a generic Copy function
  that takes two storages as parameters.

* The existing import and export functions are now just small wrappers
  that call Copy with the appropriate storages.
2018-05-31 20:52:01 +02:00
Léo Lam 60dd2553c6
Merge pull request #7033 from lioncash/jitarm
JitArm64_BackPatch: Correct usage of an invalidated iterator after a std::map erase() call in HandleFastmemFault()
2018-05-31 18:05:47 +02:00
Léo Lam fff1db9730 Common: Add Random utilities
This makes it easier to generate random numbers or fill a buffer with
random data in a cryptographically secure way.

This also replaces existing usages of RNG functions in the codebase:

* <random> is pretty hard to use correctly, and std::random_device does
  not give enough guarantees about its results (it's
  implementation-defined, non cryptographically secure and could be
  deterministic on some platforms).
  Doing things correctly is error prone and verbose.

* rand() is terrible and should not be used especially in crypto code.
2018-05-31 17:54:43 +02:00
Anthony a9a03d1565
Merge pull request #7034 from lioncash/override
JitArm64/Jit_Util: Add missing override specifiers
2018-05-31 08:48:35 -07:00
Mat M dd77ace56a
Merge pull request #7005 from lioncash/div
Interpreter_FPUtils: Correct setting the FPSCR's zero divide exception flag in the 0/0 case in NI_div()
2018-05-31 11:22:45 -04:00
Mat M f1b7259446
Merge pull request #6978 from lioncash/fcti
Interpreter_FloatingPoint: Handle NaN flag setting within fctiw and fctiwz
2018-05-31 11:22:04 -04:00
spycrab 8e5a96fcfc Qt/GeneralWidget: Show tooltip when adapters are not supported by the backend 2018-05-31 03:52:18 +02:00
spycrab d453dc2342 Qt/MemoryWidget: Fix sidebar items being stretched out 2018-05-30 23:23:02 +02:00
spycrab 390fb37a29
Merge pull request #7032 from spycrab/qt_macos_mpbtn_round
Qt/macOS: Fix mapping buttons not being round
2018-05-30 22:45:15 +02:00
spycrab d1db841ada
Merge pull request #7035 from spycrab/qt_macos_info_width
Qt/macOS: Fix InfoWidget fields being too narrow
2018-05-30 19:13:08 +02:00
spycrab 5f9d4d625f Qt/macOS: Fix InfoWidget fields being too narrow 2018-05-30 17:26:37 +02:00
Lioncash bffcaf3218 JitArm64_BackPatch: Correct usage of an invalidated iterator after a std::map erase() call in HandleFastmemFault()
Given the iterator gets invalidated within the erase() call, just keep a
temporary around to store the pointer address.
2018-05-30 11:08:11 -04:00
Lioncash ba6c371746 JitArm64/Jit_Util: Add missing override specifiers 2018-05-30 10:50:11 -04:00
Markus Wick 6c7e9f73da
Merge pull request #7030 from lioncash/emitter
x64Emitter: Amend parameter ordering for WriteModRM()'s prototype
2018-05-30 16:39:26 +02:00
spycrab 102d469f9e Qt/macOS: Fix mapping buttons not being round 2018-05-30 16:39:07 +02:00
Markus Wick f02b2f0cad
Merge pull request #7031 from lioncash/naming
AudioInterface: Minor changes
2018-05-30 16:38:18 +02:00
Lioncash 038bb9b3e1 AudioInterface: Use member initializers where applicable for unions
Migrates more code to the initialization capabilities available since C++11
2018-05-30 09:49:28 -04:00
Lioncash b59cda1435 AudioInterface: Amend variable naming
Normalizes variable names to conform to our coding conventions.
Previously we were signifying some variables as externally linked
globals, which wasn't the case.
2018-05-30 09:47:08 -04:00
Lioncash 81e11b2406 x64Emitter: Amend parameter ordering for WriteModRM()'s prototype
The definition of the function uses the ordering {mod, reg, rm}, which
is correct. Match the prototype to this, so that the parameter list
isn't misleading.
2018-05-30 09:30:24 -04:00
Léo Lam bdfd331355
Merge pull request #7028 from lioncash/obsolete
GeneralPane: Replace usages of obsolete QString member function sprintf
2018-05-30 15:02:41 +02:00
Lioncash f845818cfe VolumeWii: Shorten padding checking code within CheckIntegrity()
We can just use std::any_of here to collapse the checking code down to a
single assignment as opposed to a loop. This also slightly improves on
the existing code, as this won't continue to iterate through the cluster
metadata if an entry that's non-zero is encountered.
2018-05-30 08:42:32 -04:00
Lioncash bd585f7389 GeneralPane: Replace usages of obsolete QString member function sprintf
sprintf is listed as obsolete within the documentation for Qt 5. Instead,
it recommends using the asprintf member function, arg(), or QTextStream.
2018-05-30 06:50:59 -04:00
Léo Lam 4fb2d580d8
Merge pull request #7026 from lioncash/name
JitAsmCommon: Normalize member variable names within CommonAsmRoutinesBase
2018-05-30 12:02:08 +02:00
Léo Lam fb124c2eb0 Use nested namespaces for IOS HLE
Pretty much all of the source files contain the following:

    namespace IOS
    {
    namespace HLE
    {
    namespace <name>
    {
    // actual code here
    }  // namespace <name>
    }  // namespace HLE
    }  // namespace IOS

which is really verbose boilerplate, because most of the files inside
of Core/IOS are for IOS HLE.

This commit replaces that with a more concise `namespace IOS::HLE`
or `namespace IOS::HLE::(name)`.
2018-05-30 11:40:05 +02:00
Léo Lam 5b90aba624 ChunkFile: Replace macro with a variable template
Note that std::is_trivially_copyable_v cannot be used yet (C++17 only).
2018-05-30 11:39:30 +02:00
Lioncash 986d644a01 JitAsmCommon: Make CommonAsmRoutinesBase a struct
This is just used as a means of carting around routines. It's not meant
to directly have functionality embedded within it--this is the job of
the inheriting data structure--so we can just make this a basic struct.

Particularly given all the data members were public to begin with.
2018-05-30 05:22:41 -04:00
Lioncash f5f4c10fd1 JitAsmCommon: Amend member variable names for CommonAsmRoutinesBase 2018-05-30 05:22:36 -04:00
Léo Lam 8a00a9e149 Remove old GCC version checks 2018-05-30 10:59:15 +02:00
Lioncash efabfc0b54 VolumeWii: Use ReadSwapped for retrieving the partition data size in CheckIntegrity()
Also make this a little more robust by handling the failure case for
the read as well.
2018-05-30 04:34:57 -04:00
Lioncash 7bef470136 VolumeGC/VolumeWii: Dehardcode sizes where applicable
We can just use the relevant array to derive these sizes instead of hardcoding
them directly.
2018-05-30 04:14:42 -04:00
Markus Wick 4bebd52850
Merge pull request #7017 from lioncash/arm
Arm64Emitter: Use Common::BitCast where applicable
2018-05-30 09:50:59 +02:00
Lioncash 66122f037e Volume/VolumeGC/VolumeWii: Amend variable naming
Drops prefixed underscores and normalizes names to follow our coding
style.
2018-05-30 03:33:12 -04:00
JosJuice ae4aa0b25c
Merge pull request #7010 from leoetlino/can-of-worms
Don't switch to blank NAND in the middle of emulation
2018-05-30 08:00:15 +02:00
JosJuice 243f353688
Merge pull request #7016 from lioncash/mem
MemoryPatches: Minor changes
2018-05-30 07:45:34 +02:00
JosJuice 6cb81ca851
Merge pull request #7015 from lioncash/pcap
PcapFile: Namespace code under the Common namespace
2018-05-30 07:45:09 +02:00
JosJuice 2f561dafd9
Merge pull request #7014 from lioncash/const
DSPEmulator: Make the IsLLE() member function const-qualified
2018-05-30 07:40:44 +02:00
Mat M 1825e231a3
Merge pull request #7013 from degasus/double2single
Jit64: Fix MORE_ACCURATE_DOUBLETOSINGLE.
2018-05-29 21:01:47 -04:00
spycrab c07b89792d Qt/GeneralWidget: Add icon and title to the backend switch confirm dialog 2018-05-30 01:19:31 +02:00
spycrab a729c375f3
Merge pull request #7011 from spycrab/qt_jit_instant
Qt/MenuBar: Fix JIT Menu options not being applied instantly
2018-05-30 00:53:20 +02:00
Lioncash 6fd7a79b93 Arm64Emitter: Use Common::BitCast where applicable
Gets rid of the need to set up memcpy boilerplate to reinterpret between
floating-point and integers.

While we're at it, also do a minor bit of tidying.
2018-05-29 18:19:01 -04:00
Lioncash 397b27e665 MemoryPatches: In-class initialize is_enabled state for MemoryPatch instances
Given this is what occurs in both constructors (as one just passes
through to another), we can just initialize the member directly.

While we're at it, amend the struct to follow the general ordering
convention of:

<new types>
<functions>
<variables>
2018-05-29 18:04:06 -04:00
Lioncash 4c33bb8dda MemoryPatches: std::move std::vector in the constructor
We can avoid copying the vector contents in this instance.
2018-05-29 18:01:16 -04:00
Lioncash 97c5a840db PcapFile: Namespace code under the Common namespace
Brings more common code under the Common namespace.
2018-05-29 17:56:15 -04:00
Lioncash a7de492696 DSPEmulator: Make the IsLLE() member function const-qualified
This function only queries state and doesn't modify it, so this can be
made a const member function
2018-05-29 17:45:07 -04:00
degasus bde65d8b42 Jit64: Fix MORE_ACCURATE_DOUBLETOSINGLE.
This is broken since 3d12849967.
2018-05-29 23:25:30 +02:00
spycrab a1f15050a1 Qt/Mapping: Include "Always connected" option 2018-05-29 19:34:35 +02:00
spycrab d98affbf47 Qt/MenuBar: Fix JIT Menu options not being applied instantly 2018-05-29 16:40:05 +02:00
Léo Lam a4ec3ddef1 Don't switch to blank NAND in the middle of emulation
Switching to blank NAND when emulation is running is an extremely bad
idea. It's akin to opening up a Wii and replacing the NAND chip while
you're playing a game on it.

Except we're not even replacing it with a NAND that has the same
contents. The blank NAND has nothing in it except the save file for
the current game, which is likely to result in the emulated software
getting inconsistent results and possibly even crashing depending on
how it caches title information.

An example of games that check the saves for other games is
Mario Kart Wii -- it checks the filesystem for Super Mario Galaxy saves
to decide whether to unlock characters. With this 'switch NAND
while emulation is active' misfeature, this will likely break.
And that's the main problem: it encourages sloppy emulation and no one
really knows how many things it can break.

Just don't let the user do horrible things like that during emulation.
If they want to use a blank NAND, they can do so by starting input
recording before launching a game. It's likely they will want to do
this if they plan to share their DTM anyway.
2018-05-29 15:41:11 +02:00
Léo Lam 60c38d7781
Merge pull request #7007 from spycrab/qt_gecko_sort
Qt/GeckoCodeWidget: Autosort list and fix accessing the wrong element
2018-05-29 14:48:32 +02:00
Léo Lam 00d91db2ec
Merge pull request #7008 from spycrab/ddos_sux
Fix "Download Codes" hitting DDOS protection
2018-05-29 14:42:24 +02:00
Léo Lam 86bbf540cf
Merge pull request #7009 from lioncash/dsp
DSPEmulator: Default destructor in the cpp file
2018-05-29 14:16:50 +02:00
Lioncash c33228e466 DSPEmulator: Default destructor in the cpp file
This gets rid of a -Wweak-vtables warning
2018-05-29 07:54:39 -04:00
spycrab c086f894b1 Core/GeckoCodeConfig: Circumvent DDOS protection 2018-05-29 03:56:28 +02:00
spycrab 44784cf363 Common/HttpRequest: Add option to set cookies 2018-05-29 03:56:28 +02:00
spycrab a00250bfe6 Qt/GeckoCodeWidget: Autosort list and fix accessing the wrong element 2018-05-29 03:36:35 +02:00
spycrab e6273b177f Qt/MappingWindow: Fix profile saving not working when the index is not null 2018-05-29 01:32:07 +02:00
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
degasus fdfd8b19d6 OGL/Streambuffer: Use coherent mapping by default.
Coherent mappings have a lower overhead and less GL codes.
So enables coherent mapping by default for all drivers.
Both Qualcomm and ARM performs very bad with explicit flushing, so this change helps them as well.

AFAIK there was one GPU generation which was slower on coherent mapping: nvidia tesla
So Geforce 200 and 300 series should be tested with this PR before merging.
As this was last tested many years ago, this issue might have been fixed as well.
Those GPUs are close to 10 years old and not supported any more by nvidia.
2018-05-24 00:00:02 +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
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
Léo Lam fbf79f837f
Merge pull request #6896 from leoetlino/title-import
ES: Fix content check in ImportTitleDone
2018-05-18 22:38:55 +02:00
Léo Lam 69a6724b34
Merge pull request #6897 from lioncash/sw-efb
EfbInterface: Minor changes
2018-05-18 22:38:00 +02:00
Lioncash 505d45a233 EfbInterface: Move buffer constant from the header to the cpp file
This is only ever used internally, so we can limit its scope to the only
usage point.
2018-05-18 16:23:34 -04:00
Lioncash 5eef8ba984 EfbInterface: Make efb and perf_values std::arrays 2018-05-18 16:23:29 -04:00
Lioncash dc788042ef MMU: Use Common::BitCast where applicable
Gets rid of more memcpy boilerplate for properly reinterpreting bits.
2018-05-18 16:05:49 -04:00
Lioncash c58b5e9b9b EfbInterface: Make perf_values internally linked
Instead, expose functions to operate with it. This way we keep the
internal representation concealed.
2018-05-18 15:35:08 -04:00
Lioncash f3a8874214 EfbInterface: Move efb array into the EfbInterface namespace 2018-05-18 15:09:37 -04:00
Léo Lam f82e2f0b92 ES: Fix content check in ImportTitleDone
ImportTitleDone only checks if all required contents have been imported
for system titles.

This fixes the system menu not being able to recreate title directories
to copy a save back to the NAND by using title import functionality.
2018-05-18 20:59:33 +02:00
Léo Lam 473cbfa951 ES: Add more logging in title import functions
...to make troubleshooting easier.
2018-05-18 20:59:29 +02:00
Léo Lam bb2c3bd572
Merge pull request #6894 from lioncash/mem
BPMemory: Use Common::BitCast where applicable
2018-05-18 20:35:18 +02:00
Lioncash 4dbd6f6bbc BPMemory: Use Common::BitCast where applicable
Gets rid of memcpy boilerplating for reinterpreting bits properly.
2018-05-18 14:25:44 -04:00
Tilka 24eeffea7d
Merge pull request #6892 from lioncash/mask
Interpreter_Branch: Make type of the bitmask in rfi a u32 instead of int
2018-05-18 19:20:03 +01:00
spycrab 5e3d7dc162 Qt/HacksWidget: Fix slider not showing overridden settings 2018-05-18 20:19:21 +02:00
spycrab 707b966496 Qt/GameConfigWidget: Fix checkboxes not being saved properly 2018-05-18 20:15:14 +02:00
Lioncash 9911e51c8f Interpreter_Branch: Make type of the bitmask in rfi a u32 instead of int
Given this is a bitmask, we should be using an unsigned type to store it
(especially given it's outside the range an int can represent properly
without being considered negative).

No behavior change is caused by this, it just silences a sign conversion
warning.
2018-05-18 13:39:56 -04:00
spycrab 57f9928c49
Merge pull request #6891 from spycrab/qt_fs_glitch
Qt/HotkeyScheduler: Fix toggle fullscreen glitches
2018-05-18 19:30:42 +02:00
Léo Lam 49c9c1ee40
Merge pull request #6853 from aldelaro5/qt-debugger-hotkey-fixes
Qt debugger hotkey fixes
2018-05-18 19:06:17 +02:00
spycrab cc55817ec9 Qt/HotkeyScheduler: Fix toggle fullscreen glitches 2018-05-18 09:40:03 +02:00
spycrab eef2092854 Qt/D3D: Fix render widget size not being restored properly 2018-05-18 09:27:56 +02:00
spycrab 9bdf7c4b5a
Merge pull request #6890 from aldelaro5/qt-fix-random-windows
Qt/CheatWarningWidget: properly supply a parent for the widget
2018-05-18 08:08:42 +02:00
aldelaro5 6dd5a3a866
Qt/CheatWarningWidget: properly supply a parent for the widget
Because it wasn't parented properly, it would show briefly the widget in its own window when creating an ARCodeWidget or a GeckoCodeWidget which would occur when accessing the game properties page or when the state changes to pause/running.
2018-05-18 01:31:43 -04:00
Tilka bdce441bb9
Merge pull request #6889 from lioncash/mmu
PowerPC: Move MMU-specifics from PowerPC.h to MMU.h
2018-05-18 02:28:13 +01:00
Tilka cbc85d928b
Merge pull request #6860 from Zexaron/qt_generalwidget_remove_wrong_description
Qt/GeneralWidget remove unnecesary description wiring
2018-05-18 02:24:08 +01:00
Lioncash b9aad3310e PowerPC: Move MMU-specifics from PowerPC.h to MMU.h
PowerPC.h at this point is pretty much a general glob of stuff, and it's
unfortunate, since it means pulling in a lot of unrelated header
dependencies and a bunch of other things that don't need to be seen by
things that just want to read memory.

Breaking this out into its own header keeps all the MMU-related stuff
together and also limits the amount of header dependencies being
included (the primary motivation for this being the former reason).
2018-05-17 19:18:55 -04:00
Tilka e67f2dcada
Merge pull request #6888 from lioncash/qt-override
DolphinQt2: Minor changes
2018-05-17 22:16:23 +01:00
Lioncash c1f92d304f DolphinQt2/NetPlay/GameListDialog: Make GetSelectedUniqueID() const qualified
Given this member function returns a const reference to a QString, it
can be made const qualified, since it doesn't modify internal state.
2018-05-17 16:35:48 -04:00
Tilka 6ef7578321
Merge pull request #6886 from lioncash/dqt
DolphinQt2/Settings: Remove unimplemented IsInDevelopmentWarningEnabled() prototype
2018-05-17 21:33:37 +01:00
Tilka a825ddf466
Merge pull request #6885 from lioncash/namespace
Common/CodeBlock: Namespace code under the Common namespace
2018-05-17 21:33:12 +01:00
Lioncash c98a8b59d5 DolphinQt2/NetPlay: Mark constructors explicit where applicable 2018-05-17 16:33:05 -04:00
Tilka 7c9b0eb7ce
Merge pull request #6884 from lioncash/bit
Interpreter_LoadStorePaired: Use Common::BitCast where applicable
2018-05-17 21:32:37 +01:00
Lioncash dfa1126946 DolphinQt2: Add missing override specifiers 2018-05-17 16:28:35 -04:00
Lioncash 3d8cca2682 DolphinQt2/Settings: Remove unimplemented IsInDevelopmentWarningEnabled() prototype
The "in development" dialog was removed quite a while ago, so this is
just a leftover remnant that must have been missed during said removal.
2018-05-17 16:09:56 -04:00
spycrab 0b5d29a347
Merge pull request #6883 from spycrab/qt_fix_hk_state
Qt/HotkeyScheduler: Fix state loading
2018-05-17 22:08:57 +02:00
Lioncash 1c63a48fab Common/CodeBlock: Namespace code under the Common namespace
Brings more common code under the Common namespace.
2018-05-17 15:57:29 -04:00
spycrab 72a66d3fbb
Merge pull request #6877 from aldelaro5/qt-debugger-load-symbols
Qt/debugger: properly update when we load the symbols on boot
2018-05-17 21:41:55 +02:00
aldelaro5 65d2a6c590
Qt/debugger: properly update when we load the symbols on boot
This host event is still useful because the emu thread will load the symbols on boot if required.
2018-05-17 15:33:47 -04:00
Lioncash dbe550f7ef Interpreter_LoadStorePaired: Use Common::BitCast where applicable
Gets rid of more memcpy boilerplate code to reinterpret bits. This also
allows us to make variables const where applicable as well.
2018-05-17 15:27:07 -04:00
spycrab f25213139d Qt/HotkeyScheduler: Fix state loading 2018-05-17 20:27:14 +02:00
Jonathan Hamilton b30d56ccc0 Texture AverageDiff: Do more in int space and avoid excessive float conversion
Multiplying 2x 8bit values is guaranteed to fit in 16bits, 4 channels then in
18bits, which means an 'int' shouild be sufficient to avoid overflows
2018-05-17 09:39:39 -07:00
spycrab f51eba9e79
Merge pull request #6879 from aldelaro5/qt-no-screensaver-pause-play
Qt: do not toggle the screensaver when pausing or playing
2018-05-17 13:22:46 +02:00
aldelaro5 0a2357f044
Qt/hotkeys: do not show the debugging tab if the debugger is disabled 2018-05-17 07:22:34 -04:00
aldelaro5 3d9d516bd3
Qt: do not toggle the screensaver when pausing or playing
This fixes 2 crashes with the pause function.  One is when spamming the pause hotkey and the other is to press pause and step hotkeys at the same time.  It does disable the screensaver getting disabled when the emulator is running, but paused, though, a better solution would have to be done without introducing these crashes.
2018-05-17 07:14:44 -04:00
Markus Wick 87a29eb602
Merge pull request #6881 from lioncash/build
Interpreter_FloatingPoint: Fix build in frspx()
2018-05-17 11:05:18 +02:00
Lioncash abefbf032e Interpreter_FloatingPoint: Fix build in frspx()
Github didn't detect conflicts here, however, since the float handling
functions were moved into the Common namespace, this would cause a build
failure.
2018-05-17 04:55:48 -04:00
Markus Wick bc8d87bbfd
Merge pull request #6880 from lioncash/macro
PowerPC: Parenthesize GQR macro argument
2018-05-17 10:55:19 +02:00
Lioncash ddbe292d54 PowerPC: Parenthesize GQR macro argument
Ideally none of these macros would exist (long-term goal), however in
the meantime at least make sure expressions always evaluate correctly
(thankfully no current usages rely on this).
2018-05-17 04:48:29 -04:00
Markus Wick c485efdfe1
Merge pull request #6743 from stenzek/faster-disabled-copy-filter
TextureConversionShader: Don't sample from adjacent rows when not needed
2018-05-17 10:45:50 +02:00
Markus Wick 6ed3f8b474
Merge pull request #6634 from lioncash/frsp
Interpreter_FloatingPoint: Handle SNaNs and QNaNs properly in frsp
2018-05-17 10:43:14 +02:00
Markus Wick 3e6a706858
Merge pull request #6878 from lioncash/type
PowerPC/Interpreter: Avoid sign conversion with utility functions
2018-05-17 10:04:26 +02:00
Markus Wick 1424964678
Merge pull request #6856 from lioncash/cached-hook
PowerPC: Factor common part of function hooking code out of the interpreter and JITs
2018-05-17 09:45:17 +02:00
Lioncash 3f19aa6469 PowerPC/Interpreter: Avoid sign conversion with utility functions
Given we're operating with flags and bit representations, lets avoid
signed values here. It lessens the amount of sign conversion warnings
and lessens the amount of things to think about screwing you over when
making changes to the interpreter among other things.
2018-05-16 22:21:26 -04:00
Tilka 5b96abf7aa
Merge pull request #6872 from lioncash/exi
EXI_DeviceEthernet: Minor cleanup
2018-05-17 02:17:22 +01:00
Tilka 82d9dea245
Merge pull request #6873 from lioncash/bit
Interpreter_FPUtils: Use Common::BitCast where applicable
2018-05-17 02:12:07 +01:00
Tilka 975a10b3bd
Merge pull request #6876 from lioncash/var
Interpreter_SystemRegisters: Clean up variable naming
2018-05-17 02:09:25 +01:00
Jonathan Hamilton 61a81795e5 Change the arbitrary mipmap detection to use the square of the error
Hopefully this better matches the user's view of a texture - as large changes in
colour should be weighted higher than lots of very small changes

Note: This likely invalidates the current heuristic threshold default
2018-05-16 17:51:50 -07:00
Jonathan Hamilton 8be5cdfcad Make the arbitrary mipmap detection threshold configureable
This is likely a "superuser" option at best, but I want to be able to play with
it without rebuilding if I want to tweak the heuristics
2018-05-16 17:49:19 -07:00
Lioncash d80552b34a Interpreter_SystemRegisters: Clean up variable naming
Cleans up remnant instances of Hungarian notation being used in variable
names along with other spotted deviations.
2018-05-16 20:41:34 -04:00
Jonathan Hamilton 29b7e33c14 Make arbitrary mipmap detection a config option
Under GFX::Enhancements::ArbitraryMipmapDetection - default enabled
2018-05-16 17:15:38 -07:00
Lioncash b29b56c61a Interpreter_Integer: Clean up casting in mulhwx() and mulhwux()
These can be expressed in a slightly cleaner manner without so many
casts. While we're at it, also get rid of unnecessary indexing (we
already have the result nearby).
2018-05-16 19:45:17 -04:00
Lioncash 3400165171 Jit64: Factor function hooking out of DoJit() 2018-05-16 19:00:39 -04:00
Lioncash f3c13402e8 Interpreter: Factor function hooking code out of SingleStepInner() 2018-05-16 18:56:40 -04:00
Lioncash 4b25538f2f CachedInterpreter: Factor function hooking code out of Jit()
Extracts the self-contained code into its own function to clean up the
flow of Jit() a little more.

This also introduces a helper function to HLE.h that will be used to
reduce the boilerplate here and in the interpreter and Jit64 in the
following commits.

This function performs all of the preliminary checks required prior to
attempting to hook/replace a function at a given address. The function then
calls a provided object that satisfies the FunctionObject concept in the
C++ standard library. This can be a lambda, a regular function pointer,
an object with an overloaded function call operator, etc. The only
requirement is that the function return a bool, indicating whether or
not the function was replaced, and that it can take parameters in the
form: fn(u32 function, HLE::HookType type)
2018-05-16 18:55:49 -04:00
Lioncash c7cd1424f4 Interpreter_FPUtils: Use Common::BitCast where applicable
Gets rid of now-unnecessary memcpy boilerplating for different bit
representations between integral and fp types.
2018-05-16 17:48:30 -04:00
Lioncash e7403e121e EXI_DeviceEthernet: In-class initialize members
Gets rid of a second pair of ifdefs in the constructor. This also makes
sure the fd on Unix/BSD platforms is uniformly initialized. Previously
fd would be in an inconsistent state on FreeBSD or OpenBSD due to the
BSD OS checks not being present in the #elif within the constructor.
2018-05-16 16:55:07 -04:00
Lioncash fc78a4c993 EXI_DeviceEthernet: Make internal members and functions private
Previously, the entirety of CEXIETHERNET was exposed publically, which
wasn't necessary. We simply make the thread function part of the
internal interface, which gives it access to internal data members,
while keeping everything else outside of it.
2018-05-16 16:55:02 -04:00
Markus Wick b547f72878
Merge pull request #6871 from lioncash/virtual
DSPHLE/UCodes: Replace unnecessary virtual keywords with override
2018-05-16 22:16:26 +02:00
Markus Wick 8fa8aa3e1b
Merge pull request #6870 from lioncash/hash
Common/Hash: Namespace code under the Common namespace
2018-05-16 22:04:20 +02:00
Lioncash a7b8b15e7f DSPHLE/UCodes: Replace unnecessary virtual keywords with override
Given these HLE classes inherit from a common base with a virtual
destructor, override is more appropriate here, as virtual propagates to
these destructors anyway.

This is also safer. If the base class' destructor is ever made
non-virtual, then these classes will cause a compilation error if they
aren't taken into account, as they'd be overriding a non-virtual
function (the destructor).
2018-05-16 15:57:55 -04:00
Lioncash 011ee110bc Common/Hash: Namespace code under the Common namespace
Brings more common code under the Common namespace.
2018-05-16 15:39:23 -04:00
master0fdisaster 2a9283ee3d
Fix "Show Input Display" 2018-05-16 21:07:15 +02:00
spycrab b203024a26
Merge pull request #6868 from aldelaro5/qt-debugger-fix-updatediasm
Qt/Debugger: Use QApplication::instance() as the connection context in Host_UpdateDisasmDialog()
2018-05-16 18:54:21 +02:00
Léo Lam 47fd8c6eff
Merge pull request #6855 from aldelaro5/qt-render-min-width
Qt: allow to resize the render widget however wanted on render to main
2018-05-16 14:11:51 +02:00
Léo Lam 4de2c5040d
Merge pull request #6867 from jackoalan/code-view-bg
Qt/CodeViewWidget: Dynamic background dimming for dark themes
2018-05-16 14:08:02 +02:00
Léo Lam 9335400f65
Merge pull request #6862 from aldelaro5/qt-unify-pause-play
Qt: make the pause play button only one button
2018-05-16 14:07:35 +02:00
Jack Andersen d14f6e9ee6 Qt/CodeViewWidget: Dynamic background dimming for dark themes 2018-05-15 18:59:40 -10:00
aldelaro5 33ed5b2e99
Qt/Debugger: Use QApplication::instance() as the connection context in Host_UpdateDisasmDialog()
Because running on the host instance doesn't actually allow to fire the event.  This fix a regression where stepping would not udpate the GUI at all.
2018-05-16 00:42:35 -04:00
aldelaro5 bc43f45119
Qt: make the pause play button only one button
This is to avoid several issue with using 2 actions and switching between them.  This commit will instead have one action get his property changed on pause and play.
2018-05-15 23:37:50 -04:00
Lioncash 947fa271be Common: Add MemArena.h/cpp to the Common namespace
Brings more common code under the Common namespace.
2018-05-15 18:27:32 -04:00
spycrab 6c09ce3d95 Qt: Use proper signals 2018-05-15 20:13:12 +02:00
spycrab 79533ef789 Qt/PathPane: Disable "Remove" button when not applicable 2018-05-15 20:13:12 +02:00
spycrab 40e6abad09 Qt/AudioPane: Improve layout 2018-05-15 20:13:12 +02:00
spycrab 54d81ed13a Qt/SettingsWindow: Wrap tabs in scrollareas 2018-05-15 20:13:12 +02:00
spycrab b9bd4ecbcb Qt/Host: Fix random crashes when exiting fullscreen 2018-05-15 18:22:26 +02:00
spycrab 71f5fafb3b
Merge pull request #6861 from spycrab/qt_adapter_save
Qt/GeneralWidget: Restore the adapter properly
2018-05-15 11:10:12 +02:00
Markus Wick b4324847fb
Merge pull request #6863 from booto/jit-ps-dsi
Prevent paired singles routines clobbering PC,SRR0
2018-05-15 11:07:21 +02:00
booto c880302c6b Prevent paired singles routines clobbering PC,SRR0
Paired single (ps) instructions can call asm_routines that try to update
PowerPC::ppcState.pc. At the time the asm_routine is built, emulation has
not started and the PC is invalid (0). If the ps instruction causes an
exception (e.g. DSI), SRR0 gets clobbered with the invalid PC.

This change makes the relevant ps instructions store PC before calling out
to asm_routines, and prevents the asm_routine from trying to store PC
itself.
2018-05-14 20:49:13 -04:00
spycrab e922f91cc3 Qt/GeneralWidget: Restore the adapter properly 2018-05-14 21:16:20 +02:00
Léo Lam 159f6115e2
Merge pull request #6851 from lioncash/usage
BreakpointWidget: Move variables closer to usage sites in OnLoad()
2018-05-14 19:18:05 +02:00
Léo Lam b5761f9dc7
Merge pull request #6852 from lioncash/code
CodeViewWidget: Minor changes
2018-05-14 19:17:35 +02:00
Léo Lam 5b15060127
Merge pull request #6857 from spycrab/qt_minor_win
Qt: Minor window fixes
2018-05-14 19:11:56 +02:00
Zexaron ff971b1a6f Qt/GeneralWidget remove unnecesary description wiring 2018-05-14 18:18:18 +02:00
spycrab ca5dc25694
Merge pull request #6858 from lioncash/capture
DolphinQt2: Resolve unused lambda capture warnings
2018-05-14 16:47:55 +02:00
spycrab 26b1048975
Merge pull request #6850 from lioncash/moc
DolphinQt2: Add missing Q_OBJECT macro to all QObject-related classes missing it
2018-05-14 16:29:53 +02:00
Lioncash e2543ea801
DolphinQt2: Resolve unused lambda capture warnings
Resolves -Wunused-lambda-capture warnings.
2018-05-14 10:11:47 -04:00
spycrab 7e9bf12246 Qt: Minor window fixes
* Remove some more "What's this?" buttons
* Add some missing titles
2018-05-14 11:10:04 +02:00
Markus Wick db4d8d7ad3
Merge pull request #6854 from lioncash/access
Jit/CachedInterpreter: Minor cleanup to code buffer accesses
2018-05-14 07:49:22 +02:00
aldelaro5 6f2d8fad8f
Qt: allow to resize the render widget however wanted on render to main 2018-05-14 00:43:31 -04:00
Lioncash 7437f2efdc JitArm64: Clean up code buffer accesses in DoJit()
Done for the same reason this was done for Jit64. Avoids constantly
indexing for the same known object instance over and over.
2018-05-13 22:11:01 -04:00
Lioncash f4affa3d1d CachedInterpreter: Clean up code buffer accesses in Jit()
Done similarly for the reasons Jit64 was done. Localizes indexing to one
place instead of repeatedly indexing the same place.
2018-05-13 22:11:01 -04:00
Lioncash a16c0a6e16 Jit64: Clean up code buffer accesses in DoJit()
Moves the codebuffer access variables closer to their first use, and
gets rid of multiple indexing expressions. We already know which op
we're accessing in particular, so just make a reference to it and access
it instead of duplicating the expression all over the place.
2018-05-13 22:10:56 -04:00
Lioncash d7a3ce26de CodeViewWidget: Get rid of magic values in OnInsertBLR() and OnInsertNOP()
A call like ReplaceAddress(address, 0) is pretty ambiguous; so is
ReplaceAddress(address, false), so use an enum class that tells people
straight-up what the replacer is.

This also gets rid of the really weird naming, where if 'blr' is true,
we'd be replacing the address with a NOP, rather than an actual BLR
instruction, so we invert that so it actually makes sense. There's no
actual bug fixed here though, considering the OnInsert functions
specified the correct values; it's literally just weird naming.
2018-05-13 18:33:51 -04:00
Lioncash bbc0aee5ea CodeViewWidget: Replaces usages of QString::fromStdString with QStringLiteral where applicable
There's no need to construct a std::string here, when there's no dynamic
elements to the text.
2018-05-13 18:11:09 -04:00
Lioncash 644bbb29f3 CodeViewWidget: Remove unnecessary includes 2018-05-13 18:06:37 -04:00
Lioncash 7032863569 CodeViewWidget: Remove unnecessary QColor constructions
QBrush also accepts regular GlobalColor values as well.
2018-05-13 18:01:10 -04:00
Lioncash a0a0295f9d BreakpointWidget: Move variables closer to usage sites in OnLoad()
In the early-out case, we now don't end up constructing two vectors
that aren't even used. It also keeps relevant code together.
2018-05-13 17:56:03 -04:00
aldelaro5 2c861e75f5
Qt/debugger: only consider debugger hotkeys if debugging is enabled 2018-05-13 17:39:44 -04:00
Léo Lam f8e5e7126c
Merge pull request #6849 from leoetlino/oops
WiiSave: Fix out-of-bounds read
2018-05-13 23:34:32 +02:00
Léo Lam 345838d517
Merge pull request #6842 from spycrab/qt_map_apply
Qt/Mapping: Fix mapping changes not being applied instantly
2018-05-13 23:34:18 +02:00
Lioncash 222fe58e25 DolphinQt2: Add missing Q_OBJECT macro to all QObject-related classes missing it
Without this macro, if any signals or slots were attempted to be used,
they wouldn't work; neither would various other features of the Qt
meta-object system. This can also lead to weird behavior in other
circumstances. Qt's documentation specifically states:

"Therefore, we strongly recommend that all subclasses of QObject use the
Q_OBJECT macro regardless of whether or not they actually use signals,
slots, and properties."

on its page for "The Meta-Object System", which can be seen here:
https://doc.qt.io/qt-5/metaobjects.html

Let's opt for "always do the right thing", and keep the code extensible
for the future and not have random things blow up on us.
2018-05-13 17:33:32 -04:00
Léo Lam 3fbfa4335e WiiSave: Fix out-of-bounds read
Fixes the count argument for WriteArray. (I used it like WriteBytes.)
Whoops.
2018-05-13 23:18:28 +02:00
spycrab c7a0b6c9f8
Merge pull request #6831 from spycrab/qt_memcard_fixes
Qt/GCMemcardManager: Fix multiple issues
2018-05-13 23:14:46 +02:00
Léo Lam 2be8c35d6d
Merge pull request #6844 from leoetlino/wii-save-cleanup2
WiiSave: Reuse IOS services where possible
2018-05-13 23:08:28 +02:00
JosJuice 74d561085c
Merge pull request #6848 from lioncash/guard
DolphinQt2: Add missing header guards for CheatCodeEditor and MappingIndicator
2018-05-13 22:21:40 +02:00
Lioncash b03c433543 DolphinQt2: Add missing header guards for CheatCodeEditor and MappingIndicator
Prevents potential double inclusion issues from ever happening.
2018-05-13 16:11:30 -04:00
Léo Lam 8f44423a5b
Merge pull request #6846 from spycrab/qt_native_sep
Qt: Use native dir separators
2018-05-13 22:10:10 +02:00
Léo Lam 6c38e4b47f
Merge pull request #6847 from lioncash/fs-include
FilesystemWidget: Replace DiscIO includes with forward declarations
2018-05-13 22:08:09 +02:00
Lioncash d1d584d16b FilesystemWidget: Replace DiscIO includes with forward declarations
Avoids the need to use an ugly ifdef around a header, and also resolves
an indirect inclusion in PropertiesDialog.
2018-05-13 16:01:16 -04:00
Léo Lam 1fe92b8be7
Merge pull request #6845 from lioncash/patch-dlg
NewPatchDialog/PatchesWidget: Use forward declarations where applicable
2018-05-13 22:00:43 +02:00
Léo Lam 07b57c7ac6
Merge pull request #6843 from lioncash/patch
PatchEngine: Minor changes
2018-05-13 21:58:55 +02:00
spycrab 5673a64612 Qt: Use native dir separators 2018-05-13 21:51:38 +02:00
Lioncash 5fd8cec7ea PatchEngine: Add s_ prefix to file-scope variables
Brings the translation unit in line with the convention used elsewhere
in the codebase.
2018-05-13 15:46:55 -04:00
Lioncash 0995cfef6a PatchEngine: Make PatchType an enum class
Makes the enum strongly typed. A function for retrieving the string
representation of the enum is also added, which allows hiding the array
that contains all of the strings from view (i.e. we operate on the API,
not the exposed internals). This also allows us to bounds check any
querying for the strings.
2018-05-13 15:46:51 -04:00
Lioncash 799e4154be PatchesWidget: Convert Core and UICommon includes into forward declarations
Avoids propagating inclusions through UI headers
2018-05-13 15:38:58 -04:00
Lioncash df3f9af6d7 NewPatchDialog: Convert PatchEngine include into a forward declaration
Avoids needing to include Core headers in UI-related header files,
preventing unintentional propagation.
2018-05-13 15:34:46 -04:00
Léo Lam b405a1fbb1 WiiSave: Reuse ES::GetInstalledTitles
Same thing, less code, no manual FS access.
2018-05-13 21:28:35 +02:00
Léo Lam a2ffe010f3 WiiSave: Reuse IOSC::Sign for signing 2018-05-13 21:28:35 +02:00
Léo Lam 07caac1d23 WiiSave: Reuse IOSC for AES decryption/encryption
The SD key is already in IOSC.

This also prevents WiiSave from exposing an external library as part
of its interface.
2018-05-13 21:25:58 +02:00
spycrab 9e2f9db94c Qt/Mapping: Fix mapping changes not being applied instantly 2018-05-13 21:21:31 +02:00
spycrab b9ae157835 Qt/RenderWidget: Fix render-to-main focus 2018-05-13 21:08:34 +02:00
Lioncash a166cf2481 PatchEngine: Give Patch and PatchEntry default member initializers
Avoids potentially using the values uninitialized. While we're at it,
also drop the prefixed underscores from one of the constructors.
2018-05-13 15:08:32 -04:00
Lioncash 15a522fe9b DolphinQt2/NewPatchDialog: Remove unused <iostream> include
Including <iostream> causes a static constructor to be injected into the
translation unit, even if the everything from the header itself is
unused.
2018-05-13 14:04:22 -04:00
Léo Lam 9d1157f695
Merge pull request #6839 from spycrab/qt_start_top
Qt: Fix render widget not being on top when using -n / -e
2018-05-13 18:20:00 +02:00
Léo Lam e828c243f3
Merge pull request #6836 from leoetlino/wii-save-cleanup
WiiSave: (not so) Minor cleanup
2018-05-13 18:19:22 +02:00
spycrab 17795a615b
Merge pull request #6838 from spycrab/qt_map_save
Qt/ControllersWindow: Fix changing devices while emulation is running
2018-05-13 18:17:13 +02:00
Léo Lam 80b3d7ccb8 WiiSave: Allow users to specify export directory
Export and ExportAll now open a directory picker (that defaults to the
previous default directory, i.e. the Dolphin user dir).

Also removes the need to return the path in the export functions since
the user knows which path they chose.
2018-05-13 17:42:56 +02:00
Léo Lam 87e5cd73dc WiiSave: Use std::array instead of C arrays
Makes copying, comparing more readable
2018-05-13 17:42:55 +02:00
Léo Lam a93d816c28 WiiSave: Move dialogs to UI code
This moves the result dialogs to DolphinQt2, since WiiSave should not
really be responsible for interacting with the user as a simple
Wii save importing/exporting class.

This also fixes Wii save import/export showing result dialogs twice,
once from WiiSave, and another time from DolphinQt2.
2018-05-13 17:42:55 +02:00
Léo Lam 41c4486c65 WiiSave: Clean up constructors
Move the import/export operation into separate functions, as it doesn't
really make sense for the constructor to do *everything*, including
printing success/failure message boxes.

The existing constructor was split into two: one that takes a path,
and another taking a title ID. This makes it more obvious what is
actually done when a path/TID is passed and also clarifies what
parameters should be passed. (No more magic 0 or "" value.)
2018-05-13 17:42:55 +02:00
Léo Lam fbf36b85d2 WiiSave: Remove unused Extract() member function 2018-05-13 17:42:55 +02:00
Léo Lam 956df21bd7 WiiSave: Use Common::BigEndianValue to simplify parsing
Gets rid of the need to manually cast when reading/writing, which is
error prone and repetitive.
2018-05-13 17:42:55 +02:00
Léo Lam fb39efbf90 WiiSave: Fix struct member naming 2018-05-13 17:42:55 +02:00
Léo Lam bae8bcde0a WiiSave: Do not expose internal constants 2018-05-13 17:42:55 +02:00
Léo Lam 00bc1f28f2 Rename CWiiSaveCrypted to WiiSave 2018-05-13 17:42:55 +02:00
spycrab fa77e09239 Qt: Fix render widget not being on top when using -n / -e 2018-05-13 17:32:29 +02:00
Léo Lam 5564150dd6
Merge pull request #6833 from leoetlino/dns
Use resolver to get default DNS nameserver
2018-05-13 15:49:50 +02:00
Dexter Gerig 73bc20ead4 Use resolver to get default DNS nameserver 2018-05-13 14:05:23 +02:00
spycrab 2ca75ae05a Qt/ControllersWindow: Fix changing devices while emulation is running 2018-05-13 14:04:39 +02:00
Léo Lam 99dff10d43
Merge pull request #6837 from spycrab/qt_position
Qt/RenderWidget: Save position and size using QSettings
2018-05-13 11:47:04 +02:00
Markus Wick c267262a66
Merge pull request #6786 from stenzek/crop-negative-y
RenderBase: Ensure the draw size does not exceed the window size
2018-05-13 08:55:59 +02:00
spycrab 760a0be28a Qt/RenderWidget: Save position and size using QSettings 2018-05-13 01:27:56 +02:00
Léo Lam 66c1b909c2
Merge pull request #6765 from aldelaro5/Qt-debugger-fixes
Qt/debugger: fix a bunch of things
2018-05-13 01:20:11 +02:00
Léo Lam ad5a69be79
Merge pull request #6826 from spycrab/qt_netplay2
Qt/NetPlayDialog: Improve player list
2018-05-13 01:17:51 +02:00
aldelaro5 5c688b2d2b
Qt/debugger: Don't update the symbols list unnecessarily
It only needs to be updated when we changes the symbols, not every time the code widget updates and it does take a while to update them so this fixes some delay when updating the code window.
2018-05-12 19:15:26 -04:00
aldelaro5 be6b4edb0c
Qt/debugger: only resize the columns of the code view once per update
Putting the columns to resizeToContents causes way too much resizes per updates which can cause severe lags and even crashes.  This only does one resize at the end of the columns.
2018-05-12 19:15:26 -04:00
aldelaro5 daf8df951c
Qt/Debugger: Update the register view properly on pause and step 2018-05-12 19:15:24 -04:00
aldelaro5 7388774f10
Qt/debugger: fix some possible crashes and inconsistencies in the breakpoint widget
One, which was also possible in Wx is to add an mbp after the core stopped which shouldn't be possible as it needs to add the memcheck on the core thread which wouldn't be running.  The other fix is Qt specific where it doesn't clear the breakpoints on stop.
2018-05-12 19:06:18 -04:00
aldelaro5 09792fde70
Qt/debugger: recenter the code widget when selecting a breakpoint 2018-05-12 19:04:37 -04:00
aldelaro5 53803c1fca
Qt/debugger: fix minor issues in the breakpointWidget
The items were editable while you cannot edit the breakpoints at the moment and the last breakpoint deleted would not cause the row count to change to 0.
2018-05-12 19:04:37 -04:00
aldelaro5 238c801711
Qt/debugger: properly updates when we break
The Host_UpdateDisasmDialog was unimplemented in Qt which is required to get updates when we break.  Additionally, this updates the debugger toolbar.
2018-05-12 19:04:30 -04:00
Mat M a4de3922e9
Merge pull request #6832 from leoetlino/wiiroot
WiiRoot: Copy initial NAND files with proper metadata
2018-05-12 18:25:21 -04:00
Lioncash 411fc01262 DolReader/ElfReader: Remove unnecessary FileUtil.h includes
These can be replace with File.h, as the only file-related things
necessary is the declaration of IOFile (which resides in File.h).
2018-05-12 17:41:17 -04:00
Lioncash f7bc75ae6d Boot: Make BootExecutableReader's constructor take a std::vector by value
This allows avoiding two copies of the executable data being created in
the following scenario (using pseudocode):

some_function()
{
  std::vector<u8> data = ...;
  DolReader reader{data};

  ...
}

In this scenario, if we only use the data for passing it to DolReader,
then we have to perform a copy, as the constructor takes the std::vector
as a constant reference -- you cannot move from a constant reference,
and so we copy data into the DolReader, and perform another copy in the
constructor itself when assigning the data to the m_bytes member
variable. However, we can do better.

Now, the following is allowable as well:

some_function()
{
  std::vector<u8> data = ...;
  DolReader reader{std::move(data)};

  ...
}

and now we perform no copy at any point in the reader's construction, as
we just std::move the data all the way through to m_bytes.

In the case where we *do* want to keep the executable data around after
constructing the reader, then we can just pass the vector without
std::move-ing it, and we only perform a copy once (as we'll std::move
said copy into m_bytes). Therefore, we get a more flexible interface
resource-wise out of it.
2018-05-12 17:40:34 -04:00
Léo Lam 48fa835bd3 WiiRoot: Copy initial NAND files with proper metadata 2018-05-12 22:54:34 +02:00
Léo Lam f91b729b61
Merge pull request #6825 from leoetlino/onion-types
Config: Fix implicit conversions/enum config types
2018-05-12 21:59:43 +02:00
Léo Lam e1169ef9ee
Merge pull request #6824 from aldelaro5/custom-rtc-no-bias
RTC: Write 0 to the counter bias if we are on custom RTC
2018-05-12 21:59:13 +02:00
aldelaro5 70ca98c8e7
Qt/debugger: change how the selected line in the code widget looks
Not only it colors the entire row instead of just the address, but if the pc is the selected row, the pc color will overwrite the selection, this is done via a stylesheet.
2018-05-12 15:47:16 -04:00
aldelaro5 9a2dd470a0
Qt/debugger: change some colors logic in the codeWidget
This commit makes the colors hardcoded except when there is no symbols loaded, in which case, it uses the theme colors, except for the PC which is hardcoded to black on green.  This makes a compromise between making use of the corespoinding theme color and the text being nicely readable on all themes.
2018-05-12 15:47:16 -04:00
aldelaro5 9bacb3cb26
Qt/RegisterView: fix minor aesthetic issues
This aligns the values to the right since It looks odd to be aligned to the left with any format other than hexadecimal.  It also sets the font tot he debugger font and disallow selection as a previous commit made the selection pointless since it now relies on the current item.
2018-05-12 15:47:16 -04:00
aldelaro5 8c23335be3
Qt/RegisterView: fix the context menu not working correctly
It seemed impossible to SELECT an item, however, when right clicking, the CURRENT item is set to the appropriate cell, this commit makes the view use thta cell instead of the first selected one.
2018-05-12 15:47:16 -04:00
aldelaro5 f9a6f97dca
Make the dock widgets (logger and debugger) be on the left by default
Like they were in Wx.
2018-05-12 15:47:16 -04:00
spycrab b094cda929 Core/GCMemcard: Fix checksums after modifying the memcard 2018-05-12 21:39:13 +02:00
spycrab 229c92d0bf Qt/GCMemcardManager: Properly perform actions and do error checking 2018-05-12 21:38:30 +02:00
spycrab 8b3358e208 Qt/GCMemcardManager: Fix broken export message 2018-05-12 20:35:16 +02:00
Lioncash 0ef7dca0d4 SettingsHandler: Remove redundant type qualifier in SetBytes()
Given the qualifier isn't used for the constructor taking a buffer, remove it here
to be consistent.
2018-05-12 13:53:42 -04:00
Lioncash 1da2091801 SettingsHandler: Remove unnecessary includes
All Windows-specific includes aren't needed here anymore.
2018-05-12 13:53:37 -04:00
Lioncash 5677e5d74a SettingsHandler: Namespace code under the Common namespace
Adds another file in Common to the Common namespace.
2018-05-12 13:39:37 -04:00
spycrab bf0ee9f702
Merge pull request #6822 from spycrab/qt_fix_defaults
Qt: Fix mapping defaults
2018-05-12 19:22:53 +02:00
spycrab d8a95834f3 Qt/NetPlayDialog: Improve player list 2018-05-12 18:25:38 +02:00
Léo Lam 6763a3fce1 Config: Add support for enums
This makes it possible to use enums as the config type.
Default values are now clearer and there's no need for casts
when calling Config::Get/Set anymore.

In order to add support for enums, the common code was updated to
handle enums by using the underlying type when loading/saving settings.

A copy constructor is also provided for conversions from
`ConfigInfo<Enum>` to `ConfigInfo<underlying_type<Enum>>`
so that enum settings can still easily work with code that doesn't care
about the actual enum values (like Graphics{Choice,Radio} in DolphinQt2
which only treat the setting as an integer).
2018-05-12 18:10:26 +02:00
Markus Wick be0f4f7fb2
Merge pull request #6828 from ScoreUnder/syntaxfix2
Fix syntax error in GLSL_GS
2018-05-12 17:37:33 +02:00
Léo Lam 94dc746351 Copy Wii NAND data to user NAND in WiiRoot
Dolphin doesn't use any of the WC24 files, so this can be done when
actually starting emulation in WiiRoot. The benefit of moving the
copy is that we don't need to handle temporary NANDs in a special way.
2018-05-12 17:08:50 +02:00
Léo Lam 5f567b38fe WiiRoot: Move content manipulation to separate functions
{Initialize,Shutdown}WiiRoot should only be responsible for setting the
SESSION_WII_ROOT or managing the temporary NAND directory.

Move all the content manipulation out of these functions to ensure
separation of concerns and call them after/before WiiRoot init/shutdown
to make sure they operate on the correct root.
2018-05-12 17:06:31 +02:00
Stenzek a446b096cb Jit64: Invalidate cached constant values w/o host register on flush
If we don't flush the values, they persist in the register cache,
potentially resulting in the values being out of sync with PPCSTATE.

This was causing random crashes in games, mainly booting, when certain
JIT instructions were disabled, or forced to fall back to interpreter.
2018-05-13 00:50:31 +10:00
Score_Under 4e7caa2818 Fix syntax error in GLSL_GS 2018-05-12 15:42:18 +01:00
Score_Under 70b00f2b2d Remove stray quote sign
This allows GLSL_EFB_POKE_GEOMETRY_GS to compile again.
2018-05-12 15:21:29 +01:00
Léo Lam 7dca7c237e Config: Fix template deduction for implicit conversions
This excludes the second argument from template deduction.

Otherwise, it is required to manually cast the second argument to
the ConfigInfo type (because implicit conversions won't work).

e.g. to set the value for a ConfigInfo<std::string> from a string
literal, you'd need a ugly `std::string("yourstring")`.
2018-05-12 14:30:18 +02:00
Léo Lam e78235943e
Merge pull request #6823 from spycrab/qt_reset_hotkey
Qt: Implement "Reset" hotkey
2018-05-12 13:12:24 +02:00
Léo Lam a712cfe339
Merge pull request #6624 from spycrab/qt_dbg_jit
Qt/Debugger: Implement "JIT" widget
2018-05-12 13:02:47 +02:00
aldelaro5 4b2906c569
RTC: Write 0 tot he counter bias if we are on custom RTC
This can be considered a hack, but it essentially neuter the bias applied on boot for both console on the RTC.  This avoids having the time on boot be changes significantly while the user would want a specific RTC and it also avoids possible underflow of the RTC if it is near the epoch.
2018-05-12 01:37:48 -04:00
spycrab 226b6888d6 Qt: Implement "Reset" hotkey 2018-05-12 03:56:10 +02:00
spycrab c118af73c2 Qt: Fix mapping defaults 2018-05-12 01:31:42 +02:00
Lioncash a85aa73c4d
FileUtil: Remove unnecessary IOFile GetHandle() call in ReadFileToString()
We can just use IOFile's GetSize() function to do the same thing. While
we're at it, get rid of unnecessary variables.
2018-05-11 16:27:33 -04:00
Anthony f0c5b76186
Merge pull request #6677 from 404-Name-Not-Found/master
Fix test rumble feature in controller configuration
2018-05-11 12:51:52 -07:00
Anthony 968779e623
Merge pull request #6814 from lioncash/sd
SDCardUtil: Minor changes
2018-05-11 12:39:17 -07:00
Anthony ee1a175205
Merge pull request #6816 from leoetlino/kd
IOS/KD: Migrate to new filesystem interface
2018-05-11 12:37:10 -07:00
Mat M b938e15699
Merge pull request #6818 from JonnyH/WIP/variant-update
Update mpark::variant implementation to 1.3.0
2018-05-11 15:36:23 -04:00
spycrab 0abce1419b Qt/NetPlayDialog: Fix broken IP label 2018-05-11 21:22:57 +02:00
spycrab 76f6c7523f
Merge pull request #6810 from spycrab/qt_fix_hotkey_conf
Qt/MappingButton: Fix occasionally broken indicator
2018-05-11 21:05:43 +02:00
spycrab 49d2f6f15a Qt/HotkeyScheduler: Use onion config 2018-05-11 20:47:30 +02:00
Léo Lam 1b070c4b6f IOS/KD: Migrate to new filesystem interface 2018-05-11 20:30:22 +02:00
Jonathan Hamilton 791c8401c1 Update mpark::variant implementation to 1.3.0
Fixes building on the latest clang shipping on MacOS
(Apple LLVM version 9.1.0 (clang-902.0.39.1))
2018-05-11 11:15:06 -07:00
Lioncash cdeed038bd
SDCardUtil: Replace macros with typed equivalents
Instead use a general template and specify which type we're writing out.
2018-05-11 12:33:07 -04:00
spycrab 16e2ac9257 VideoCommon/RenderBase: Refactor OSD messages 2018-05-11 18:24:08 +02:00
spycrab 1dfcffcce2 Qt/Debugger: Implement "JIT" widget 2018-05-11 18:10:35 +02:00
spycrab 082573bd6b
Merge pull request #6808 from spycrab/qt_hotkey_osd
Qt/HotkeyScheduler: Show OSD information
2018-05-11 15:51:37 +02:00
Lioncash 3b0139b258
SDCardUtil: Namespace SDCardUtil
Brings yet another header in the common library under the Common
namespace.
2018-05-11 09:19:30 -04:00
Lioncash 4e1547b3b2
SDCardUtil: Remove the use of IOFile's GetHandle() function
GetHandle() should really not even be part of IOFile's interface, but
since it is (for the time being), we can cull unnecessary usages of it.
In this case, the WriteBytes() function does what we need without using
the underlying handle directly.
2018-05-11 09:19:29 -04:00
Lioncash ad4150dae9
SDCardUtil: Join variables with declarations where applicable 2018-05-11 09:19:26 -04:00
Lioncash 1ffd0d2572
SDCardUtil: Make type of write_empty's "count" parameter size_t
This allows getting rid of casts. We can also leverage std::min to allow
making relevant variables const. Also make the "empty" table const to
allow it to be read-only.
2018-05-11 08:55:05 -04:00
Lioncash c26de8107d
SDCardUtil: Convert return type of write_* functions to bool
Converts them from 0 == success, 1 == failure to using the built-in
standard bool. Also while we're at it, const qualify write_sector's
"sector" parameter, since nothing in the function modifies the data
being pointed to.
2018-05-11 08:29:37 -04:00
Lioncash 5fc18aa639
SDCardUtil: Replace sector size magic value with relevant named constant
Makes variable use consistent throughout the file.
2018-05-11 08:25:35 -04:00
spycrab 66190ae4d6 Qt/HotkeyScheduler: Show OSD information 2018-05-11 12:49:20 +02:00
spycrab 242fadc76f Qt/MappingButton: Fix occasionally broken indicator 2018-05-11 12:37:48 +02:00
Léo Lam e1866d35e5
Merge pull request #6807 from leoetlino/boot
Boot: Migrate to new filesystem interface
2018-05-11 10:41:00 +02:00
Léo Lam 5071973a51
Merge pull request #6805 from spycrab/qt_netplay
Qt/NetPlayDialog: Multiple improvements
2018-05-11 10:39:53 +02:00
Léo Lam d1bb5249ec
Merge pull request #6801 from stenzek/copy-filter-typo
D3D/Vulkan: Fix incorrect clamp in EFB RAM copy
2018-05-11 10:36:47 +02:00
Léo Lam 066e4ea463
Merge pull request #6809 from lioncash/macro
CommonFuncs: Convert ROUND_UP_POW2 macro to a function
2018-05-11 10:16:29 +02:00
Lioncash 6d0cab3743 DolphinQt2/MemoryWidget: Use QString's toUtf8() where applicable instead of toStdString()
Avoids needing to iterate and append the characters in one case. This also
alters the function to not need to construct a temporary std::string
(QString's toUtf8() is sufficient, as QByteArray exposes iterators).

toStdString() is equivalent to retrieving the QString's underlying
QByteArray via calling QString's .toUtf8 member function and then
calling .toStdString() on the result of it (discarding the QByteArray
afterwords), so this just trims off an unnecessary step in the process.

This is also somewhat more indicative of the conversions going on:
toStdString() converts the underlying character sequence of a
QString to UTF-8, not strict ASCII, so we're really using a superset of
ASCII.
2018-05-10 22:10:45 -04:00
Lioncash ba01f6dba3 CommonFuncs: Convert ROUND_UP_POW2 macro to a function
Also move it to MathUtils where it belongs with the rest of the
power-of-two functions. This gets rid of pollution of the current scope
of any translation unit with b<value> macros that aren't intended to be
used directly.
2018-05-10 19:42:20 -04:00
Léo Lam a977a56434 Boot: Migrate to new filesystem interface 2018-05-10 22:34:03 +02:00
Léo Lam e6c489f1d4 ES: Move title dir creation logic into separate function
Since we're going to need it in the boot code, move it out to a
separate, easily reusable function. This also makes the InitImport
logic clearer.
2018-05-10 22:33:49 +02:00
Léo Lam 722d31124c SettingsHandler: Fix const correctness 2018-05-10 21:35:27 +02:00
Léo Lam 09d2afa91f SettingsHandler: Migrate to new filesystem interface
Change SettingsHandler to take a buffer instead of assuming that the
setting file to read is always on the host filesystem for more
flexibility and make it possible to use the new filesystem interface.
2018-05-10 21:35:27 +02:00
spycrab 3cca051850
Merge pull request #6806 from spycrab/qt_iowindow_crash
Qt/IOWindow: Fix crash
2018-05-10 21:18:48 +02:00
spycrab 146979f67e Qt/IOWindow: Fix crash 2018-05-10 21:12:19 +02:00
spycrab 09449e2bca Qt/NetPlayDialog: Use QToolButton instead of a QComboBox 2018-05-10 20:51:12 +02:00
spycrab 26bee93943 Qt/NetPlayDialog: Show more friendly interface names 2018-05-10 20:51:12 +02:00
spycrab 0141ce9305 Qt/NetPlayDialog: Restore window geometry 2018-05-10 20:51:12 +02:00
spycrab 0ee7bddd4f Qt/NetPlayDialog: Add splitter 2018-05-10 20:51:12 +02:00
spycrab 6ea2b2e7e5 Qt/NetPlayDialog: Fix duplicate messages 2018-05-10 20:51:12 +02:00
spycrab 7550389c72 Qt/NetPlayDialog: Escape HTML in chat 2018-05-10 19:19:09 +02:00
spycrab 893c5e694e Qt/NetPlayDialog: Use more readable colors 2018-05-10 19:14:19 +02:00
Léo Lam d8e1d2d573
Merge pull request #6803 from lioncash/tidy
FloatUtils: Remove IntDouble and IntFloat
2018-05-10 19:04:49 +02:00
Lioncash 0a3631cc76
FloatUtils: Remove IntDouble and IntFloat
Type punning via unions in C++ invokes undefined behavior. Instead, leverage BitCast,
our variant of C++2a's std::bit_cast
2018-05-10 12:28:09 -04:00
Lioncash bde4e970f1
FloatUtils: Clean up memcpy usages
Now that we have BitCast, we can use that instead.
2018-05-10 12:28:09 -04:00
Lioncash b3292298c9
BitUtils: Add C++14/C++17 compatible equivalent of std::bit_cast from C++2a
Given bit conversions between types are quite common in emulation
(particularly when it comes to floating-point among other things) it
makes sense to provide a utility function that keeps all the boilerplate
contained; especially considering it makes it harder to accidentally
misuse std::memcpy (such as accidentally transposing arguments, etc).

Another benefit of this function is that it doesn't require separating
declarations from assignments, allowing variables to be declared const.
This makes the scenario of of uninitialized variables being used less
likely to occur.
2018-05-10 12:28:05 -04:00
spycrab 6e9d0ff6de
Merge pull request #6802 from Neui/qt-remember-main-window-position-and-size
Qt: Save and restore main window size and position
2018-05-10 18:26:38 +02:00
Neui f6d5896bc7 Qt: Save and restore main window size and position 2018-05-10 18:19:17 +02:00
Léo Lam 28915049b5
Merge pull request #6797 from leoetlino/uid
Move all UID constants to a single file
2018-05-10 18:16:04 +02:00
Stenzek 3493d738ca D3D/Vulkan: Fix incorrect clamp in EFB RAM copy
This could cause darker-than-expected EFB copies if clamping was not
enabled, and the user forced EFB copies to RAM only.
2018-05-11 00:32:39 +10:00
spycrab 273579bc32 Qt/Win32: Fix font weight calculation 2018-05-10 14:01:55 +02:00
spycrab fd1ea63383
Merge pull request #6788 from spycrab/qt_gconf_fixes
Qt/GraphicsWindow: Fix multiple issues
2018-05-10 12:16:19 +02:00
spycrab be007b436c Qt/GraphicsWindow: Fix software renderer breaking layout 2018-05-10 12:08:23 +02:00
spycrab 074a17482b Qt/GraphicsWindow: Refresh settings on construction 2018-05-10 12:08:23 +02:00
spycrab 6a34f2b47c Qt/GeneralWidget: Fix "No" response to backend switch confirmation 2018-05-10 12:08:23 +02:00
spycrab b7b6b5162c Qt/GeneralWidget: Refresh backend settings properly 2018-05-10 12:08:23 +02:00
spycrab e380df2e59 Qt/MainWindow: Call Config::Save last before destruction 2018-05-10 12:05:58 +02:00
spycrab 18c7d295c9 Qt/FilesystemWidget: Fix moc compilation 2018-05-09 22:35:27 +02:00
Léo Lam e56387970a Move all UID constants to a single file
Keeps them all next to each other and deduplicates a few constants,
notably the PPC UIDs. Apparently I forgot that I already added them
for SetupStreamKey.
2018-05-09 21:08:24 +02:00
Léo Lam 169e1d3368
Merge pull request #6795 from lioncash/atomic
Atomic_Win32: Replace deprecated (and since been removed) barrier intrinsics
2018-05-09 19:46:00 +02:00
Léo Lam 91f59aa7e1
Merge pull request #6794 from lioncash/float
FloatUtils: Minor cleanup
2018-05-09 19:36:33 +02:00
Léo Lam 274f418f4b
Merge pull request #6789 from leoetlino/rename-bug
IOS/FS: Fix rename not handling existing target correctly
2018-05-09 19:07:39 +02:00
Léo Lam 1016674242
Merge pull request #6791 from aldelaro5/wii-epoch-fix
Wii: Fix the Wii epoch and make the IPL.CB 0 by default
2018-05-09 19:06:25 +02:00
Lioncash e020f5b04b RenderBase: Remove unused PixelPerfQuery enum
Neither the values or the identifier name of the enum is used anywhere
in the codebase.
2018-05-09 12:11:29 -04:00
Lioncash 593bad3253 Atomic_Win32: Replace deprecated (and since been removed) barrier intrinsics
As of VS 15.7, these seem to have been removed. Given we shouldn't have
been using these for some time, just replace them with the standard
library equivalent.

This fixes building on Windows with VS 15.7
2018-05-09 11:35:35 -04:00
Lioncash f29e7fea2a FloatUtils: Remove union type punning from ClassifyX functions
Type-punning via unions is undefined behavior in C++

Also take the liberty of cleaning these up a little bit by removing
unnecessary else usages.
2018-05-09 10:25:23 -04:00
Lioncash fe218ea3f6 FloatUtils: Remove union type punning from ApproximateReciprocal functions
This form of type punning invokes undefined behavior in C++
2018-05-09 10:05:29 -04:00
Lioncash 46a4243d9a FloatUtils: Remove using namespace std in ApproximateReciprocal()
This was made quite a long time ago when we supported 32-bit ARM targets
2018-05-09 09:36:23 -04:00
spycrab 5cd02f0853
Merge pull request #6793 from spycrab/qt_hotkeys
Qt: Implement missing hotkeys
2018-05-09 13:28:53 +02:00
aldelaro5 224a9426db
Fix the Wii epoch and make the IPL.CB 0 by default
It was off by about 8 years because it was actually the same as the GC epoch, however, the reason it worked all this time was because the default RTC counter bias of the Wii was not 0, but a value that is about 8 years in seconds.  This broke custom RTC as a custom RTC of the gc epoch was underflowing b ecause the wii epoch was thought to be much later.
2018-05-09 02:45:56 -04:00
spycrab ce32447726 Qt: Implement missing hotkeys 2018-05-09 08:27:04 +02:00
Starsam80 ebf6149ad4
Qt: Use `addLayout` instead of `addItem` when adding layouts 2018-05-08 17:54:47 -06:00
Léo Lam 7feabcd096 IOS/FS: Fix rename not handling existing target correctly
The existing backend did not handle cases where the target exists
correctly.

This is a bug that has been around forever but was only recently
exposed when ES started to use our FS code.

Also adds some unit tests to make sure this won't get broken again.
2018-05-08 23:55:13 +02:00
Léo Lam 10d230a512
Merge pull request #6784 from leoetlino/file-creation
IOS: Make file creation + open more concise
2018-05-08 23:27:35 +02:00
spycrab 2852959811 Qt: Restore render widget size and position 2018-05-08 16:03:13 +02:00
Léo Lam a9987588eb
Merge pull request #6768 from spycrab/qt_stylesheet
Qt: Allow custom stylesheets
2018-05-08 15:20:19 +02:00
Stenzek fd5aaa096c RenderBase: Ensure the draw size does not exceed the window size
This was happening when crop was enabled, causing blank outputs for some
Vulkan drivers (namely radv), as the draw rectangle is used as the
viewport.
2018-05-08 23:19:38 +10:00
spycrab 0170052f5d Qt: Allow custom stylesheets 2018-05-08 15:07:50 +02:00
Léo Lam f0e6fcfb07
Merge pull request #6785 from JosJuice/stringutil-order
StringUtil.h: Move ThousandSeparate down
2018-05-08 14:31:57 +02:00
JosJuice 965c423f1c StringUtil.h: Move ThousandSeparate down
It calls UTF16ToUTF8 on Windows, so it should come after UTF16ToUTF8.
2018-05-08 13:55:07 +02:00
Léo Lam 71afe6b4a6 IOS: Make file creation + open more concise
Creating a file then opening it in read write mode is a pretty common
operation. This commit adds a helper function that makes it easier
to read and clearer.
2018-05-08 13:07:30 +02:00
Léo Lam 90f869e940
Merge pull request #6772 from leoetlino/fs-es
IOS/ES: Migrate to new filesystem interface
2018-05-08 11:55:52 +02:00
Léo Lam f97711ac02
Merge pull request #6777 from lioncash/header
Common: Move floating-point utility functions to FloatUtils.h/.cpp
2018-05-08 11:55:25 +02:00
booto 823fdda30c intrinsics: stop defining _xgetbv/_XCR_XFEATURE_ENABLED_MASK, which are reserved 2018-05-08 17:25:33 +08:00
Anthony 1ec3a4db6c
Merge pull request #6763 from spycrab/qt_fix_prog
Qt/AdvancedWidget: Fix "Enable Progressive Scan"
2018-05-07 09:59:32 -07:00
Anthony 46236920ef
Merge pull request #6767 from spycrab/qt_whatsthis2
Qt: Make dialogues more consistent
2018-05-07 09:58:15 -07:00
Anthony 8212b6e9cf
Merge pull request #6769 from spycrab/qt_fix_netplay
Qt/NetPlay: Fix crashes on start
2018-05-07 09:57:02 -07:00
Anthony ecd9b94415
Merge pull request #6779 from spycrab/qt_trans_fix
Qt/WrapInScrollArea: Only use transparency on Windows
2018-05-07 09:56:47 -07:00
Anthony e62c26c34b
Merge pull request #6781 from spycrab/qt_rtm_addendum
Qt/GeneralWidget: Various fixes
2018-05-07 09:53:20 -07:00
spycrab 8f9bc2f3e4 Qt: Implement custom fullscreen resolution support 2018-05-07 18:38:59 +02:00
spycrab a2448c5b66 Qt/GeneralWidget: Various fixes 2018-05-07 17:50:03 +02:00
Markus Wick 6f0ad84a5e
Merge pull request #6764 from spycrab/qt_fix_rtm
Qt: Fix "Render To Main"
2018-05-07 17:33:56 +02:00
spycrab fc069f709e Qt/WrapInScrollArea: Only use transparency on Windows 2018-05-07 17:23:03 +02:00
Stenzek 501b35bbf2 OGL: Fix broken format changes in i965 driver 2018-05-08 00:11:27 +10:00
Markus Wick e31c571f51
Merge pull request #6646 from spycrab/fbm_strings
OGL/FramebufferManager: Clean up inline GLSL code
2018-05-07 08:58:56 +02:00
Lioncash 86018b503b Common: Move floating-point utility functions to FloatUtils.h/.cpp
Keeps all of the floating-point utility functions in their own file to
keep them all together. This also provides a place for other
general-purpose floating-point functions to be added in the future,
which will be necessary when improving the flag-setting within the
interpreter.
2018-05-07 02:56:32 -04:00
Markus Wick 756ef54ab6
Merge pull request #6770 from lioncash/ile
PowerPC: Fix copying of the MSR.ILE bit to MSR.LE
2018-05-07 08:52:05 +02:00
Markus Wick b007210761
Merge pull request #6774 from lioncash/enum
Interpreter_FPUtils: Make FPCC enum an enum class
2018-05-07 08:48:22 +02:00
Markus Wick 6ec1e742ae
Merge pull request #6773 from lioncash/fpscr
PowerPC: Make the PowerPCState's fpscr member variable a UReg_FPSCR instance
2018-05-07 08:47:14 +02:00
Anthony fcc5095d8c
Merge pull request #6776 from lioncash/type
x64Emitter: Use an enum class to represent FixupBranch branch types
2018-05-06 19:09:54 -07:00
Anthony d131e4d2bc
Merge pull request #6775 from lioncash/flags
Interpreter_FPUtils: Properly update the FPSCR's FEX bit in UpdateFPSCR()
2018-05-06 19:07:13 -07:00
Lioncash 82b1518342 x64Emitter: Use an enum class to represent FixupBranch branch types
Gets rid of the use of magic values and replaces them with strongly
typed symbolic names.
2018-05-06 22:05:03 -04:00
Lioncash 64d1865448 Interpreter_FPUtils: Properly update the FPSCR's FEX bit in UpdateFPSCR()
FPSCR.FEX is supposed to be a logical OR of all floating-point exception
bits masked by their respective enable bits.

Currently UpdateFPSCR() isn't called by anything in the interpreter
except for mcrfs and mffs, so this doesn't alter existing behavior that much.
However, this will be necessary in future PRs when making the interpreter more
accurate in how it sets flags.
2018-05-06 21:40:00 -04:00
Lioncash d5de49f9aa Interpreter_FPUtils: Make FPCC enum an enum class
Avoids dumping two letter identifiers into global scope
2018-05-06 19:32:09 -04:00
Lioncash 69a0aaebd4 Gekko: Make UReg_FPSCR's single argument constructor explicit
Prevent implicit conversions to UReg_FPSCR. Given the semantics of a
random magic value and the FPSCR are different, make explicit
conversions a requirement to signify intent.
2018-05-06 18:46:57 -04:00
Lioncash cb5926c1ca PowerPC: Make the PowerPCState's fpscr member variable a UReg_FPSCR instance
Gets rid of the need to cast the actual member to access information without bit shifts and masking.
2018-05-06 18:46:52 -04:00
Léo Lam 606d25213b ES: Create system directories with correct metadata 2018-05-06 23:19:34 +02:00
Léo Lam f47f916afb ES: Use new filesystem interface in main code 2018-05-06 23:19:34 +02:00
Léo Lam 923b450268 ES: Use new filesystem interface in TitleManagement 2018-05-06 23:19:34 +02:00
Léo Lam 9ee2654be6 ES: Use new filesystem interface in NandUtils 2018-05-06 23:16:35 +02:00
Léo Lam 359a5dcb54 ES: Use new filesystem interface for content handling 2018-05-06 23:16:35 +02:00
Léo Lam 3dafc66c36 ESFormats: Migrate to new filesystem interface 2018-05-06 23:16:35 +02:00
Léo Lam 5dbf6cd0c9 IOS/FS: Make ConvertResult usable from ES
ES makes extensive use of FS and most of the time returns its error
codes directly.
2018-05-06 22:08:31 +02:00
Léo Lam 7dcab20bfa Qt: Disable 'uninstall' action if title is not installed 2018-05-06 21:01:44 +02:00
Lioncash 707615ef82 PowerPC: Fix copying of the MSR.ILE bit to MSR.LE
The MSR.LE bit is supposed to be set to the value of MSR.ILE upon
entering an exception vector to control whether the environment in said
vector operates as little endian or big endian. If this bit is ORed into
the LE bit, then the scenario of operating in little endian but wanting
to take exceptions in big endian will be incorrectly handled.
2018-05-06 14:24:58 -04:00
spycrab e184dc55b2 Qt/NetPlay: Fix crashes on start 2018-05-06 19:00:17 +02:00
spycrab 7cd30810a3 Qt: Make dialogues more consistent 2018-05-06 18:05:56 +02:00
Léo Lam c3d88a622d
Merge pull request #6766 from leoetlino/ncd
IOS/NCD: Migrate to new filesystem interface
2018-05-06 17:10:19 +02:00
Léo Lam 26be225c92
Merge pull request #6761 from spycrab/qt_win_font
Qt/Win32: Use better method to obtain the default font
2018-05-06 16:15:11 +02:00
Léo Lam fb1d075330 IOS/NCD: Migrate to new filesystem interface
A followup for the migration work started in 8317a66
2018-05-06 14:26:51 +02:00
Léo Lam 89713c5889 IOS/FS: Add CreateFullPath helper
Analogous to File::CreateFullPath, but for the Wii filesystem so this
ensures that directories and files receive proper attributes.

(This function is technically not part of the FS sysmodule but it's in
an internal FS library that is reused in several IOS sysmodules.)
2018-05-06 14:22:44 +02:00
Léo Lam 8e3cad948c
Merge pull request #6758 from leoetlino/fs-wiiutils
WiiUtils: Migrate to new filesystem interface
2018-05-06 14:04:30 +02:00
Léo Lam 76b031184c
Merge pull request #6341 from sepalani/debug-watches
DebugInterface: Watches methods added
2018-05-06 13:25:26 +02:00
Léo Lam 7a9e1a240e
Merge pull request #6757 from JosJuice/qt-filesystem-extraction
DolphinQt2: Fix disc extraction inconsistencies with DolphinWX
2018-05-06 13:24:06 +02:00
Léo Lam 32235f974d
Merge pull request #6612 from leoetlino/movie-array
Movie: Replace some C style arrays with std::array
2018-05-06 13:23:45 +02:00
Léo Lam 34899e8e71
Merge pull request #6759 from spycrab/updater_warn_launch
Updater: Show error when trying to launch directly
2018-05-06 13:11:50 +02:00
Léo Lam 3f087e2ed5
Merge pull request #6760 from lioncash/msr
PowerPC: Make the PowerPCState's msr member variable a UReg_MSR instance
2018-05-06 12:02:39 +02:00
Léo Lam 27f6274fc5
Merge pull request #6762 from lioncash/condition
DolphinQt/MemoryWidget: Fix dead condition in FindValue()
2018-05-06 12:01:24 +02:00
Stenzek f81d9c3813
Merge pull request #6755 from stenzek/opengl-clamp
OGL: Fix incorrect clamping in EFB copies
2018-05-06 18:54:00 +10:00
spycrab 6f65238efc Qt: Fix "Render To Main" 2018-05-06 04:51:13 +02:00
Anthony 2588b5e40e
Merge pull request #6750 from spycrab/qt_render_widget
Qt: Fix multiple RenderWidget issues
2018-05-05 18:39:40 -07:00
spycrab 6442b32aeb Qt/AdvancedWidget: Fix "Enable Progressive Scan" 2018-05-06 03:16:43 +02:00
Lioncash 31389bab0a DolphinQt/MemoryWidget: Fix dead condition in FindValue()
This condition is already checked earlier in the function and exits out
if it's satisfied, meaning it'll never reach this check further down.
2018-05-05 20:44:38 -04:00
spycrab 49a1b2e5df Qt/Win32: Use better method to obtain the default font 2018-05-06 02:37:52 +02:00
Lioncash 0043b77ccd Gekko: Make UReg_MSR's single-argument constructor explicit
Prevents implicit construction of MSR instances from integral values.
This is beneficial, considering MSR values have an intended
representation while a regular magic value doesn't. So make these
conversions required to be explicit.
2018-05-05 17:59:45 -04:00
Lioncash ffcf107dd2 PowerPC: Make the PowerPCState's msr member variable a UReg_MSR instance
Gets rid of the need to construct UReg_MSR values around the the actual
member in order to query information from it (without using shifts and
masks). This makes it more concise in some areas, while helping with
readability in some other places (such as copying the ILE bit to the LE
bit in the exception checking functions).
2018-05-05 17:59:30 -04:00
Léo Lam 75d056bc48 Movie: Replace some C style arrays with std::array
This replaces some C style arrays with std::array to make copying
and comparing arrays slightly nicer.
2018-05-05 23:40:23 +02:00
spycrab 45995ead03 Updater: Show error when trying to launch directly 2018-05-05 23:32:08 +02:00
Léo Lam 72a6674b73 WiiUtils: Migrate to new filesystem interface
A followup for the migration work started in 8317a66e
2018-05-05 19:21:56 +02:00
Léo Lam 9aeb95bc0a WX: Only call IsTitleInstalled when core is stopped 2018-05-05 19:21:56 +02:00
JosJuice 33211d8690 DolphinQt2: Don't show pop-ups in the middle of extracting a whole disc 2018-05-05 18:31:46 +02:00
JosJuice f48fac5b55 DolphinQt2: Allow picking "Extract Files..." on disc/partition
DolphinWX already does this.
2018-05-05 18:31:44 +02:00
Léo Lam 58b96eeb9d
Merge pull request #6756 from spycrab/qt_segoe_ui
Qt/Win32: Force Segoe UI
2018-05-05 18:09:00 +02:00
spycrab 7d762fd632 Qt/RenderWidget: Restore size when exiting fullscreen 2018-05-05 17:05:32 +02:00
JosJuice 1a74de6462 DolphinQt2: Fix the file structure of extracted discs
Now all the partitions won't be all jumbled up in one folder,
and the filesystem contents won't be mixed with system data.
2018-05-05 17:00:27 +02:00
Léo Lam 975689e1f7
Merge pull request #6754 from spycrab/qt_no_whatsthis
Qt: Remove "What's this" button
2018-05-05 16:04:52 +02:00
Tillmann Karras 41a553e33e Jit64: warn about code cache flushing
The game Go Vacation (SGVEAF) currently stutters a lot because it keeps
overflowing the far code cache and all code needs to be re-jitted.
Logging this warning gives a useful hint as to what is causing the
stuttering.
2018-05-05 14:21:57 +01:00
spycrab ad21282379 Qt/Win32: Force Segoe UI 2018-05-05 12:41:56 +02:00
Léo Lam 31efec623a
Merge pull request #6695 from Ebola16/UbershadersDecrip
Update Ubershader descriptions
2018-05-05 11:16:30 +02:00
Léo Lam d8549d172c
Merge pull request #6651 from leoetlino/nand-paths
NandPaths: Return paths that are relative to Wii NAND
2018-05-05 11:01:35 +02:00
Léo Lam 983d500d14
Merge pull request #6614 from leoetlino/auto-close
IOS: Do not manually close devices in destructor
2018-05-05 10:53:06 +02:00
Léo Lam d848c7e027
Merge pull request #6716 from container1234/qt-cheats-manager
Qt/CheatsManager: Fix updating search result takes a long time
2018-05-05 10:42:09 +02:00
Léo Lam bf8b9f4a34
Merge pull request #6739 from spycrab/qt_aesthetics
Qt: Fix visual inconsistencies.
2018-05-05 10:37:44 +02:00
Léo Lam 86f56b8047
Merge pull request #6747 from aldelaro5/qt-debugger-setting-ini
INI: Create a new INI setting for toggling the debugger UI
2018-05-05 10:33:04 +02:00
Léo Lam 6e6bf689e7
Merge pull request #6751 from spycrab/qt_show_disc
Qt: Show disc number
2018-05-05 10:28:40 +02:00
Stenzek 286d594f32 OGL: Fix incorrect clamping in EFB copies 2018-05-05 17:45:54 +10:00
Pierre Bourdon 798639291f
Merge pull request #6749 from spycrab/qt_gcontrols_crash
Qt/GraphicsControls: Fix more random crashes
2018-05-05 03:02:43 +02:00
spycrab 69d6c0dccb Qt: Remove "What's this" button 2018-05-05 02:29:16 +02:00
aldelaro5 fee92cd4fc
INI: Create a new INI setting for toggling the debugger UI
Qt introduced a checkbox to toggle the debugger UI, this makes it work into a setting stored in the INI, it also makes the -d argument only in effect when enabled, in such case, it will override the INI by overriding it.
2018-05-04 19:23:03 -04:00
spycrab db0e5108dc Win32/FileUtil: Fix IsDirectory() not working for certain directories 2018-05-04 23:53:41 +02:00
spycrab 67f874250a Qt: Show disc number 2018-05-04 22:38:27 +02:00
spycrab e809eef11a Qt/AdvancedWidget: Fix progressive scan checkbox 2018-05-04 21:33:24 +02:00
Léo Lam 8317a66ea5 NandPaths: Return paths that are relative to Wii NAND
Since all FS access will go through the new FS interface (PR #6421)
in order to keep track of metadata properly, there is no need to return
absolute paths anymore.

In fact, returning host paths is a roadblock to using the FS interface.

This starts the migration work by adding a way to get paths that are
relative to the Wii NAND instead of always getting absolute paths
on the host FS.

To prepare for future changes, this commit also makes returned paths
canonical by removing the trailing slash when it's unneeded.

Eventually, once everything has been migrated to the new interface,
we can remove the "from" parameter.
2018-05-04 19:52:17 +02:00
spycrab 452cc6b69f Qt/RenderWidget: Show proper icon and title 2018-05-04 14:04:46 +02:00
spycrab 300c3970f3 Qt/GraphicsControls: Fix more random crashes 2018-05-04 13:51:55 +02:00
spycrab 11f83c1e36 HttpRequest/Curl: Use a more intelligent timeout method 2018-05-04 13:30:49 +02:00
Stenzek a5e410b7c9
Merge pull request #6744 from stenzek/ui-disable-vram-copies
UI: Add Disable EFB Copies to VRAM to Advanced Options
2018-05-04 12:01:29 +10:00
spycrab 96e488a181 Qt/PathPane: Add dots to buttons 2018-05-04 00:12:08 +02:00
spycrab d97d916758 Qt/Settings: Restore padding 2018-05-04 00:12:08 +02:00
spycrab b741ef81bd Qt/WrapInScrollArea: Make background color more consistent 2018-05-04 00:12:08 +02:00
Ryan Meredith c2355d4f63 Android Interface submenu: Add Show OSD Messages 2018-05-03 16:05:22 -04:00
Ryan Meredith 25179258b7 Android: Initial implementation of Interface submenu 2018-05-03 16:05:22 -04:00
Mat M 54a6b0f50a
Merge pull request #6726 from spycrab/qt_sort_alpha
Qt/GameList: Always sort games alphabetically
2018-05-03 13:13:09 -04:00
Mat M 348125eda4
Merge pull request #6738 from spycrab/qt_fix_empty_adapter
Qt/GeneralWidget: Fix empty adapter option
2018-05-03 13:11:00 -04:00
Mat M 689a70a7f1
Merge pull request #6736 from spycrab/qt_bad_range_clear
Qt/MappingButton: Fix bad range default
2018-05-03 13:09:26 -04:00
Mat M cf40ebf16a
Merge pull request #6737 from JosJuice/qt-invalid-si-device
DolphinQt2: Don't crash on invalid SI devices
2018-05-03 13:07:23 -04:00
Stenzek 3270fadb0d
Merge pull request #6587 from stenzek/macos-content-scale
DolphinWX: Scale window geometry before passing to backend
2018-05-03 23:35:21 +10:00
Stenzek be32602769
Merge pull request #6745 from spycrab/qt_fullscreen
Qt: Call Render::SetFullscreen
2018-05-03 23:28:21 +10:00
spycrab a61445919d Qt/GraphicsSlider: Fix random crashes 2018-05-03 15:22:40 +02:00
spycrab 68e2b46ba1 Qt: Call Render::SetFullscreen 2018-05-03 15:15:35 +02:00
Stenzek 210a6a37b4 DolphinWX: Scale window geometry before passing to backend
In macOS, the window size is device-independent points, which may not
match the content/backing framebuffer size.
2018-05-03 22:01:07 +10:00
JosJuice 1a2b6e2645
Merge pull request #6742 from stenzek/qt-borderless-fullscreen
Qt/AdvancedWidget: Fix borderless fullscreen option not showing
2018-05-03 08:07:29 +02:00
Stenzek d4f6c86eec UI: Add Disable EFB Copies to VRAM to Advanced Options 2018-05-03 14:31:04 +10:00
Stenzek 0152f63655 TextureCacheBase: Make "disable vram copies" part of the active config 2018-05-03 14:24:44 +10:00
Stenzek 8a061d6fb4 Qt/AdvancedWidget: Fix borderless fullscreen option not showing 2018-05-03 14:13:35 +10:00
Stenzek 4faac3a627 TextureConversionShader: Don't sample from adjacent rows when not needed 2018-05-03 14:09:32 +10:00
Stenzek a93830056f TextureConversionShader: Fix more implicit conversion errors 2018-05-03 11:32:06 +10:00
spycrab 6b5b51831a Qt/GameList: Always sort games alphabetically 2018-05-02 21:57:46 +02:00
spycrab 0595fd498f Qt/MappingButton: Fix bad range default 2018-05-02 21:50:50 +02:00
Markus Wick ef98a21735
Merge pull request #6729 from stenzek/gles-gamma
TextureConversionShader: Fix compile errors in OpenGL ES
2018-05-02 21:50:30 +02:00
JosJuice 16b805410f DolphinQt2: Don't crash on invalid SI devices
This is important if we ever add or delete SI devices.
2018-05-02 21:50:28 +02:00
Mat M ed6709ac8f
Merge pull request #6731 from spycrab/qt_cache_slider
Qt/HacksWidget: Fix "Accuracy" slider
2018-05-02 15:48:33 -04:00
Mat M a2c12f1503
Merge pull request #6735 from JosJuice/ui-ini
Remove code related to UI.ini
2018-05-02 15:47:28 -04:00
spycrab b99610f1a3 Qt/GeneralWidget: Fix empty adapter option 2018-05-02 19:20:45 +02:00
JosJuice 6e96f62b41 Remove code related to UI.ini
We don't use it for anything, we just create it and leave it empty.
2018-05-02 18:18:27 +02:00
spycrab 3221ca2200 Updater: Fix UI not showing up 2018-05-02 18:17:16 +02:00
Pierre Bourdon 40cf07d8e7
Merge pull request #6733 from spycrab/rename_update_cfg_again
Core/ConfigManager: Rename Track to UpdateTrack
2018-05-02 17:55:37 +02:00
spycrab a984d18a14 Core/ConfigManager: Rename Track to UpdateTrack 2018-05-02 17:23:41 +02:00
spycrab e3cebebe51 Qt/MappingButton: Fix Clear not resetting ranges 2018-05-02 17:02:14 +02:00
spycrab 3d7b613be5 Qt/Mapping: Fix "Default" not working properly. 2018-05-02 16:55:42 +02:00
spycrab ef3f660983 Qt/HacksWidget: Fix "Accuracy" slider 2018-05-02 16:36:15 +02:00
Stenzek 7a745e5b0d D3D: Drop gamma parameter from util draw helper
No longer needed as we perform gamma correction during the XFB copy.
2018-05-02 21:58:56 +10:00
Stenzek 2c6b20bb03 TextureConversionShader: Fix compile errors in OpenGL ES 2018-05-02 21:54:13 +10:00
spycrab 0d5b34be34 Qt/MappingWindow: Fix saving to incomplete Profile directory 2018-05-02 06:45:11 +02:00
Ryan Meredith 05205ce3d7 Update Ubershader descriptions 2018-05-01 18:57:34 -04:00
spycrab b4dc658b2e OGL/FramebufferManager: Clean up inline GLSL code 2018-05-01 15:03:59 +02:00
Stenzek 6e62d1ab9f
Merge pull request #6722 from spycrab/qt_adapter
Qt/GraphicsSettings: Save Adapter index
2018-05-01 21:57:50 +10:00
spycrab 87d6bffcec Qt/GraphicsSettings: Fix various adapter issues 2018-05-01 13:54:01 +02:00
container1234 850afd8457 Qt/CheatsManager: Fix updating search result takes a long time 2018-05-01 18:58:58 +09:00
Léo Lam 78c9bad44f
Merge pull request #6688 from spycrab/qt_dedup
Qt: Deduplicate settings
2018-05-01 11:53:39 +02:00
Léo Lam 23f958d766
Merge pull request #6715 from spycrab/qt_path_fixes
Qt/PathPane: Various fixes
2018-05-01 11:40:21 +02:00
Stenzek c46882142b
Merge pull request #6369 from stenzek/xfb-copy-filter
Implement copy filter (deflickering/brightness) and XFB gamma
2018-05-01 19:31:54 +10:00
Stenzek 42d73deaed
Merge pull request #6723 from spycrab/qt_fix_profile_save
Qt/MappingWindow: Fix profile saving
2018-05-01 19:26:22 +10:00
Léo Lam c2ddddc723
Merge pull request #6724 from JosJuice/qt-normal-speed
DolphinQt2: Translate the "(Normal Speed)" text
2018-04-30 21:30:45 +02:00
JosJuice 1b830df250 DolphinQt2: Correct the condition for enabling Cheat Manager
Only the other condition, the one that runs when the cheat setting
changes, was taking into account whether emulation was running.
2018-04-30 14:19:56 +02:00
JosJuice e74f5c4f42 DolphinQt2: Translate the "(Normal Speed)" text 2018-04-30 13:42:48 +02:00
spycrab c6a0a4318d Qt/MappingWindow: Fix saving 2018-04-30 09:09:27 +02:00
spycrab fcb80646ed Qt/PathPane: Various fixes 2018-04-30 06:44:13 +02:00
Mat M ad836b9071
Merge pull request #6717 from spycrab/issue_11039
Qt/GraphicsControls: Reload values when settings are changed
2018-04-29 20:20:36 -04:00
spycrab a2dbf97205 Qt/Win32: Fix console output 2018-04-29 23:26:20 +02:00
Mat M d8b56af342
Merge pull request #6714 from spycrab/qt_fix_toolbar
Qt/ToolBar: Fix inconsistencies
2018-04-29 15:20:01 -04:00
spycrab dd6ac93ad0 Qt/ToolBar: Fix checkbox and actual visibility not being in sync 2018-04-29 20:28:11 +02:00
Mat M cad7d2c71f
Merge pull request #6720 from spycrab/qt_ext
Qt/GameTracker: Match uppercase file extensions
2018-04-29 14:24:24 -04:00
spycrab f5cfd1ab14 Qt/GameTracker: Match uppercase file extensions 2018-04-29 19:59:50 +02:00
spycrab 2a837a82d4 Qt: Implement Batch flag (-b) 2018-04-29 19:13:40 +02:00
spycrab bc51c34a96 Qt: Implement "Free look" 2018-04-29 13:52:27 +02:00
spycrab 417d191c9e Qt/GraphicsControls: Reload values when settings are changed 2018-04-29 12:17:39 +02:00
Stenzek ea4090d92c Dolphin: Add disable copy filter to graphics options 2018-04-29 19:05:20 +10:00
Stenzek 9e798eec94 Implement EFB copy filter and gamma in hardware backends
Also makes y_scale a dynamic parameter for EFB copies, as it doesn't
make sense to keep it as part of the uid, otherwise we're generating
redundant shaders.
2018-04-29 19:05:20 +10:00
Scott Mansell a192a3bb30 While I'm here, fix some chroma sub-sampling bugs.
RE4's brightness screen is actually very good for spotting these.

Bug 1: Colors at the end of the scanlines are clamped, instead of a black
       border
Bug 2: U and V color channels share coordinates, instead of being offset
       by a pixel.
2018-04-29 17:56:53 +10:00
Scott Mansell fc96479f12 VideoSoftware: Implement xfb copy filter (Deflickering/Brightness) 2018-04-29 17:56:51 +10:00
Lioncash 167b92ff2c Jit_Integer: Make arrays const in MultiplyImmediate() and twX()
These are only ever read from, so make the data immutable to be explicit about that
2018-04-28 14:13:02 -04:00
Mat M 0cd46f4d21
Merge pull request #6690 from lioncash/nand
Common/NandPaths: Minor cleanup
2018-04-28 13:43:33 -04:00
Mat M 6b8da197e8
Merge pull request #6689 from container1234/qt-minor-fixes
Qt: Minor changes
2018-04-28 13:41:59 -04:00
Tilka 6bb880457f
Merge pull request #6711 from lioncash/handler
Common/MemTools: Make handler function internally linked on Windows
2018-04-28 18:41:10 +01:00
Mat M c057eb3c82
Merge pull request #6705 from leoetlino/variable
IOS/SO: Clean up variable declarations
2018-04-28 13:40:38 -04:00
Mat M fa44e28ce0
Merge pull request #6708 from spycrab/qt_dynfilter
Qt/GameList: Ensure resort when new entries are added
2018-04-28 13:39:56 -04:00
Lioncash 8183360832 Common/MemTools: Make handler function internally linked on Windows
This doesn't need to be an externally linked function.
2018-04-28 12:55:38 -04:00
Sepalani 74d4a4478f DebugInterface: Watches methods added
Move Watches to Common
2018-04-28 17:46:51 +04:00
JosJuice 8870ffeac4 DolphinQt2: Fix clearing numeric values in controller config 2018-04-28 13:02:26 +02:00
spycrab 7db86c20d0 Qt/GameList: Ensure resort when new entries are added 2018-04-28 12:53:10 +02:00
JosJuice 28138cfde9
Merge pull request #6707 from spycrab/qt_fix_numeric
Qt/MappingNumeric: Calculate values properly
2018-04-28 12:42:27 +02:00
spycrab 1fb188a7d9 Qt/MappingNumeric: Calculate values properly 2018-04-28 12:32:23 +02:00
spycrab b88a5875ec Qt/WiimoteEmuExtension: Add "Slider Bar" to Guitar 2018-04-28 11:41:22 +02:00
Léo Lam 4f427de924 IOS/SO: Clean up variable declarations
Move them closer to their usage and fix the naming.
2018-04-28 11:13:03 +02:00
container1234 b46bf9b736 Qt/Debugger: Change CodeView background colors to bright ones 2018-04-28 16:53:04 +09:00
Léo Lam cf1adfbe20
Merge pull request #6673 from leoetlino/network
IOS: Network fixes
2018-04-28 00:47:18 +02:00
Léo Lam 9c63bae19a
Merge pull request #6687 from spycrab/qt_graphics_caps
Qt/GraphicsWindow: Disable unsupported options
2018-04-28 00:35:47 +02:00
spycrab 4caca2bd7a Qt/GraphicsWindow: Disable unsupported options 2018-04-28 00:01:26 +02:00
Léo Lam 3b70da2da4
Merge pull request #6693 from spycrab/qt_missing_paths
Qt/PathPane: Add missing options
2018-04-27 23:49:13 +02:00
Léo Lam 393663a0a3 IOS/SO: Use an enum for result codes 2018-04-27 23:35:40 +02:00
Léo Lam 32d51f1699 IOS/SO: Re-implement GetInterfaceOpt(0x4003)
Use the newly added GetSystemDefaultInterfaceOrFallback() to return
actual information for the default interface, not just dummy
interface details.

This also fixes GetInterfaceOpt(0x4003) and gethostid() returning
inconsistent information. Prior to this change, GetInterfaceOpt(0x4003)
would return 10.0.1.30 and gethostid would give a totally unrelated IP.
2018-04-27 23:35:40 +02:00
Léo Lam 3ce271991b IOS/SO: Implement GetSystemDefaultInterface for non-Windows
This fixes gethostid on non-Windows platforms.

Except on Android, where this is left unimplemented because Android
does not support getifaddrs.
2018-04-27 23:35:40 +02:00
Léo Lam 25b198cac8 IOS/SO: Move default interface code into a separate function
...so that the function can be more easily reused.
2018-04-27 23:35:40 +02:00
Léo Lam e4276f2983 IOS/SO: Handle invalid GetInterfaceOpt requests 2018-04-27 23:35:40 +02:00
spycrab 9057a7d50a Qt/GeckoCode: Fix multiple bugs 2018-04-27 22:58:57 +02:00
Anthony 2b9df8eedd
Merge pull request #6697 from spycrab/qt_sort
Qt/GameList: Sort by title by default
2018-04-27 19:30:48 +01:00
spycrab eefa6db57c Qt: Fix "Render To Main" not booting into fullscreen 2018-04-27 15:04:26 +02:00
Sepalani e73906ee38 DolphinWx: Prevent a crash on Copy hex 2018-04-27 09:53:11 +04:00
spycrab 7749e18ecc ConfigManager: Enable Auto-Updater by default 2018-04-26 15:12:15 +02:00
spycrab ddcc3451b1 Qt/GameList: Sort by title by default 2018-04-26 11:50:18 +02:00
Pierre Bourdon 1b389398ad
Merge pull request #6696 from spycrab/updater_cpy
Updater: Use copy instead of move
2018-04-26 11:10:52 +02:00
spycrab fb268bb04f Updater: Use copy instead of move 2018-04-26 11:00:03 +02:00
spycrab 6e4c5d780d Updater: Implement UAC support 2018-04-25 22:38:10 +02:00
spycrab 82390495ee Qt/PathPane: Add missing options 2018-04-25 21:43:12 +02:00
Lioncash 4637579375 Common: Amend CommonTypes include within BitSet.h
We do includes relative to the root, rather than direct pathing.
2018-04-23 00:14:00 -04:00
Lioncash d68f437e67 Common: Move BitSet helper functions into the Common namespace 2018-04-23 00:13:55 -04:00
Lioncash c1c360d9b1 NandPaths: Make function parameters consistent
Also drops trailing underscores from said parameter names.
2018-04-22 23:49:20 -04:00
Lioncash 62242331d8 NandPaths: Remove unused header inclusions 2018-04-22 23:49:16 -04:00
Lioncash 2ce0f42c14 Common: Move BitSet into the Common namespace
This should be under the common namespace, considering where it's living
2018-04-22 23:43:07 -04:00
spycrab 40a61e7bf5 Qt: Deduplicate settings 2018-04-22 22:26:28 +02:00
container1234 41844c1cc5 Qt/Debugger: Change the row height to same as code/memory widget 2018-04-23 00:52:31 +09:00
container1234 32f6d3f62b Qt: Use HostRead for float and double 2018-04-23 00:46:42 +09:00
Pierre Bourdon 1b63810e85
Merge pull request #6684 from spycrab/qt_wrong_thread
Qt/Settings: Emit EmulationStateChanged from the UI thread
2018-04-22 15:36:32 +02:00
spycrab 854fa0f093 Qt/Settings: Emit EmulationStateChanged from the UI thread 2018-04-22 13:04:48 +02:00
spycrab 519fa7529f Qt/RenderWidget: Fix the render widget showing up when it shouldn't 2018-04-22 13:01:18 +02:00
spycrab caa18edc79 Qt: Implement "Keep Window on top" 2018-04-22 11:15:39 +02:00
spycrab c1dccdc0e5 Qt/RenderWidget: Fix getting painted over 2018-04-22 10:15:09 +02:00
spycrab b059b3a646 Qt: Pause on focus loss 2018-04-22 10:15:09 +02:00
Tilka c131b7c3b4
Merge pull request #6682 from spycrab/qt_minor_fixes
Qt: Minor fixes
2018-04-22 08:12:42 +01:00
aldelaro5 2f6879f0d9
Qt/log change the notice log color to lime
It's slightly easier to read than green
2018-04-21 21:22:16 -04:00
spycrab 7b35c8577a Qt: Fix crashes when closing render window 2018-04-21 23:27:54 +02:00
spycrab b2e5f1d85f Qt/GeneralPane: Disable certain options while emulation is running 2018-04-21 22:09:46 +02:00
Léo Lam 9dcc8131df
Merge pull request #6331 from spycrab/deprecate_wx
[RFC] Qt/Wx: Turn Qt into the default interface
2018-04-21 18:36:10 +02:00
spycrab 694df74b0b Qt/Wx: Turn Qt into the default interface 2018-04-21 17:54:00 +02:00
Tilka 7dc16efc9d
Merge pull request #6675 from spycrab/qt_recursive
Qt: Add "Search subdirectories" checkbox
2018-04-21 16:07:02 +01:00
spycrab a4526772b9 Qt: Add "Search subdirectories" checkbox 2018-04-21 00:14:55 +02:00
Léo Lam dabfecfd74
Merge pull request #6672 from spycrab/qt_dynamic
Qt: Make toolbar more dynamic
2018-04-20 23:41:51 +02:00
spycrab 264c995b0d Qt: Make toolbar more dynamic 2018-04-20 22:44:49 +02:00
Léo Lam 2fcc633c28
Merge pull request #6649 from leoetlino/fs-tests
UnitTests: Add tests for the Wii filesystem
2018-04-20 21:34:06 +02:00
Tilka 4c8de9638a
Merge pull request #6674 from Tilka/jit64
Jit64: avoid an unnecessary load
2018-04-20 19:23:28 +01:00
Léo Lam f9340424c8
Merge pull request #6669 from lioncash/thread-local
Core: Use thread_local directly
2018-04-20 18:11:32 +02:00
Léo Lam 1176ae6512 IOS/FS: Fix ReadDirectory file list copying
Each entry can take up to 13 bytes (including the terminating null
character) but should not be aligned to 13 bytes.
2018-04-20 00:02:32 +02:00
Léo Lam 4c47417a0e IOS/FS: Fix ReadDir returning wrong number of entries
ReadDir should always write the actual number of entries in the
directory list (`min(max_count, number_of_entries_on_nand)`).
2018-04-20 00:02:32 +02:00
Connor Roth 3e4725f390 THis fixes issue #08 and #16, the rumble test and slider 2018-04-19 17:48:55 -04:00
Tilka a500347345
Merge pull request #6676 from spycrab/qt_fix_open
Qt: Fix "Open File" dialog opening twice
2018-04-19 22:13:38 +01:00
spycrab cd390714c9 Qt: Fix "Open File" dialog opening twice 2018-04-19 23:10:23 +02:00
Tillmann Karras 1737f1bee8 Jit64: avoid an unnecessary load 2018-04-19 21:49:12 +01:00
spycrab c09075209f Qt: Implement Cheats Manager 2018-04-19 10:42:24 +02:00
Léo Lam 396204248d
Merge pull request #6667 from lioncash/si
SI: Remove unnecessary declarations of internally linked functions
2018-04-18 18:49:44 +02:00
Lioncash e6405f7b2b
Core: Use thread_local directly
Both Android and OSX now support it, allowing us to remove the fallback code.
2018-04-17 19:03:24 -04:00
Mat M df44aa7335
Merge pull request #6668 from JosJuice/remove-hybrid-wiimote
Remove Hybrid Wii Remote
2018-04-17 18:09:58 -04:00
JosJuice 2953cf201d Remove Hybrid Wii Remote
It simply doesn't seem to work for anything useful, and nobody seems
to care about maintaining it.
2018-04-17 22:40:21 +02:00
Lioncash d1d8300a46
SI: Remove unnecessary declarations of internally linked functions
These aren't dependent on calling order so we can just organize all of the statics together
instead of splitting them up over the file. This also allows us to organize a common spot for
file static variables as well.
2018-04-17 16:33:11 -04:00
Mat M d230194464
Merge pull request #6657 from leoetlino/dedup
Qt/Debugger: Deduplicate memory view update code
2018-04-17 10:21:53 -04:00
Mat M b19d77a3ff
Merge pull request #6660 from leoetlino/pause
Qt/Debugger: Don't pause when already paused
2018-04-17 10:20:30 -04:00
Mat M e04592e6c4
Merge pull request #6663 from spycrab/qt_fix_columns
Qt: Fix columns not properly showing / hiding
2018-04-17 10:19:35 -04:00
Mat M 8bb0e0ee96
Merge pull request #6662 from Tilka/fix_warnings
Fix some warnings
2018-04-17 10:17:01 -04:00
spycrab 9ffc600e8d Qt: Fix columns not properly showing / hiding 2018-04-17 15:27:51 +02:00
Tillmann Karras 4cfd900c67 Fix some warnings 2018-04-17 14:10:05 +01:00
Sepalani 04cfddca33 HLE_VarArgs: PowerPC::HostRead_F64 used 2018-04-17 16:25:43 +04:00
Léo Lam 69ad94997c Qt/Debugger: Don't pause when already paused
Fixes a severe performance issue which would cause the UI to use tons
of CPU time and fail to update when scrolling with a breakpoint on PC.
2018-04-17 14:21:18 +02:00
Mat M c78b3f6ab6
Merge pull request #4507 from sepalani/host_f
PowerPC: HostR/W float/double added
2018-04-17 08:02:07 -04:00
Pierre Bourdon 94f3e27ccd
Merge pull request #6659 from spycrab/qt_tabbed_config
Qt/SettingsWindow: Use tabs
2018-04-17 13:52:23 +02:00
Sepalani 048513183e PowerPC: HostR/W float/double added 2018-04-17 08:29:47 +04:00
spycrab 4d4a018ccf Qt/SettingsWindow: Use tabs 2018-04-16 23:15:45 +02:00
Lioncash c23a998f9d
TraversalClient: Use u32 instead of enet_uint32
Lessens the dependence on the enet library (and we really don't need to rely on a third-party library for a 32-bit integer type)
2018-04-16 16:46:48 -04:00
Lioncash f1e92a1eae
TraversalClient: Make TestPacket() private
This is only used by the private InterceptCallback()
2018-04-16 16:46:48 -04:00
Lioncash 1b8ad49d1e
TraversalClient: In-class initialize members where applicable 2018-04-16 16:46:48 -04:00
Lioncash ca6a2970ea
TraversalClient: Make data externally read-only members private
These are only ever queried for state, not written. Therefore, prevent writing to the members
and make them private.
2018-04-16 16:46:44 -04:00
Léo Lam 6c87817d9c Qt/Debugger: Deduplicate memory view update code
The structure and address calculation were identical.
Only the string generation was different.
2018-04-16 22:36:32 +02:00
Léo Lam dfd6a228a6
Merge pull request #6654 from lioncash/log
Common/Logging/Log: Wrap GENERIC_LOG macro's body in do { } while (0)
2018-04-16 20:38:22 +02:00
Léo Lam d13fc1d2e9
Merge pull request #6655 from lioncash/common-libs
Common/CMakeLists: Link curl and VTune libraries in privately
2018-04-16 20:35:31 +02:00
JosJuice 0efbaebe17 Minor fixes to translatable strings
The usual deduplication between DolphinWX and DolphinQt2, plus the removal
of a now unused ubershader string and a fix for the Euphoria i18n comment.
2018-04-16 19:08:58 +02:00
Lioncash 236aed9fd1
Common/CMakeLists: Link curl and VTune libraries in privately
These are only used internally.
2018-04-16 12:38:24 -04:00
Lioncash b0dc823472
Common/Logging/Log: Wrap GENERIC_LOG macro's body in do { } while (0)
Enforces the termination of GENERIC_LOGs with semicolons.
2018-04-16 12:11:32 -04:00
Mat M 6224b9bd37
Merge pull request #6642 from leoetlino/stm
IOS/STM: Reset the event hook at the correct time
2018-04-16 09:04:12 -04:00
Lioncash 939c5671a9 Common/Config: Remove unused header inclusions 2018-04-15 22:35:00 -04:00
Lioncash 4836739663 Common/Config: Remove unnecessary function declaration
This prototype declaration is already provided by the Config.h header
2018-04-15 22:33:53 -04:00
Léo Lam 3355ddcfb3 FileSystem: Fix member destruction order 2018-04-15 14:29:27 +02:00
Mat M eecdb51709
Merge pull request #6645 from JosJuice/tie-constexpr
x64Emitter: Don't assume that std::tie is constexpr
2018-04-15 03:11:31 -04:00
JosJuice 8a146d5210 x64Emitter: Don't assume that std::tie is constexpr
Using constexpr tie broke building with older GCC versions according to
https://forums.dolphin-emu.org/Thread-build-error-on-linux-mint-18-3
2018-04-15 08:30:01 +02:00
JosJuice 45923696ed
Merge pull request #6648 from leoetlino/master
WiimoteEmu: Fix turntable_button_names size
2018-04-15 08:25:44 +02:00
Mat M 615c0decb7
Merge pull request #6644 from leoetlino/uicommon-header
UICommon: Fix header
2018-04-14 20:25:22 -04:00
Léo Lam 0a481c0663 WiimoteEmu: Fix turntable_button_names size
Three elements were removed, but because of an oversight the array
size was not changed to match.
2018-04-14 23:52:10 +02:00
Léo Lam 783e4ec2fa
Merge pull request #6633 from aldelaro5/wx-debugger-icons
Wx: debugger icons
2018-04-14 23:29:57 +02:00
Léo Lam 371f807e67
Merge pull request #6615 from leoetlino/sysconf
SysConf: Migrate to new filesystem interface
2018-04-14 23:29:25 +02:00
Léo Lam c73b05e200
Merge pull request #6647 from aldelaro5/qt-fix-mbp
Qt/Debugger: correctly set the MBP attributes when adding an address one
2018-04-14 23:22:57 +02:00
aldelaro5 0f8c51dfe4
Wx: Implement the new debugger icons 2018-04-14 17:22:04 -04:00
Léo Lam ee955e37a9
Merge pull request #6564 from JosJuice/translate-certain-button-names
Translate certain button names but not all
2018-04-14 23:20:39 +02:00
Léo Lam aafa8a10e1
Merge pull request #6643 from lioncash/oprofile
CMakeLists: Define an OProfile target and use it
2018-04-14 23:12:17 +02:00
aldelaro5 1401fbc71a
Qt/Debugger: correctly set the MBP attributes when adding
Not setting the end address causes the GetMecheck function to never think a matching address MBP exists.
2018-04-14 17:05:23 -04:00
Léo Lam 2f22c76db1 UICommon: Avoid including Xrandr.h
Xlib has really terrible headers that declare non-namespaced
macros and typedefs for common words.

Just wasted 10 minutes trying to figure out why a unit test failed
to build before I remembered it was Xrandr.h conflicting with our
enum class members again.

To fix the issue, this removes the Display* parameter from the
EnableScreensaver function (which was unused) so we don't have
to include Xrandr.h anymore.
2018-04-14 17:14:38 +02:00
Léo Lam 62269572e4 UICommon: Fix indirect includes 2018-04-14 16:42:54 +02:00
Léo Lam e253d3d919
Merge pull request #6640 from spycrab/qt_scale_render
Qt: Fix render size not matching window size
2018-04-14 14:56:33 +02:00
Lioncash b31281527a
CMakeLists: Define an OProfile target and use it
Allows us to bring includes and relevant libraries into scope by explicitly declaring linkage against the target
as opposed to using a variable. Also removes the dumping of OProfile includes into the top-level directory.
2018-04-13 19:35:17 -04:00
Léo Lam 8bae4b7e51 IOS/STM: Reset the event hook at the correct time
Just re-disassembled STM and found out I have made a mistake when
I changed STM stuff back in 2016.

I accidentally made STM reset the event hook on close when it should
have been done in the destructor (i.e. when IOS gets reset on console).

Verified in IDA that STM just `IOS_ResourceReply(request, IOS_OK)`
without ever resetting the hook.
2018-04-13 23:34:35 +02:00
Léo Lam b1bbd8a50e
Merge pull request #6625 from lioncash/evdev-udev
InputCommon/CMakeLists: Include evdev and udev includes on a by-target basis
2018-04-13 20:50:31 +02:00
Léo Lam 52905a5fae
Merge pull request #6627 from sepalani/map-strip
PPCSymbolDB: Do not truncate fixed size symbols
2018-04-13 20:48:28 +02:00
spycrab a12d4996ed Qt: Use new debugger icons 2018-04-13 20:40:41 +02:00
spycrab 8536e31136 Qt: Fix render size not matching window size 2018-04-13 20:12:13 +02:00
Lioncash b256f873ca
CMakeLists: Link in zlib privately where applicable
Also, use the target name introduced via find_package(ZLIB) instead
of hardcoding the 'z' name in the link libraries.
2018-04-13 08:29:46 -04:00
JosJuice 7ed28297b2 ControllerEmu: Use enum instead of bool for translatability 2018-04-13 13:04:26 +02:00
JosJuice 3f13dbe087 Translate certain button names but not all
Some button names should be translated, for instance Up, Left and such.
At the same time, some other button names shouldn't be translated,
for reasons that might be less obvious. In 0146456af, I removed the
_trans markers for button names that never need to be translated
(such as A and B), but that isn't actually enough to ensure that
DolphinWX won't try to translate them anyway. This commit adds a bool
that explicitly tells the GUI whether a button name should be translated.
Otherwise we'll have problems like the GUI treating the button name "B"
(which isn't supposed to be translated) as matching the translatable
string "B" (being an abbreviation of "bytes"), meaning that the button
"B" will be labeled "o" when running Dolphin in French (after
translations get pulled from Transifex the next time).

By the way, while it turned out that DolphinWX translated all button
names, it also turned out that DolphinQt2 translated *no* button names.
Go figure. This commit makes them consistent with each other.
2018-04-13 13:04:26 +02:00
JosJuice e604641b12 Remove leftovers of projection hack support 2018-04-13 12:52:42 +02:00
Markus Wick 71dd2d9d4c
Merge pull request #6632 from lioncash/fp
Interpreter: Don't use a union to type-pun between integral and FP types
2018-04-13 11:12:01 +02:00
Lioncash a36bf438cd
Interpreter_FloatingPoint: Handle QNaNs properly in frsp
Essentially the same behavior as the SNaN path, minus the conditional result and setting of the VXSNAN FPSCR bit.
2018-04-12 19:47:10 -04:00
Lioncash 965b963a6f
Interpreter_FloatingPoint: Handle SNaNs properly in frsp
If FPSCR[VE] is set, a result isn't supposed to be written to the destination,
just the FPSCR[VXSNAN] bit gets set, and FPSCR[FR] and FPSCR[FI] get set to zero.

If FPSCR[VE] isn't set, then we do write out a result, however, the FPSCR[FPRF]
field is updated to signify a QNaN (yes, a QNaN, the FPRF field doesn't have
a bit configuration for SNaNs).
2018-04-12 19:47:06 -04:00
Lioncash e28d063539 x64Emitter: Make the Align* functions return a non-const data pointer
There's no real requirement to make this const, and this should also
be decided by the calling code, considering we had places that would
simply cast away the const and carry on.
2018-04-12 19:46:55 -04:00
Lioncash ab25eb6449 Interpreter_LoadStorePaired: Don't use a union to type-pun between integral and FP types 2018-04-12 19:44:31 -04:00
Lioncash 7a3158a693 Interpreter_FPUtils: Don't use a union to type-pun between integral and FP types
The previous code invokes undefined behavior. memcpy will optimize away
to the relevant loads and stores while maintaining well-defined
behavior.
2018-04-12 19:44:31 -04:00
Tilka bbd1bb8eaa
Merge pull request #6636 from phire/fix_autoformatting
Fix change in comment meaning by autoformat.
2018-04-12 22:52:06 +01:00
Scott Mansell 0e6d01220a Fix change in comment meaning by autoformat. 2018-04-13 09:20:27 +12:00
Tilka 27515f4c9b
Merge pull request #6626 from lioncash/dcbz_l-disasm
GekkoDisassembler: Fix disassembly of dcbz_l
2018-04-12 22:18:56 +01:00
Léo Lam a287bbc3bd Move SysConf to Core
It's not common code that could be reused for, say, Citra;
it's absolutely specific to Wii emulation and only used by the Dolphin
core, so let's move it there.

Another reason for doing this is to avoid having Common depend on Core.
2018-04-12 22:16:37 +02:00
Léo Lam 0856d4a68a SysConf: Migrate to new filesystem interface
It was discovered that some titles rely on filesystem metadata to work
properly. Currently, in master they either simply won't find their
save files (for example Bolt) or will complain about the Wii system
memory being corrupted (on first use or every time depending on
the title).

In order to even be able to keep track of file metadata, we first need
to eliminate all direct accesses to the NAND and make all kinds of
operations go through the filesystem code added in PR 6421.

This commit starts the migration process by making SysConf use
the new FS interface.
2018-04-12 22:16:37 +02:00
Léo Lam 3744a6d3f5 FileSystem: Add some more wrappers for convenience 2018-04-12 22:16:37 +02:00
Léo Lam 95aae11164 IOS: Do not manually close devices in destructor
This used to be necessary for properly cleaning up the FS state because
the old FS implementation used static state and only performed cleanup
in the close function, not in the destructor.

Now that the static state is gone, we do not need to close devices
manually anymore.
2018-04-12 22:16:10 +02:00
spycrab 40bb9974f2 Reformat all the things! 2018-04-12 21:28:39 +02:00
Sepalani 7d36165489 PPCSymbolDB: Do not truncate fixed size symbols
Fix comparison warning
2018-04-10 21:50:33 +04:00
Sepalani 9b8866ba78 PPCSymbolDB: Replace alert with LOG message 2018-04-10 21:49:47 +04:00
Lioncash 1c17329e2f
GekkoDisassembler: Fix disassembly of dcbz_l
Previously this would fall through and disassemble as a generic "ps_[number]" junk instruction.
2018-04-10 11:22:01 -04:00
Lioncash 73ebc190fa
InputCommon/CMakeLists: Link evdev and udev in privately
These libraries aren't directly used outside of InputCommon
2018-04-10 09:59:55 -04:00
Lioncash d63d0b5069
InputCommon/CMakeLists: Include evdev and udev includes on a by-target basis
Avoids including the evdev/udev includes in the top-level directory
2018-04-10 09:59:51 -04:00
Markus Wick 0bfeb37a1f
Merge pull request #6604 from lioncash/dcbz_l
Interpreter_LoadStore: Generate a program exception if dcbz_l is executed when HID2[LCE] is zero
2018-04-09 23:04:09 +02:00
JosJuice a66d56aece Use configured locale in UICommon::FormatSize
StringFromFormat always uses the C locale, so we can't use it if we want
the decimal separator to be locale aware, but we can use a stringstream.
2018-04-09 19:14:15 +02:00
JosJuice 0dca432836 Remove old code for using default locale
This isn't needed anymore now that the global C++ locale isn't
set to the classic locale.
2018-04-09 19:14:15 +02:00
JosJuice 13d060491c DolphinQt2: Set locale
We want things like number formatting to be done the way the user expects.
2018-04-09 19:14:14 +02:00
JosJuice 72040600d7 Set locale to "en_GB" if "en" is configured 2018-04-09 19:14:14 +02:00
JosJuice 9417fc6a3a DolphinWX: Set C++ locale
After 3a83ebc, the Show System Clock feature started using the
unfortunate combination of MM/DD/YY dates (rare outside of the US)
and 24-hour time (rare in the US) regardless of the user's locale
settings. This commit makes it use the configured locale again.

I've noticed one minor difference in behavior between now and
before 3a83ebc: The new way of setting the C/C++ locale seems to
treat "en" as "en-US", but the wx way of setting the C locale
treated it as "en-GB" (at least on Windows).
2018-04-09 19:14:14 +02:00
JosJuice 7aaaf44229
Merge pull request #6611 from leoetlino/remove-workaround
Boot_WiiWAD: Remove a timing issue workaround
2018-04-09 15:46:39 +02:00
Léo Lam 67f8e6e60a
Merge pull request #6620 from lioncash/dvd
DVDInterface: Deduplicate code in UpdateInterrupts()
2018-04-09 12:52:38 +02:00
Léo Lam cb88e1256f
Merge pull request #6617 from lioncash/ppcanalyst
PPCAnalyst: Minor cleanup
2018-04-09 12:48:16 +02:00
Léo Lam 783cbef638
Merge pull request #6618 from lioncash/symboldb
PPCSymbolDB: Minor cleanup
2018-04-09 12:46:28 +02:00
Lioncash 1b3dae918a StreamADPCM: Turn the ADPCM decoder into a class
Migrates the state to be instance-based as opposed to being a flat
namespace. This keeps behavior localized to its own instantiable unit
(and forces uses of the class to also be localized, lest they cart around
an instance all over the place).
2018-04-09 03:49:18 -04:00
Lioncash a8088b7365 ProcessorInterface: Remove prefixed underscores from parameters
These are reserved by the implementation for any use.
2018-04-09 03:21:59 -04:00
Lioncash 419ed1b46a DVDInterface: Deduplicate code in UpdateInterrupts() 2018-04-09 03:18:51 -04:00
Lioncash a0f943178b Profiler: Move BlockStat and ProfileStats structures into the Profiler namespace
These should be part of the namespaced API and not be sitting in the
global namespace.
2018-04-08 22:29:48 -04:00
Lioncash 0461709c8d PPCSymbolDB: Use auto for iterators where applicable 2018-04-08 22:03:11 -04:00
Lioncash b44eb90ee4 PPCSymbolDB: Default destructor and pass to member variables in the constructor initializer-list 2018-04-08 21:56:24 -04:00
Lioncash d6d17eea60 PPCSymbolDB: Remove unused function pointer typedef 2018-04-08 21:54:50 -04:00
Lioncash 9c5115a627 PPCAnalyst: Simplify boolean assignments in SetInstructionStats()
Ternaries here aren't necessary if all we're checking against is if
something is non-zero
2018-04-08 21:42:43 -04:00
Lioncash f2b2f5b4c7 PPCAnalyst: Make ReorderType an enum class
Makes the values strongly typed and doesn't dump them into the class
itself.
2018-04-08 21:38:19 -04:00
Lioncash 5e5a56bd9b PPCAnalyst: Remove unnecessary includes from header 2018-04-08 21:34:12 -04:00
Lioncash 4bd3b28823 PPCAnalyst: in-class initialize PPCAnalyzer's members
Eliminates the need to assign in the constructor initializer list.
2018-04-08 21:32:15 -04:00
Lioncash 433a56636b PPCAnalyst: Move public interface above private interface 2018-04-08 21:31:19 -04:00
Léo Lam 8894b902df Boot_WiiWAD: Remove a timing issue workaround
This was necessary to work around a FS timing issue which caused small
writes to take much longer than they should.

Now that we emulate timings for the FS module including its file cache,
we don't need to maintain this workaround anymore.
2018-04-08 11:23:18 +02:00
Léo Lam 9dbc760bb7
Merge pull request #6606 from lioncash/bochs
CMakeLists: Link bochs in privately where applicable
2018-04-08 11:08:12 +02:00
Lioncash f1be7cd4a0
CMakeLists: Link bochs in privately where applicable
Everything that links in core doesn't need to see anything related to bochs, because it's only used internally.
Anything else that relies on bochs should be linking it in explicitly.
2018-04-08 04:59:58 -04:00
Léo Lam 0a290f5d11
Merge pull request #6607 from lioncash/ppc
PPCDebugInterface: Remove redundant HostRead_U32() call in Disassemble()
2018-04-08 10:25:43 +02:00
Léo Lam 2a535d5a55
Merge pull request #6608 from lioncash/gekko
Gekko: In-class initialize members where applicable
2018-04-08 10:23:42 +02:00
Léo Lam 219728dbd4
Merge pull request #6609 from lioncash/ufpr
Gekko: Remove unused UFPR union
2018-04-08 10:22:43 +02:00
Lioncash 88a80f118c Common/Swap: Amend BigEndianValue's operator= to return a reference to the object rather than returning void
The general convention is to return a reference to the object that was
acted on, otherwise you can get into situations with errors because the
type wasn't being propagated properly
2018-04-08 01:22:18 -04:00
Lioncash 5d1349f9c7 Gekko: Remove unused UFPR union
Using this in its current form would invoke undefined behavior, as it's
using a union to type pun between data types. It's also, well, unused,
so we don't need to keep it around.
2018-04-07 22:30:26 -04:00
Lioncash d5555b49e9 Gekko: In-class initialize members where applicable
Allows defaulting the default constructor. Also moves assignment to
initializer lists where applicable as well.
2018-04-07 22:26:24 -04:00
Lioncash 3e50b0e320 PPCDebugInterface: Remove redundant HostRead_U32() call in Disassemble()
We already read the necessary information with the
HostRead_Instruction() call. Internally, it calls HostRead_U32() as
well, so there's no difference in behavior.
2018-04-07 22:20:59 -04:00
Léo Lam f4a2ad3c88 IOS/FS: Emulate read/write/close/seek timing
Also bumps up the state version.
2018-04-07 23:35:28 +02:00
Léo Lam 42983c0bd3 IOS/FS: Emulate superblock write timing 2018-04-07 23:35:28 +02:00
Léo Lam b74577ff43 IOS/FS: Emulate GetAttr() timing 2018-04-07 23:35:28 +02:00
Léo Lam 896d875187 IOS/FS: Emulate Open() timing 2018-04-07 23:35:28 +02:00
Léo Lam 32b1409cbd IOS/FS: Use hardware tested minimum reply time
...instead of an arbitrary guess.
2018-04-07 23:35:28 +02:00
Léo Lam 7dff069659
Merge pull request #6605 from spycrab/gc_fix_rumble
[RFC] Core/GC: Fix rumble for "Luigi's Mansion"
2018-04-07 23:23:30 +02:00
spycrab eed066e8a7 Core/GC: Fix rumble for "Luigi's Mansion" 2018-04-07 22:13:01 +02:00
Lioncash 181539e049
Interpreter_LoadStore: Generate a program exception if dcbz_l is executed when HID2[LCE] is zero
If the locked cache isn't enabled, dcbz_l is illegal to execute
(locked cache is off, locked cache instructions don't work, makes sense)

This makes exception handling more accurate. It was previously possible to hit the DSI exception
handler when HID2[LCE] is set to zero, which isn't correct.

With this change we no longer hit the DSI handler, however we still have a lingering issue elsewhere
likely to do with exception precedence, we seem to hit the Floating Point exception handler instead
in some cases. This isn't due to the instruction itself directly however, so this is just another bug
to fix elsewhere.
2018-04-06 23:53:44 -04:00
Anthony 9e2806c181 [AVIDump] fix compilation issues on Linux 2018-04-06 19:53:10 -07:00