Commit Graph

34102 Commits

Author SHA1 Message Date
Léo Lam 4ba9bb26e9
Merge pull request #9455 from lioncash/traversal
TraversalProto: Minor cleanup
2021-01-27 15:51:29 +01:00
Léo Lam bb121dc9a5
Merge pull request #9477 from shuffle2/asan
windows: fix unregistering VEH
2021-01-27 15:47:55 +01:00
Shawn Hoffman a02a629958 windows: fix unregistering VEH 2021-01-27 05:15:54 -08:00
Léo Lam 305faa73ec
Merge pull request #9436 from shuffle2/asan
msvc: enable asan compat
2021-01-27 13:24:26 +01:00
Léo Lam 2537ea77ee
Merge pull request #9460 from jordan-woyak/wiimote-dc-crash-fix
WiimoteReal: Fix crash on real Wii Remote disconnect on Windows.
2021-01-27 13:14:52 +01:00
Léo Lam bc14e4a0f0
Merge pull request #9463 from Dentomologist/fix_CreateTempDir_calls
UnitTests: Add setup error checking
2021-01-27 13:12:05 +01:00
Léo Lam 093978b2e0
Merge pull request #9466 from iwubcode/common_controllers_widget
DolphinQt: Move common controller interface logic to its own widget
2021-01-27 13:06:20 +01:00
Léo Lam d8bea87aa3
Merge pull request #9469 from Stevoisiak/remove-redundant-inis
Remove redundant INI settings
2021-01-27 12:43:51 +01:00
Léo Lam 2d75b0d2bc
Merge pull request #9472 from JosJuice/jitarm64-unexpected-double
JitArm64: Update registers last used before start of instruction
2021-01-27 12:43:11 +01:00
JosJuice d00430470b JitArm64: Update registers last used before start of instruction
Let's reset m_last_used for each register that will be used
in an instruction before we start allocating any of them,
so that one of the earlier allocations doesn't spill a
register that we want in a later allocation. (We must still
also increment/reset m_last_used in R and RW, otherwise we
end up in trouble when emulating lmw/stmw since those access
more guest registers than there are available host registers.)

This should ensure that the asserts added earlier in this
pull request are never triggered.
2021-01-26 22:53:33 +01:00
JosJuice f17cd3750a JitArm64: Remove default parameters from Arm64FPRCache::R/RW
It obscures more than it helps in my opinion.
2021-01-26 22:53:33 +01:00
JosJuice 88f3fec04e JitArm64: Add asserts for unexpected single to float conversions
If the register pressure is high when allocating registers,
Arm64FPRCache may spill a guest register which we are going to
allocate later during the current instruction, which has the
side effect of turning it into double precision. This will have
bad consequences if we are assuming that it is single precision,
so let's add some asserts to detect if that ever happens.
2021-01-26 22:53:33 +01:00
LC 2a6fffd60e
Merge pull request #9475 from JosJuice/android-unit-tests
Add script for running unit tests on Android device
2021-01-26 13:52:33 -05:00
JosJuice 838abd6536 Add script for running unit tests on Android device
Maybe a little wonky, but I needed a way to run unit tests
on AArch64, and this was the best way of running unit tests
on Android that I could come up with.
2021-01-26 19:08:22 +01:00
Stevoisiak ee28abc88b Remove redundant INI settings
Remove redundant game-specific INI files that are covered by a generalied Arcade/NeoGeo INI.
2021-01-24 00:31:02 -05:00
smurf3tte 66b992cfe4 Jit: Fix correctness issue in dcbf/dcbi/dcbst
PR #2663 added a Jit64 implementation of dcbX and a fast path to skip JIT cache invalidation. Unfortunately, there is a mismatch between address spaces in this optimization. It tests the effective address (with the top 3 bits cleared) against the valid block bitset which is intended to be indexed by physical address. While this works in the common case, it fails (for example) when the effective address is in the 7E... region (a.k.a. "fake VMEM"). This may also fall apart under more complex memory mapping scenarios requiring full MMU emulation.

The good news is that even without this fast path, the underlying call to JitInterface::InvalidateICache() still does very little work in the common case. It correctly translates the effective address to a physical address which it tests against the valid block bitset, skipping invalidation if it is not necessary. As such, the cost of removing the fast path should not be too high.

The Jit64 implementation is retained, though all it does now is emit a call. This is marginally more efficient than simple interpreter fallback, which involves an extra call. The JitArm64 implementation has also been fixed.

The game Happy Feet is fixed by this change, as it loads code in the 7E... address region and depends upon JIT cache invalidation in reponse to dcbf.

https://bugs.dolphin-emu.org/issues/12133
2021-01-23 15:17:09 -08:00
iwubcode 67b9e94e4d DolphinQt: Move common controller interface logic to its own widget 2021-01-23 15:17:38 -06:00
JosJuice 67491979ab JitArm64: Avoid using X30 with BLR
At least on some CPUs (I found out about this from the
Arm Cortex-A76 Software Optimization Guide), using X30
with BLR is one cycle slower than using another register.
2021-01-23 10:32:44 +01:00
Dentomologist 83f912b58a UnitTests: Add setup error checking
Check return value of calls to File::CreateTempDir() from CoreTiming,
FileSystem, and MMIO test classes to verify the test user directory
exists, and fail the tests otherwise.
2021-01-22 11:49:59 -08:00
Trevor Rudolph 59058bae0a Breakpoint from string flag parsing using token
Since the string includes hex, the break_on_hit 'b' flag can be pulled from the address by accident

istringstream for BreakPoint parsing
2021-01-21 12:33:42 -05:00
LC caff472dbf
Merge pull request #9459 from iwubcode/freelook_state_lock
FreeLookManager: acquire global input lock
2021-01-21 12:07:58 -05:00
Jordan Woyak bb2c50ac94 WiimoteReal: Fix crash on real Wii Remote disconnect on Windows caused by dangling pointer. 2021-01-20 17:33:43 -06:00
iwubcode af7384002f FreeLookManager: acquire global input lock before accessing individual FreeLook control states 2021-01-20 12:25:21 -06:00
Lioncash b425250a7b TraversalClient: Make use of std::string_view with ConnectToClient()
Same behavior, but allows the use of non-allocating string types with
the interface.
2021-01-20 12:24:06 -05:00
Lioncash cb4ca7837a TraversalClient: Prevent uninitialized values from occurring in MakeENetAddress
Previously, eaddr would only be partially initialized in the ipv6 case.
Even if there's no support for it, we may as well ensure that the
variable always has deterministic initialization.

While we're at it, we can make the parameter a const reference, given no
members are modified.
2021-01-20 12:24:05 -05:00
Lioncash f0c6e696fd TraversalProto: Convert typedefs into using aliases
Same behavior, more straightforward reading.
2021-01-20 12:24:05 -05:00
Lioncash d48b5615ae TraversalProto: Collapse version enum into a typed variable
Same behavior, less code.
2021-01-20 12:24:05 -05:00
Lioncash d2ea94195c TraversalProto: Convert TraversalPacketType into an enum class
Makes for strong typing and prevents namespace pollution.
2021-01-20 12:24:05 -05:00
Lioncash 2f0fb2056e TraversalProto: Convert TraversalConnectFailedReason into an enum class 2021-01-20 12:24:05 -05:00
Lioncash 2021175809 TraversalClient: Convert state enum into an enum class
Prevents implicit conversions and prevents identifiers from polluting
the class scope.
2021-01-20 12:24:03 -05:00
JosJuice ebf3b5faf4
Merge pull request #9451 from Sintendo/jit64boolxrw
Jit64: boolx - Eliminate read dependency
2021-01-19 15:40:43 +01:00
JosJuice 5978550b2f Android: Fix in-game settings changes not getting saved
EmulationActivity has an instance of Settings. If you go to
SettingsActivity from EmulationActivity and change some settings,
the changes get saved to disk, but EmulationActivity's Settings
instance still contains the old settings in its map of all
settings (assuming the EmulationActivity was not killed by the
system to save memory). Then, once you're done playing your
game and exit EmulationActivity, EmulationActivity calls
Settings.saveSettings. This call to saveSettings first overwrites
the entire INI file with its map of all settings (which is
outdated) in order to save any legacy settings that have changed
(which they haven't, since the GUI doesn't let you change legacy
settings while a game is running). Then, it asks the new config
system to write the most up-to-date values available for non-legacy
settings, which should make all the settings be up-to-date again.
The problem here is that the new config system would skip writing
to disk if no settings changes had been made since the last time
we asked it to write to disk (i.e. since SettingsActivity exited).

NB: Calling Settings.loadSettings in EmulationActivity.onResume
is not a working solution. I assume this is because
SettingsActivity saves its settings in onStop and not onPause.
2021-01-18 15:27:16 +01:00
JosJuice abd069ada3 Check return value when calling ReadArray for savestates
Just in case we have a 0-byte file or something.
2021-01-18 14:32:19 +01:00
JosJuice 4597d53307 Android: Don't show OSD messages when opening savestate menu 2021-01-18 14:28:43 +01:00
LC 04ccd4cb80
Merge pull request #9446 from Dentomologist/convert_shifttype_to_enum_class
Arm64Emitter: Convert ShiftType to enum class
2021-01-18 05:26:22 -05:00
Dentomologist e3237661ec Arm64Emitter: Convert ShiftType to enum class 2021-01-17 16:21:38 -08:00
Filippo Tarpini 396e2f5e8b InputCommon: Wrap remaining invalid default input expressions around `` 2021-01-17 17:37:13 -06:00
Sintendo 8964612577 Jit64: boolx - Eliminate read dependency
For certain occurrences of nandx/norx, we declare a ReadWrite constraint
on the destination register, even though the value of the destination
register is irrelevant. This false dependency would force the RegCache
to generate a redundant MOV when the destination register wasn't already
assigned to a host register.

Example 1:
BF 00 00 00 00       mov         edi,0
8B FE                mov         edi,esi
F7 D7                not         edi

Example 2:
8B 7D 80             mov         edi,dword ptr [rbp-80h]
8B FE                mov         edi,esi
F7 D7                not         edi
2021-01-17 21:32:28 +01:00
Filippo Tarpini c1ab89cf2c Qt: Fix stock input profiles being deletable
Also avoid files without a name before the extension (name: ".ini")
from being added to the list because then they wouldn't be saveable
and it would appear with an empty name anyway.
2021-01-17 20:51:01 +02:00
JosJuice e62fa1ea9f Translation resources sync with Transifex 2021-01-17 18:55:27 +01:00
Bankaimaster999 d1c3d4f419 Added Opacity settings for touchscreen controls
Added Opacity controls for the user to customize the opacity of their touchscreen controls. Also, placed both Scale and Opacity settings into one window/option called Adjust Controls.
2021-01-17 17:25:00 +01:00
JosJuice f383397c9c
Merge pull request #9447 from Dentomologist/convert_indextype_to_enum_class
Arm64Emitter: Convert IndexType to enum class
2021-01-17 12:23:53 +01:00
Filippo Tarpini 43223aadc8
Qt: Fix Shake Mapping Indicator not showing deadzone
QRectF was missing from drawRect which meant the deazone was casted to an int, flooring its value (it goes from 0 to 1).
2021-01-16 23:10:35 +02:00
LC be74e35a0a
Merge pull request #9443 from Simonx22/update-gradle
Android: Update Gradle Plugin to 4.1.1
2021-01-16 06:55:10 -05:00
LC 1476c10a87
Merge pull request #9445 from Simonx22/update-dependencies
Android: Update dependencies to the latest version
2021-01-16 06:54:45 -05:00
JosJuice 7d73da717c
Merge pull request #9444 from Simonx22/remove-duplicate-keys
gradle.properties: Remove duplicate property keys
2021-01-16 12:34:00 +01:00
Dentomologist 70c54065ab Arm64Emitter: Convert IndexType to enum class 2021-01-15 23:27:11 -08:00
Simonx22 5b98336e54 Android: Update dependencies to the latest version 2021-01-15 19:55:57 -05:00
Simonx22 8f2a2f3cda Android: Update Gradle Plugin to 4.1.1 2021-01-15 19:53:08 -05:00
Simonx22 67bc2f9f76 gradle.properties: Remove duplicate property keys 2021-01-16 01:12:31 +01:00