Commit Graph

26642 Commits

Author SHA1 Message Date
Léo Lam
bdaac718ac
IOS/FS: Expose some more ioctls for internal Dolphin use 2021-03-04 18:41:13 +01:00
Léo Lam
93f0d122c0
IOS: Hang PPC when reloading IOS for a PPC title launch
The PPC is supposed to be held in reset when another version of IOS is
in the process of being launched for a PPC title launch.

Probably doesn't matter in practice, though the inaccuracy was
definitely observable from the PPC.
2021-03-04 18:41:13 +01:00
Léo Lam
19667cb801
Fix symbol map being loaded too early during title changes
We should only try to load a symbol map for the new title *after* it
has been loaded into memory, not before. Likewise for applying HLE
patches and loading new custom textures.

In practice, loading/repatching too early was only a problem for
titles that are launched via ES_Launch. This commit fixes that.
2021-03-04 18:41:13 +01:00
Léo Lam
a658cbce16
IOS: Emulate IOS boot timings 2021-03-04 18:41:13 +01:00
Léo Lam
820c4836d7
IOS: Simplify IPC initialisation
The extra IPC ack is triggered by a syscall that is invoked in ES's
main function; the syscall literally just sets Y2, IX1 and IX2 in
HW_IPC_ARMCTRL -- there is no complicated ack queue or anything.
2021-03-04 18:41:13 +01:00
Léo Lam
0da5ea86a3
IOS: Emulate ES boot timings 2021-03-04 18:41:13 +01:00
Léo Lam
688bd6141a
IOS: Emulate BootstrapPPC syscall delays
Reading the boot content from the NAND takes a non-negligible amount of
time and the PPC should be held in reset while the DOL is being read.
2021-03-04 18:41:12 +01:00
Léo Lam
011f7789e0
IOS: Clear 0-0x3fff when setting up low MEM1 constants
Low MEM1 is cleared by IOS before all the other constants are written.

This will overwrite the Gecko code handler but it should be fine
because HLE::Reload (which will set up the code handler hook again)
will be called after a title change is detected.
2021-03-04 18:41:12 +01:00
Sepalani
ef977123d5 BreakpointWidget: Emit BreakpointsChanged to update views 2021-03-04 21:10:37 +04:00
Sepalani
6786340a7c Watches: Fix Save and Load from strings 2021-03-04 17:55:52 +04:00
Léo Lam
be500a98e2
Merge pull request #8779 from sepalani/open-dump
NetworkWidget: Reorganise SSL options group box
2021-03-04 13:37:10 +01:00
Léo Lam
511e9dcd2f
Merge pull request #9542 from InusualZ/toggle-bp
BreakpointWidget: Allow breakpoints to be toggled between enable/disable
2021-03-04 12:34:03 +01:00
Léo Lam
48a5846aee
Merge pull request #9548 from AdmiralCurtiss/fastmem-active-regions
Core/Memmap: Memory mapping logic fixes.
2021-03-04 12:18:59 +01:00
Léo Lam
9c6c77351f
Merge pull request #9556 from JosJuice/cmake-msvc-latest
CMake: Build with -std:c++latest for MSVC
2021-03-04 12:12:06 +01:00
Léo Lam
00db622d50
Merge pull request #9560 from JosJuice/cmake-msvc-wil
CMake: Include WIL headers
2021-03-04 12:08:05 +01:00
JosJuice
2cb3f663bc CMake: Include WIL headers
MSBuild does this, so CMake should too. Fixes a Windows build error.
2021-03-04 10:26:31 +01:00
JosJuice
0cb71d3f47 CMake: Disable warning C5054 on DolphinQt
Same as 33c0abd.

Also removing -D_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING
to match MSBuild. Qt is no longer triggering that warning.
2021-03-04 09:29:30 +01:00
Dentomologist
6e13d35026 DolphinQt: Removed unused this capture in lambda
The Host constructor sets a callback on a lambda that in turn calls
Host_UpdateDisasmDialog. Since that function is not a member function
capturing this is unnecessary.

Fixes -Wunused-lambda-capture warning on freebsd-x64.
2021-03-03 13:18:17 -08:00
JMC47
d2eb846e6a
Merge pull request #9549 from Dentomologist/ppcstate_off_to_s32
JitArm64: Fix unsigned/signed argument/parameter mismatch
2021-03-03 14:56:40 -05:00
JMC47
9843412440
Merge pull request #8996 from AdmiralCurtiss/memcard-save-import-export-refactor
Various improvements for the Memory Card Manager.
2021-03-03 14:51:31 -05:00
JMC47
a0be1c93ea
Merge pull request #9352 from Pokechu22/sw-line-point-width
Software: Implement line-width and point-width
2021-03-03 14:15:28 -05:00
InusualZ
5e1b3514f6 Allow to disable/enable from the BreakpointWidget
Added a context menu, for when a breakpoint is right-clicked
Removed the `itemClicked` behavior, since it would clash with the context menu
2021-03-03 15:55:22 +00:00
Vicki Pfau
f6e9003ddc SI/DeviceGBA: Ensure data socket isn't backed up
When reading a reply from a message sent to the data socket there is
the possibility that the other side gets sent multiple messages
before replying to any of them, which can lead to multiple replies
sent in a row. Though this only happens when things time out, it's
quite possible for these timeouts to happen or build up over time,
especially when initiating the connection.

This change makes sure to flush any pending bytes that have not been
read yet out of the socket after a successful POLL reply is received,
since that is the most common time when backups occur, and as well as
using the exact number of bytes in an expected reply, to ensure
the received data and the message it's replying to do not get out of
sync.
2021-03-02 18:53:44 -08:00
Dentomologist
4807cb77fd JitArm64: Fix unsigned/signed arg/param mismatch
The result of calls to PPCSTATE_OFF_PS0/1 were being cast to u32 and
passed to functions expecting s32 parameters. This changes the casts
to s32 instead.

One location was missing a cast and generated a warning with VS which
is now fixed.
2021-03-02 13:38:54 -08:00
InusualZ
4935e9b560 Allow to disable/enable breakpoints
Added `ToggleBreakPoint` to both interface BreakPoints/MemChecks. this would allow us to toggle the state of the breakpoint.

Also the TMemCheck::is_ranged is not longer serialized to string, since can be deduce by comparing the TMemCheck::start_address  and TMemCheck::end_address
2021-03-02 21:11:53 +00:00
Admiral H. Curtiss
4b784576d9 Core/Memmap: Don't try to map logical memory from inactive physical regions. 2021-03-02 18:41:33 +01:00
Admiral H. Curtiss
8199825c6f Core/Memmap: Store and check which physical regions are actually mapped instead of relying on SConfig staying the same. 2021-03-02 18:41:33 +01:00
Léo Lam
7712f0831f
Merge pull request #9535 from sepalani/threads-freeze
DebugInterface: Check visited addresses in GetThreads
2021-03-02 16:38:02 +01:00
Sepalani
8279613a49 DebugInterface: Check visited addresses in GetThreads 2021-03-02 19:29:47 +04:00
Léo Lam
59f4164411
Merge pull request #9539 from iwubcode/dynamic_input_tex_more_optimizations
InputCommon: dynamic input textures more optimizations
2021-03-02 02:53:22 +01:00
Léo Lam
0c9f11af47
Merge pull request #9537 from AdmiralCurtiss/fastmem-error-messages
Core/Memmap: Give more detailed error messages if memory mapping fails.
2021-03-02 02:47:12 +01:00
Admiral H. Curtiss
918f3d92e0 Core/Memmap: Give more detailed error messages if memory mapping fails. 2021-03-01 19:11:00 +01:00
Léo Lam
010279f4e6
Merge pull request #9513 from leoetlino/info-ios-version-qt
Qt: Re-add IOS version to the game info tab
2021-03-01 11:44:26 +01:00
Léo Lam
858f00b641
Merge pull request #9492 from nolange/fix_norandr_build
Cleanup X11 and XRANDR Macros
2021-03-01 11:36:39 +01:00
Léo Lam
26f0bf8f34
Merge pull request #9538 from JosJuice/qt-sw-gameid
DolphinQt: Fix <game_id> tag in SoftwareRendererWidget.cpp
2021-03-01 11:34:53 +01:00
iwubcode
32d584a0f5 InputCommon: reduce number of image loads and texture cache invalidations by only running dynamic input textures once for all controllers 2021-02-27 17:29:48 -06:00
JosJuice
c98144334f DolphinQt: Fix <game_id> tag in SoftwareRendererWidget.cpp
Same problem and same fix as in e55342a. Also changing <br />
to <br> for consistency with other strings while I'm at it.
2021-02-27 20:17:28 +01:00
iwubcode
158674c274 Common: Move 'GetSection' functions to be public 2021-02-27 12:21:23 -06:00
Léo Lam
9d0983c9c9
Merge pull request #9536 from Filoppi/config_fixes
Don't call OnConfigChanged() unless config actually changed
2021-02-26 01:56:01 +01:00
Filoppi
e020b2e8ea Common: don't call OnConfigChanged() unless it has actually changed
DualShock UDP Client is the only place in the code that assumed OnConfigChanged()
is called at least once on startup or it won't load up the setting, so I took care of that
2021-02-26 01:14:00 +02:00
Sepalani
6982832f82 MMU: Fix IsRAMAddress not working 2021-02-24 22:19:26 +04:00
Admiral H. Curtiss
22b300336a Core/MemoryWatcher: Use appropriate memory read function in ChasePointer(). 2021-02-24 19:02:30 +01:00
Norbert Lange
d4b293e969 Simplify macro guards for HAVE_XRANDR 2021-02-22 14:32:53 +01:00
Norbert Lange
29eaf09be4 Cleanup X11 and XRANDR Macros
This fixes build with X11 enabled and XRANDR disabled.
2021-02-22 14:30:43 +01:00
Léo Lam
1fe0953bd5
Merge pull request #9524 from InusualZ/master
Debugger: Fix issue were loaded memory breakpoints were not being triggered (break)
2021-02-21 15:49:24 +01:00
Léo Lam
c040b0151d
Merge pull request #8759 from sepalani/so-connect
IOS/NET: Add timeout on blocking connect
2021-02-21 15:26:59 +01:00
Sepalani
bf246c36f5 IOS/NET: Add timeout on blocking connect 2021-02-21 18:15:26 +04:00
Sepalani
a8dc1e3f1c NetworkWidget: Reorganise SSL options group box
Create "Dump options" and "Security options" group boxes.
Add "Network dump format" combo box.
Add "Open dump folder" button.
2021-02-20 18:19:37 +04:00
Sepalani
07f68560e6 WatchWidget: Add new/delete/clear toolbar items 2021-02-20 18:08:46 +04:00
Léo Lam
985ede9ca0
Core: Fix time base unit mixup
And add a strongly typed integer type so that making this kind of
mistake is more difficult
2021-02-20 14:18:21 +01:00
InusualZ
caf140dea9 Fix issue were loaded memory breakpoints were not being triggered
This was caused, because we were saving the `break_on_hit` flag with the letter `p`. Then while loading the breakpoints, we read the flag with the letter `b`, resulting in the `break_on_hit` flag being always false
2021-02-19 16:09:50 +00:00
Léo Lam
93f9d67d2f
Merge pull request #9511 from leoetlino/es-content-timings
IOS: Emulate FS timings for ES content IPC commands
2021-02-19 16:08:24 +01:00
Léo Lam
9957d6c106
Merge pull request #9516 from iwubcode/dynamic_input_textures_improved
InputCommon: move some dynamic input texture logic and add specification option
2021-02-19 16:06:13 +01:00
iwubcode
55ba1c7c9c InputCommon: Move initial dynamic input texture configuration logic to a 'specification 1' function and load in a 'specification' attribute that defaults to 1 if not present (with 1 being the only valid value at the moment) 2021-02-19 00:02:15 -06:00
Léo Lam
34c9e0dece
Merge pull request #9521 from sepalani/watches
Debugger: Fix "Add to watch" not working
2021-02-19 01:30:14 +01:00
Léo Lam
e3bf5fca93
IOS: Deduplicate IPC_OVERHEAD_TICKS timing constant 2021-02-18 21:10:55 +01:00
Léo Lam
f750208aa3
IOS/ES: Emulate FS timings for content wrapper IPC commands
Filesystem accesses aren't magically faster when they are done by ES,
so this commit changes our content wrapper IPC commands to take FS
access times and read operations into account.

This should make content read timings a lot more accurate and closer
to console. Note that the accuracy of the timings are limited to the
accuracy of the emulated FS timings, and currently performance
differences between IOS9-IOS28 and newer IOS versions are not emulated.

Part 1 of fixing https://bugs.dolphin-emu.org/issues/11346
(part 2 will involve emulating those differences)
2021-02-18 18:53:33 +01:00
Léo Lam
5eca82a6f2
IOS/ES: Allow various utility functions to return timing info 2021-02-18 18:53:33 +01:00
Léo Lam
f214df5d2c
IOS/FS: Allow IPC interface to be used internally from IOS HLE
This makes it more convenient to emulate timings for IPC commands that
perform internal IOS <-> IOS IPC, for example ES relying on FS
for filesystem access.
2021-02-18 18:53:32 +01:00
Léo Lam
1073463d35
IOS/ES: Log content reads for debugging
We log FS reads already, might as well log ES content reads.
2021-02-18 18:52:35 +01:00
Léo Lam
41e2fab54c
IOS/ES: Log content ID and index when opening contents for debugging
The content ID/index is what actually matters..
2021-02-18 18:52:35 +01:00
Léo Lam
5e79b6acb7
Merge pull request #9515 from leoetlino/fs-timings-redux
IOS/FS: Implement timings for older IOS versions as well
2021-02-18 18:50:15 +01:00
Sepalani
e3d85ffe35 MemoryWidget: Add "Add to watch" action 2021-02-17 21:32:36 +04:00
Sepalani
bbcaede389 RegisterWidget: Fix add to watch action 2021-02-17 21:25:29 +04:00
iwubcode
10127a0451 InputCommon: Move DynamicInputTextureData to DynamicInputTextures::Data 2021-02-16 22:43:10 -06:00
iwubcode
28a911ae6b InputCommon: Move DynamicInputTextureConfiguration to DynamicInputTextures::Configuration 2021-02-16 22:37:59 -06:00
JosJuice
1e500d96b0 JitArm64: Workaround for GCC ICE 2021-02-15 23:46:08 +01:00
Léo Lam
d0c91380c7
IOS/FS: Implement timings for older IOS versions as well
According to hwtests, older versions of IOS are slower at performing
various filesystem operations:

https://docs.google.com/spreadsheets/d/1OKo9IUuKCrniz4m0kYIaMP_qFtOCmAzHZ_zAmobvBcc/edit

(courtesy of JMC)

A quick glance at IOS9 reveals that older versions of IOS have a
simplistic implementation of memcpy that does not optimize large copies
by copying 16 bytes or 32 bytes per chunk, which makes cached reads
and writes noticeably slower -- the difference was significant enough
that the OoT speedrunning community noticed that IOS9 (the IOS that
is used for the OoT VC title) was slower.
2021-02-15 18:41:22 +01:00
Léo Lam
7097a7b3af
Qt: Re-add IOS version to the game info tab
This was accidentally removed during the Qt migration:
https://github.com/dolphin-emu/dolphin/pull/4734
2021-02-15 18:34:09 +01:00
Léo Lam
f9deb68aee
Merge pull request #9514 from JosJuice/jitarm64-offsetof
JitArm64: Fix improper uses of offsetof
2021-02-15 00:59:11 +01:00
JosJuice
f2f3a59dbf JitArm64: Fix improper uses of offsetof
Using a non-constant array index inside offsetof is not
standards compliant, and is rejected by GCC 11.
https://bugs.dolphin-emu.org/issues/12409#note-5
2021-02-14 20:47:41 +01:00
Léo Lam
f79e629119
Merge pull request #9499 from sepalani/pcap-ssl-raw
PCAP: Add raw SSL packets logging support
2021-02-14 18:39:33 +01:00
Sepalani
d3dd830e8f PCAP: Add raw SSL packets logging support 2021-02-14 20:24:28 +04:00
Léo Lam
efab17c025
Merge pull request #9498 from leoetlino/offsetof-constant
Core/DSP: Fix improper uses of offsetof
2021-02-14 16:34:39 +01:00
Léo Lam
be2cd2272d
Merge pull request #9507 from leoetlino/device-prepareforstate
IOS: Remove unnecessary and unused PrepareForState
2021-02-14 16:30:34 +01:00
Léo Lam
6944eaa003
Merge pull request #9512 from sepalani/func-update
CodeViewWidget: Add WithDetailedUpdate to update CodeWidget
2021-02-14 16:30:05 +01:00
Léo Lam
c33d944961
Merge pull request #9412 from JosJuice/jitarm64-movi2r
Arm64Emitter: Improve MOVI2R
2021-02-14 16:25:52 +01:00
Sepalani
5f629abd8b CodeViewWidget: Add WithDetailedUpdate to update CodeWidget
This used to also update the function calls and callers.
2021-02-14 16:01:32 +04:00
Léo Lam
8f25b0426e
Merge pull request #9509 from sepalani/net-tab
NetworkWidget: Add hostname to SSL table
2021-02-14 02:00:25 +01:00
Léo Lam
effd918837
Merge pull request #9508 from leoetlino/ipc-reply-cleanup
IOS: Clean up the way IPC replies are constructed
2021-02-14 01:59:41 +01:00
Pokechu22
fcd3efa1ae Software: Implement points 2021-02-13 15:59:40 -08:00
Pokechu22
8e348b87e9 Software: Fix line-width effects 2021-02-13 15:59:39 -08:00
JosJuice
9ad4f724e4 Arm64Emitter: Use ORR in MOVI2R 2021-02-13 21:04:13 +01:00
Léo Lam
e62c33c413
Merge pull request #9500 from sepalani/pcap-log-session
PCAP: Improve TCP session logging
2021-02-13 20:50:58 +01:00
Sepalani
aab78b88ab NetworkWidget: Add hostname to SSL table 2021-02-13 23:45:22 +04:00
JosJuice
0d5ed06daf Arm64Emitter: Improve MOVI2R
More or less a complete rewrite of the function which aims
to be equally good or better for each given input, without
relying on special cases like the old implementation did.

In particular, we now have more extensive support for
MOVN, as mentioned in a TODO comment.
2021-02-13 20:23:03 +01:00
Léo Lam
d0136dd7c2
IOS: Clean up the way IPC replies are constructed
Instead of constructing IPCCommandResult with static member functions
in the Device class, we can just add the relevant constructors to the
reply struct itself. Makes more sense than putting it in Device
when the struct is used in the kernel code and doesn't use any Device
specific members...

This commit also changes the IPC command handlers to return an optional
IPCCommandResult rather than an IPCCommandResult. This removes the need
for a separate boolean that indicates whether the "result" is actually
a reply, and also avoids the need to set dummy result values and ticks.

It also makes it really obvious which commands can result in no reply
being generated.

Finally, this commit renames IPCCommandResult to IPCReply since the
struct is now only used for actual replies. This new name is less
verbose in my opinion.

The diff is quite large since this touches every command handler, but
the only functional change is that I fixed EnqueueIPCReply to
take a s64 for cycles_in_future to match IPCReply.
2021-02-13 20:15:30 +01:00
Léo Lam
f52aa3d041
HW: Add a UDL for timebase ticks to cycles conversions 2021-02-13 18:24:23 +01:00
Léo Lam
6e8881a426
IOS: Remove unnecessary and unused PrepareForState
PrepareForState is now unnecessary with the new implementation of
HostFileSystem::DoState, which does what the old implementation
(CWII_IPC_HLE_Device_FileIO::PrepareForState) used to do.
2021-02-13 16:56:29 +01:00
Léo Lam
2f85b80b7b
Merge pull request #9333 from Pokechu22/sw-always-divide-by-q
Software: Always divide the texture coordinates by q.
2021-02-13 13:24:18 +01:00
JosJuice
4e107935ac Arm64Emitter: Allow specifying 21th bit of ADRP imm 2021-02-13 11:33:27 +01:00
JosJuice
d226b8f825 Arm64Emitter: Remove optimize parameter from MOVI2R
I don't really see the use of this. (Maybe in the past it
was used for when we need a constant number of instructions
for backpatching? But we don't use MOVI2R for that now.)
2021-02-13 11:33:27 +01:00
Pokechu22
7d5ae03219 Software: Always divide the texture coordinates by q.
Equivalent to da43f9a15 for the software renderer.
2021-02-12 16:37:47 -08:00
Léo Lam
99fc1c682a
IOS: Simplify unnecessarily qualified names
Now that the ES class (now called ESDevice) and the ES namespace do
not conflict anymore, "IOS::" can be dropped in a lot of cases.

This also removes "IOS::HLE::" for code that is already in that
namespace. Some of those names used to be explicitly qualified
only for historical reasons.

There are no functional changes.
2021-02-13 01:36:09 +01:00
Léo Lam
3e1646adae
Merge pull request #9504 from leoetlino/ios-class-name-cleanup
IOS: Use less ambiguous names for classes
2021-02-13 01:00:16 +01:00
Léo Lam
522cb6b137
IOS: Use less ambiguous names for classes
Some of the device names can be ambiguous and require fully or partly
qualifying the name (e.g. IOS::HLE::FS::) in a somewhat verbose way.

Additionally, insufficiently qualified names are prone to breaking.
Consider the example of IOS::HLE::FS:: (namespace) and
IOS::HLE::Device::FS (class). If we use FS::Foo in a file that doesn't
know about the class, everything will work fine. However, as soon as
Device::FS is declared via a header include or even just forward
declared, that code will cease to compile because FS:: now resolves
to Device::FS if FS::Foo was used in the Device namespace.

It also leads to having to write IOS::ES:: to access ES types and
utilities even for code that is already under the IOS namespace.

The fix for this is simple: rename the device classes and give them
a "device" suffix in their names if the existing ones may be ambiguous.
This makes it clear whether we're referring to the device class or to
something else.

This is not any longer to type, considering it lets us get rid of the
Device namespace, which is now wholly unnecessary.

There are no functional changes in this commit.

A future commit will fix unnecessarily qualified names.
2021-02-12 21:40:31 +01:00
Léo Lam
09c9fdf71c
Merge pull request #9505 from Pokechu22/bitfield-natvis
Restore BitField Natvis
2021-02-12 12:36:59 +01:00
Sepalani
fabf6f51cd PCAP: Improve TCP session logging 2021-02-12 13:42:18 +04:00
Pokechu22
0102914323 Restore BitField Natvis
It was lost in #9092.
2021-02-11 23:31:27 -08:00
iwubcode
ce7db2e32b InputCommon: When using dynamic input textures, only call force reload textures once for packs that have multiple configurations 2021-02-11 19:18:38 -06:00
iwubcode
0a9c764dc4 VideoCommon: Join the prefetch thread before clearing to avoid a potential crash that can occur by multiple threads touching a single resource 2021-02-11 19:18:38 -06:00
Léo Lam
bf758fbe7c
Merge pull request #9490 from Dentomologist/fix_expression_scroll_wheel_spam
Config: Fix expression window scroll wheel spam
2021-02-11 21:42:00 +01:00
Léo Lam
3ce72d4005
Merge pull request #9408 from sepalani/sni
SSL: Workaround to remove SNI from ClientHello
2021-02-11 21:38:41 +01:00
Sepalani
2a15bc6ab2 SSL: Workaround to remove SNI from ClientHello 2021-02-11 23:13:59 +04:00
Léo Lam
a354814240
Merge pull request #9424 from Pokechu22/sw-no-special-case
Software: Remove normalization special case
2021-02-11 19:36:45 +01:00
Léo Lam
1fc6fbc2c0
Merge pull request #6075 from sepalani/pcap-log
PCAP logging with fake TCP/UDP packet
2021-02-11 00:15:37 +01:00
Léo Lam
ddacbf83f6
Merge pull request #9461 from cbartondock/master
Working Game IDs for Elf/Dol files
2021-02-10 22:50:40 +01:00
Léo Lam
1e71904cb9
Merge pull request #9495 from leoetlino/wiki-redirect
Qt: Fix "open wiki" option not using the wiki redirect script
2021-02-10 13:14:47 +01:00
Léo Lam
118b2a3580
Core/DSP: Fix improper uses of offsetof
According to the C standard, an offsetof expression must evaluate to an
address constant, otherwise it's undefined behavior.

Fixes https://bugs.dolphin-emu.org/issues/12409

See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95942

There are still improper uses of offsetof (mostly in JitArm64) but
fixing that will take more effort since there's a PPCSTATE_OFF wrapper
macro that is sometimes used with non-array members and sometimes used
with arrays and variable indices... Let's keep that for another PR.
2021-02-10 02:03:16 +01:00
Dentomologist
43b389410a Config: Fix expression window scroll wheel spam
Fixes the expression window being spammed with the first entry in the
Operators or Functions select menus when scrolling the mouse wheel while
hovering over them.

Fixes https://bugs.dolphin-emu.org/issues/12405
2021-02-09 08:55:01 -08:00
JosJuice
3e4bf57c69
Merge pull request #9423 from MerryMage/arm64-movi2r-test
UnitTests: Add MOVI2R test
2021-02-08 10:58:09 +01:00
Markus Wick
9a2d908aba
Merge pull request #9400 from JosJuice/jitarm64-imm
JitArm64: More constant propagation optimizations
2021-02-08 10:53:01 +01:00
Léo Lam
7ef8e53c4a
Qt: Fix "open wiki" option not using the wiki redirect script
The dolphin-redirect.php script seems to have been present since 2012
at least, but we accidentally stopped using it when the "open wiki"
feature was reimplemented in DolphinQt2 in 2016.

    <@delroth> dolphin-redirect.php is slightly smarter and tries to find gameid aliases for e.g. same region
    <@delroth> uh, I mean different region
2021-02-08 02:52:29 +01:00
JosJuice
761d7748b6 JitArm64: Fix mistaken use of LSL imm 2021-02-07 13:55:55 +01:00
JosJuice
efeda3b759 JitArm64: More constant propagation optimizations
PR 9262 added a bunch of Jit64 optimizations, some of
which were already in JitArm64 and some which weren't.
This change ports the latter ones to JitArm64.
2021-02-07 13:55:35 +01:00
Errorcodebin
8a3fe6e24a Fix mapping window title bar becoming unresponsive 2021-02-04 14:32:03 +01:00
Markus Wick
b6e9cca64f
Merge pull request #9485 from JosJuice/jitarm64-pc-stp
JitArm64: Use STP for pc/npc
2021-02-03 12:22:37 +01:00
iwubcode
77c68a3142 DolphinQt: Fix regression that caused the regex expression to be evaluated incorrectly. If an input expression has a non-alpha character in it, we want to quote it with backticks 2021-02-02 20:36:54 -06:00
MerryMage
f65c1df094 Random: Add seeded PRNG 2021-01-31 13:16:45 +00:00
MerryMage
a0b8956f22 JitArm64_Integer: Add optimizations for rlwimix
* Check for case when source field is at LSB
* Use BFXIL if possible
* Avoid ROR where possible
2021-01-31 12:05:43 +00:00
MerryMage
8aa2013a2d Arm64Emitter: Add additional assertions to BFI/UBFIZ 2021-01-31 12:04:57 +00:00
MerryMage
75d92ad628 Arm64Emitter: Prefer BFM/UBFM to EncodeBitfieldMOVInst 2021-01-31 12:04:57 +00:00
MerryMage
be6aec9932 Arm64Emitter: Add BFXIL 2021-01-31 12:04:57 +00:00
Sepalani
82bb5d9915 NetworkCaptureLogger: PCAP support added
Log TCP/UDP read/write with fake packet.
2021-01-30 19:35:09 +04:00
cbartondock
83c127784b Working Game IDs for Elf/Dol files 2021-01-30 09:51:37 -05:00
JosJuice
dd8e504c80 JitArm64: Use STP for pc/npc 2021-01-30 11:56:25 +01:00
Markus Wick
b22073ef59
Merge pull request #9484 from JosJuice/jitarm64-ps-stp
JitArm64: Use STP for (parts of) ppcState.ps
2021-01-30 08:51:56 +01:00
JosJuice
91b55824f9 JitArm64: Use STP for (parts of) ppcState.ps
The savestate incompatibility problem mentioned in a comment
was solved by d266be5.
2021-01-30 01:01:01 +01:00
JosJuice
2d9ea42df2 Arm64Emitter: Add asserts for LDP/STP imm out of range 2021-01-30 00:25:33 +01:00
Admiral H. Curtiss
dc2d234284 GCMemcardUtils: Fix typo in comment. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
e47eb16641 GCMemcardManager: Detect attempt to import multiple save files with the same internal name. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
74b56a8c7f GCMemcardManager: Add filename column. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
9acbe1aced GCMemcardManager: Make columns sortable. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
42f4ee629b GCMemcardManager: Make columns resizable by the user. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
7cf991bd8a GCMemcardManager: Small cleanups. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
e00e6e1a8c GCMemcardManager: Replace remaining panic alert with ModalMessageBox. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
daa76183ed GCMemcard: Let ImportFile() take a Savefile instead of a direntry and a vector of blocks. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
c95f3cbb61 GCMemcard: Remove obsolete methods. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
645cb2f3d1 GCMemcardDirectory: Rewrite migration logic without ExportGci(). 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
e8b99d3afd GCMemcardManager: Rewrite file deleting logic to provide a better user experience. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
6e96f95432 GCMemcardManager: Rewrite file copying logic to provide a better user experience. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
08dccb8727 GCMemcardManager: Rewrite file importing logic to provide a better user experience. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
3286d2df3d Common/VariantUtil: Add 'overloaded' helper struct for use with std::variant. 2021-01-28 22:01:32 +01:00
Admiral H. Curtiss
87ae7ccd75 GCMemcardManager: Rewrite file exporting logic to provide a better user experience. 2021-01-28 22:01:32 +01:00
Admiral H. Curtiss
7bb7aa16c2 GCMemcardManager: Relayout file table for a more compact design. 2021-01-28 22:01:32 +01:00
Admiral H. Curtiss
ec4fc7171f GCMemcardUtils: Implement GenerateFilename() as a cleaner variant of GCMemcard::GCI_FileName(). 2021-01-28 22:01:30 +01:00
Admiral H. Curtiss
3e7f537a9d GCMemcard: Implement ExportFile() to get a file on a card with a single method call. 2021-01-28 22:00:33 +01:00
Admiral H. Curtiss
9b14cc8ea2 GCMemcard: Implement utility functions to read saves from and write saves to files, without involving a memory card. 2021-01-28 22:00:28 +01:00
Sepalani
b363962757 BreakpointWidget: Remove unnecessary code
PPCDebugInterface.Clear() is called by Core on shutdown instead
2021-01-28 21:23:18 +04:00
Sepalani
289637f92f NetworkCaptureLogger: Move SSL logging 2021-01-28 21:23:18 +04:00
Léo Lam
c386c5acc2
Merge pull request #9366 from iwubcode/freelook_camera_quaternion
VideoCommon: allow Free Look to be manipulated by a quaternion
2021-01-28 01:34:09 +01:00
Léo Lam
9ca24ae8e0
Merge pull request #9092 from shuffle2/vshack
msbuild: Merge "Core" libs into single DolphinLib
2021-01-28 01:33:46 +01:00
iwubcode
586c689d63 VideoCommon: use Quaternion for Free Look orientation 2021-01-27 18:22:10 -06:00
iwubcode
d35287b6e4 Common: update Quaternion to allow rotating pitch, yaw, and roll all at once 2021-01-27 18:22:10 -06:00
iwubcode
544692f96a Common: add convenience function to convert a Quaternion to a Matrix44 2021-01-27 18:22:10 -06:00
SirMangler
9f6d88880e
MemoryWidget: Add 'Offset' and General Improvements 2021-01-28 01:04:09 +01:00
Shawn Hoffman
500a694ca8 msbuild: bundle all dolphin "core" code into single library 2021-01-27 14:29:49 -08:00
Shawn Hoffman
5770ff01f3 rename D3DCommon/Common to D3DCommon/D3DCommon 2021-01-27 14:29:48 -08:00
Shawn Hoffman
527b5a9761 normalize common filenames in VideoBackends/D3D12 2021-01-27 14:29:48 -08:00
Shawn Hoffman
a0aeb5b0b9 normalize common filenames in VideoBackends/D3D 2021-01-27 14:29:48 -08:00
Shawn Hoffman
d7fd892fde normalize common filenames in VideoBackends/Vulkan 2021-01-27 14:29:48 -08:00
Shawn Hoffman
ef70fe05bf normalize common filenames in VideoBackends/Null 2021-01-27 14:29:48 -08:00
Shawn Hoffman
ff4f67492b normalize common filenames in VideoBackends/OGL 2021-01-27 14:29:48 -08:00
Shawn Hoffman
3193f3d5c4 rename Core/IOS/FS/FileSystem.cpp to FileSystemCommon.cpp 2021-01-27 14:29:48 -08:00
Shawn Hoffman
7e1df34735 rename InputCommon/ControllerInterface/Device to CoreDevice 2021-01-27 14:29:48 -08:00
Shawn Hoffman
0be1491ef0 rename ciface::Wiimote to ciface::WiimoteController 2021-01-27 14:29:48 -08:00
Shawn Hoffman
84128d9532 rename Common/File to Common/IOFile 2021-01-27 14:29:48 -08:00
Shawn Hoffman
07fd02f207 rename Core/Analytics to Core/DolphinAnalytics 2021-01-27 14:29:47 -08:00
Léo Lam
96e3360f05
Merge pull request #9452 from JosJuice/android-wii-saves
Android: Add "Import Wii Save"
2021-01-27 23:00:47 +01:00
Markus Wick
7290cd0032
Merge pull request #9478 from JosJuice/double-assert-attempt-2
JitArm64: Fix false positive "turned singles into doubles" asserts
2021-01-27 20:20:59 +01:00
Markus Wick
b1fdd14ed1
Merge pull request #9314 from smurf3tte/dcbx
Jit: Fix correctness issue in dcbf/dcbi/dcbst
2021-01-27 20:12:21 +01:00
JosJuice
cd4ccda51c Android: Add "Import Wii Save" 2021-01-27 20:10:06 +01:00
Markus Wick
2ada5b422d
Merge pull request #9448 from JosJuice/blr-x30
JitArm64: Avoid using X30 with BLR
2021-01-27 20:07:24 +01:00
Léo Lam
8c127a612f
Merge pull request #9416 from Filoppi/patch-9
InputCommon: Wrap remaining invalid default input expressions around ``
2021-01-27 19:54:20 +01:00
Léo Lam
6dc0f0dfe6
Merge pull request #9438 from shuffle2/add-shortcut-to-desktop
DolphinQT: Gives option to add desktop shortcut
2021-01-27 19:41:09 +01:00
Léo Lam
28cd6f6520
Merge pull request #9440 from lioncash/qt6
DolphinQt: Qt 6.0 forward-compatibility changes
2021-01-27 19:28:43 +01:00
Léo Lam
6086111566
Merge pull request #9467 from iwubcode/gamecube_controllers_widget
DolphinQt: Move gamecube controller ui logic to its own widget
2021-01-27 19:24:06 +01:00
Léo Lam
84ad550c19
Merge pull request #9449 from Filoppi/patch-11
Qt: Fix Shake Mapping Indicator not showing deadzone
2021-01-27 19:19:58 +01:00
Léo Lam
42b55e8fa3
Merge pull request #9450 from Filoppi/patch-12
Qt: Fix stock input profiles being deletable
2021-01-27 19:18:51 +01:00
iwubcode
780360b921 DolphinQt: Move gamecube controller ui logic to its own widget 2021-01-27 12:02:39 -06:00
Léo Lam
920dd812ad
Merge pull request #9468 from iwubcode/wiimote_controllers_widget
DolphinQt: Move wiimote controller ui logic to its own widget
2021-01-27 18:54:29 +01:00
iwubcode
f3b6c9723c DolphinQt: Move wiimote controller ui logic to its own widget 2021-01-27 11:27:05 -06:00
Léo Lam
fb09acd01f
Merge pull request #9453 from JosJuice/state-metadata-osd
Android: Don't show OSD messages when opening savestate menu
2021-01-27 18:22:39 +01:00
Léo Lam
70447d0281
Merge pull request #9454 from JosJuice/android-ingame-settings-save
Android: Fix in-game settings changes not getting saved
2021-01-27 18:17:27 +01:00
JosJuice
5d19558623 JitArm64: Fix false positive "turned singles into doubles" asserts
Fixes a regression from 88f3fec.
2021-01-27 16:11:39 +01:00
Léo Lam
b886c70a43
Merge pull request #9456 from trevor403/breakpoint-loading
Breakpoint from string flag parsing using token
2021-01-27 15:53:24 +01:00
Léo Lam
4ba9bb26e9
Merge pull request #9455 from lioncash/traversal
TraversalProto: Minor cleanup
2021-01-27 15:51:29 +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
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
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
Sintendo
6a51c1564f Jit64: addx revisited
This doesn't really add any new optimizations, but fixes an issue that
prevented the optimizations introduced in #8551 and #8755 from being
applied in specific cases. A similar issue was solved for subfx as part
of #9425.

Consider the case where the destination register is also an input
register and happens to hold an immediate value. This results in a set
of constraints that forces the RegCache to allocate a register and move
the immediate value into it for us. By the time we check for immediate
values in the JIT, we're too late.

We solve this by refactoring the code in such a way that we can check
for immediates before involving the RegCache.

- Example 1
Before:
41 BF 00 68 00 CC    mov         r15d,0CC006800h
44 03 FF             add         r15d,edi

After:
44 8D BF 00 68 00 CC lea         r15d,[rdi-33FF9800h]

- Example 2
Before:
41 BE 00 00 00 00    mov         r14d,0
44 03 F7             add         r14d,edi

After:
44 8B F7             mov         r14d,edi

- Example 3
Before:
41 BD 03 00 00 00    mov         r13d,3
44 03 6D 8C          add         r13d,dword ptr [rbp-74h]

After:
44 8B 6D 8C          mov         r13d,dword ptr [rbp-74h]
41 83 C5 03          add         r13d,3
2021-01-26 21:25:00 +01: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
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
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
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
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
Dentomologist
70c54065ab Arm64Emitter: Convert IndexType to enum class 2021-01-15 23:27:11 -08:00
LC
aba179e4ba
Merge pull request #9385 from MerryMage/more-bmi2
Jit_Integer: Use SHLX, SHRX, SARX
2021-01-14 21:40:45 -05:00
LC
0c2bc3582d
Merge pull request #9425 from Sintendo/jit64subfx
Jit64: subfx optimizations
2021-01-14 21:40:05 -05:00
Lioncash
5b4fced2ba DolphinQt: Resolve deprecated usages of setTime_t and toTime_t
These have been replaced with setSecsSinceEpoch() and
toSecsSinceEpoch(), respectively within Qt 5.8, so we can migrate over
to them.
2021-01-13 05:07:32 -05:00
Lioncash
892154f7ea DolphinQt: Resolve deprecated usage of margin()
This function has been marked as obsolete. In Qt 6.0 it's removed
entirely, so we must use getContentsMargin() explicitly instead
(margin() would do this for us).

Ditto for setMargin(), in which case we use setContentsMargin instead.
setMargin() would just pass its argument to all four parameters of
setContentsMargin(), so we can do the same.
2021-01-13 05:07:32 -05:00
Lioncash
46ca371ef3 DolphinQt: Migrate QRegExp over to QRegularExpression
Qt 5.0 introduced QRegularExpression to replace QRegExp. In Qt 6.0,
QRegExp is removed entirely in favor of it.
2021-01-13 05:07:29 -05:00
Lioncash
765a1b3c09 DolphinQt: Explicitly include <QActionGroup> where applicable
An indirect inclusion scenario that breaks on Qt 6.0
2021-01-13 04:46:11 -05:00
Lioncash
f647ca4620 DolphinQt: Replace usages of QLatin1Literal with QStringLiteral
This literal was deprecated in 5.14.0. Not to mention it wasn't
documented as part of the API either: see the 5.14.0 changelog here:

https://code.qt.io/cgit/qt/qtbase.git/tree/dist/changes-5.14.0?h=v5.14.0

On Qt 6.0 this define is removed entirely. To stay forward compatible,
we can make use of QStringLiteral instead.
2021-01-13 03:50:42 -05:00
Silent
cb854d7832
AudioCommon/WASAPI: Construct std::thread with invoke semantics instead of a lambda 2021-01-12 19:25:40 +01:00
Silent
11c5150c16
AudioCommon/WASAPI: Factorize device enumeration logic into a function to greatly reduce code duplication 2021-01-12 19:25:38 +01:00
Silent
c373890505
AudioCommon/WASAPI: Do volume adjustment only when really needed
This skips a potentially costly loop if volume is 100% or 0%,
as for former there is no need for volume adjustment,
while latter can be solved by specifying a AUDCLNT_BUFFERFLAGS_SILENT flag
2021-01-12 19:24:49 +01:00
Silent
991b3ba8c2
AudioCommon/WASAPI: Remove thread unsafe nullptr checks giving a false sense of safety 2021-01-12 19:24:49 +01:00
Silent
5dbbf36563
AudioCommon/WASAPI: Use std::string_view where applicable 2021-01-12 19:24:46 +01:00
Silent
7d59ad262f
AudioCommon/WASAPI: Use leaner memory model on m_running, no need for a full barrier 2021-01-12 19:21:54 +01:00
Silent
ee60be4501
AudioCommon/WASAPI: Simplify thread synchronization model by not detaching WASAPI handler thread 2021-01-12 19:21:54 +01:00
Silent
c5a372ab2a
AudioCommon/WASAPI: Use WRL/WIL whenever possible
This fixes numerous resource leaks, as not every return path cleaned every created resource
Now they are all managed automatically and "commited" to WASAPIStream class fields only
after it's certain they initialized properly
2021-01-12 19:21:22 +01:00
Silent
374629ef30
AudioCommon: Make HandleWinAPI handle all success return values properly, not just S_OK 2021-01-12 19:18:48 +01:00
Aminoa
23e565d94c DolphinQT: Gives option to add desktop shortcut
When a game is selected, the option to add a shortcut of the game to the desktop is given. Uses native Windows API since Qt lacks support for adding shortcuts.
2021-01-11 20:41:13 -08:00
Pokechu22
d55f9369c7 Use GX_CMD_UNKNOWN_METRICS instead of magic number 0x44 2021-01-11 12:41:04 -08:00
Shawn Hoffman
2ba4fd960e small prettification 2021-01-10 15:11:18 -08:00
Shawn Hoffman
fc65f65891 BitUtils: cleanup constexpr usage for msvc clz 2021-01-10 10:06:30 -08:00
Shawn Hoffman
65ecf1e43e BitUtils: loosen clz to inline on msvc/arm64 2021-01-09 23:44:00 -08:00
LC
a613c2a5e4
Merge pull request #9429 from Sintendo/jit64fixoverflow
Jit64: Fix FinalizeCarryOverflow XER[OV/SO]
2021-01-10 01:58:06 -05:00
LC
59fa613020
Merge pull request #9431 from shuffle2/msvc-gdbstub
msbuild: enable USE_GDBSTUB
2021-01-10 01:56:46 -05:00
LC
75e19a0c29
Merge pull request #9430 from shuffle2/vsupdate
Bump msvc version check and revert a msvc workaround
2021-01-10 01:46:28 -05:00
Shawn Hoffman
f0a6244768 msbuild: enable USE_GDBSTUB
this does nothing about it actually being usable
2021-01-09 22:26:55 -08:00
Shawn Hoffman
1e5e5ea855 BitUtils: initialize variables
fixes C3615 on some msvc/cmake configs
2021-01-09 22:18:29 -08:00
Shawn Hoffman
cce275c16e Revert "msvc: temporary workaround for C4789 false positive"
This reverts commit deb73d0167.
2021-01-09 19:22:36 -08:00
Sintendo
305cd31bd9 Jit64: Fix FinalizeCarryOverflow XER[OV/SO]
FinalizeCarryOverflow didn't maintain XER[OV/SO] properly due to an
oversight. Here's the code it would generate:

0:  9c                      pushf
1:  80 65 3b fe             and    BYTE PTR [rbp+0x3b],0xfe
5:  71 04                   jno    b <jno>
7:  c6 45 3b 03             mov    BYTE PTR [rbp+0x3b],0x3
000000000000000b <jno>:
b:  9d                      popf

At first glance it seems reasonable. The host flags are carefully
preserved with PUSHF. The AND instruction clears XER[OV]. Next, an
conditional branch checks the host's overflow flag and, if needed, skips
over a MOV that sets XER[OV/SO]. Finally, host flags are restored with
POPF.

However, the AND instruction also clears the host's overflow flag. As a
result, the branch that follows it is always taken and the MOV is always
skipped. The end result is that XER[OV] is always cleared while XER[SO]
is left unchanged.

Putting POPF immediately after the AND would fix this, but we already
have GenerateOverflow doing it correctly (and without the PUSHF/POPF
shenanigans too). So let's just use that instead.
2021-01-09 22:52:18 +01:00
Léo Lam
4cdcbb6ab2
Merge pull request #9308 from smurf3tte/re23_patch
Patches for Resident Evil 2/3 audio issues
2021-01-06 01:52:15 +01:00
Léo Lam
0b1db65aa1
Merge pull request #9405 from Filoppi/patch-7
Rename "Use Fullscreen" setting to "Start in Fullscreen"
2021-01-06 01:44:46 +01:00
Pierre Bourdon
27013e8d18
Merge pull request #9300 from leoetlino/ncd-wd-fixes
IOS: WD and NCD fixes
2021-01-06 00:51:33 +01:00
Sintendo
df70077e6b JitArm64: subfx - Special case a == b 2021-01-05 18:52:24 +01:00
Léo Lam
eafb9de047
Merge pull request #9323 from waddlesplash/haiku
Rehabilitate Haiku support.
2021-01-05 16:09:43 +01:00
Léo Lam
840ecfb32f
Merge pull request #9409 from AdmiralCurtiss/wii-save-import-tmd
Make WiiSave::Import() behave closer to the Wii System Menu's SD Card save copying.
2021-01-05 15:36:36 +01:00
Filippo Tarpini
a5a6ef8512
Fix a couple of typos
[committer note: fixed commit message style]
2021-01-05 15:24:21 +01:00
Filippo Tarpini
0805b58302
DolphinQt: Remove some useless includes
[committer note: fixed commit message style]
2021-01-05 15:24:13 +01:00
Filippo Tarpini
3acd1726b9
Core: Fix variable naming conventions
[committer note: squashed two commits]
2021-01-05 15:23:40 +01:00
Léo Lam
ee25f03ff9
Merge pull request #9418 from Filoppi/patch-10
Fix DualShockUDP not adding/removing devices correctly
2021-01-05 15:15:53 +01:00
Pierre Bourdon
bd89523e63
Merge pull request #9392 from smurf3tte/audio_wmask
DSP: Fix write masks on AUDIO_*/AR_* MMIO registers
2021-01-05 15:08:06 +01:00
Sintendo
c0be34aa81 Jit64: subfx - Special case a == b
Soul Calibur II does this.

Before:
2B F6                sub         esi,esi

After:
Nothing!
2021-01-05 00:26:26 +01:00
Sintendo
b0be20560f Jit64: subfx - Special case b == 0
Happens in Super Mario Sunshine. You could probably do something similar
for b == -1 (like we do for subfic), but I couldn't find any titles that
do this.

- Case 1: d == a

Before:
41 8B C7             mov         eax,r15d
41 BF 00 00 00 00    mov         r15d,0
44 2B F8             sub         r15d,eax

After:
41 F7 DF             neg         r15d

- Case 2: d != a

Before:
BF 00 00 00 00       mov         edi,0
41 2B FD             sub         edi,r13d

After:
41 8B FD             mov         edi,r13d
F7 DF                neg         edi
2021-01-05 00:11:16 +01:00
Sintendo
57548b456b Jit64: subfx - Special case a == 0
Occurs a bunch of times in Super Mario Sunshine.

Before:
41 83 EE 00          sub         r14d,0

After:
Nothing!
2021-01-04 23:54:15 +01:00
Sintendo
b805223108 Jit64: subfx - Optimize more constant a cases
Consider the case where d and a refer to the same PowerPC register,
which is known to hold an immediate value by the RegCache. We place a
ReadWrite constraint on this register and bind it to an x86 register.
The RegCache then allocates a new register, initializes it with the
immediate, and returns a RCX64Reg for both d and a.

At this point information about the immediate value becomes unreachable.
In the case of subfx, this generates suboptimal code:

Before 1:
BF 1E 00 00 00       mov         edi,1Eh       <- done by RegCache
8B C7                mov         eax,edi
8B FE                mov         edi,esi
2B F8                sub         edi,eax

Before 2:
BE 00 AC 3F 80       mov         esi,803FAC00h <- done by RegCache
8B C6                mov         eax,esi
8B 75 EC             mov         esi,dword ptr [rbp-14h]
2B F0                sub         esi,eax

The solution is to explicitly handle the constant a case before having
the RegCache allocate registers for us.

After 1:
8D 7E E2             lea         edi,[rsi-1Eh]

After 2:
8B 75 EC             mov         esi,dword ptr [rbp-14h]
81 EE 00 AC 3F 80    sub         esi,803FAC00h
2021-01-04 23:02:22 +01:00
Pokechu22
e825af7b1b Software: Remove normalization special case
The special case doesn't appear to make a significant difference in any games, and the current implementation has a (minor, fixable) issue that breaks Super Mario Sunshine (both with a failed assertion (https://bugs.dolphin-emu.org/issues/11742) and a rendering issue (https://bugs.dolphin-emu.org/issues/7476)).  Hardware testing wasn't able to reproduce the special case, either, so it may just not exist.

PR #9315 contains a fixed implementation of the special case on all video backends, and can serve as a basis for it being reintroduced if it is found to exist under more specific circumstances.  For now, I don't see a reason to keep it present.
2021-01-03 23:22:48 -08:00
Filippo Tarpini
1e4a1bee43 Fix DualShockUDP not adding/removing devices correctly
-If adding 2 devices with the same name, they their unique id wouldn't be increased, causing a conflict.
-Removing a device wouldn't actually remove it from the internal devices list because the list of devices had already been updated when going through it.
-It was possible to remove devices belonging to other sources by adding a device with the same name and then removing it.
2021-01-03 21:06:06 +02:00
MerryMage
6106d6481f BitUtils: __builtin_clz is undefined when value == 0 2021-01-03 17:35:15 +00:00
LC
4b9259d691
Merge pull request #9415 from Filoppi/patch-8
Fix cursor going to +infinite if the window size was 0
2021-01-03 11:26:11 -05:00
MerryMage
8ae0bf93e7 JitArm64: Do not use offsetof on non-standard-layout types
Applying PR #8687 to Arm64 JIT.
2021-01-03 15:26:01 +00:00
waddlesplash
2df11d3911 Rehabilitate Haiku support. 2021-01-02 16:54:24 -05:00
Filippo Tarpini
8813ba69f5 Fix Quartz cursor going to +infinite if the window size was 0 2021-01-02 19:55:19 +02:00
Admiral H. Curtiss
2932b5f8cd Qt: Give better error messages when Wii save importing fails. 2021-01-02 17:46:12 +01:00
Admiral H. Curtiss
d9c686db30 WiiSave: Delete existing save, if any, before importing one. 2021-01-02 17:46:12 +01:00
Admiral H. Curtiss
700d53e00f WiiSave: In Import(), make sure the TMD exists or can be reinstalled before allowing save to be imported. 2021-01-02 17:46:11 +01:00
Admiral H. Curtiss
46e4c17db3 WiiUtils: Add utility functions to handle prep-work for importing 'SD-card export' style Wii saves. 2021-01-02 17:46:11 +01:00
Filippo Tarpini
5a5c815ff0
Fix DInput cursor going to +infinite if the window size was 0 2021-01-02 18:33:13 +02:00
Filippo Tarpini
75f35393c3
Fix XInput2 cursor going to +infinite if the window size was 0 2021-01-02 18:30:14 +02:00
Lioncash
36af39853d Arm64Emitter: Remove unused OpType enum
This isn't used anywhere, so we can remove it.
2021-01-01 11:06:05 -05:00
Lioncash
95cc53edec Arm64Emitter: Convert ArithOption enums into enum classes
Makes the enums strongly typed. While we're at it, we can also make
these enums private.
2021-01-01 07:10:41 -05:00
merry
71a996e33b Jit_Integer: srawx: Handle a != b case with SARX
Suggested by @Sintendo

Co-authored-by: Sintendo <bram.speeckaert@gmail.com>
2021-01-01 10:32:01 +00:00
Léo Lam
452aad29f1
Merge pull request #9401 from lioncash/jittable
JitArm64_Tables: Construct tables at compile-time
2021-01-01 01:22:49 +01:00
Léo Lam
344a74aa11
Merge pull request #9396 from lioncash/arm
JitArm64_RegCache: Interface cleanup
2021-01-01 01:03:55 +01:00
Léo Lam
f59ee87031
Merge pull request #9402 from lioncash/emitter
Arm64Emitter: Interface cleanup
2021-01-01 00:52:40 +01:00
Admiral H. Curtiss
7abe1085e3 IOS/ES: Pass relevant caller title information to ImportTmd() and ExportTitleInit(). 2020-12-31 17:13:46 +01:00
Filippo Tarpini
57c59c18d4
Rename "Use Fullscreen" setting to "Start in Fullscreen"
The name was confusing as changing it at runtime would not change the window to fullscreen, as it effectively only affects the start of the emulation.
Also blocked the ability to change it when the emulation is running, to be more inline with other similar settings, like "Render to main Window".
2020-12-31 13:39:45 +02:00
JosJuice
7bf590ee5a
Merge pull request #9403 from lioncash/guard
ArmCommon: Add missing header guard
2020-12-31 12:17:28 +01:00
Lioncash
e45aa019ec ArmCommon: Mark NO_COND as constexpr
Allows it to be used in compile-time expressions if ever necessary.
2020-12-30 20:54:05 -05:00
Lioncash
c9711a5eca ArmCommon: Add missing header guard
Prevents any multiple inclusion errors from occurring.
2020-12-30 20:53:31 -05:00
Lioncash
cca0dffebd Arm64Emitter: Add shorthand member functions for hint instructions
Allows for more concise code.
2020-12-30 20:49:20 -05:00
Lioncash
6046a15267 Arm64Emitter: Make ShiftAmount enum an enum class
Reduces namespace pollution and makes the enum strongly typed.
2020-12-30 20:49:20 -05:00
Lioncash
fab2053439 Arm64Emitter: Make RoundingMode enum an enum class
Prevents namespace pollution and makes the enum members strongly typed.
2020-12-30 20:49:20 -05:00
Lioncash
d87ec71615 Arm64Emitter: Make PStateField enum an enum class
Prevents namespace pollution and makes the enum members strongly typed.
2020-12-30 20:49:20 -05:00
Lioncash
5c3f2fde22 Arm64Emitter: Make BarrierType enum an enum class
Prevents namespace pollution and enforces strong typing.
2020-12-30 20:49:20 -05:00
Lioncash
f21c740919 Arm64Emitter: Make SystemHint enum an enum class
Avoids polluting the namespace and makes the members strongly typed.
2020-12-30 20:49:20 -05:00
Lioncash
5011c155ec Arm64Emitter: Make type member of FixupBranch an enum class
Eliminates some magic numbers and makes the type member strongly typed.
2020-12-30 20:49:20 -05:00
Lioncash
2fa4729815 Arm64Emitter: Annotate switch fallthrough
Silences warnings and makes intent explicit.
2020-12-30 20:49:20 -05:00
Lioncash
d780ad1102 Arm64Emitter: Make use of std::optional
Allows eliminating some out variables in favor of optional, which allows
narrowing visible scope of variables.
2020-12-30 20:49:16 -05:00
Lioncash
5b5b3a9979 JitArm64_Tables: Move Instruction alias to the JIT class
Does what the comment says I should do :p
2020-12-30 19:28:37 -05:00
Lioncash
c9c874d7fb JitArm64_Tables: Construct tables at compile-time
Migrates the Aarch64 JIT over to the same tabling mechanism as the x64
JIT.
2020-12-30 19:26:29 -05:00
JosJuice
31780a6059
Merge pull request #9399 from lioncash/fallthrough
JitArm64_LoadStore: Explicitly annotate switch fallthrough cases
2020-12-30 20:59:38 +01:00
Lioncash
fa63367738 JitArm64_LoadStore: Explicitly annotate switch fallthrough cases
Makes it explicit that these are intentional. Also prevents compiler
warnings.
2020-12-30 14:41:37 -05:00
Lioncash
fabf79e09a JitArm64_RegCache: Make RegType enum an enum class
Avoids polluting the namespace and makes the members of the enumeration
strongly typed.
2020-12-30 10:37:16 -05:00
Lioncash
4ff597cf21 JitArm64_RegCache: Mark several member functions as const
Many of these don't modify member state, so they can be marked as const.
2020-12-30 09:52:30 -05:00
Lioncash
e9aaa46c2f JitArm64_RegCache: Mark register constants as constexpr
Also moves comments to make for less wonky formatting.
2020-12-30 09:44:49 -05:00
Lioncash
e2bb9fd147 JitArm64_RegCache: Mark HostReg operator== as const
Also provides operator!= for logical symmetry.

We can also take the arguments by value, as the arguments are trivially
copyable enum values which fit nicely into registers already.
2020-12-30 09:42:29 -05:00
Lioncash
e7538b10c6 JitArm64_RegCache: In-class initialize member variables where applicable
Same behavior, but in-place initializes all values and makes it visually
explicit at the declaration site.
2020-12-30 09:32:24 -05:00
Lioncash
fe54226575 JitArm64_RegCache: Make FlushMode an enum class
Prevents namespace pollution and makes the enum members strongly typed.
This also mirrors the x64 variant as well.
2020-12-30 09:26:29 -05:00
JosJuice
c1d041b888
Merge pull request #9318 from JosJuice/android-saf-games
Android: Use storage access framework for game list
2020-12-30 11:10:35 +01:00
smurf3tte
c2da12ca75 DSP: Fix write masks on AUDIO_*/AR_* MMIO registers
https://bugs.dolphin-emu.org/issues/6749

This change fixes the scratchy audio in Teenage Mutant Ninja Turtles (SX7E52/SX7P52). The game starts an audio interface DMA with an unaligned address, and because Dolphin was not masking off the low 5 bits of AUDIO_DMA_START_LO, all future AI DMAs were misaligned. To understand why, it is instructive to refer to AUDIO_InitDMA() in libogc, which behaves the same as the official SDK:

_dspReg[25] = (_dspReg[25]&~0xffe0)|(startaddr&0xffff);

The implementation does not mask off the low bits of the passed in value before it ORs them with low bits of the current register value. Therefore, if they are not masked off by the hardware itself, they become permanently stuck once set.

Adding a write mask for AUDIO_DMA_START_LO is enough to fix the bug in TMNT, but I decided to run some tests on GC and Wii to find the correct write masks for the surrounding registers, as only a couple were already being masked. Dolphin has gotten away with not masking the rest because many are already A) masked on read (or never read) by the SDK and/or B) masked on use (or never used) in Dolphin.

This leaves just three registers where the difference may be observable: AR_DMA_CNT_H and AUDIO_DMA_START_HI/LO.
2020-12-30 01:34:48 -08:00
Léo Lam
8a3b14d7dc
Merge pull request #9391 from lioncash/find-str
IOS: Allow for heterogenous name lookup
2020-12-30 01:47:01 +01:00
Lioncash
0e91470828 IOS: Make use of insert_or_assign with AddDevice()
operator[] performs a default construction if an object at the given key
doesn't exist before overwriting it with the one we provide in operator=

insert_or_assign performs optimal insertion by avoiding the default
construction if an entry doesn't exist.

Not a game changer, but it is essentially a "free" change.
2020-12-29 19:32:18 -05:00
Lioncash
ba0540b9c5 IOS: Allow for heterogenous name lookup
Allows lookups to be done with std::string_view or any other string
type. This allows for non-allocating strings to be used with the name
lookup without needing to construct a std::string.
2020-12-29 19:32:14 -05:00
Léo Lam
806a4f3a9a
Merge pull request #9393 from lioncash/sysconf
SysConf: Make use of std::string_view
2020-12-30 01:22:39 +01:00
Lioncash
1bbfde62d1 SysConf: std::move name in Entry constructor
Allows code to move into the constructor, avoiding copies entirely.
2020-12-29 19:09:57 -05:00
Lioncash
05094ab51f SysConf: Return emplaced reference from AddEntry()
Allows GetOrAddEntry() to be implemented in a manner that doesn't result
in a redundant lookup in the event an addition needs to be made.
2020-12-29 19:08:30 -05:00
Lioncash
74224c94a7 SysConf: Make use of std::string_view
We can allow strings to be used with the SysConf interface in
potentially non-allocating manners.
2020-12-29 19:08:25 -05:00
MerryMage
d3ca5d812b Jit_Integer: Use SHLX, SHRX, SARX 2020-12-29 23:51:54 +00:00
Lioncash
e527b69d54 Core: Use C++17 deduction guides with locked recursive mutexes
Cleans up some locks that explicitly specify the recursive mutex type in
it. Meant to be included with the previous commit that cleaned out
regular mutexes, but I forgot.
2020-12-29 18:31:31 -05:00
smurf3tte
f4c579e720 Fix bad memory references in NewPatchDialog
This code was storing references to patch entries which could move around in memory if a patch was erased from the middle of a vector or if the vector itself was reallocated. Instead, NewPatchDialog maintains a separate copy of the patch entries which are committed back to the patch if the user accepts the changes.
2020-12-29 14:31:05 -08:00
smurf3tte
f3b8a985e7 Patches for Resident Evil 2/3 audio issues
These games are erroneously zeroing buffers before they can be fully copied to ARAM by DMA. The responsible memset() calls are followed by a call to DVDRead() which issues dcbi instructions that effectively cancel the memset() on real hardware. Because Dolphin lacks dcache emulation, the effects of the memset() calls are observed, which causes missing audio.

In a comment on the original bug, phire noted that the issue can be corrected by simply nop'ing out the offending memset() calls. Because the games dynamically load different .rel executables based on the character and/or language, the addresses of these calls can vary.

To deal generally with the problem of code being dynamically loaded to fixed, known addresses, the patch engine is extended to support conditional patches which require a match against a known value. This sort of thing is already achievable with Action Replay/Gecko codes, but their use depends on enabling cheats globally in Dolphin, which is not a prerequisite shared by patches.

Patches are included for every region, character, and language combination. They are enabled by default.

The end result is an approximation of the games' behavior on real hardware without the associated complexity of proper dcache emulation.

https://bugs.dolphin-emu.org/issues/9840
2020-12-29 14:24:46 -08:00
Léo Lam
3b2e31230f
Merge pull request #9386 from leoetlino/config-cache-invalidate
Config: Fix cache not being invalidated when callbacks are suppressed
2020-12-29 22:22:15 +01:00
Jordan Woyak
92de0431a2
Merge pull request #9389 from lioncash/deduction
Core: Make use of C++17 deduction guides with locks
2020-12-29 15:18:45 -06:00
Léo Lam
9ffd345df0
Config: Fix cache not being invalidated when callbacks are suppressed
The config version should always be incremented whenever config is
changed, regardless of callbacks being suppressed or not.
Otherwise, getters can return stale data until another config change
(with callbacks enabled) happens.
2020-12-29 22:07:47 +01:00
Lioncash
a8b0661fb0 Core: Make use of C++17 deduction guides with locks
C++17 allows omitting the mutex type, which makes for both less reading
and more flexibility (e.g. The mutex type can change and all occurrences
don't need to be updated).
2020-12-29 16:06:17 -05:00
Lioncash
f4e1f48b4f DSPCore: Make IRAM CRC and step counter private
We can construct an API around these two members to allow them to be
private.
2020-12-29 14:32:11 -05:00
Lioncash
5fb1f0bfd3 DSPCore: Make ifx registers private
These aren't used externally, so they can be made private.
2020-12-29 14:22:39 -05:00
Lioncash
e3de37e47b DSPCore: Make the accelerator private
This is only used internally.
2020-12-29 14:15:04 -05:00
Lioncash
e1f41bab1c DSP: Make mailboxes use std::array
Makes the array strongly typed and prevents pointer decay. This also
allows for tuning bounds checks with various implementations.
2020-12-29 12:27:56 -05:00
Lioncash
f9d8d06037 DSP: Make mailboxes private
These aren't used externally anywhere and can be made private.
2020-12-29 12:27:40 -05:00
Lioncash
024e983c3a DSP: Make Mailbox enum strongly typed
Avoids implicit conversions and also prevents dumping identifiers into
the current namespace.
2020-12-29 12:20:00 -05:00
Léo Lam
ee048ad83c
Merge pull request #9377 from lioncash/analyzer
DSPAnalyzer: Migrate off file-scope state
2020-12-29 18:04:54 +01:00
Léo Lam
5ff2cb9a74
Merge pull request #9383 from lioncash/cr-fn
DSP: Eliminate some magic values related to the CR register
2020-12-29 17:37:24 +01:00
Léo Lam
15d4ddf5da
Merge pull request #9379 from Pokechu22/audio-latency-disable
Fix latency field being initially enabled on audio backends not supporting it
2020-12-29 17:28:10 +01:00
Léo Lam
5e186f4830
Merge pull request #9382 from lioncash/precise
DSPCore: Move PRECISE_BACKLOG define to the interpreter code
2020-12-29 17:17:59 +01:00
Léo Lam
f21e1d1859
Merge pull request #9381 from JosJuice/fix-core-filters
Fix Core.vcxproj.filters
2020-12-29 17:16:56 +01:00
Lioncash
359fe0d8c3 DSPCore: Move PRECISE_BACKLOG define to the interpreter code
The only usages of this define are within this source file.
2020-12-29 09:50:40 -05:00
Lioncash
64f93610ee DSP: Eliminate some magic values related to the CR register
Makes some values more immediately readable.
2020-12-29 09:43:04 -05:00
JosJuice
732887ec85 Fix Core.vcxproj.filters
Without this, Visual Studio will try to fix the problem on
its own any time the file is changed.
2020-12-29 13:50:37 +01:00
Pokechu22
147636986d Fix latency field being initially enabled on audio backends not supporting it 2020-12-28 17:06:02 -08:00
JosJuice
d78277c063 Android: Add specialized content provider implementation of DoFileSearch 2020-12-28 21:00:10 +01:00
Lioncash
8aecaf784c DSPAnalyzer: Separate instruction searching and idle skip finding
Places them into their own function to keep their functionality isolated
and self-documenting.
2020-12-28 13:15:48 -05:00
Lioncash
cc512a7524 DSPAnalyzer: Break tight coupling to SDSP
Allows the analyzer to exist independently of the DSP structure. This
allows for unit-tests to be created in a nicer manner.

SDSP is only necessary during the analysis phase, so we only need to
keep a reference around to it then as opposed to the entire lifecycle of
the analyzer.

This also allows the copy/move assignment operators to be defaulted, as
a reference member variable prevents that.
2020-12-28 13:15:48 -05:00
Lioncash
f9c488f0d9 DSPAnalyzer: Merge Analyzer namespace into DSP namespace
Now that the Analyzer class fully encapsulates all analyzer state, the
namespace is no longer necessary.
2020-12-28 13:15:48 -05:00
Lioncash
9d1c8fe492 DSPAnalyzer: Make CodeFlags private to the analyzer
Now that we have the convenience functions around the flag
bit manipulations, there's no external usages of the flags, so we can
make these private to the analyzer implementation.

Now the Analyzer namespace is largely unnecessary and can be merged with
the DSP namespace in the next commit.
2020-12-28 13:15:48 -05:00
Lioncash
2ff4d04785 DSPAnalyzer: Add convenience functions over bit tests
Makes it harder to accidentally misuse and increases readability.
2020-12-28 13:15:45 -05:00
Lioncash
5756ece7ce DSPAnalyzer: Implement DSP analyzer skeleton and use it
Attempts to simply make use of the interface. Cleanup will follow in
subsequent commits to make for nicer review.
2020-12-28 11:37:29 -05:00
Lioncash
8f4c6ad7b1 DSPAnalyzer: Add basic class skeleton
Adds the non-functional skeleton for the to-be Analyzer interface with
deglobalized components.
2020-12-28 10:47:12 -05:00
Léo Lam
9b3cdd0645
IOS/WD: Report game quirk if unimplemented ioctl is used
Lets us find games to test more easily.
2020-12-28 16:15:17 +01:00
Léo Lam
9a87d27612
IOS/WD: Implement more parts of the interface
This commit implements the following commands:

* open
* close
* GetMode
* SetLinkState (used to actually trigger scanning)
* GetLinkState (used to check if the driver is in the expected state)
* GetInfo
* RecvFrame and RecvNotification (stubbed)
* Disassociate (stubbed)

GetInfo was already implemented, but the structure wasn't initialized
correctly so the info was being rejected by official titles.
That has also been fixed in this commit.

Some of the checks may seem unimportant but official titles actually
require WD to return error codes... Failing to do so can cause hangs
and softlocks when DS communications are shut down.

This minimal implementation is enough to satisfy the Mii channel
and all other DS games, except Tales of Graces (https://dolp.in/i11977)
which still softlocks because it probably requires us to actually
feed it frame data.
2020-12-28 16:15:17 +01:00
Léo Lam
dcbe81b880
IOS: Simplify usage of GetVector
By making GetVector return nullptr for invalid indices, we don't have
to check the total number of vectors all the time before calling
GetVector.
2020-12-28 16:12:04 +01:00
Léo Lam
4fea832f49
IOS/NCD: Implement Lock/Unlock more accurately
NCD returns an error if it receives a request to lock the driver
when it is already locked.

Emulating this may seem pointless, but it turns out PPC-side code
expects NCD to return an error and will immediately fail and stop
initialising wireless stuff if NCD succeeds.
2020-12-28 16:12:04 +01:00
Léo Lam
3f68aceaca
Merge pull request #9348 from lioncash/dsp-deglobal
DSP: Eliminate most global state
2020-12-28 15:48:11 +01:00
iWeaker4you
a636fcf230
BitUtils: Fix uint64_t gcc compile (Linux) 2020-12-28 11:50:57 +01:00
LC
28a666a35f
Merge pull request #9363 from MerryMage/rorx
Jit_Integer: Use RORX where possible
2020-12-27 22:25:03 -05:00
LC
4b24215efb
Merge pull request #9371 from MerryMage/rlwinmx-BEXTR
Jit_Integer: rlwinmx: Use BEXTR where possible
2020-12-27 22:24:17 -05:00
LC
fcd86e9b21
Merge pull request #9370 from MerryMage/rlwinmx
Jit_Integer: rlwinmx: Generalize byte/word extract plus shift case
2020-12-27 22:23:18 -05:00
LC
d06d59e9c2
Merge pull request #9262 from Sintendo/jit64imm
Jit64: More constant propagation optimizations
2020-12-27 22:21:25 -05:00
MerryMage
e415580f54 Jit_Integer: Use Common::CountLeadingZeros in cntlzwx 2020-12-28 01:08:50 +00:00
MerryMage
7e9824611e Interpreter_Integer: Use Common::CountLeadingZeros in cntlzwx 2020-12-28 01:08:50 +00:00
MerryMage
d695fcb126 BitUtils: Add CountLeadingZeros 2020-12-27 22:56:43 +00:00
Léo Lam
4705af59c6
Merge pull request #9355 from JosJuice/perfmon
Call UpdatePerformanceMonitor when needed
2020-12-27 16:13:36 +01:00
MerryMage
73b6166f18 Jit_Integer: rlwinmx: Use BEXTR where possible 2020-12-27 15:08:45 +00:00
MerryMage
11643ee2f0 Jit_Integer: rlwinmx: Generalize byte/word extract plus shift case 2020-12-27 14:43:51 +00:00
JosJuice
74ba993b4a
Merge pull request #9364 from MerryMage/AndWithMask
Jit_Integer: Add trivial AndWithMask cases
2020-12-27 12:45:34 +01:00
Lioncash
5f65bad68c DSP: Migrate code that modifies m_dsp into SDSP itself
Localizes code that modifies m_dsp into the struct itself. This reduces
the overal coupling between DSPCore and SDSP by reducing access to its
member variables.

This commit is only code movement and has no functional changes.
2020-12-27 06:38:23 -05:00
Lioncash
7d1bd565a6 DSP: Eliminate most global state
An unfortunately large single commit that deglobalizes the DSP code.
(which I'm very sorry about).

This would have otherwise been extremely difficult to separate due to
extensive use of the globals in very coupling ways that would result in
more scaffolding to work around than is worth it.

Aside from the video code, I believe only the DSP code is the hairiest
to deal with in terms of globals, so I guess it's best to get this dealt
with right off the bat.

A summary of what this commit does:
  - Turns the DSPInterpreter into its own class
    This is the most involved portion of this change.
    The bulk of the changes are turning non-member functions into member
    functions that would be situated into the Interpreter class.

  - Eliminates all usages to globals within DSPCore.
    This generally involves turning a lot of non-member functions into
    member functions that are either situated within SDSP or DSPCore.

  - Discards DSPDebugInterface (it wasn't hooked up to anything,
    and for the sake of eliminating global state, I'd rather get rid of
    it than think up ways for this class to be integrated with
    everything else.

  - Readjusts the DSP JIT to handle calling out to member functions.
    In most cases, this just means wrapping respective member function
    calles into thunk functions.

Surprisingly, this doesn't even make use of the introduced System class.
It was possible all along to do this without it. We can house everything
within the DSPLLE class, which is quite nice =)
2020-12-27 06:38:02 -05:00
Léo Lam
2917af03ec
Merge pull request #9362 from iwubcode/freelook_fix_crash
VideoCommon: Fix crash that occurs on loading a fifo log when Free Look is enabled
2020-12-27 11:37:50 +01:00
MerryMage
bea6a86893 Jit_Integer: Add trivial AndWithMask cases
Add cases to handle all one and all zero masks.
2020-12-27 00:18:06 +00:00
MerryMage
946e1b9054 Jit_Integer: Missed AndWithMask in rlwimix 2020-12-26 23:33:33 +00:00
iwubcode
16dc2fa379 VideoCommon: Fix crash that occurs on loading a fifo log due to uninitialized Free Look control type 2020-12-26 17:26:21 -06:00
MerryMage
e1024fc6ba Jit_Integer: Use RORX where possible 2020-12-26 23:00:04 +00:00
JosJuice
ce599f9f46
Merge pull request #9359 from leoetlino/gdbstub-on
Fix GDBStub build and build it by default
2020-12-26 12:02:36 +01:00
Léo Lam
dcc313fd96
Merge pull request #9346 from Sintendo/jitarm64ub
JitArm64: Fix signed bitwise left shift UB
2020-12-26 11:56:33 +01:00
Léo Lam
d2f9991b0f
Merge pull request #9360 from Minty-Meeo/osreport-split
Split OSREPORT logging type
2020-12-26 11:41:18 +01:00
Sintendo
67d2fa11f1 Jit64: srawx - Handle constant zero input
Shifting zero by any amount always gives zero.

Before:
41 B9 00 00 00 00    mov         r9d,0
41 8B CF             mov         ecx,r15d
49 C1 E1 20          shl         r9,20h
49 D3 F9             sar         r9,cl
49 C1 E9 20          shr         r9,20h

After:
Nothing, register is set to constant zero.

Before:
41 B8 00 00 00 00    mov         r8d,0
41 8B CF             mov         ecx,r15d
49 C1 E0 20          shl         r8,20h
49 D3 F8             sar         r8,cl
41 8B C0             mov         eax,r8d
49 C1 E8 20          shr         r8,20h
44 85 C0             test        eax,r8d
0F 95 45 58          setne       byte ptr [rbp+58h]

After:
C6 45 58 00          mov         byte ptr [rbp+58h],0

Occurs a bunch of times in Super Mario Sunshine. Since this is an
arithmetic shift a similar optimization can be done for constant -1
(0xFFFFFFFF), but I couldn't find any game where this happens.
2020-12-25 19:30:51 +01:00
Sintendo
10d65519f9 Jit64: slwx - Handle constant zero input
Shifting zero by any amount always gives zero.

Before:
41 BF 00 00 00 00    mov         r15d,0
8B CF                mov         ecx,edi
49 D3 E7             shl         r15,cl
45 8B FF             mov         r15d,r15d

After:
Nothing, register is set to constant zero.

All games I've tried hit this optimization on launch. In Soul Calibur II
it occurs very frequently during gameplay.
2020-12-25 19:30:51 +01:00
Sintendo
1a52fdf7e3 Jit64: rlwnmx - Optimize rotate by constant
Only removes the scratch register and a MOV, but hey.

Before:
B9 02 00 00 00       mov         ecx,2
41 8B F5             mov         esi,r13d
D3 C6                rol         esi,cl
83 E6 01             and         esi,1

After:
41 8B F5             mov         esi,r13d
C1 C6 02             rol         esi,2
83 E6 01             and         esi,1
2020-12-25 19:30:51 +01:00
Sintendo
cb70d5ee4f Jit64: srawix - Handle constant input register
Much like we did for srawx. This was already implemented on JitArm64.

Before:
B8 00 00 00 00       mov         eax,0
8B F0                mov         esi,eax
C1 E8 1F             shr         eax,1Fh
23 C6                and         eax,esi
D1 FE                sar         esi,1
88 45 58             mov         byte ptr [rbp+58h],al

After:
C6 45 58 00          mov         byte ptr [rbp+58h],0
2020-12-25 19:30:51 +01:00
Sintendo
8ac40162da Jit64: srawx - Handle constant input registers
If both input registers hold known values at compile time, we can just
calculate the result on the spot.

Code has mostly been copied from JitArm64 where it had already been implemented.

Before:
BF FF FF FF FF       mov         edi,0FFFFFFFFh
8B C7                mov         eax,edi
C1 FF 10             sar         edi,10h
C1 E0 10             shl         eax,10h
85 F8                test        eax,edi
0F 95 45 58          setne       byte ptr [rbp+58h]

After:
C6 45 58 01          mov         byte ptr [rbp+58h],1
2020-12-25 19:30:51 +01:00
Sintendo
b968120f8a Jit64: srawx - Optimize shift by constant
More efficient code can be generated if the shift amount is known at
compile time. We can once again take advantage of shifts with the shift
amount in an 8-bit immediate to eliminate ECX as a scratch register,
reducing register pressure and removing the occasional spill. We can
also do 32-bit shifts instead of 64-bit operations.

We recognize four distinct cases:

- The special case where we're dealing with the PowerPC's quirky shift
  amount masking. If the shift amount is a number from 32 to 63, all
  bits are shifted out and the result it either all zeroes or all ones.

Before:
B9 F0 FF FF FF       mov         ecx,0FFFFFFF0h
8B F7                mov         esi,edi
48 C1 E6 20          shl         rsi,20h
48 D3 FE             sar         rsi,cl
8B C6                mov         eax,esi
48 C1 EE 20          shr         rsi,20h
85 F0                test        eax,esi
0F 95 45 58          setne       byte ptr [rbp+58h]

After:
8B F7                mov         esi,edi
C1 FE 1F             sar         esi,1Fh
0F 95 45 58          setne       byte ptr [rbp+58h]

- The shift amount is zero. Not calculation needs to be done, just clear
  the carry flag.

Before:
B9 00 00 00 00       mov         ecx,0
49 C1 E5 20          shl         r13,20h
49 D3 FD             sar         r13,cl
41 8B C5             mov         eax,r13d
49 C1 ED 20          shr         r13,20h
44 85 E8             test        eax,r13d
0F 95 45 58          setne       byte ptr [rbp+58h]

After:
C6 45 58 00          mov         byte ptr [rbp+58h],0

- The carry flag doesn't need to be computed. Just do the arithmetic
  shift.

Before:
B9 02 00 00 00       mov         ecx,2
48 C1 E7 20          shl         rdi,20h
48 D3 FF             sar         rdi,cl
48 C1 EF 20          shr         rdi,20h

After:
C1 FF 02             sar         edi,2

- The carry flag must be computed. In addition to the arithmetic shift,
  we do a shift to the left and and them together to know if any ones
  were shifted out. It's still better than before, because we can do
  32-bit shifts.

Before:
B9 02 00 00 00       mov         ecx,2
49 C1 E5 20          shl         r13,20h
49 D3 FD             sar         r13,cl
41 8B C5             mov         eax,r13d
49 C1 ED 20          shr         r13,20h
44 85 E8             test        eax,r13d
0F 95 45 58          setne       byte ptr [rbp+58h]

After:
41 8B C5             mov         eax,r13d
41 C1 FD 02          sar         r13d,2
C1 E0 1E             shl         eax,1Eh
44 85 E8             test        eax,r13d
0F 95 45 58          setne       byte ptr [rbp+58h]
2020-12-25 19:30:51 +01:00
Sintendo
17dc870847 Jit64: slwx - Optimize shift by constant
More efficient code can be generated if the shift amount is known at
compile time. Similar optimizations were present in JitArm64 already,
but were missing in Jit64.

- By using an 8-bit immediate we can eliminate the need for ECX as a
  scratch register, thereby reducing register pressure and occasionally
  eliminating a spill.

Before:
B9 18 00 00 00       mov         ecx,18h
41 8B F7             mov         esi,r15d
48 D3 E6             shl         rsi,cl
8B F6                mov         esi,esi

After:
41 8B CF             mov         ecx,r15d
C1 E1 18             shl         ecx,18h

- PowerPC has strange shift amount masking behavior which is emulated
  using 64-bit shifts, even though we only care about a 32-bit result.
  If the shift amount is known, we can handle this special case
  separately, and use 32-bit shift instructions otherwise. We also no
  longer need to clear the upper 32 bits of the register.

Before:
BE F8 FF FF FF       mov         esi,0FFFFFFF8h
8B CE                mov         ecx,esi
41 8B F4             mov         esi,r12d
48 D3 E6             shl         rsi,cl
8B F6                mov         esi,esi

After:
Nothing, register is set to constant zero.

- A shift by zero becomes a simple MOV.

Before:
BE 00 00 00 00       mov         esi,0
8B CE                mov         ecx,esi
41 8B F3             mov         esi,r11d
48 D3 E6             shl         rsi,cl
8B F6                mov         esi,esi

After:
41 8B FB             mov         edi,r11d
2020-12-25 19:30:51 +01:00
Sintendo
17db359979 Jit64: srwx - Optimize shift by constant
More efficient code can be generated if the shift amount is known at
compile time. Similar optimizations were present in JitArm64 already,
but were missing in Jit64.

- By using an 8-bit immediate we can eliminate the need for ECX as a
  scratch register, thereby reducing register pressure and occasionally
  eliminating a spill.

Before:
B9 18 00 00 00       mov         ecx,18h
45 8B C1             mov         r8d,r9d
49 D3 E8             shr         r8,cl

After:
45 8B C1             mov         r8d,r9d
41 C1 E8 18          shr         r8d,18h

- PowerPC has strange shift amount masking behavior which is emulated
  using 64-bit shifts, even though we only care about a 32-bit result.
  If the shift amount is known, we can handle this special case
  separately, and use 32-bit shift instructions otherwise.

Before:
B9 F8 FF FF FF       mov         ecx,0FFFFFFF8h
45 8B C1             mov         r8d,r9d
49 D3 E8             shr         r8,cl

After:
Nothing, register is set to constant zero.

- A shift by zero becomes a simple MOV.

Before:
B9 00 00 00 00       mov         ecx,0
45 8B C1             mov         r8d,r9d
49 D3 E8             shr         r8,cl

After:
45 8B C1             mov         r8d,r9d
2020-12-25 19:30:51 +01:00
Sintendo
2e4e2ad1ff Jit64: subfic - Handle constants
Occurs surprisingly often. Prevents generating silly code like this:

BE 03 00 00 00       mov         esi,3
83 EE 08             sub         esi,8
0F 93 45 58          setae       byte ptr [rbp+58h]
2020-12-25 19:30:51 +01:00
Minty-Meeo
b430d66cdc Split OSREPORT logging type
The enumerated LOG_TYPE "OSREPORT" is currently used in both EXI_DeviceIPL.cpp and HLE_OS.cpp.  In many games, the multitude of game functions detected by HLE_OS.cpp for OSREPORT logging results in poor log readability.  This Pull Request remedies that by adding a new enumerated LOG_TYPE "OSREPORT_HLE" for log usage in HLE_OS.cpp.

In the future, further changing how logging in HLE_OS.cpp works may be desirable.  As it is, game functions are detected that send a single character to the log.  This is a major source of poor readability.
2020-12-24 23:38:59 -06:00
Léo Lam
ae187818f5
PowerPC: Fix GDBStub build 2020-12-25 01:15:31 +01:00
iwubcode
c7b24d6213 VideoCommon: Update active config when we check for config changes, this ensures Free Look settings are copied at the start of the frame. Also update the camera's controller type at this time 2020-12-24 13:51:46 -06:00
iwubcode
a893c25b01 Core: Refresh the Free Look configuration when Free Look is initialized, ensuring that the configuration updates appropriately with any changes 2020-12-24 13:49:25 -06:00
iwubcode
b4c41adac4 Core: Only respond to Free Look controller buttons when the camera is active 2020-12-24 13:49:25 -06:00
iwubcode
b9d9b27a81 DolphinQt: Only trigger Free Look mouse movement when the Free Look camera is active 2020-12-24 13:49:25 -06:00
iwubcode
bcf63c463b VideoCommon: Add 'Active' state to FreelookCamera to future proof if we ever add multiple cameras 2020-12-24 13:49:25 -06:00
iwubcode
a37fd8c5d9 VideoCommon: Update Free Look camera with settings change... 2020-12-24 13:49:25 -06:00
iwubcode
670f34af60 Core: Update state to account for save system change 2020-12-24 13:49:25 -06:00
iwubcode
9bd4e0939e DolphinQt: Update mapping window device to use expanding size policy 2020-12-24 13:49:25 -06:00
iwubcode
9a744ab25b DolphinQt: Move Free Look out of Graphics/Hotkey and into its own configuration window. Launched from a new menu option - "Free Look Settings". The HotKeyScheduler still calls the Free Look functionality to reduce the total number of threads 2020-12-24 13:49:25 -06:00
iwubcode
9ac6090c9a Core: Add Free Look controllers that are initialized at boot 2020-12-24 13:49:25 -06:00
iwubcode
27acba620c Core: Add new Free Look settings and config 2020-12-24 13:49:25 -06:00
iwubcode
f6ab9a9b6f Core / VideoCommon: Remove old Free Look config 2020-12-24 13:49:25 -06:00
iwubcode
e7ac095ba1 HotkeyManager: Remove Free Look functionality in preparation for replacement 2020-12-24 13:48:38 -06:00
iwubcode
d5bc209eb6 VideoCommon: Change 'Zoom' to 'MoveForward' since it really isn't a zoom 2020-12-24 13:48:38 -06:00
iwubcode
cb6ae6a4b1 VideoCommon: Add speed to Free Look camera 2020-12-24 13:48:38 -06:00
JosJuice
8f475371b9 JitArm64: Call UpdatePerformanceMonitor 2020-12-24 16:23:24 +01:00
JosJuice
8c0f32e6be Interpreter: Call UpdatePerformanceMonitor 2020-12-23 17:34:47 +01:00
JosJuice
2dcd0b248f CachedInterpreter: Call UpdatePerformanceMonitor 2020-12-23 17:34:32 +01:00
JosJuice
f8f3548ca9 CoreTiming: Call UpdatePerformanceMonitor on idle 2020-12-23 17:34:02 +01:00
Markus Wick
1d489b3fd5
Merge pull request #9347 from JosJuice/fpr-utilization
Jit64: Fix FPURegCache::GetRegUtilization
2020-12-21 18:37:03 +01:00
JosJuice
9460467e7c Jit64: Fix FPURegCache::GetRegUtilization
This performance bug was probably a simple copy-paste error.
(The function was identical to GPRRegCache::GetRegUtilization.)
2020-12-21 18:02:43 +01:00
Sintendo
567357e12d JitArm64: srawix - Fix undefined behavior
Signed bitwise left shift invokes UB when shifting a negative value.
2020-12-21 11:05:22 +01:00
Sintendo
97eb616719 JitArm64: srawx - Fix undefined behavior
Signed bitwise left shift invokes UB when shifting a negative value.
2020-12-21 11:01:42 +01:00
LC
4c8ccc63b5
Merge pull request #9345 from MerryMage/analytics
Analytics: Add rarer OSes to analytics
2020-12-20 18:55:34 -05:00
MerryMage
d109451ad5 Analytics: Add rarer OSes to analytics 2020-12-20 22:32:07 +00:00
MerryMage
29fceeb37f MemoryUtil: Use HW_PHYSMEM64 sysctl in MemPhysical
HW_PHYSMEM is deprecated on OpenBSD and only supplies a 32-bit value on NetBSD
2020-12-20 22:25:36 +00:00
JosJuice
2126f62111 Android: Add content provider support to File::ScanDirectoryTree 2020-12-20 13:24:54 +01:00
JosJuice
525268f043 Android: Fix opening games with extensionless URI 2020-12-20 13:24:54 +01:00
JosJuice
a7c05d7e84 Android: Add content provider support to File::FileInfo 2020-12-20 13:24:54 +01:00
JosJuice
99ffee9a0a Android: Add content provider support to File::OpenFStream 2020-12-20 13:24:54 +01:00
Lioncash
142406f337 Core: Add initial System class
Introduces the system class that will eventually contain all relevant
system state, as opposed to everything being distributed all over the
place as global variables.

Throughout the codebase we have code that from its interface-view, does
not actually require its dependencies to be described in the interface,
and we routinely run into issues with initialization where we sometimes
make use of a facility before it's been initialized, which leads to
annoying to debug cases, because the reader needs to run through the
codebase and see what order things get initialized in, and how they're
being used. This is particularly a frequent issue in the video code.

Further, we also have a lot of code that makes use of file-scope
variables (many of which are non-trivial), which must all be default
initialized before the application can actually enter main(). While this
may not be a huge issue in itself, some of these are allocating, which
means that the application may need to use memory that it otherwise
wouldn't need to (e.g. when a game isn't running, this excess memory is
being used).

Being able to wrap all these subsystems into objects would be nicer,
since they can be constructed when they're actually needed. Them being
objects also means we can better express dependencies on subsystems as
types directly in the interface, making them explicit to the reader
instead of a change randomly blowing up, said reader inspecting it, and finding
out that something needed to be initialized beforehand. With the global
turned into a function parameter, the dependency is explicit and they
know just by reading it, that the given subsystem needs to be in a valid
state before calling the function.

For a prior example of an emulator that has moved to this model, see
yuzu, which has been migrated off of global variables all over the place
and replaced with a system instance (which has now reached the stage,
where the singleton can be removed).
2020-12-19 23:22:06 -05:00
LC
5493a86086
Merge pull request #9330 from leoetlino/tapserver-define
EXI_Device: Always define EXIDEVICE_ETHTAPSERVER for consistency
2020-12-19 21:46:01 -05:00
LC
0315ca5e37
Merge pull request #9332 from leoetlino/warning-fixes
Core: Fix various warnings
2020-12-19 21:45:21 -05:00
LC
2097de603c
Merge pull request #9339 from AdmiralCurtiss/utf8-libpng
Common: Write PNGs in two steps to allow Unicode target paths.
2020-12-19 21:43:05 -05:00
Admiral H. Curtiss
5bbd5fce2f Common: Write PNGs in two steps to allow Unicode target paths. 2020-12-20 03:30:17 +01:00
Admiral H. Curtiss
f5170dc69b Common/LinearDiskCache: Handle truncated shadercache files. 2020-12-19 19:09:33 +01:00
Admiral H. Curtiss
e91a347a07 Common/LinearDiskCache: Use unique_ptr instead of new/delete. 2020-12-19 19:09:33 +01:00
iwubcode
e55342ae88 DolphinQt: Fix all instances of <gameid> in AdvancedWidget to use the appropriate html code instead 2020-12-18 22:50:06 -06:00
Léo Lam
0ad2f3da45
Core: Remove ImageWrite and get rid of -Wmissing-declarations warnings 2020-12-16 16:04:19 +01:00
Léo Lam
eafe005672
Fix -Wclass-memaccess warnings
We want to clear/memset the padding bytes, not just each member,
so using assignment or {} initialization is not an option.

To silence the warnings, cast the object pointer to u8* (which is not
undefined behavior) to make it explicit to the compiler that we want
to fill the object representation.
2020-12-16 15:37:43 +01:00
Léo Lam
6018525992
Qt: Fix deprecated use of MidButton
MidButton has been deprecated since Qt 4.7. The replacement is
MiddleButton.
2020-12-16 14:45:11 +01:00
Léo Lam
efdb620783
Qt/Config: Remove unused includes 2020-12-16 14:43:26 +01:00
Léo Lam
c59372dbb0
EXI_Device: Always define EXIDEVICE_ETHTAPSERVER for consistency
This keeps the enum values consistent across platforms in case new
entries are added after EXIDEVICE_ETHTAPSERVER.
2020-12-15 20:49:29 +01:00
Léo Lam
2615da820d
Merge pull request #9157 from jordan-woyak/wm-emu-tilt-wrap-around
WiimoteEmu: Allow tilt to wrap around and simulate full 360 degree rotations.
2020-12-15 03:14:14 +01:00
Jordan Woyak
4bb0a885d0 WiimoteEmu/DolphinQt: Fix tilt indicator for wrapped around angles. 2020-12-14 20:02:49 -06:00
Martin Michelsen
a9486d087f
Add tap-like fake Ethernet network interface for macOS
TunTap has recently become unmaintained, and it seems Apple wants developers to move away from kexts in general. TunTap currently takes some finagling to work on Catalina, and it may not work at all on Big Sur, necessitating a non-kext-based solution. Fortunately, fake Ethernet devices were introduced in Sierra and can be used similarly to tap adapters. This commit adds a new type of BBA interface implementation which uses fake Ethernet devices via tapserver (https://github.com/fuzziqersoftware/tapserver) to communicate with the host. This implementation was tested with PSO Episodes I & II, which can successfully connect to a private server running locally.

This implementation is only available on macOS, since that's the only place it's needed - Windows/Linux/Unix are unaffected by TunTap being deprecated.
2020-12-15 03:01:04 +01:00
Jordan Woyak
fffd005178 WiimoteEmu: Allow tilt to wrap around and simulate full 360 degree rotations. 2020-12-14 19:43:28 -06:00
David Carlier
2c355b81f2
Add NetBSD support 2020-12-15 02:34:25 +01:00
Léo Lam
ed1564515b
Merge pull request #9326 from Subject38/wiimote_deadlock
InputCommon: Fix callback dispatch deadlock
2020-12-15 01:16:59 +01:00
Léo Lam
2c2ec16b53
Merge pull request #9320 from JosJuice/remove-patch-crash
DolphinQt: Fix crash after removing extra patch line
2020-12-15 00:01:07 +01:00
Léo Lam
214ea8ff18
Merge pull request #9328 from AdmiralCurtiss/memory-view-crash
Core/AddressSpace: Return null accessors when no game is running to prevent out-of-bounds memory accesses.
2020-12-14 03:18:45 +01:00
Admiral H. Curtiss
668b8d60c8 Core/AddressSpace: Return null accessors when no game is running to prevent out-of-bounds memory accesses. 2020-12-13 06:21:07 +01:00
Léo Lam
3634508e46
Merge pull request #9311 from JosJuice/config-get-fast-2
Add caching to Config::Info
2020-12-13 03:55:39 +01:00
seth
00ec25d520 InputCommon: Fix callback dispatch deadlock
Make sure m_is_populating_devices is true when a WM_INPUT_DEVICE_CHANGE
event is received directly on the ciface thread, so that callbacks do
not occur while removing devices. This breaks a hold-and-wait deadlock
between the ciface thread and the CPU thread when using emulated
Wiimotes.

Co-authored-by: brainleq <brainleq@users.noreply.github.com>
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
2020-12-13 00:30:27 +00:00
Jordan Woyak
0fa6bde374 HW/WiimoteReal: Drop stale data reports to prevent read queue from filling up and causing input delays. 2020-12-12 12:18:10 -06:00
JosJuice
d8744e6db8 Add caching to Config::Info
The goal of this change is to make Config::Get(const Info<T>&)
fast so that we can use it in hot paths.
2020-12-12 13:58:50 +01:00
JosJuice
3c6ad495b4 DolphinQt: Fix crash after removing extra patch line 2020-12-11 22:13:10 +01:00
JosJuice
633ab2dd7c Store pointers in Config::SYSCONF_SETTINGS
Not strictly necessary, but it reduces memory usage a little,
and the next commit will make copying an Info object slower.
2020-12-11 19:54:16 +01:00
JosJuice
b285991b88 Turn Config::Info into a class with getters 2020-12-11 19:54:16 +01:00
JosJuice
11e8783893 Core: Don't copy default _Enabled sections to user INIs 2020-12-11 15:38:11 +01:00
Léo Lam
7d9276c340
Merge pull request #9317 from JosJuice/default-enabled-codes
GameSettings: Enable compatibility patches by default
2020-12-11 10:40:03 +01:00
Léo Lam
fd5c69deca
Merge pull request #9289 from AdmiralCurtiss/simple-png-api-write
Use Simplified libpng API for writing PNGs.
2020-12-11 10:24:16 +01:00
JosJuice
d77a9ad1b6 Core: Save the disabling of default enabled codes
The previous commit adjusted the code for loading
and this commit adjusts the code for saving.
2020-12-11 10:08:20 +01:00
JosJuice
366cfd0f8c Core: Allow overriding the enabling of a code
If we want to enable codes in the default game INIs,
we should have some way for users to disable them.
This commit accomplishes that by adding a *_Disabled
section corresponding to each *_Enabled section.
2020-12-11 10:02:14 +01:00
Léo Lam
2e63cc8313
Merge pull request #9307 from Dentomologist/add-deleted-file-missing-warning-flag
Add File::Delete and File::DeleteDir warning flags
2020-12-11 02:06:28 +01:00
JMC47
75899b0e11
Merge pull request #9221 from JosJuice/android-saf-sd-card
Android: Use storage access framework for custom SD card paths
2020-12-10 16:32:43 -05:00
JosJuice
c9e83867a1
Merge pull request #9089 from JosJuice/android-orientation-setting
Android: Move orientation setting to main settings screen
2020-12-10 16:17:44 +01:00
Léo Lam
19324e6ed9
Merge pull request #9313 from leoetlino/check-content-hashes
WiiUtils: Check hashes to determine if a title is installed and up-to-date
2020-12-08 15:45:12 +01:00
Markus Wick
3328eb4523
Merge pull request #9293 from JosJuice/jitarm64-stack-pointer
JitArm64: Properly set m_stack_pointer
2020-12-08 07:56:30 +01:00
JosJuice
9f3ad58588 JitArm64: Properly set m_stack_pointer
In order to reach the middle guard (at m_stack_base + GUARD_OFFSET)
before the bottom guard (at m_stack_base), the stack pointer
must start at an address which is higher than the middle guard.
It also didn't make sense that we were allocating memory
and then not using the top part of it.
2020-12-08 01:05:23 +01:00
Markus Wick
1827a0738b
Merge pull request #9299 from JosJuice/jitarm64-downcount
JitArm64: Do downcount immediately before jumping to dispatcher
2020-12-08 00:14:32 +01:00
JosJuice
0cebbb590e JitArm64: Call dispatcher_no_check after CompileExceptionCheck
The flags are not set correctly for a call to the version
of the dispatcher which does have a check. Jit64 uses
dispatcher_no_check here.
2020-12-07 15:08:09 +01:00
Léo Lam
f7d7bbf55f
WiiUtils: Check hashes to determine if a title is installed and up-to-date
Nintendo's official title installation code and ES both only look at
content IDs but we should probably check for content hashes in addition
to checking for IDs for at least two reasons:

1. Some of the installed contents could be corrupted -- this cannot be
   easily detected without checking hashes.

2. Some mod distributors do not bother to update content IDs, which
   means that installing updates from the UI would not actually
   update the installed game. This is confusing for users.

To keep the existing semantic (for IOS especially), the new content
hash checks are opt-in for callers of GetStoredContentsFromTMD.

This commit changes WiiUtils's WAD installation logic to enable
the content hash checks.
2020-12-06 01:53:55 +01:00
Dentomologist
4a55511e18 Add warning flags to File deletion functions
Adds a flag to File::Delete and File::DeleteDir functions to control
whether a console warning is emitted when the file or directory doesn't
exist. The flag is optional and true by default to match current behavior.
2020-12-05 16:13:46 -08:00
Léo Lam
2952f99f69
Merge pull request #9312 from iwubcode/dynamic-input-textures-fix
InputCommon: fix dynamic input textures when host key isn't mapped
2020-12-06 00:46:06 +01:00
iwubcode
39e78ce873 InputCommon: fix dynamic input textures being not generated when the key or device isn't mapped 2020-12-05 17:22:57 -06:00
Léo Lam
d8b9a040ed
Merge pull request #9275 from JosJuice/framedump-boot-time
FrameDump: Start timing at 0 ticks when starting from boot
2020-12-05 23:57:41 +01:00
Dentomologist
c434eefe94 Change File::DeleteDir return value
Makes File::DeleteDir return true when attempting to delete a
nonexistent path.

The purpose of DeleteDir is to ensure the path doesn't exist after the
call, which is better reflected by the new return value. Additionally,
none of the current callers actually check the return value so this
won't break any existing code.
2020-12-03 13:31:53 -08:00
LC
a34823df61
Merge pull request #9306 from JosJuice/recursive-extract
DiscIO: Fix recursive directory extraction
2020-12-03 15:31:00 -05:00
JosJuice
b43f7c85cc DiscIO: Fix recursive directory extraction
https://bugs.dolphin-emu.org/issues/12331
2020-12-03 21:13:53 +01:00
Lioncash
139d4fc76e General: Convert PanicAlerts over to fmt equivalent
Converts lingering panic alert calls over to the fmt-capable ones.
2020-12-02 13:38:33 -05:00
Léo Lam
a5880fa402
Qt: Add missing tr calls for tooltip descriptions 2020-11-30 14:04:08 +01:00
JosJuice
2863b3ff5b JitArm64: Do downcount immediately before jumping to dispatcher
Fixes https://bugs.dolphin-emu.org/issues/12327.

When we started using fmt in CheckExternalExceptions, JitArm64
mysteriously stopped working even though the code path where
fmt was used never was reached. This is because the compiler
added a function prologue and epilogue to set up the stack,
since the code path that used fmt required the use of the stack.

However, the breakage didn't actually have anything to do
with the usage of the stack in itself, but rather with the
compiler's insertion of a stack canary. In the function
epilogue, a cmp instruction was inserted to check that the
stack canary had not been overwritten during the execution
of the function. This cmp instruction overwriting the status
flags ended up having a disastrous side effect once execution
returned to code emitted by JitArm64::WriteExceptionExit.

JitArm64's dispatcher contains a branch to the "do_timing"
code which is intended to be taken if the PPC downcount is
negative. However, the dispatcher doesn't update the status
flags on its own before this conditional branch, but rather
expects the calling code to have set them as a side effect
of DoDownCount. The root cause of our bug was that
JitArm64::WriteExceptionExit was calling DoDownCount before
Check(External)Exceptions instead of after.
2020-11-29 14:01:14 +01:00
Léo Lam
d043c5f81d
Merge pull request #9153 from iwubcode/qt_custom_tooltip
Remove description box in graphics tabs and use custom tooltips instead
2020-11-29 12:37:31 +01:00
Léo Lam
361bf25cf8
Merge pull request #9254 from flagrama/fallback-region-selection
Fallback Region Option
2020-11-29 00:19:15 +01:00
Léo Lam
738e1a6dbb
Merge pull request #9297 from JosJuice/movie-game-id-comparison
Movie: Fix 83b9fef regressions
2020-11-29 00:09:30 +01:00
JosJuice
5642772ec4 Movie: Fix 83b9fef regressions
1. Comparing string_views does not behave the same as strncmp
   in the case where SConfig's game ID is longer than 6 chars.
2. DTMHeader::GetGameID wasn't excluding null bytes for game IDs
   shorter than 6 chars.
3. == was accidentally used instead of !=.
2020-11-28 23:35:55 +01:00
Léo Lam
cf32c4d479
Merge pull request #9296 from JosJuice/issue-12327-workaround
JitArm64: Add a workaround for issue 12327
2020-11-28 22:44:37 +01:00
JosJuice
d2a34fdab7 JitArm64: Add a workaround for issue 12327
This issue is both severe and surprisingly difficult to find
the root cause of, so I think it would make sense to add a simple
hotfix for now. https://bugs.dolphin-emu.org/issues/12327
2020-11-28 22:35:49 +01:00
Vincent Cunningham
db5aec019c
Add Fallback Region to configuration menu
Fallback Region
A user-selected fallback to use instead of the default PAL

This is used for unknown region or region free titles to give them
the ability to force region to use. This replaces the current fallback region
of PAL. This can be useful if a user is trying to play a region free
tilte that is originally NTSC and expects to be run at NTSC speeds. This
may be done when a user attempts to dump a WAD of their own without
understanding the settings they have chosen, or could be an intentional
decision by a developer of a ROM hack that can be injected into a
Virtual Console WAD.

Remove using System Menu region being checked in GetFallbackRegion

Use DiscIO::Region instead of std::String for fallback

Add explanation text for Fallback Region
2020-11-28 15:40:21 -05:00
Léo Lam
c0f7f91507
Core: Fix an assertion that mistakenly uses a fmt format string
Unfortunately, adding a DEBUG_ASSERT_MSG_FMT isn't actually possible
right now because of compiler bugs:
https://github.com/dolphin-emu/dolphin/pull/9284

We could require a newer version of GCC (10) but that would require
updating GCC on the build machines.

For what it's worth, older versions of GCC (8, 9) are broken in
many ways: adding constexpr to some Matrix functions causes GCC 8
to generate bugged code that causes the Wii IR pointer to disappear,
which means that the generated builds are already unusable
(see https://dolp.in/i12324).

Additionally,  we've already had to add workarounds for those versions
in the format macros to fix compilation bugs. This time, it looks like
workarounds won't cut it; even applying the workaround
described in https://github.com/fmtlib/fmt/pull/1580 does not help.
2020-11-28 21:11:27 +01:00
iwubcode
cc837a59d6 Core / DolphinQt: Add ini only option to force low-contrast tooltips 2020-11-28 11:49:14 -06:00
iwubcode
9c204428fe DolphinQt: Add tooltip support to Software Renderer Graphics tab 2020-11-28 11:49:14 -06:00
iwubcode
2bfb8ebf96 DolphinQt: Add tooltip support to Hacks Graphics tab 2020-11-28 11:49:14 -06:00
iwubcode
1673442794 DolphinQt: Add tooltip support to Advanced Graphics tab 2020-11-28 11:49:14 -06:00
iwubcode
d083dae7fd DolphinQt: Add tooltip support to Enhancements Graphics tab 2020-11-28 11:49:14 -06:00
iwubcode
b9eae86704 DolphinQt: Add tooltip support to General Graphics tab 2020-11-28 11:49:14 -06:00
iwubcode
a9271aa167 DolphinQt: Add the ability to show a tooltip for custom graphics controls 2020-11-28 11:49:14 -06:00
iwubcode
af0161cafd DolphinQt: Add generic tooltip controls 2020-11-28 11:49:14 -06:00
iwubcode
613d8b1cba DolphinQt: Remove description box handling from graphics widget and window 2020-11-28 11:49:14 -06:00
iwubcode
c754b02aae DolphinQt: Add BalloonTip which is built off of an internal Qt class. It gives the ability to show a tooltip with an arrow! 2020-11-28 11:49:14 -06:00
Léo Lam
a9845e0a3d
Merge pull request #9191 from sepalani/net-interface
IP/Top: Add Android network interface
2020-11-28 18:22:33 +01:00
Léo Lam
a34f19cb96
Merge pull request #9291 from lioncash/alert-audio
AudioCommon: Convert alerts over to fmt-based variants
2020-11-28 16:33:50 +01:00
JosJuice
d69f243c32 FrameDump: Start timing at 0 ticks when starting from boot 2020-11-27 17:54:08 +01:00
Sepalani
20ebed51bb IP/Top: Add Android network interface 2020-11-27 19:10:28 +04:00
Lioncash
56d233c47c AudioCommon: Convert alerts over to fmt-based variants
Continues the migration over to fmt

Converts two panic alerts into error logs, since they aren't really
things a user can do anything about.
2020-11-27 10:10:11 -05:00
Markus Wick
26302c2257
Merge pull request #9280 from blaahaj/OpenGL-ES-3.1-ARB_shader_storage_buffer_object
Fix bounding box incorrectly disabled on OpenGL ES 3.1, 3.2
2020-11-27 15:56:50 +01:00
Léo Lam
9b03cdf93e
Merge pull request #9101 from sepalani/fix-ip-fallback
IP/Top: Fix fallback IP address
2020-11-27 02:39:15 +01:00
Léo Lam
2a85534805
Merge pull request #9283 from JosJuice/config-get-speedup
Common: Optimize Config::Get
2020-11-27 02:36:33 +01:00
Admiral H. Curtiss
324de7fa02 VideoCommon: Use Common::SavePNG() to write textures. 2020-11-26 23:55:05 +01:00
Admiral H. Curtiss
33c1a5b941 InputCommon: Use Common::SavePNG() to write images. 2020-11-26 23:55:05 +01:00
Admiral H. Curtiss
2de3b12e9d Common: Add SavePNG() function that writes PNGs using the simplified libpng API. 2020-11-26 23:55:05 +01:00
Lioncash
978e5469af Core: Remove commented out logs
Commented out logs shouldn't be kept around, since it makes performing
renames and migrations harder, as tooling generally doesn't inspect
comments.
2020-11-26 07:49:37 -05:00
Lioncash
ffbf3d71f0 Frontends: Migrate logs over to fmt 2020-11-25 21:19:08 -05:00
Léo Lam
4c9ffb58fa
Merge pull request #9250 from Dentomologist/fix-fst-error
Fix file rename errors on Windows
2020-11-26 02:09:30 +01:00
Léo Lam
e00572dd07
Merge pull request #9282 from lioncash/core-log5
Core: Convert logging over to fmt pt.5
2020-11-26 02:06:41 +01:00
Léo Lam
d573ce34d7
Merge pull request #9281 from AdmiralCurtiss/iofile-write-string
IOFile: Replace fprintf with WriteString/fmt.
2020-11-26 01:39:56 +01:00
Léo Lam
3891ac2682
Merge pull request #9232 from AdmiralCurtiss/show-result-value-in-expression-editor
Qt/IOWindow: Show result value in expression editor.
2020-11-26 01:30:12 +01:00
Dentomologist
1734cf55d8 Fix file rename errors on Windows
On Windows, when the Rename function fails to replace an existing file
it will now retry the operation multiple times with increasingly long
delays between attempts.  This fixes transient rename failures.

I've been getting sporadic yet annoyingly frequent errors saying:
'IOS_FS: Failed to rename temporary FST file'
These typically appear on startup but I've also gotten them randomly.

Investigation shows this happens when the Windows ReplaceFile function
returns the error ERROR_UNABLE_TO_REMOVE_REPLACED.  That happens in the
context of using ReplaceFile to perform an atomic file overwrite, which
is required when saving updates to a file to avoid corruption.  The
error mainly happens with the /Wii/fst.bin file but I've seen it
happen with multiple other files as well.

I haven't been able to definitively pin down why the error occurs,
though online discussions suggest antivirus scanning may be a major
culprit.  That said, I've excluded the Dolphin folder from Windows
Defender scans to no avail and don't have any other antivirus running,
so this is likely to be a problem others are experiencing as well.

The number and duration of retry delays is arbitrary but I feel like a
combined second or so in the worst case is an acceptable tradeoff for
the reduction (actually elimination in my experience) of those errors.
This is even more true when you consider the time it takes to read and
dismiss the error dialogs.
2020-11-25 16:12:58 -08:00
Admiral H. Curtiss
11e226a91a Qt/IOWindow: Remove Apply button. 2020-11-26 00:47:37 +01:00
Admiral H. Curtiss
334100509b Qt/IOWindow: Show the current value of the expression. 2020-11-26 00:46:51 +01:00
Admiral H. Curtiss
ddfb8fa404 Qt/IOWindow: Apply expressions immediately so we can query the current value of the expression. 2020-11-26 00:45:31 +01:00
Admiral H. Curtiss
45d4746a5d IOFile: Replace all fprintf string writing with calls to WriteString. 2020-11-25 22:11:21 +01:00
Lioncash
ef75e9acd8 Core: Convert logging over to fmt pt.5
Converts the remaining PowerPC code over to fmt-capable logging.

Now, all that's left to convert over are the lingering remnants within
the frontend code.
2020-11-25 13:23:48 -05:00
JosJuice
2f264c6448 Common: Optimize Config::Get
The way Config::Get works in master, it first calls
Config::GetActiveLayerForConfig which searches for the
setting in all layers, and then calls Config::Layer::Get
which searches for the same setting again within the given
layer. We can remove this second search by combining the
logic of Config::GetActiveLayerForConfig and
Config::Layer::Get into one function.
2020-11-25 16:26:13 +01:00
Admiral H. Curtiss
9c590e215f IOFile: Add WriteString() method to replace fprintf string writing. 2020-11-25 15:41:25 +01:00
Léo Lam
e2a019ae9a
Merge pull request #9276 from lioncash/core-log4
Core: Convert logging over to fmt pt.4
2020-11-25 13:21:23 +01:00
Léo Lam
140daf5960
Merge pull request #9268 from leoetlino/devicememcard-minor-cleanup
EXI_DeviceMemoryCard: Medium cleanup
2020-11-25 10:07:44 +01:00
Léo Lam
12a215c232
Merge pull request #9277 from JosJuice/gles-vertex-uber
Fix vertex ubershader GLES compile errors
2020-11-25 10:04:45 +01:00
Léo Lam
4a21be5d77
Merge pull request #9278 from lioncash/latent
Core: Convert missed log calls over to fmt
2020-11-25 09:58:40 +01:00
blåhaj
bf0fe0281a Fix bounding box incorrectly disabled on OpenGL ES 3.1, 3.2 2020-11-24 21:22:39 +01:00
JosJuice
d01f85cfd8 Add Rock Band 3 MIDI PRO Adapter to known Wii peripherals
Based on info from https://forums.dolphin-emu.org/Thread-emulate-midi-pro-adapter
2020-11-24 14:25:19 +01:00
Lioncash
eedfe2abf1 Core: Convert missed log calls over to fmt 2020-11-23 12:20:02 -05:00
Lioncash
6cd718163f Core: Convert logging over to fmt pt.4
Continues the migration of logging in the Core library. This part
finishes up the remaining log calls within the IOS code.
2020-11-23 11:53:21 -05:00
JosJuice
28c696fa74 Fix vertex ubershader GLES compile errors
Regression from 51724c1.
2020-11-23 11:42:41 +01:00
Léo Lam
b555f0fb93
Merge pull request #9265 from lioncash/core-log3
Core: Convert logging over to fmt pt.3
2020-11-23 02:46:58 +01:00
JosJuice
b53127a1fa
Merge pull request #9274 from JosJuice/av-register-all
FrameDump: Re-add call to av_register_all
2020-11-22 12:45:59 +01:00
Sepalani
79f50cd4fd IP/Top: Fix fallback IP address 2020-11-22 15:34:27 +04:00
Léo Lam
5d9eb8f6ce
Merge pull request #9271 from leoetlino/warnings
Fix several warnings and only enable extra warnings for our own code
2020-11-22 02:04:53 +01:00
JosJuice
118d056410 FrameDump: Re-add call to av_register_all
This was removed in 4902146329.
We still need this for the ffmpeg version we're using on Windows.
2020-11-22 00:11:23 +01:00
Lioncash
cbbf044064 Core: Convert logging over to fmt pt.3
Continues the migration over to fmt up to IOS' ES module.
2020-11-21 05:56:37 -05:00
LC
41b79a66c7
Merge pull request #9270 from leoetlino/dtm-gameid-null
Core/Movie: Fix a likely out-of-bounds read for PanicAlertT
2020-11-21 01:53:15 -05:00
Léo Lam
9efc81ae98
Fix variable shadowing warnings 2020-11-21 02:08:09 +01:00
Léo Lam
7840f61524
Silence "missing switch cases" warnings 2020-11-21 02:08:09 +01:00
Léo Lam
6ab1ab1f12
Fix -Wmaybe-uninitialized warnings 2020-11-21 02:08:09 +01:00
Léo Lam
82f1e6204d
Fix -Wsign-compare warnings 2020-11-21 02:08:09 +01:00
Léo Lam
83b9feff90
Core/Movie: Fix a likely out-of-bounds read for PanicAlertT
gameID isn't null terminated since it is just an std::array<char, 6>
and .data() returns a char* so {fmt} would go way beyond the bounds of
the array when it attempts to determine the length of the string.

The fix is to pass a std::string_view to {fmt}. This commit adds
a GetGameID() function that can also be used to simplify
string comparisons.
2020-11-21 01:30:02 +01:00
Stenzek
d6ce8eef36 Software: Use same logic for colors as hardware backends 2020-11-20 15:54:06 -08:00
Stenzek
51724c1ccd LightingShaderGen: Always calculate lighting for both color channels
Cel-damage depends on lighting being calculated for the first channel
even though there is no color in the vertex format (defaults to the
material color). If lighting for the channel is not enabled, the vertex
will use the default color as before.

The default value of the color is determined by the number of elements in
the vertex format. This fixes the grey cubes in Super Mario Sunshine.

If the color channel count is zero, we set the color to black before the
end of the vertex shader. It's possible that this would be undefined
behavior on hardware if a vertex color index that was greater than the
channel count was used within TEV.
2020-11-20 15:54:04 -08:00
JosJuice
e4ceed2bed Common: Assert that translatable strings use positional arguments
Like PR 9260, but for a different requirement (see PR 9253).
2020-11-20 20:24:30 +01:00
JosJuice
e63b00e562 Fix translatable strings which contain non-positional arguments 2020-11-20 20:24:30 +01:00
Léo Lam
f82145d9dd
EXI_DeviceMemoryCard: Use std::array 2020-11-20 19:41:23 +01:00
Léo Lam
f81062f561
EXI_DeviceMemoryCard: Use enum class for Command 2020-11-20 19:38:07 +01:00
Léo Lam
b2f00be637
EXI_DeviceMemoryCard: Fix member variable names 2020-11-20 19:37:39 +01:00
Léo Lam
1f15119f80
EXI_DeviceMemoryCard: Use override rather than virtual 2020-11-20 19:36:34 +01:00
Léo Lam
279197b278
EXI_DeviceMemoryCard: Use more efficient overload of find_last_of 2020-11-20 19:36:34 +01:00
Léo Lam
4ad88ce2e4
EXI_DeviceMemoryCard: Clean up casts and implicit conversions 2020-11-20 19:36:33 +01:00
Léo Lam
e144d20dd6
EXI_DeviceMemoryCard: Remove unused include 2020-11-20 18:51:16 +01:00
Léo Lam
2631243379
EXI_DeviceMemoryCard: Rename variables to follow our naming conventions 2020-11-20 18:51:16 +01:00
Léo Lam
542c49bab0
Core: Fix invalid lambda captures
PR #9260 made the MsgAlert macros use lambdas so that local
constexpr variables can be added while keeping the ability to
return a boolean from the macros.

Unfortunately, C++17 forbids referring to structured bindings in lambda
captures. This is fixed in P1091R3 but we cannot rely on C++20 yet...
2020-11-20 18:27:56 +01:00
Léo Lam
f45a4a5916
Merge pull request #9263 from lioncash/core-log2
Core: Convert logging over to fmt pt.2
2020-11-20 16:36:47 +01:00
Léo Lam
88cc1b7c8a
DSP: Fix one DEBUG_LOG call 2020-11-20 16:21:05 +01:00
Lioncash
a0f9b041a0 Core: Convert logging over to fmt pt.2
Continues the core migration of logs up to the EXI handling code.
2020-11-20 10:05:44 -05:00
Léo Lam
419dfe4be4
Merge pull request #9260 from leoetlino/fmt-checks
Common/Log: Add compile-time format string checks
2020-11-20 16:05:25 +01:00
Jonathan Marek
a20e69ff51
Vulkan: fix validation error in bSupportsGeometryShaders=false case
In CreateDescriptorSetLayouts(), one less dynamic binding is created when
bSupportsGeometryShaders=false. Reduce the dynamicOffsetCount argument by
one in that case. Avoids this validation error:

Attempting to bind 3 descriptorSets with 2 dynamic descriptors, but
dynamicOffsetCount is 3. It should exactly match the number of dynamic
descriptors. The Vulkan spec states: dynamicOffsetCount must be equal to
the total number of dynamic descriptors in pDescriptorSets

Signed-off-by: Jonathan Marek <jonathan@marek.ca>

[Applied clang-format]
Signed-off-by: Léo Lam <leo@leolam.fr>
2020-11-20 12:23:34 +01:00
Léo Lam
c580a70a12
Merge pull request #9210 from Dentomologist/regions-show-hide-all
DolphinQt: Add Show/Hide All options to gamelist region menu
2020-11-20 11:35:22 +01:00
Dentomologist
7ded075561 DolphinQt: Add Show/Hide All options to gamelist region menu 2020-11-19 20:39:49 -08:00
Léo Lam
7f7fd4d8d3
Merge pull request #9220 from jordan-woyak/ext-crypto
WiimoteEmu: Implement extension encryption edge case.
2020-11-20 02:28:17 +01:00
Léo Lam
bca82bb942
Merge pull request #9239 from altimumdelta/FFDUMP_Separate_Logging
FrameDump Logging: Separate log type and migrate to fmt
2020-11-20 02:21:57 +01:00
Léo Lam
5921a93d71
Merge pull request #9247 from Dentomologist/fix-updater-temporary-folder
Fix updater not always cleaning up temp directory
2020-11-20 02:01:43 +01:00
Léo Lam
eff566b318
Merge pull request #9258 from lioncash/core-log
Core: Convert logging over to fmt pt. 1
2020-11-19 20:32:19 +01:00
Lioncash
958cbf38a4 Core: Convert logging over to fmt pt. 1
Converts up to the DSP-related files for easier reviewing, the rest will
be progressively moved over after this change gets merged.
2020-11-19 14:21:06 -05:00
Léo Lam
e3247b567d
Merge pull request #9185 from Losuc/skipEFBaccessHotkey
Add a Skip EFB Access Hotkey
2020-11-19 17:28:45 +01:00
Léo Lam
dde6090e98
Common/MsgHandler: Add compile-time format string checks 2020-11-19 17:09:24 +01:00
Léo Lam
62eeb05519
Common: Validate the number of {} fields in format strings
Unfortunately, {fmt} allows passing too many arguments to a format call
without raising any runtime or compile-time error [1].

As this is a common source of bugs since we started migrating to {fmt},
this commit adds some custom logic to validate the number of
replacement fields in format strings in addition to {fmt}'s own checks.

[1] https://github.com/fmtlib/fmt/issues/492
2020-11-19 17:09:24 +01:00
Léo Lam
47c91696ee
Common/Log: Check format strings
Helps with catching incorrect format strings.

PanicAlertFmt already uses FMT_STRING and fmt::make_args_checked.
2020-11-19 17:09:24 +01:00
Admiral H. Curtiss
83c235b7cb WiiUtils: Create Wii Shop log files when installing a WAD.
Fixes https://bugs.dolphin-emu.org/issues/12269
2020-11-19 03:26:27 +01:00
Léo Lam
4eecb8fd11
Merge pull request #9248 from lioncash/video-fmt
VideoCommon: Migrate over to fmt
2020-11-18 11:10:48 +01:00
Lioncash
3d9b2aa005 VideoCommon: Migrate over to fmt
Migrates off the printf-based formatting where applicable.
2020-11-17 21:23:58 -05:00
Léo Lam
eb1581bbcc
Merge pull request #9246 from JosJuice/translation-eot
DolphinQt: Don't return 0x04 bytes from tr
2020-11-18 02:31:13 +01:00
Léo Lam
31d7be521c
Merge pull request #7714 from cristian64/avoid_leaking_gamelistmodel
DolphinQt: Avoid leaking the GameListModel instance to gracefully shutdown the GameTracker and prevent a crash on exit
2020-11-18 02:14:51 +01:00
Léo Lam
0339889806
Merge pull request #9251 from sepalani/sockopt
IP/Top: Add missing sockopt
2020-11-18 02:10:37 +01:00
JosJuice
52c615f1b1 Remove a redundant i18n comment 2020-11-17 18:23:27 +01:00
JosJuice
9a01c3fb9f Use positional arguments in all translatable fmt strings
We want to use positional arguments in translatable strings
that have more than one argument so that translators can change
the order of them, but the question is: Should we also use
positional arguments in translatable strings with only one
argument? I think it makes most sense that way, partially
so that translators don't even have to be aware of the
non-positional syntax and partially because "translatable
strings use positional arguments" is an easier rule for us
to remember than "transitional strings which have more than
one argument use positional arguments". But let me know if
you have a different opinion.
2020-11-16 13:28:11 +01:00
Dentomologist
6dcf7643e5 Fix updater not always cleaning up temp directory
Updater was only deleting TempUpdate folder when an error occured.
2020-11-13 12:25:53 -08:00
JosJuice
53da97208a DolphinQt: Don't return 0x04 bytes from tr
tr calls with more than one argument would have a 0x04 byte
in the returned string when no translation was found
(which always is the case when using Dolphin in English).
2020-11-12 19:44:44 +01:00
Léo Lam
8a621c2d5e
Merge pull request #9236 from lioncash/log-backend
VideoBackends: Migrate logging over to fmt
2020-11-12 14:51:28 +01:00
Léo Lam
ec5313fe24
Merge pull request #9204 from fbastos1/master
fix emulator issue #12139
2020-11-12 14:43:35 +01:00
Lioncash
d8e1921b57 InputCommon: Migrate over to fmt-capable panic alerts
Continues the migration over to fmt.
2020-11-12 02:29:26 -05:00
Lioncash
689eec5304 DiscIO: Make use of fmt-capable panic alerts
Migrates the DiscIO code over to fmt.
2020-11-11 01:09:42 -05:00
LC
ae83685b0b
Merge pull request #9237 from lioncash/msghandler
Common/MsgHandler: Add fmt-capable variants of the alert macros
2020-11-11 00:34:45 -05:00
altimumdelta
f44b13ffcd FrameDump Logging: Separate log type and migrate to fmt 2020-11-10 17:17:43 +01:00
LC
0a2564a89d
Merge pull request #9234 from lioncash/rename-fmt
ShaderGenCommon: Rename WriteFmt() to Write()
2020-11-09 22:08:42 -05:00
JosJuice
ff4b7ca7f4 Remove Android-specific settings from UISettings.cpp
They are unused, since there is no C++ code that touches
these settings. See the discussion in PR 9152, which is
a PR that adds a lot more Android-specific settings.
2020-11-09 21:41:00 +01:00
JosJuice
e260f9815c Android: Move orientation setting to main settings screen
I moved it from the main settings screen to the in-game menu
in PR 8439 so that it could be changed while a game is running,
but now that the main settings can be accessed while a game is
running, there's no reason to not put it in the main settings.

https://bugs.dolphin-emu.org/issues/12067
2020-11-09 21:41:00 +01:00
Lioncash
7b21f7af2e Common/MsgHandler: Add fmt-capable variants of the alert macros
Adds an interface that uses fmt under the hood, which is much more
flexible than printf, particularly for localization purposes, given fmt
supports positional formatters in a cross-platform manner out of the box
with no configuration necessary.
2020-11-09 08:48:17 -05:00
LC
43e2f0e88f
Merge pull request #9235 from lioncash/ui-log
UICommon: Migrate logging over to fmt
2020-11-09 07:28:28 -05:00
JosJuice
ee52f465b1 Android: Fix rotating EmulationActivity after boot fails
Time for yet another new iteration of working around the
"surface destruction during boot" problem...
This time, the strategy is to use a mutex in MainAndroid.cpp.
2020-11-09 10:38:49 +01:00
Lioncash
21dd7a8ebb Vulkan: Migrate logging over to fmt
Migrates the vulkan backend over to the fmt-capable logger.
2020-11-09 03:26:16 -05:00
Lioncash
23a8baa605 Software: Migrate logging over to fmt
Migrates the software backend over to the fmt-capable logger.
2020-11-09 03:14:01 -05:00
Lioncash
413d64e7fc OpenGL: Migrate logging over to fmt
Migrates over to the fmt-capable logger.
2020-11-09 03:09:09 -05:00
Lioncash
4d9a7c7a54 D3DCommon: Migrate logging over to fmt
Migrates the logging over to the fmt-capable logger.
2020-11-09 03:03:26 -05:00
Lioncash
2345d5f98d D3D: Migrate logging over to fmt
Migrates the logging over to the fmt-capable logger.
2020-11-09 03:02:00 -05:00
Lioncash
d7834bd6b4 D3D12: Migrate logging over to fmt
Migrates the logging over to the fmt-capable logger.
2020-11-09 02:59:51 -05:00
Lioncash
52f2fadb36 UICommon: Migrate logging over to fmt
A very simple change that continues the migration of the logs over to
fmt.
2020-11-09 02:39:55 -05:00
Lioncash
a5b28f1f07 ShaderGenCommon: Rename WriteFmt() to Write()
Now that we've converted all of the shader generators over to using fmt,
we can drop the old Write() member function and perform a rename
operation on the WriteFmt() to turn it into the new Write() function.

All changes within this are the removal of a <cstdarg> header, since the
previous printf-based Write() required it, and renaming. No functional
changes are made at all.
2020-11-09 02:31:49 -05:00
LC
add2b44eb7
Merge pull request #9197 from lioncash/uber-pixel
UberShaderPixel: Migrate over to fmt
2020-11-09 02:13:57 -05:00
altimumdelta
77dc289517 CPUDetect: Indicate slow PDEP/PEXT only for Zen1/+/2 (Family 23) 2020-11-08 14:27:24 +01:00
Admiral H. Curtiss
cae741584b InputCommon: Return error, if any, from ControlReference::SetExpression(). 2020-11-08 01:04:33 +01:00
JosJuice
70df5446d3 Android: Make the handling of SAF open modes more robust 2020-11-06 17:40:03 +01:00
JosJuice
a348efe947 Fix dereferencing nullptr BootParameters 2020-11-06 09:34:53 +01:00
Sepalani
4e32ec35a7 IP/Top: Add missing sockopt 2020-11-05 19:51:20 +04:00
JosJuice
28aa04312c Common/LinearDiskCache: Replace std::fstream with File::IOFile
File::IOFile is better suited to this type of task.
Split out from a future PR.
2020-11-05 00:31:17 +01:00
Jordan Woyak
a9c643e698 WiimoteEmu: Implement extension encryption edge case. 2020-11-04 15:22:06 -06:00
Markus Wick
069840fb7e
Merge pull request #9218 from JosJuice/aarch64-hle-hooks
JitArm64: Implement HLE function hooking
2020-11-04 10:29:37 +01:00
Jordan Woyak
3cd4c56645
Merge pull request #9203 from nick-michael/virtual-notches
Logic & UI for "Virtual Notches"
2020-11-03 17:10:54 -06:00
Nick Michael
55dd3d7337 Virtual Notch settings and UI for octagonal stick 2020-11-03 22:06:27 +00:00
Jordan Woyak
d2f80a4595
Merge pull request #9138 from martymac/VK_NULL_HANDLE-fix
Fix build on FreeBSD i386 - nullptr vs VK_NULL_HANDLE
2020-11-03 08:28:11 -06:00
JosJuice
fe986b6161 JitArm64: Implement HLE function hooking
Closely based on the x86-64 implementation.
Fixes https://bugs.dolphin-emu.org/issues/10965.
2020-11-03 09:48:22 +01:00
Ganael Laplanche
d456e2e391 Resolve VkDeviceMemory/nullptr type mismatch to fix build on FreeBSD i386 2020-11-03 07:47:43 +01:00
Léo Lam
cbaf8f82ec
Merge pull request #9214 from OatmealDome/macos-bind
Top: Set port when connecting a socket to find the default interface
2020-11-02 22:17:38 +01:00
Léo Lam
5b9cd83137
Merge pull request #8758 from sepalani/so-shutdown
Socket: Abort pending operations on shutdown
2020-11-02 21:52:28 +01:00
OatmealDome
dd688f4eb0 Top: Set port when connecting a socket to find the default interface 2020-11-02 13:27:38 -05:00
JosJuice
4bb0ac918b Simplify Arm64GPRCache::Flush
`flush = cond ? flush : true` makes little sense when `flush`
is always true at that point.
2020-11-01 19:48:57 +01:00
Losucaru
407ef8b596 Add a Skip EFB Access from CPU Hotkey 2020-10-29 21:03:06 -03:00
Thomas May
72e1131123
Common: Fix logger related crash when HTTP response is empty 2020-10-29 21:20:59 +01:00
Felipe
d7fa75ef64 modify file export to create folder in OS when explicitly extracting a directory 2020-10-29 15:20:46 -04:00
LC
fe727ed1d0
Merge pull request #9194 from leoetlino/offsetof-warning
IOS/USB: Fix -Winvalid-offset warnings
2020-10-29 12:53:11 -04:00
LC
752b1048df
Merge pull request #9196 from Dentomologist/update-register-view-debug-font
DolphinQt: Update register view font when Debug Font changes
2020-10-29 12:52:02 -04:00
Dentomologist
5fe7528855 DolphinQt: Update register view font when Debug Font changes
Resolves https://bugs.dolphin-emu.org/issues/12261

Co-authored-by: Léo Lam <leo@leolam.fr>
2020-10-29 09:31:14 -07:00
JMC47
6a3a71cfd7
Merge pull request #9141 from Techjar/but-for-how-long
Re-enable GPU Texture Decoding under MoltenVK
2020-10-29 01:22:13 -04:00
Sergei Trofimovich
447de580ab Source/Core/Common/Config/Config.cpp: add missing <mutex> include
Noticed missing include as a build failure on gcc-11:

```
[ 15%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Config/Config.cpp.o
Source/Core/Common/Config/Config.cpp:23:24:
  error: 'unique_lock' in namespace 'std' does not name a template type
    23 | using WriteLock = std::unique_lock<std::shared_mutex>;
        |                        ^~~~~~~~~~~
Source/Core/Common/Config/Config.cpp:11:1:
  note: 'std::unique_lock' is defined in header '<mutex>';
  did you forget to '#include <mutex>'?
```

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2020-10-28 08:53:15 +00:00
Lioncash
dc72edf0e2 UberShaderPixel: Migrate over to fmt
Completes the migration over to using the fmt-formatting WriteFmt
function. The next PR will rename all usages of WriteFmt, while
simultaneously getting rid of the old printf code.
2020-10-27 13:25:11 -04:00
Shawn Hoffman
2ebe02fd1b dolphinqt msbuild: do not moc TASSlider.h 2020-10-26 18:37:46 -07:00
Léo Lam
2d921da860
FileUtil: Fix format string
Fixes a recent regression: https://github.com/dolphin-emu/dolphin/pull/9187#issuecomment-716835091
2020-10-26 22:47:56 +01:00
Léo Lam
d2a2ec870d
Merge pull request #9171 from lioncash/pixel
PixelShaderGen: Migrate over to fmt
2020-10-26 20:35:47 +01:00
Léo Lam
07e6d008bd
Merge pull request #9187 from lioncash/commonlog
Common: Migrate logging to fmt
2020-10-26 19:01:26 +01:00
Léo Lam
7f66de062c
Merge pull request #9188 from jordan-woyak/stop-caring-about-old-avcodec-versions
VideoCommon/FrameDump: Remove code for older versions of avcodec.
2020-10-26 18:55:48 +01:00
Léo Lam
aae72c3e75
Merge pull request #9195 from jordan-woyak/mem-warning
DolphinQt: Add a warning to the MEM1/MEM2 override setting description.
2020-10-26 18:49:33 +01:00
Léo Lam
23c9179fb6
Merge pull request #9071 from orbea/cmake
cmake: Silence warnings.
2020-10-26 18:48:42 +01:00
Jordan Woyak
15914b749c DolphinQt: Add a warning to the MEM1/MEM2 override setting description. 2020-10-25 12:54:42 -05:00
Léo Lam
8b9a0c9e09
IOS/USB: Fix -Winvalid-offset warnings
Unfortunately, compilers will issue warnings when using offsetof with
non-standard layout types even when offsetof actually works fine here;
just having a virtual function is enough to trigger the warning...

Let's just stop the scan threads explicitly in destructors instead of
relying on member destruction order.
2020-10-24 14:02:38 +02:00
iwubcode
8a4773bc91 VideoCommon: update vcproj file to set HAS_OPENGL 2020-10-23 17:08:53 -05:00
iwubcode
a34745926e VideoCommon: remove HAS_OPENGL from VideoBackendBase 2020-10-23 17:00:32 -05:00
iwubcode
272717b3f4 VideoCommon: update vcproj file to set HAS_VULKAN 2020-10-23 17:00:05 -05:00
iwubcode
d12380f26b VideoCommon: rename USE_VULKAN to HAS_VULKAN in VideoBackendBase 2020-10-23 16:59:22 -05:00
Lioncash
5de2244acf PixelShaderGen: Migrate over to fmt
Continues the migration of the shader generators over to fmt.

After this, all that remains in the Ubershader pixel generator.
2020-10-23 17:17:55 -04:00
Jordan Woyak
4902146329 VideoCommon/FrameDump: Remove code for older versions of avcodec. 2020-10-23 14:43:50 -05:00
Lioncash
4e8df93f41 Common: Migrate logging to fmt
Continues the migration of our code over to the fmt logger.
2020-10-23 14:58:03 -04:00
Léo Lam
285b926e92
Merge pull request #8782 from Pokechu22/missing-serial-version-data
Explain how to fix "Serial and/or version data is missing"
2020-10-23 20:44:06 +02:00
Léo Lam
e89db89d9e
Merge pull request #9098 from jordan-woyak/wm-report-duplication
WiimoteReal: Only duplicate data reports when speaker data is enabled.
2020-10-23 20:38:25 +02:00
mazes-80
f375ee72a2
CMake: Add option to enable/disable Vulkan video backend 2020-10-23 20:14:46 +02:00
JosJuice
908d6f8fa0
Merge pull request #9179 from leoetlino/available-video-backends
VideoCommon: Get rid of the global g_available_video_backends
2020-10-23 20:02:21 +02:00
LC
4f5c8bb42a
Merge pull request #9177 from JosJuice/android-savestate-time
Android: Show how long ago each savestate was created
2020-10-23 13:59:43 -04:00
Léo Lam
ce6eda7c71
Merge pull request #9184 from lioncash/inputlog
InputCommon: Migrate logging over to fmt
2020-10-23 19:59:22 +02:00
LC
87e4a0785a
Merge pull request #9182 from jordan-woyak/frame-dump-cleanup
VideoCommon: FrameDump fixes/cleanups.
2020-10-23 13:59:00 -04:00
LC
c42b80a156
Merge pull request #9186 from JosJuice/rtl-pot
DolphinQt: Move QT_LAYOUT_DIRECTION string to qt-strings.pot
2020-10-23 13:37:10 -04:00
Lioncash
a5e1415e74 InputCommon: Migrate logging over to fmt
Continues the migration of the logging calls over to the fmt capable
ones.
2020-10-23 13:16:18 -04:00
JosJuice
7841fb7337 DolphinQt: Move QT_LAYOUT_DIRECTION string to qt-strings.pot
Now that we have a .pot file specifically for strings from
Qt itself, it makes sense to move this into it.
2020-10-23 18:45:35 +02:00
Léo Lam
64f7a4448b
Merge pull request #9178 from lioncash/disclog
DiscIO: Migrate logging over to fmt
2020-10-22 22:07:53 +02:00
Lioncash
e93fbb7c5e DiscIO: Migrate logging over to fmt
Eliminates quite a bit of the PRI* macros used for handling 64-bit
values.
2020-10-22 15:41:42 -04:00
Jordan Woyak
e8bb88c2a1 DolphinQt: Don't call UICommon::InhibitScreenSaver if already in desired state. 2020-10-22 13:19:01 -05:00
Jordan Woyak
4807a5e157 VideoCommon: FrameDump fixes/cleanups. 2020-10-22 12:17:26 -05:00
Léo Lam
89b01cd6d3
Merge pull request #9169 from lioncash/uber-vert
UberShaderVertex: Migrate over to fmt
2020-10-22 01:21:31 +02:00
Léo Lam
08f9ed043b
Merge pull request #8846 from nyanpasu64/fix-cmake-zlib
Fix Windows CMake builds with shared zlib
2020-10-22 01:11:27 +02:00
Léo Lam
96ce3e5f49
Merge pull request #9176 from lioncash/audiofmt
AudioCommon: Migrate logging over to fmt
2020-10-22 01:03:16 +02:00
Pokechu22
88bc32b638 Explain how to fix "Serial and/or version data is missing" 2020-10-21 15:39:26 -07:00
Lioncash
dcb0c910af Common/Matrix: Allow TVec classes to be used in constexpr contexts
Much of these classes are operating on integral types and are pretty
standard behavior as far as vectors go. Some member functions can be
made constexpr to make them more flexible and allow them to be used in
constexpr contexts.
2020-10-21 17:44:02 -04:00
LC
de96fe0860
Merge pull request #9162 from jordan-woyak/quaternion
Replace stateful rotational matrices with quaternions.
2020-10-21 17:34:11 -04:00
Léo Lam
e553197c67
Merge pull request #8880 from AdmiralCurtiss/gcmemcard-sketchy-code-cleanup
Sketchy code cleanup in GCMemcard and GCMemcardDirectory.
2020-10-21 23:13:22 +02:00
JosJuice
21d3ea523c Android: Show how long ago each savestate was created 2020-10-21 22:49:59 +02:00
Léo Lam
7b9a464c93
Merge pull request #8895 from sepalani/card
GCMemcard: Rename unknown field to m_dtv_status
2020-10-21 22:32:09 +02:00
Léo Lam
18b2553538
Merge pull request #9078 from JosJuice/android-metadata-from-core
Android: Get game metadata from core
2020-10-21 22:29:21 +02:00
Léo Lam
d08b80828d
VideoCommon: Simplify VideoBackendBase::GetDefaultBackendName
Now we can just call GetDefaultVideoBackend to get the default backend
and get its name by calling GetName.
2020-10-21 22:00:10 +02:00
Léo Lam
aaaa3896c0
VideoCommon: Get rid of the global g_available_video_backends
Replace it with a function-local static that is initialized on first
use. This gets rid of a global variable and removes the need for
manual initialization in UICommon.

This commit also replaces the weird find_if that looks for a non-null
unique_ptr with a simple "is vector empty" check considering that
none of the pointers can be null by construction.
2020-10-21 22:00:10 +02:00
JosJuice
e86d713600 Android: Attach CPU thread to JVM early 2020-10-21 21:10:28 +02:00
Léo Lam
fd5f9f4c26
Merge pull request #8927 from Filoppi/wiimote-pan-fix
Fixed volume of emulated wii mote speakers not being native.
2020-10-21 21:02:39 +02:00
Filoppi
cf8b52735f
Fix volume of emulated wii mote speakers not being native
As in the comment, the panning was denaturalizing the volume (when the panning was at 0).
Unless users actually want to use panning, their wii mote volume should not be reduced, it should come out at the same volume the samples were.
If users want to reduce the volume of the wii mote speakers, they can do so from the wii home menu.
I opted for this instead of adding another setting "Enable Panning" as it would have been confusing, and the changes in the panning formula are unlikely to have any negative effect, as it still works.
2020-10-21 20:54:21 +02:00
Léo Lam
97de366b0f
Merge pull request #9160 from jordan-woyak/xinput2-stuck-keys
Linux/XInput2: Fix keys being stuck pressed on focus loss.
2020-10-21 20:47:32 +02:00
JosJuice
3a0917371e Android: Don't show game ID after game title 2020-10-21 20:02:52 +02:00
JosJuice
b6fcfcb9c9 Core: Always call Host_TitleChanged on boot
A title change to a title with no game ID is still a title change.
2020-10-21 19:57:27 +02:00
JosJuice
1ddf7277b9 Core: Set bWii before calling Host_TitleChanged 2020-10-21 19:57:27 +02:00
Lioncash
22a79289d3 AudioCommon: Migrate logging over to fmt
printf specifiers, begone!
2020-10-21 13:32:28 -04:00
Léo Lam
09e87b79f1
Merge pull request #9173 from lioncash/fmtlog
Common/Log: Add basic fmt-capable functions to the interface.
2020-10-21 19:11:19 +02:00
Lioncash
425f2aa013 Common/Log: Add basic fmt-capable functions to the interface.
Provides a basic extension to the interface to begin migration off of
the printf-based logging system.

Everything will go through macros with the same style naming as the old
logging system, except the macros will have the _FMT suffix, while the
migration is in process.

This allows for peacemeal migration over time instead of pulling
everything out and replacing it all in a single pull request, which
makes for much easier reviewing.
2020-10-21 10:49:35 -04:00
Léo Lam
f265c412b4
Merge pull request #9152 from Ebola16/SP1
Android: Convert SharedPreferences to INI Settings (simple cases)
2020-10-21 16:48:18 +02:00
Léo Lam
642eccbfd0
Merge pull request #9174 from lioncash/os
Common: Move OSThreads into Core
2020-10-21 15:39:29 +02:00
Lioncash
57534777d4 Common: Move OSThreads into core
Common shouldn't be depending on APIs in Core (in this, case depending
on the PowerPC namespace). Because of the poor separation here, this
moves OSThread functionality into core, so that it resolves the implicit
dependency on core.
2020-10-21 07:35:42 -04:00
Lioncash
144f799bbb ARDecrypt: Resolve seedtable at compile-time
We can boot the formation of the table off to the compiler at
compile-time, rather than building the table at run-time.
2020-10-20 19:11:04 -04:00
Jordan Woyak
7e197186b9
Merge pull request #9172 from lioncash/compile
ExpressionParser: Add missing <functional> include
2020-10-20 15:23:14 -05:00
Lioncash
faf509e315 ExpressionParser: Add missing <functional> include
Unbreaks Windows CMake builds.
2020-10-20 16:18:32 -04:00
Ryan Meredith
353a67824d Android: Add AndroidOverlayButtons INI section 2020-10-20 12:03:41 -04:00
Lioncash
751d67a59a UberShaderVertex: Migrate over to fmt
Continues migration of the shader generators over to fmt.

With this, all that's left to move over are the pixel shaders (regular
and ubershader variants)
2020-10-20 09:24:10 -04:00
Léo Lam
ce59b026c0
Merge pull request #9168 from lioncash/ifconst
DataReader: Make use of if constexpr where applicable
2020-10-20 14:56:24 +02:00
Léo Lam
299adf537d
Merge pull request #9021 from AdmiralCurtiss/gui-memcard-format-sram
Qt/GCMemcardCreateNewDialog: Use zero values for formatting instead of accessing g_SRAM.
2020-10-20 14:55:23 +02:00
Léo Lam
70ab3bf7b3
Merge pull request #9025 from cyrozap/fix-build-with-older-cmake
Fix builds with system LZMA when using versions of CMake before 3.14
2020-10-20 14:51:15 +02:00
Lioncash
7bc2bbc508 DataReader: Make use of if constexpr where applicable
We can make use of if constexpr for cases where booleans will always
statically be known at compile-time.
2020-10-20 08:42:32 -04:00
Léo Lam
dc5ae5ee66
Merge pull request #9165 from lioncash/ubercommon
UberShaderCommon: Migrate over to fmt
2020-10-20 14:42:19 +02:00
Léo Lam
f653bd7559
Merge pull request #9142 from jordan-woyak/expose-fov
WiimoteEmu: Expose IR camera FOV to adjust IMU pointing sensitivity.
2020-10-20 14:32:02 +02:00
Léo Lam
b2709b81a0
Merge pull request #9166 from JosJuice/encryption-cache-move
DiscIO: Make WiiEncryptionCache moveable
2020-10-20 14:29:46 +02:00
Léo Lam
2e86e1a998
Merge pull request #9146 from JosJuice/android-disable-cover-download
Android: Allow disabling cover downloading
2020-10-20 13:31:01 +02:00
Léo Lam
49b7f10b39
Merge pull request #9163 from lioncash/fbgen
FramebufferShaderGen: Migrate over to fmt
2020-10-20 13:25:50 +02:00
Lioncash
83db7a707c UberShaderCommon: Migrate over to fmt
Continues migration of the shader generators over to fmt.
2020-10-20 06:22:48 -04:00
Léo Lam
7b1e0dba9b
Merge pull request #9164 from lioncash/geoshader
GeometryShaderGen: Migrate over to fmt
2020-10-20 11:59:45 +02:00
JosJuice
5b6f604d90 DiscIO: Make WiiEncryptionCache moveable
Fixes the following warning:

../../../../../../Core\DiscIO/DirectoryBlob.h:156:3: warning: explicitly defaulted move constructor is implicitly deleted [-Wdefaulted-function-deleted]
  DirectoryBlobReader(DirectoryBlobReader&&) = default;
  ^
../../../../../../Core\DiscIO/DirectoryBlob.h:205:22: note: move constructor of 'DirectoryBlobReader' is implicitly deleted because field 'm_encryption_cache' has a deleted move constructor
  WiiEncryptionCache m_encryption_cache;
                     ^
2020-10-20 11:33:38 +02:00
Léo Lam
fc3b474cce
Merge pull request #8318 from iwubcode/dynamic_input_textures
InputCommon: Dynamic Input Textures
2020-10-20 02:10:29 +02:00
Léo Lam
911704611e
Merge pull request #9096 from jordan-woyak/calibration-cleanup
ControllerEmu: Improve and simplify UpdateCalibrationData.
2020-10-20 02:01:16 +02:00
Léo Lam
98875346bd
Merge pull request #9104 from JosJuice/cmd-unicode
DolphinQt: Handle non-ASCII characters in Windows cmd arguments
2020-10-20 01:45:28 +02:00
Léo Lam
680ff4d168
Merge pull request #9136 from JosJuice/volumeverifier-partition-invalid-override
VolumeVerifier: Make "no valid data in partition" hide some other errors
2020-10-20 01:39:18 +02:00
Lioncash
5475a8d6eb GeometryShaderGen: Migrate over to fmt
Continues migration of the shader generators over to fmt.
2020-10-19 19:22:02 -04:00
Léo Lam
8a8dc3db83
Merge pull request #8613 from jordan-woyak/expose-disable-ss
Config: Expose "DisableScreenSaver" in the UI and default it to true.
2020-10-20 01:20:24 +02:00
Lioncash
df11615bde FramebufferShaderGen: Migrate over to fmt
Continures the migration of the shader generators over to fmt.
2020-10-19 18:49:01 -04:00
Jordan Woyak
1dae834c62 WiimoteEmu: Tweak IMUCursor total yaw setting tool-tip. 2020-10-19 17:08:02 -05:00
Jordan Woyak
6b2eebf1f9 WiimoteEmu: Expose IR camera FOV to adjust IMU pointing sensitivity. 2020-10-19 17:08:02 -05:00
Jordan Woyak
907fdd26fc WiimoteEmu: Use quaternions for orientation. 2020-10-19 16:34:45 -05:00
Jordan Woyak
09431635f3 InputCommon/WiimoteEmu: Replace stateful rotational matrices with quaternions. 2020-10-19 16:33:55 -05:00
Jordan Woyak
39030ea33c Common/Matrix: Add Quaternion class. 2020-10-19 16:18:31 -05:00
JosJuice
bb03280462 VolumeVerifier: Make "no valid data in partition" hide some other errors
Not much use in knowing that the H3 hashes are wrong when the
partition consists of complete garbage.
2020-10-19 21:15:49 +02:00
Admiral H. Curtiss
b93adeaad7 VertexShaderGen: Fix unescaped { in D3D shader. 2020-10-19 20:05:07 +02:00
JosJuice
5e70dda4cc Android: Allow disabling cover downloading
In case someone wants to be very careful with how much bandwidth
they use or with what data GameTDB.com collects on you.
This is already an option in DolphinQt (though in DolphinQt it
will switch entirely from using covers to banners when turned off).
2020-10-19 20:03:47 +02:00
Jordan Woyak
bbb12a7560 Linux/XInput2: Fix keys being stuck pressed on focus loss. 2020-10-19 11:46:01 -05:00
JosJuice
cb14b65aad CMake: Fix build errors exposed by making common dependent on fmt 2020-10-19 14:36:09 +02:00
JosJuice
1084cfec1a Add helper function for fmt::format(GetStringT(... 2020-10-19 14:36:08 +02:00
JosJuice
d100c1dc37 DiscIO: Make use of fmt where applicable
Once nice benefit of fmt is that we can use positional arguments
in localizable strings. This a feature which has been
requested for the Korean translation of strings like
"Errors were found in %zu blocks in the %s partition."
and which will no doubt be useful for other languages too.
2020-10-19 14:30:47 +02:00
LC
c9b2fbb64b
Merge pull request #9099 from sepalani/so-linger
IP/Top: Add SO_LINGER optname
2020-10-19 07:58:51 -04:00
LC
abfae46a2c
Merge pull request #9100 from sepalani/gethostid-log
IP/Top: Log IOCTL_SO_GETHOSTID properly
2020-10-19 07:58:15 -04:00
LC
49c7a5b289
Merge pull request #9121 from Sammi-Husky/bat-registers
DolphinQt/Debugger: Fix DBAT and IBAT registers in RegisterWidget
2020-10-19 07:56:42 -04:00
LC
fc5fbf5134
Merge pull request #9127 from Sintendo/fselx-movsd
Jit64: Optimize fsel a bit more
2020-10-19 07:55:40 -04:00
LC
cec47b9c32
Merge pull request #8981 from lioncash/vtx-fmt
LightingShaderGen/VertexShaderGen: Migrate over to fmt
2020-10-19 07:52:55 -04:00
LC
5722c680a4
Merge pull request #8006 from JosJuice/qt-rtl
DolphinQt: Enable RTL layout
2020-10-19 07:46:40 -04:00
Léo Lam
0de6a32f4c
Qt/QtUtils: Fix accidental recursion in ParallelProgressDialog
Seems to be a typo.
2020-10-19 12:39:10 +02:00
Léo Lam
b3cb08830b
Merge pull request #9155 from JosJuice/tas-slider-right-click
DolphinQt: Reset TAS input slider to default on right-click
2020-10-19 12:09:23 +02:00
Jordan Woyak
50ec747840 Clean up screen saver inhibition and apply setting change immediately. 2020-10-18 16:31:48 -05:00
Jordan Woyak
fa83a3a114 DolphinQt: Expose "DisableScreenSaver" setting in the UI. 2020-10-18 16:31:46 -05:00
Jordan Woyak
50384cfab7 Config: Make "DisableScreenSaver" default to true. 2020-10-18 12:26:00 -05:00
JosJuice
6670226a44 DolphinQt: Reset TAS input slider to default on right-click
This is a feature which existed in DolphinWX. Seems like it got
implemented in DolphinQt for IRWidget/StickWidget but not sliders.
2020-10-18 13:47:00 +02:00
Sergei Trofimovich
af2a881a85 Source/Core/DiscIO/WIACompression.cpp: add missing <limits> include
Noticed missing include as a build failure on gcc-11:

```
[ 26%] Building CXX object Source/Core/DiscIO/CMakeFiles/discio.dir/WIACompression.cpp.o
../../../../Source/Core/DiscIO/WIACompression.cpp: In lambda function:
../../../../Source/Core/DiscIO/WIACompression.cpp:170:31: error: 'numeric_limits' is not a member of 'std'
  170 |         std::min<size_t>(std::numeric_limits<unsigned int>().max(), x));
      |                               ^~~~~~~~~~~~~~
../../../../Source/Core/DiscIO/WIACompression.cpp:170:46: error: expected primary-expression before 'unsigned'
  170 |         std::min<size_t>(std::numeric_limits<unsigned int>().max(), x));
      |                                              ^~~~~~~~
```

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
2020-10-15 19:56:53 +01:00
Léo Lam
ab2e226df8
Merge pull request #9105 from JosJuice/volumeverifier-small-low-severity
VolumeVerifier: Make high severity "too small" hide low severity "too small"
2020-10-14 12:41:57 +02:00
Léo Lam
c3cdac4863
Merge pull request #9137 from JosJuice/zstd-ram-usage
DiscIO: Decrease RAM usage during zstd compression
2020-10-14 12:35:38 +02:00
Léo Lam
b24223c178
Merge pull request #9135 from JosJuice/show-nkit
Show NKitness in file format string
2020-10-14 12:19:53 +02:00
Léo Lam
5ab95d7f6a
Merge pull request #9145 from jordan-woyak/sound-touch-defaults
AudioStretcher: Keep default parameters.
2020-10-14 12:16:58 +02:00
Jordan Woyak
3e6599b890 AudioStretcher: Keep default parameters. 2020-10-11 12:43:45 -05:00
JosJuice
5a939ccfaf
Merge pull request #8833 from Ebola16/Panic
Android: Use DialogFragment for AlertMessage
2020-10-10 21:03:52 +02:00
Techjar
0c01712d13 DriverDetails: Remove bug for broken GPU Texture Decoding 2020-10-08 10:13:40 -04:00
Techjar
de2d099200 Re-enable GPU Texture Decoding under MoltenVK 2020-10-08 10:11:02 -04:00
JosJuice
3feea108db DiscIO: Decrease RAM usage during zstd compression
By calling ZSTD_CCtx_setPledgedSrcSize, we can let zstd know
how large a chunk is going to be before which start compressing
it, which lets zstd avoid allocating more memory than needed
for various internal buffers. This greatly reduces the RAM usage
when using a high compression level with a small chunk size,
and doesn't have much of an effect in other circumstances.

A side effect of calling ZSTD_CCtx_setPledgedSrcSize is that
zstd by default will write the uncompressed size into the
compressed data stream as metadata. In order to save space,
and since the decompressed size can be figured out through
the structure of the RVZ format anyway, we disable writing
the uncompressed size by setting ZSTD_c_contentSizeFlag to 0.
2020-10-07 16:40:06 +02:00
JosJuice
d64fc67b04 Show NKitness in file format string
To make people more aware that they're not using a normal disc image.
2020-10-06 19:35:00 +02:00
JosJuice
63f5fa6e19 Replace geckocodes.org with mirror codes.rc24.xyz 2020-10-05 22:18:04 +02:00
LC
c2975c8cb5
Merge pull request #9131 from JosJuice/nkit-mgs
Add Metal Gear Solid: The Twin Snakes to NKit warning message
2020-10-05 10:50:48 -04:00
JosJuice
568f226937 Add Metal Gear Solid: The Twin Snakes to NKit warning message
Unlike Super Paper Mario, this game doesn't crash as soon as you
try to start it, but rather if you try to skip a certain cutscene.
Thanks to JMC for letting me know about this.
2020-10-04 12:22:27 +02:00
iwubcode
4fff04db3c Core: Load custom textures after inputs has been loaded and avoid sending force texture reload during startup for dynamic textures. This ensures that custom texture loading only happens once and users don't see any weird flashes on startup 2020-10-03 17:10:36 -05:00
iwubcode
fd3af4c5d3 InputCommon: Introducing the "Dynamic Input Texture". Configuration links an emulated input action to an image based on what host key is defined for that emulated input. Specific regions are called out in configuration that mark where to replace an input button with a host key image. 2020-10-03 17:10:35 -05:00
iwubcode
8a1539f948 VideoCommon: Make a reusable free function for getting top level directories that have a matching gameid text file underneath 2020-10-03 17:10:35 -05:00
Sintendo
3499cedde4 Jit64: fselx - Skip MOVAPS + MOVSD (SSE4.1)
For the non-packed variant of this instruction, a MOVSD instruction was
generated to copy only the lower 64 bits of XMM1 to the destination
register. This was done in order to keep the destination register's
upper half intact.

However, when register c and the destination register are the same,
there is no need for this copy. Because the registers match and due to
the way the mask is generated, BLENDVPD will end up taking the upper
half from the destination register, as intended.

Additionally, the MOVAPS to copy Rc into XMM1 can also be skipped.

Before:
66 0F 57 C0          xorpd       xmm0,xmm0
F2 41 0F C2 C6 06    cmpnlesd    xmm0,xmm14
41 0F 28 CE          movaps      xmm1,xmm14
66 41 0F 38 15 CA    blendvpd    xmm1,xmm10,xmm0
F2 44 0F 10 F1       movsd       xmm14,xmm1

After:
66 0F 57 C0          xorpd       xmm0,xmm0
F2 41 0F C2 C6 06    cmpnlesd    xmm0,xmm14
66 45 0F 38 15 F2    blendvpd    xmm14,xmm10,xmm0
2020-10-03 18:28:41 +02:00
Sintendo
9ac324aed3 Jit64: fselx - Skip MOVSD (AVX)
For the non-packed variant of this instruction, a MOVSD instruction was
generated to copy only the lower 64 bits of XMM1 to the destination
register. This was done in order to keep the destination register's
upper half intact.

However, when register c and the destination register are the same,
there is no need for this copy. Because the registers match and due to
the way the mask is generated, VBLENDVPD will end up taking the upper
half from the destination register, as intended.

Before:
66 0F 57 C0          xorpd       xmm0,xmm0
F2 41 0F C2 C6 06    cmpnlesd    xmm0,xmm14
C4 C3 09 4B CA 00    vblendvpd   xmm1,xmm14,xmm10,xmm0
F2 44 0F 10 F1       movsd       xmm14,xmm1

After:
66 0F 57 C0          xorpd       xmm0,xmm0
F2 41 0F C2 C6 06    cmpnlesd    xmm0,xmm14
C4 43 09 4B F2 00    vblendvpd   xmm14,xmm14,xmm10,xmm0
2020-10-03 18:28:27 +02:00
Connor McLaughlin
a8df2caba9
Merge pull request #9125 from stenzek/vulkan-validation
Vulkan: Use VK_LAYER_KHRONOS_validation for validation
2020-10-02 20:18:13 +10:00
Christian Aguilera
ee13e6ec80 Improved responsiveness when refreshing game list. 2020-10-01 22:10:16 +02:00
Christian Aguilera
4ca92464c0 **Refresh** and **Purge Game List Cache** now correctly enabled/disabled as notified by GameListRefreshRequested and GameListRefreshCompleted. 2020-10-01 22:09:45 +02:00
Christian Aguilera
bada677c5a Avoid using unnecessary RunOnObject() calls in GameTracker's worker thread to prevent deadlocks on shutdown. 2020-10-01 22:09:45 +02:00
Christian Aguilera
dc7b92651f Ensured that GameTracker's internal worker thread is flushed on exit to avoid crashes when accessing stale, already-destroyed data, and to favor responsiveness. 2020-10-01 22:09:45 +02:00
Christian Aguilera
213610e95d Extended WorkQueueThread class with Clear(), Cancel() and IsCancelled(). 2020-10-01 22:09:45 +02:00
Christian Aguilera
5b757024c4 GameListModel instance ownership transferred back to the GameList instance. The GameListModel instance will be passed as a constructor parameter where needed. 2020-10-01 22:09:45 +02:00
Christian Aguilera
0d02e70d4a Removed all references to GameListModel from the Settings component. 2020-10-01 22:09:45 +02:00
Sepalani
6675186520 Socket: Set SO_NOSIGPIPE on macOS 2020-10-01 13:25:34 +04:00
Stenzek
24bb947eff Vulkan: Use VK_LAYER_KHRONOS_validation for validation
VK_LAYER_LUNARG_standard_validation is deprecated.
2020-10-01 17:21:46 +10:00
JMC47
31524288e3
Merge pull request #9116 from jordan-woyak/fix-wm-netplay
Core/NetPlay: Fix Wii Remote syncing.
2020-09-30 17:42:30 -04:00
Sammi Husky
fa866062ca DolphinQt/Debugger: Fix DBAT and IBAT registers in RegisterWidget 2020-09-29 22:11:21 -07:00
JMC47
ebdcddfcd0
Merge pull request #9120 from JosJuice/controller-defaults
Fix controller defaults being empty on fresh run
2020-09-29 18:38:11 -04:00
JosJuice
623340bbbb Fix controller defaults being empty on fresh run
A very early call to Config::Save is now creating empty
controller INI files.

https://bugs.dolphin-emu.org/issues/12283
2020-09-29 21:49:22 +02:00
Jordan Woyak
0295d470b1 ControllerEmu: Increase "IMUPointer" "Total Yaw" default value to match that of regular "Point" settings.
Removed "Total Yaw" from included Wii remote input profile to take on the default value.
2020-09-28 18:09:34 -05:00
Jordan Woyak
f766c89a08 ControllerEmu: Increase Total Yaw/Pitch default values to compensate for new FOV and to reach screen edges in the Wii Menu. 2020-09-28 18:09:34 -05:00
Jordan Woyak
f9280d0f66 ControllerInterface/Wiimote: Add "IR Distance" input providing a calculated distance from sensor bar in meters. 2020-09-28 18:09:34 -05:00
Jordan Woyak
761f7798c9 WiimoteEmu: Increase Camera FOV constants to 42 by 31.5 degrees. 2020-09-28 18:09:34 -05:00
Jordan Woyak
1063c4e940 MathUtil: Add Population (vs Sample) versions of Variance and StandardDeviation to RunningVariance. 2020-09-28 18:09:33 -05:00
Jordan Woyak
8f8509afc3 Core/NetPlay: Fix Wii Remote syncing. 2020-09-27 13:10:19 -05:00
Jordan Woyak
6cb14a9a54
Merge pull request #9115 from jordan-woyak/default-modifiers
Core: Unbreak default keyboard mappings.
2020-09-26 10:20:57 -05:00
Jordan Woyak
24771aac5a Core: Unbreak default keyboard mappings. 2020-09-26 08:25:56 -05:00
Connor McLaughlin
aea0239071
Merge pull request #9109 from stenzek/msaa-efb-readback
FramebufferManager: Fix EFB readbacks with MSAA on
2020-09-26 17:46:16 +10:00
Jordan Woyak
431eb4d60d ExpressionParser: Improve hotkey suppression logic. Allow activation with simultaneous press of modifier and final input. 2020-09-25 22:51:33 -05:00
Jordan Woyak
44927da420 ExpressionParser: Replace ScopeGuard with custom deleter unique_ptr. 2020-09-25 22:51:33 -05:00
Jordan Woyak
48b76ff90f InputCommon: Improve input detection to produce buton combinations. 2020-09-25 22:51:32 -05:00
Jordan Woyak
d8ad8c3861 InputCommon: Make hotkeys and input detection aware of Ctrl -> L_Ctrl / R_Ctrl hierarchy. 2020-09-25 20:29:18 -05:00
Jordan Woyak
aae913fbc6 InputCommon: Clean up modifier ignoring logic. 2020-09-25 20:29:18 -05:00
Jordan Woyak
f7bf26cd60 Core: Clean up default hotkey expressions. 2020-09-25 20:29:18 -05:00
Jordan Woyak
f015c99a51 ControllerInterface: Add platform consistent names for modifier keys. 2020-09-25 20:29:18 -05:00
Jordan Woyak
d2729df281 ExpressionParser: Allow duplicate and superset modifier hotkeys to function. 2020-09-25 20:29:18 -05:00
Jordan Woyak
b3acc7403f InputCommon: Support detecting combinations of inputs. (Hotkeys) 2020-09-25 20:29:18 -05:00
Jordan Woyak
e6ba495486 ExpressionParser: Suppress inputs when hotkey modifiers are pressed. 2020-09-25 20:29:18 -05:00
Jordan Woyak
52547379c9 ExpressionParser: Add Hotkey syntax. 2020-09-25 20:29:18 -05:00
Ryan Meredith
991eb6ae83 Android: Use DialogFragment for AlertMessage 2020-09-25 11:50:04 -04:00
Stenzek
880f7ca6bb FramebufferManager: Fix EFB readbacks with MSAA on
Regression from #8827.
2020-09-25 20:58:02 +10:00
LC
a9b15dfe3c
Merge pull request #9107 from JosJuice/qt-disc-0
DolphinQt: Use 1-based disc numbering in InfoWidget
2020-09-23 12:29:15 -04:00
JMC47
54e570a95f
Merge pull request #8902 from JosJuice/android-convert
Android: Add disc image conversion
2020-09-23 12:27:43 -04:00
JosJuice
0ddd296cd9 DolphinQt: Use 1-based disc numbering in InfoWidget 2020-09-23 11:42:22 +02:00
JosJuice
402643fe4c VolumeVerifier: Call CheckDiscSize from Finish 2020-09-23 11:19:03 +02:00
JMC47
f33767f19c
Merge pull request #9088 from JosJuice/android-sysconf
Android: Add Wii SYSCONF settings to GUI
2020-09-22 14:03:56 -04:00
JosJuice
4f62960fb1 VolumeVerifier: Make high severity "too small" hide low severity "too small" 2020-09-21 21:00:04 +02:00
JosJuice
17e02838b0 DolphinQt: Stop using qtmain 2020-09-21 17:27:10 +02:00
JosJuice
16d2ef1ea9 DolphinQt: Handle non-ASCII characters in Windows cmd arguments
CommandLineParse expects UTF-8 strings. (QApplication, on the
other hand, seems to be designed so that you can pass in the
char** argv untouched on Windows and get proper Unicode handling.)
2020-09-21 17:26:29 +02:00
Sepalani
8488eb9793 IP/Top: Log IOCTL_SO_GETHOSTID properly 2020-09-20 20:46:49 +04:00
Jordan Woyak
50b5224d06
Merge pull request #8840 from Techjar/evdev-combining-phys
ControllerInterface: Combine evdev devices with the same physical location in addition to unique ID
2020-09-20 09:28:09 -05:00
Sepalani
faa1eb71ef IP/Top: Add SO_LINGER optname 2020-09-20 11:40:25 +04:00
Jordan Woyak
8587ebba86 WiimoteReal: Only duplicate data reports when speaker data is enabled. 2020-09-19 20:04:27 -05:00
Jordan Woyak
2e753abcc9 Update state version. 2020-09-19 18:02:25 -05:00
Jordan Woyak
32ef8a46a1 Core/BTEmu: Change a member variable to a local variable. 2020-09-19 18:00:22 -05:00
Jordan Woyak
0ca73355a8 ControllerEmu: Improve and simplify UpdateCalibrationData. 2020-09-19 08:40:55 -05:00
Techjar
29460b946e Qt/MappingWindow: Add support for built-in profiles 2020-09-18 06:32:42 -04:00
JMC47
6ada03fca2
Merge pull request #9075 from JosJuice/android-osd-left-margin
Android: Move OSD out of the way when menu is open
2020-09-16 16:42:04 -04:00
JMC47
655308255e
Merge pull request #9073 from darkain/patch-1
Adding AmdPowerXpressRequestHighPerformance
2020-09-16 15:56:04 -04:00
JosJuice
7749e8c10c Only automatically override SYSCONF settings when it has an effect
Any call to Config::SetCurrent will cause the relevant setting
to show up as overridden in the Android GUI, which can be confusing,
so let's not do it when the new value is the same as the original.
2020-09-16 20:34:14 +02:00
JosJuice
f01ccfdb82 Android: Only allow conversion when appropriate 2020-09-16 18:48:25 +02:00
JosJuice
3805b84906 Android: Add content provider support to File::Delete 2020-09-16 18:38:53 +02:00
JosJuice
6e1e6d2311 Android: Add content provider support to File::IOFile
Taking the hit now to prepare us for when Google Play will
force us to use scoped storage...
2020-09-16 18:38:53 +02:00
JosJuice
ca46028cde DiscIO: Use std::function for compression callback 2020-09-16 18:36:50 +02:00
JosJuice
161f99b864 Android: Move OSD out of the way when menu is open
https://bugs.dolphin-emu.org/issues/12256
2020-09-16 18:36:15 +02:00
JosJuice
9c97654603 Config: Add SYSCONF to IsSettingSaveable
SYSCONF very much is saveable. Whether it's in IsSettingSaveable
or not hasn't mattered until now since the SYSCONF settings use
separate config loader code that doesn't check IsSettingSaveable,
but the next commit will require SYSCONF to be marked as saveable.
2020-09-16 12:15:50 +02:00
JMC47
e4e50691fb
Merge pull request #9086 from JosJuice/wiimote-init-order
Core: Run Wiimote::Initialize before HW::Init to avoid crash
2020-09-16 02:26:17 -04:00
JMC47
e0117a86ad
Merge pull request #8819 from JosJuice/panic-alert-deadlock-pause-on-focus-loss
DolphinQt: Fix the panic alert deadlock, Pause on Focus Loss edition
2020-09-15 11:46:46 -04:00
JosJuice
de7ef47548 Core: Run Wiimote::Initialize before HW::Init to avoid crash
Fixes a crash on Android (probably nogui too?) caused by PR 8985:

std::__ndk1::__throw_out_of_range(char const*) stdexcept:265
std::__ndk1::__vector_base_common<true>::__throw_out_of_range() const vector:319
InputConfig::GetController(int) InputConfig.cpp:160
WiimoteCommon::GetHIDWiimoteSource(unsigned int) Wiimote.cpp:71
IOS::HLE::WiimoteDevice::WiimoteDevice(IOS::HLE::Device::BluetoothEmu*, int, std::__ndk1::array<unsigned char, 6ul>) WiimoteDevice.cpp:71
IOS::HLE::Device::BluetoothEmu::BluetoothEmu(IOS::HLE::Kernel&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&) BTEmu.cpp:64
IOS::HLE::Kernel::AddStaticDevices() IOS.cpp:435
IOS::HLE::Init() IOS.cpp:837
Core::EmuThread(std::__ndk1::unique_ptr<BootParameters, std::__ndk1::default_delete<BootParameters> >, WindowSystemInfo) Core.cpp:442
2020-09-15 12:19:00 +02:00
LC
9e3c08394a
Merge pull request #9085 from Techjar/better-monospace
Qt: Use better method of getting default monospace font
2020-09-15 05:01:15 -04:00
LC
601ff182db
Merge pull request #9084 from Techjar/custom-rtc-tz-fix
Qt/AdvancedPane: Force UTC time for custom RTC entry
2020-09-15 04:58:26 -04:00
Techjar
0759ead9b6 Qt: Use better method of getting default monospace font
This should give us a nicer font on Windows, while also not severely
impacting the existing behavior on Linux.
2020-09-15 04:48:44 -04:00
Techjar
4d15fb62d9 Qt/AdvancedPane: Force UTC time for custom RTC entry 2020-09-14 22:09:14 -04:00
JMC47
4f1f849c9d
Merge pull request #8985 from jordan-woyak/btemu-cleanup
BTEmu/Wiimote: Fixes and Cleanups.
2020-09-14 02:09:27 -04:00
iwubcode
2bb7d207b7 DolphinQt: fix other widgets that use lambdas (capturing this) without setting the receiver 2020-09-12 17:53:17 -05:00
iwubcode
a83bf8bc59 DolphinQt: properly remove slot connection for ConfigChange when object is destructed 2020-09-12 17:35:58 -05:00
JMC47
1335df8eb5
Merge pull request #9039 from shuffle2/bt-dll
windows: keep an extra reference to BluetoothApis.dll
2020-09-11 04:28:55 -04:00
JMC47
dcbe9da279
Merge pull request #8743 from Techjar/apple-pls-support-standard-api
VideoBackends: Disable GPU Texture Decoding under MoltenVK
2020-09-10 09:54:11 -04:00
Vincent Milum Jr
4e443ed857
Adding AmdPowerXpressRequestHighPerformance
Adding AmdPowerXpressRequestHighPerformance

This will allow AMD drivers to detect the request to use the dGPU instead of the iGPU on compatible hybrid graphics systems.

Reference: https://community.amd.com/thread/169965
2020-09-09 22:09:34 -07:00
Admiral H. Curtiss
c74ea6696e Settings: Fix incorrect config key for enabled analytics. 2020-09-09 20:19:30 +02:00
JMC47
a31c204ca8
Merge pull request #8765 from AdmiralCurtiss/jit-reuse-memory
Jit64 codegen space reuse.
2020-09-09 08:16:09 -04:00
orbea
2bfbc4d79f cmake: Silence warnings. 2020-09-08 21:18:40 -07:00
Techjar
8423f848d0 ControllerInterface: Combine evdev devices with the same physical location in addition to unique ID 2020-09-08 18:52:15 -04:00
JMC47
3d33b1c2c5
Merge pull request #9060 from Pokechu22/ignore-pi-reset-code
Ignore PI_RESET_CODE resetting DI in Wii mode
2020-09-08 01:56:19 -04:00
LC
b350cf043b
Merge pull request #8976 from JosJuice/port-some-settings
Port some settings to the new config system
2020-09-07 22:37:46 -04:00
LC
fa91b47863
Merge pull request #9054 from sepalani/hle-cleanup
HLE cleanup
2020-09-07 22:36:19 -04:00
LC
8e505ad8d5
Merge pull request #9055 from JosJuice/gc-sample-rate
AudioInterface: Use 32029/48043 Hz in more places
2020-09-07 22:35:00 -04:00
LC
48cfc32bf3
Merge pull request #8935 from JosJuice/di-read-latency
DVDInterface: Increase the latency for read commands
2020-09-07 22:31:18 -04:00
Techjar
69358b2186 VideoBackends: Disable GPU Texture Decoding under MoltenVK
It's broken and causes spectacular artifacts and crashes.
2020-09-07 17:28:05 -04:00
JMC47
e7e5175606
Merge pull request #8861 from JosJuice/netplay-hash
Make netplay's "same game" check more robust
2020-09-06 17:14:08 -04:00
JosJuice
bd44106fec AudioCommon: Get initial sample rates from AudioInterface 2020-09-06 15:37:20 +02:00
JMC47
c8c4ec28ce
Merge pull request #8644 from JosJuice/rework-tgc
DiscIO: Rework the implementation of TGC reading
2020-09-06 07:06:26 -04:00
JosJuice
6eefc3c524 Make default graphics backend not show up as empty
Fixes https://bugs.dolphin-emu.org/issues/12245.

I considered making a change to DolphinQt instead of
the core, but then additional effort would've been
required to add the same fix to the Android GUI once
we start using the new config system there.
2020-09-06 12:56:45 +02:00
Pokechu22
8142712c88 Ignore PI_RESET_CODE resetting DI in Wii mode
Fixes bug 12241
2020-09-04 16:54:00 -07:00
LC
db067104ed
Merge pull request #9047 from JosJuice/wia-header-heuristic
DiscIO: Adjust WIA/RVZ header size heuristic
2020-09-01 17:58:51 -04:00
LC
936702bd04
Merge pull request #9033 from leoetlino/scan-thread
IOS/USB: Move scan thread logic into a separate class
2020-09-01 17:56:33 -04:00
Sepalani
c63ac38c83 Socket: Abort pending operations on shutdown 2020-09-01 19:26:44 +04:00
LC
42a7c959e1
Merge pull request #9056 from JosJuice/supportsreadwiidecrypted-parameter
DiscIO: Add parameters to BlobReader::SupportsReadWiiDecrypted
2020-09-01 07:25:31 -04:00
LC
6bd7687893
Merge pull request #9050 from stblr/memory-watcher-fix
MemoryWatcher: Do not follow invalid pointers
2020-09-01 07:24:05 -04:00
JosJuice
bdd28c0edf DiscIO: Expand WIA/RVZ header size heuristic comments 2020-08-31 14:46:13 +02:00
Jordan Woyak
e0b64e0ef8
Merge pull request #9049 from Ebola16/GCAC
GCAdapter_Android: Minor cleanup
2020-08-30 19:48:07 -05:00
Shawn Hoffman
e601bc5532 windows: keep an extra reference to BluetoothApis.dll 2020-08-30 17:46:32 -07:00
Jordan Woyak
0a63340c20
Merge pull request #9037 from shuffle2/code-cleanup
Code cleanup
2020-08-30 19:43:23 -05:00
Pablo Stebler
ff168469b7
MemoryWatcher: Do not follow invalid pointers 2020-08-30 10:29:40 +02:00
JosJuice
047bb80337 DiscIO: Add parameters to BlobReader::SupportsReadWiiDecrypted
It's possible (but rare) for a WIA or RVZ file to support
this for some partitions but not all, and for the game and
the blob code to disagree on how large a partition is.
2020-08-29 15:18:52 +02:00
JosJuice
1a1b89e7e8 AudioInterface: Use 32029/48043 Hz in more places
In particular, I wanted to do change this in
AudioInterface::Init so that dumped GC audio doesn't need
to have a file split (changing from 32000 Hz to 32029 Hz)
when the emulated software initializes the AI registers.
I've also made the same change to DI's DTK code.
2020-08-29 13:24:39 +02:00
Sepalani
4c75b96254 HLE: Improve naming
Replace 'function' with 'hook' when appropriate
2020-08-28 20:29:05 +04:00
Shawn Hoffman
969ea6e4f5 msvc: enable /Zc:preprocessor and make build compile cleanly 2020-08-27 21:58:48 -07:00
Shawn Hoffman
4db06bf85b ogl: init ProgramShaderCache::s_ubo_align to 1.
silences a warning that it may cause div-by-zero.
2020-08-27 15:15:52 -07:00
Shawn Hoffman
d35514399e msbuild: fix a typo 2020-08-27 15:15:52 -07:00
Kate
5981a1929d Add support for FreeBSD/arm64 2020-08-27 21:54:04 +01:00
Sepalani
17ad2ac719 HLE: Rename GetFunctionIndex functions 2020-08-27 22:12:15 +04:00
Sepalani
6b05e48bd6 HLE: Make naming closer to the current coding style 2020-08-27 22:01:04 +04:00
Sepalani
e0605d7911 HLE: Remove unused OSBreakPoints 2020-08-27 21:41:32 +04:00
Sepalani
79bfb48d68 HLE: Remove unused function 2020-08-27 21:07:42 +04:00
Ryan Meredith
acd717ffae GCAdapter_Android: Minor cleanup 2020-08-26 16:40:22 -04:00
Admiral H. Curtiss
4b91c071c1 Qt/GCMemcardCreateNewDialog: Use zero values for formatting instead of accessing g_SRAM. 2020-08-24 19:33:28 +02:00
Admiral H. Curtiss
b175c203e4 GCMemcardDirectory: Avoid undefined behavior in ClearBlock(). 2020-08-24 19:32:10 +02:00
Admiral H. Curtiss
131eb9107b GCMemcard: Avoid undefined behavior in the static Format(). 2020-08-24 19:32:10 +02:00
Admiral H. Curtiss
87135db492 GCMemcardDirectory: Clarify data writing in FlushToFile(). 2020-08-24 19:32:10 +02:00
Admiral H. Curtiss
306a5e6990 Jit64: Keep track of free code regions and reuse space when possible. 2020-08-24 19:31:32 +02:00
Admiral H. Curtiss
fdab9783c7 Externals: Add rangeset. 2020-08-24 19:31:32 +02:00
Admiral H. Curtiss
5b52b3e9cb x64Emitter: Check end of allocated space when emitting code. 2020-08-24 19:31:32 +02:00
Shawn Hoffman
fcc8dfd189 Common/Assert: no longer needs special impl for msvc 2020-08-23 13:57:05 -07:00
Shawn Hoffman
89b6a4cbee DolphinQt: resolve Qt5.15 deprecations 2020-08-23 13:57:05 -07:00
Shawn Hoffman
c629af6319 replace is_pod with is_standard_layout && is_trivially_copyable 2020-08-23 13:57:05 -07:00
Shawn Hoffman
12ea56a6b2 remove extraneous WIN32_LEAN_AND_MEAN definition 2020-08-23 13:57:05 -07:00
Shawn Hoffman
181e0dba21 apply if constexpr in a couple places 2020-08-23 13:57:05 -07:00
Shawn Hoffman
ccbc4c2d99 fix possible dangling shared_ptr ptr in ios 2020-08-23 13:57:05 -07:00
Shawn Hoffman
3ee4c53d65 wiimotereal: add some error handling. replace malloc with make_unique 2020-08-23 13:57:05 -07:00
Shawn Hoffman
938fd4e438 use constexpr for some compile-time expressions 2020-08-23 13:57:05 -07:00
Shawn Hoffman
79f5ea0474 initialize some variables which need to be 2020-08-23 13:57:05 -07:00
Shawn Hoffman
c22748dc38 windows: fix some incorrect string lengths 2020-08-23 13:55:15 -07:00
Shawn Hoffman
b021573a70 GekkoDisassembler: fix rld* 2020-08-23 13:55:14 -07:00
Shawn Hoffman
49590c9a42 FileUtil: handle some error conditions 2020-08-23 13:55:14 -07:00
Shawn Hoffman
3bc8a26083 don't use std::move on const variables 2020-08-23 13:55:14 -07:00
Shawn Hoffman
1b1fc39f02 handle to GetFileVersionInfoW must be zero 2020-08-23 13:55:14 -07:00
Shawn Hoffman
6ef9d70701 name some threads 2020-08-22 17:22:07 -07:00
Shawn Hoffman
a769dff1d0 windows: additionally set thread name via SetThreadDescription 2020-08-22 17:22:07 -07:00
LC
4a34b74e68
Merge pull request #9035 from shuffle2/vs-pretty
misc vcxproj cleanup
2020-08-22 20:13:25 -04:00
Shawn Hoffman
cff4806d8d windows: fix build if pch were to be disabled 2020-08-22 16:18:24 -07:00
Shawn Hoffman
af55938538 msbuild: use the moc dispatcher from Qt's vstools
The new method supports build parallelism and cleaner
integration into msbuild dependency flows.
2020-08-22 16:17:51 -07:00
Shawn Hoffman
03a263db20 msbuild: fixup linking of discord-rpc 2020-08-22 16:17:50 -07:00
Shawn Hoffman
2f47f486af msbuild: re-enable standalone vcxproj processing 2020-08-22 16:17:50 -07:00
Shawn Hoffman
1f8cda6281 DolphinQt: sort the files in vcxproj 2020-08-22 16:17:50 -07:00
Shawn Hoffman
390f509bbf windows: disable C4200 directly in libusb.h 2020-08-22 16:17:50 -07:00
Shawn Hoffman
94bf48b67c msbuild: refactor stuff out of project files (for dolphin) 2020-08-22 16:17:50 -07:00
Shawn Hoffman
3a0d8c0208 msbuild: enable D3DCommon to use pch 2020-08-22 16:17:50 -07:00
Shawn Hoffman
36ace8eb52 prettify some constructs in vcxproj files 2020-08-22 16:17:50 -07:00
JosJuice
f7f0fa2d85 DiscIO: Adjust WIA/RVZ header size heuristic
The heuristic was not allocating enough space for Metroid: Other M,
at least when using the default settings. (This didn't break the
file, it just caused some headers to be placed at the end of the
file instead of at the start and wasted a few hundred kilobytes.)
2020-08-22 22:26:55 +02:00
Admiral H. Curtiss
f859da112e Update Windows build to use Qt 5.15.0. 2020-08-22 20:08:38 +02:00
JosJuice
fc6c1931fa VolumeVerifier: Adjust problem descriptions for new netplay check
The new hash check catches essentially all desync problems
that VolumeVerifier can catch, so from the user's perspective,
such problems will result in Dolphin refusing to start the
game on netplay rather than actually getting a desync.
2020-08-19 17:21:38 +02:00
Léo Lam
d1439a1fa9
IOS/USB: Move scan thread logic into a separate class
This moves the scan thread logic and variables into a separate
ScanThread class. By turning ScanThread instances into members of the
most derived class, this ensures that the scan thread is always
properly stopped when the most derived class is destructed and fixes
a race condition that could cause the scan thread to call virtual
member functions from a derived class whose members have already
been destructed.

A drawback of this approach is that the scan thread must be the last
member variable, so this commit also adds static assertions to ensure
that the assumption stays valid.
2020-08-17 15:14:45 +02:00
Léo Lam
55c931d624
Merge pull request #8995 from Tilka/warnings
Fix some more GCC warnings
2020-08-17 14:49:28 +02:00
Léo Lam
6104018fe1
Merge pull request #9020 from Tilka/usb
IOS/USB: fix potential race condition
2020-08-17 12:15:26 +02:00
Shawn Hoffman
9a5a705d01 Fix comparison to invalidated vector iterator.
GetFstEntryForPath may modify the children vector,
so do it before taking an iterator to the vector.
2020-08-16 15:17:11 -07:00
Shawn Hoffman
deb73d0167 msvc: temporary workaround for C4789 false positive 2020-08-16 12:49:00 -07:00
Jordan Woyak
0ad123bdbb BTEmu: Fix home menu inquiry assigning multiple wii remotes to wrong slots. 2020-08-16 11:38:13 -05:00
Jordan Woyak
6a6f1451ff Update state version. 2020-08-16 11:38:13 -05:00
Jordan Woyak
13ee6bd7bb BTEmu/Wiimote: Cleanups/Fixes. 2020-08-16 11:38:13 -05:00
LC
2c5920dccc
Merge pull request #9028 from cristian64/netplaybrowser_deadlock_on_exit
DolphinQt: Prevent deadlock when exiting the NetPlay Session Browser dialog
2020-08-16 08:57:35 -04:00
Christian Aguilera
ddeb2236ae Removed RunOnObject() usage to prevent deadlock on exiting the NetPlay Session Browser dialog. 2020-08-16 12:32:50 +01:00
LC
6fc7135047
Merge pull request #8855 from shuffle2/dol
DolReader: treat overly large data segment as bss
2020-08-16 06:02:39 -04:00
Jordan Woyak
89ca9b51ad Bluetooth/WiimoteDevice: Remove some silly comments. 2020-08-15 21:23:37 -05:00
Jordan Woyak
1cddf9c527 BTEmu: Remove a wrong INFO_LOG. 2020-08-15 21:23:37 -05:00
Christian Aguilera
eee1589aa3 Restoring NetPlay Session Browser dialog's settings before connecting widgets, to prevent multiple refresh requests on change. 2020-08-15 22:29:23 +01:00
JosJuice
07a0d44b36
Merge pull request #8571 from Pokechu22/di-interrupts
Fix gamecube games not noticing disc changes
2020-08-11 20:03:41 +02:00
JosJuice
bd87285f3a FrameDump: Don't ignore the time base numerator
Fixes a regression where f72b756 made all dumped video super long.
2020-08-11 11:17:22 +02:00
cyrozap
c2de1d041a Fix builds with system LZMA when using versions of CMake before 3.14
The "FindLibLZMA.cmake" module in CMake versions prior to 3.14 do not
set an alias like how Externals/liblzma/CMakeLists.txt does, so builds
performed using one of those older CMake versions will fail if the
system LZMA library is detected. To fix this, we need to link against
"lzma" instead of "LibLZMA::LibLZMA".

Fixes: b59ef81a7e ("WIA: Implement bzip2, LZMA, and LZMA2 decompression")
2020-08-11 02:53:16 -05:00
Tillmann Karras
ca61b6c1ab DiscIO: make use of std::nullopt
This also fixes a bogus GCC warning.
2020-08-08 21:53:27 +01:00
Tillmann Karras
d2b06f4786 Fix various -Wshadow warnings 2020-08-08 21:45:03 +01:00
Tillmann Karras
ee0d4661ab IOS/USB: deduplicate scan thread stopping
Unlike other functions, base ctors/dtors are always called automatically.
2020-08-08 21:40:23 +01:00
Tillmann Karras
1f4b9adbf5 ISO/USB: fix potential race condition 2020-08-08 21:40:23 +01:00
Tilka
a161e58591
Merge pull request #8914 from JosJuice/jit64-low-dcbz
Jit64: Implement low DCBZ hack
2020-08-08 21:19:16 +01:00
Tilka
8b236fc8f8
Merge pull request #8986 from jordan-woyak/button-pressed-no-ext
WiimoteEmu: Don't check extension button press for Wii remote reconnection.
2020-08-08 21:06:46 +01:00
Tilka
c0fde32d80
Merge pull request #9019 from JosJuice/verify-wad-split-tmd-ticket
VolumeVerifier: Split TMD error from ticket error for WADs
2020-08-08 21:05:21 +01:00
JosJuice
76228fa482 Jit64: Implement low DCBZ hack
I was hoping this would improve the performance of Cars 2 by
avoiding interpreter fallbacks, but it doesn't seem to have
made any measurable impact.
2020-08-08 22:03:34 +02:00
Tilka
3101d957b6
Merge pull request #8886 from JosJuice/stack-check-instruction
PatchEngine: Attempt to fix crash in IsStackSane
2020-08-08 20:59:48 +01:00
Tilka
6356cc8b08
Merge pull request #8910 from OatmealDome/os-deprecated-cleanup
Analytics: Replace usage of Gestalt for retrieving macOS version
2020-08-08 20:53:14 +01:00
Tilka
f17b5dd41b
Merge pull request #8804 from iwubcode/dsu-improvements
DolphinQt / InputCommon - Support multiple DSU servers
2020-08-08 20:45:57 +01:00
JosJuice
7ef0bc0359 VolumeVerifier: Split TMD error from ticket error for WADs
When I first made VolumeVerifier, I figured that the distinction
between an unsigned ticket and an unsigned TMD was a technical
detail that users would have no reason to care about. However,
while this might be true for discs, it isn't equally true for
WADs, due to the widespread practice of fakesigning tickets to
set the console ID to 0. This practice does not require
fakesigning the TMD (though apparently people do it anyway,
at least sometimes...), and the presence of a correctly signed
TMD is a useful indicator that the contents have not been
tampered with, even if the ticket isn't correctly signed.
2020-08-08 21:15:51 +02:00
Tilka
76b955e090
Merge pull request #8940 from RenaKunisaki/master
add Break On Hit and Log On Hit for instruction breakpoints
2020-08-08 19:46:10 +01:00
Tilka
6d0bc03e00
Merge pull request #8992 from Sintendo/fselx-avx
Jit64: Avoid unnecessary MOVAPS instructions
2020-08-08 19:38:48 +01:00
Tilka
d7a96f927c
Merge pull request #9002 from OatmealDome/renderwidget-sheet
MainWindow: Attach quit emulation sheet to RenderWidget if shown on macOS
2020-08-08 19:18:32 +01:00
Tilka
4c64446afe
Merge pull request #9005 from OatmealDome/macos-psn-arg
DolphinQt: Ignore "-psn" command line option on macOS
2020-08-08 19:11:39 +01:00
Tilka
340c08a88d
Merge pull request #9008 from Sintendo/dspjitlea
DSPJit: Various minor improvements
2020-08-08 19:08:24 +01:00
Tilka
3201944208
Merge pull request #9016 from JosJuice/jitarm64-fctiwzx-fcvt
JitArm64: Avoid double rounding in fctiwzx
2020-08-08 17:55:49 +01:00
JosJuice
8b4f16a310 JitArm64: Avoid double rounding in fctiwzx
FCVT doesn't necessarily round to zero, so the result
might be inaccurate if we use it. To ensure correct
rounding, we use FCVTS from double FPR to 32-bit GPR.
Unfortunately, FCVTS can't do double FPR to single FPR.
2020-08-07 22:44:04 +02:00
Jordan Woyak
a77977d0aa
Merge pull request #8999 from AdmiralCurtiss/input-expression-math
Add a few input expression functions (trigonometry, sqrt, pow, min, max, clamp)
2020-08-07 14:40:29 -05:00
LC
de5d0e54be
Merge pull request #9013 from JosJuice/savescreenshot-wait-for-completion
Remove wait_for_completion parameter from Renderer::SaveScreenshot
2020-08-06 19:44:43 -04:00
JosJuice
7385e9129c Remove wait_for_completion parameter from Renderer::SaveScreenshot
This is now unused. Seems like it was an improper fix
(there would be a race if saving the screenshot took longer
than 2 seconds) back when it was used too.
2020-08-06 21:57:12 +02:00
Sintendo
363f3f82bb DSPJitRegCache: Simplify WriteReg
The intent here is to generate a more compact instruction if a 32-bit
immediate can be zero-extended to the desired 64-bit immediate.

Nowadays the emitter is smart enough to do this for us, so this logic is
redundant.
2020-08-05 10:23:28 +02:00
Sintendo
618d261b91 DSPJitMultiplier: addpaxz - AND constant directly
There's no need to load the 64-bit immediate into a temporary register.
x64 will sign-extend 32-bit immediates to 64 bits, giving us the exact
value we need in this case.

48 C7 C0 00 00 FF FF    mov         rax,0FFFFFFFFFFFF0000h
48 21 C2                and         rdx,rax

48 81 E2 00 00 FF FF    and         rdx,0FFFFFFFFFFFF0000h
2020-08-05 10:22:51 +02:00
Sintendo
49a4e09719 DSPJit: Replace/optimize LEAs
- LEA is a bit silly when the source and the destination are the same. A
simple ADD or SHL will do in those cases.

66 8D 04 45 00 00 00 00 lea         ax,[rax*2]
66 03 C0                add         ax,ax

48 8D 04 00             lea         rax,[rax+rax]
48 03 C0                add         rax,rax

66 8D 14 D5 00 00 00 00 lea         dx,[rdx*8]
66 C1 E2 03             shl         dx,3

- When scaling by 2, consider summing the register with itself instead.
The former always needs a 32-bit displacement, so the sum is more
compact.

66 8D 14 45 00 00 00 00 lea dx,[rax*2]
66 8D 14 00             lea dx,[rax+rax]
2020-08-05 10:22:50 +02:00
OatmealDome
5c1693587f DolphinQt: Ignore "-psn" command line option on macOS 2020-08-04 15:55:51 -04:00
JosJuice
b0f9bb9f13 Port some settings to the new config system
Other than the controller settings and JIT debug settings,
these are the only settings which were defined in Java code
but not defined in the new config system in C++. (There are
still a lot of settings that are defined in the new config
system but not yet saveable in the new config system, though.)
2020-08-03 15:07:53 +02:00
OatmealDome
fae8f8d68b MainWindow: Attach quit emulation sheet to RenderWidget on macOS 2020-08-03 05:48:57 -04:00
Ryan Meredith
6020133f5b LogManager: Add missing include 2020-08-02 19:52:10 -04:00
JosJuice
5cad82137d Allow translations and custom names in GameFile::GetNetPlayName
There is no longer any major reason for why this function would
need to return the same result for all players.
2020-08-02 22:46:53 +02:00
JosJuice
a41166bb37 Make netplay's "same game" check more robust
Instead of comparing the game ID, revision, disc number and name,
we can compare a hash of important parts of the disc including
all the aforementioned data but also additional data such as the
FST. The primary reason why I'm making this change is to let us
catch more desyncs before they happen, but this should also fix
https://bugs.dolphin-emu.org/issues/12115. As a bonus, the UI can
now distinguish the case where a client doesn't have the game at
all from the case where a client has the wrong version of the game.
2020-08-02 22:46:53 +02:00
Admiral H. Curtiss
cdf2a29b5e Qt/IOWindow: Add a handful of math functions to the function dropdown. 2020-08-02 22:09:09 +02:00
Admiral H. Curtiss
2281cde28b InputCommon: Add a handful of math functions to the expression parser. 2020-08-02 22:09:09 +02:00
JosJuice
234eaa0ff9
Merge pull request #7252 from Ebola16/Log
Android: Add Log Configuration to UI
2020-08-02 22:00:48 +02:00
Sintendo
08bdeefe05 Jit64AsmCommon: Use AVX in ConvertDoubleToSingle
Using AVX we can eliminate another MOVAPS instruction here.

Before:
0F 28 C8                movaps      xmm1,xmm0
66 0F DB 0D CF 2C 00 00 pand        xmm1,xmmword ptr [1F8D283B220h]

After:
C5 F9 DB 0D D2 2C 00 00 vpand       xmm1,xmm0,xmmword ptr [271835FB220h]
2020-08-02 18:07:47 +02:00
Felk
f775e9b99d OnScreenDisplay: fix names rgba -> argb 2020-08-02 01:37:20 +02:00
Tilka
dbacffd75d
Merge pull request #8731 from Pokechu22/dsp-lle-cpu-int-crash
Fix crash when using DSP LLE with CPU interpreter (or fastmem off)
2020-08-01 15:26:27 +01:00
JosJuice
13f20ecd34 DolphinQt: Don't capture local pointer by reference
This may be the cause of a crash that has been reported on the
forums, but I'm not sure since I can't reproduce it myself.
2020-07-31 11:33:48 +02:00
LC
0aaddf8b19
Merge pull request #8990 from JosJuice/wia-conversion-warning
DiscIO: Fix conversion warning
2020-07-30 21:45:24 -04:00
Pokechu22
9183c0c482 Bump state version 2020-07-29 16:57:37 -07:00
Pokechu22
e5e23c6b27 Mark several DVDInterface functions as static 2020-07-29 16:57:36 -07:00
Pokechu22
4415df463f Remove DVDInterface::Reset
It only resets the registers, which isn't something that needs to be done except for in DVDInterface::Init
2020-07-29 16:57:36 -07:00
Pokechu22
0fa96df818 Remove DriveState::DiscChangeDetected hack
Since both GameCube and Wii resets now work correctly, this hack is not needed anymore.
2020-07-29 16:57:36 -07:00
Pokechu22
a73eaf5712 Fix DVDLowReset spinup flag being read incorrectly 2020-07-29 16:57:35 -07:00
Pokechu22
9a8d426645 Implement PI_RESET_CODE resetting DI 2020-07-29 16:57:35 -07:00
Pokechu22
b8715b42d2 Only reset drive chip state (not DI registers) when changing discs
Resetting the DI registers disables interrupts, which means any errors reported (for instance) are just not sent though.
2020-07-29 16:57:35 -07:00
Pokechu22
537e40afb5 Only update DIMAR and DILENGTH if transfer completed without error
Turns out, Gamecube games actually do check DILENGTH, and if DILENGTH is at 0, they'll think the transfer completed successfully even if DEINT is used, since after all, surely that means everything was sent.  That caused all sorts of issues, from audio looping when a disc is removed since it's re-using the same buffer to just flat-out crashing instead of showing the disc removed screen.
2020-07-29 16:57:35 -07:00
Pokechu22
fba51b2956 Split drive state and drive error into 2 fields, and fix some inaccuracies
In particular:
- Trying to play audio in a non-ready state returns the state-specific error, not an audio buf error
- Audio status cannot be requested in non-ready states
- The audio buffer cannot be configured in states other than ReadyNoReadsMade
- Using the stop motor command while the motor is already stopped doesn't change states

Additionally, the internal state IDs are used (which distinguish ReadyNoReadsMade and Ready), instead of the state IDs exposed in request error.  This makes some of the weird behavior a bit more obvious.

State and error behavior of the seek command was not implemented in this commit.
2020-07-29 16:57:34 -07:00
JosJuice
2e8c5b4521 DolphinQt: Show a warning when launching an NKit disc image
It is my opinion that nobody should use NKit disc images without
being aware of the drawbacks of them. Since it seems like almost
nobody who is using NKit disc images knows what NKit is (hmm, now
how could that have happened...?), I am adding a warning to Dolphin
so that you can't run NKit disc images without finding out about the
drawbacks. In case someone really does want to use NKit disc images,
the warning has a "Don't show this again" option. Unfortunately, I
can't retroactively add the warning where it's most needed:
in Dolphin 5.0, which does not support Wii NKit disc images.
2020-07-29 21:05:57 +02:00
Sintendo
31755bc13a Jit64: fselx - Optimize SSE4.1 packed
Pretty much the same optimization we did for AVX, although slightly more
constrained because we're stuck with the two-operand instruction where
destination and source have to match.

We could also specialize the case where registers b, c, and d are all
distinct, but I decided against it since I couldn't find any game that
does this.

Before:
66 0F 57 C0          xorpd       xmm0,xmm0
66 41 0F C2 C1 06    cmpnlepd    xmm0,xmm9
41 0F 28 CE          movaps      xmm1,xmm14
66 41 0F 38 15 CC    blendvpd    xmm1,xmm12,xmm0
44 0F 28 F1          movaps      xmm14,xmm1

After:
66 0F 57 C0          xorpd       xmm0,xmm0
66 41 0F C2 C1 06    cmpnlepd    xmm0,xmm9
66 45 0F 38 15 F4    blendvpd    xmm14,xmm12,xmm0
2020-07-29 17:28:48 +02:00
Sintendo
afb86a12ab Jit64: fselx - Optimize AVX packed
For the packed variant, we can skip the final MOVAPS and write the
result directly into the destination register.

Before:
66 0F 57 C0          xorpd       xmm0,xmm0
66 41 0F C2 C1 06    cmpnlepd    xmm0,xmm9
C4 C3 09 4B CC 00    vblendvpd   xmm1,xmm14,xmm12,xmm0
44 0F 28 F1          movaps      xmm14,xmm1

After:
66 0F 57 C0          xorpd       xmm0,xmm0
66 41 0F C2 C1 06    cmpnlepd    xmm0,xmm9
C4 43 09 4B F4 00    vblendvpd   xmm14,xmm14,xmm12,xmm0
2020-07-29 17:06:52 +02:00
JosJuice
a05b1f9ab9 DiscIO: Fix conversion warning
Should fix https://bugs.dolphin-emu.org/issues/12208.
2020-07-29 10:55:02 +02:00
LC
b354e343a7
Merge pull request #8988 from JosJuice/no-refresh-rate-round
VideoCommon: Don't round the refresh rate
2020-07-28 17:17:34 -04:00
Sintendo
a52774ca63 Jit64: fselx - Add AVX path
AVX has a four-operand VBLENDVPD instruction, which allows for the first
input and the destination to be different. By taking advantage of this,
we no longer need to copy one of the inputs around and we can just
reference it directly, provided it's already in a register (I have yet
to see this not be the case).

Before:
66 0F 57 C0          xorpd       xmm0,xmm0
F2 41 0F C2 C6 06    cmpnlesd    xmm0,xmm14
41 0F 28 CE          movaps      xmm1,xmm14
66 41 0F 38 15 CA    blendvpd    xmm1,xmm10,xmm0
F2 44 0F 10 F1       movsd       xmm14,xmm1

After:
66 0F 57 C0          xorpd       xmm0,xmm0
F2 41 0F C2 C6 06    cmpnlesd    xmm0,xmm14
C4 C3 09 4B CA 00    vblendvpd   xmm1,xmm14,xmm10,xmm0
F2 44 0F 10 F1       movsd       xmm14,xmm1
2020-07-28 23:17:18 +02:00
JosJuice
f72b756778 VideoCommon: Don't round the refresh rate
We now provide a double to the FPS counter and exact values
to FIFO recording and frame dumping.
2020-07-28 21:01:38 +02:00
Jordan Woyak
bdfb320b3d WiimoteEmu: Don't check extension button press for wii remote reconnection. A real remote doesn't. We won't either. 2020-07-26 11:20:23 -05:00
Pokechu22
1ca3710bd2 DSPLLE: Use Memory functions isntead of directly using Memory::physical_base
Fixes bug 11980
2020-07-24 15:06:39 -07:00
Pokechu22
59dc7cfe7d Use size_t in some DSP code code 2020-07-24 15:06:39 -07:00
Lioncash
f9b856aeda WiimoteEmu: Mark several getters as const
These don't modify internal class state, so they can be made const.
2020-07-24 15:48:27 -04:00
Ryan Meredith
fdcc6a436b Android: Add Log Configuration to UI 2020-07-24 13:59:13 -04:00
Lioncash
4b21bc7508 LightingShaderGen: Transition over to fmt 2020-07-24 13:50:09 -04:00
Lioncash
7f7db6d3e7 VertexShaderGen: Transition over to using fmt 2020-07-24 13:34:47 -04:00
Tillmann Karras
062dd5ab0a DolphinQt: fix -Wunused-variable warning 2020-07-24 17:44:32 +01:00
Tillmann Karras
5bd2b2699c DolphinQt: fix -Wsign-compare warning 2020-07-24 17:44:32 +01:00
Tillmann Karras
750cb1f830 DolphinQt: fix -Wunused-but-set-variable warning 2020-07-24 17:41:37 +01:00
Tillmann Karras
bf5b1092b2 DiscIO: fix -Wreorder warning 2020-07-24 17:41:37 +01:00
Tillmann Karras
04b31e7eee IOS: work around incorrect -Wunused-but-set-variable warning
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96311
2020-07-24 16:38:54 +01:00
Tillmann Karras
fbd34f72ad EXI: fix -Wunused-variable warning 2020-07-24 15:35:35 +01:00
Tillmann Karras
7b2e93eea8 EXI: fix -Wreorder warning 2020-07-24 15:35:24 +01:00
JMC47
781662c6ad
Merge pull request #8793 from iwubcode/dump-texture-options
DolphinQt / VideoCommon: Add additional texture dumping options
2020-07-24 01:38:10 -04:00
JosJuice
213c1841f7
Merge pull request #8903 from AdmiralCurtiss/gcmemcard-file-identity-check
GCMemcard: Change behavior of TitlePresent() to more closely resemble how saves are actually identified.
2020-07-23 17:44:16 +02:00
iwubcode
9c8338ec4c DolphinQt / VideoCommon: Add additional texture dumping options. Specifically, this enables users to choose whether to dump mip maps, base level textures, or both. 2020-07-22 19:30:27 -05:00
LC
d7a91316da
Merge pull request #8974 from Filoppi/patch-4
Fix disc image conversion button not being clear #3
2020-07-22 17:24:23 -04:00
Filippo Tarpini
f6ba54b74e
Fix disc image conversion button not being clear #3
It wasn't clear whether the conversion would create a new file or replace the old one

Recreated #8952 directly from github
2020-07-22 23:00:20 +03:00
JosJuice
26536832c3 Config: Simplify IsSettingSaveable
Should make it both easier to edit and faster to run.
2020-07-22 11:46:47 +02:00
LC
ae2348023b
Merge pull request #8964 from JosJuice/list-wad-file-type
DolphinQt: Show WAD as "WAD" instead of "" in file format column
2020-07-19 17:35:34 -04:00
JosJuice
fe5e92f706 DolphinQt: Show WAD as "WAD" instead of "" in file format column
https://bugs.dolphin-emu.org/issues/12190
2020-07-19 21:30:48 +02:00
Jordan Woyak
ae44f17667 HW/GCPadEmu: Adjust gate radius values to more closely match the real hardware. 2020-07-19 09:45:33 -05:00
LC
487cd7abd9
Merge pull request #8905 from JosJuice/jni-encoding
Android: Use correct encoding when converting strings
2020-07-18 22:13:14 -04:00
Filip Gawin
0ede5d1537 Use range loop (if possible) 2020-07-18 18:29:16 -05:00
iwubcode
97c9cf3e21 DolphinQt / InputCommon - add DSU string validator to avoid crashes, limited backwards compatibility support 2020-07-17 14:53:39 -05:00
iwubcode
58aa0150e1 DolphinQt / InputCommon: Support multiple DSU servers 2020-07-17 14:53:39 -05:00
JosJuice
aa4896fb3f DolphinQt: Add i18n comment for "Surround" 2020-07-17 19:10:31 +02:00
Jordan Woyak
8b3e9e6a81 DolphinQt: Replace unusual Qt::InitialSortOrderRole usage with a custom role. 2020-07-16 20:27:07 -05:00
LC
a7e475e57b
Merge pull request #8958 from jordan-woyak/sort-fix
DolphinQt: Fix default sort direction of game list.
2020-07-16 21:20:43 -04:00
Jordan Woyak
ecf016e80a DolphinQt: Fix default sort direction of game list. 2020-07-16 19:21:14 -05:00
Techjar
037aa2192f NetPlay: Limit nickname length
Ridiculously long nicknames cause UI silliness, so 30 characters seems
like a reasonable limit, as it's the same as the forum.
2020-07-16 19:03:54 -04:00
Techjar
92812d0b0b QtUtils: Add UTF8CodePointCountValidator 2020-07-16 19:03:46 -04:00
LC
c59648337a
Merge pull request #8955 from JosJuice/android-no-ashmem
Android: Don't access /dev/ashmem on newer Android versions
2020-07-16 14:23:51 -04:00
JosJuice
00cde7cbbd Android: Don't access /dev/ashmem on newer Android versions
Fixes a critical regression where 95945a0 made us unable to
start emulation on Android 10 and newer. Android is restricting
direct access to /dev/ashmem starting with the new SDK version,
but we can use the new (and simpler) ASharedMemory API instead.
We have to keep using the /dev/ashmem approach on old versions
of Android, though.
2020-07-16 20:06:58 +02:00
JosJuice
f2cc3a2948 Add Android check for strerror_r variant
I don't know why Android does it like this, but at least
it's easy to fix. (We are currently at __ANDROID_API__ == 21.)
2020-07-16 18:51:58 +02:00
nyanpasu64
1a2b6ca2d6 Fix Windows CMake builds with shared zlib
On Linux, if shared zlib is present, zlib.h is always available and -lz
links to zlib, even if you don't run find_package(ZLIB).

For some reason I have zlib installed on Windows (possibly from vcpkg),
so find_package(ZLIB) succeeds and ZLIB_FOUND is true.
When Dolphin uses shared zlib on Windows, the problem is that zlib.h
is not in the default include path, and the CMake target is called
ZLIB::ZLIB and there's neither a target nor a library called z.

However, both find_package(ZLIB) and add_subdirectory(Externals/zlib)
create a target called ZLIB::ZLIB, so I'll switch to that instead.
Hopefully this change doesn't break anyone's build.
2020-07-15 23:25:18 -07:00
Admiral H. Curtiss
556e93f357 GCMemcard: Change behavior of TitlePresent() to more closely resemble how saves are actually identified.
This modifies GCMemcard::TitlePresent() to match my findings of how the GC BIOS and various games behave when you alter the fields in the directory entry.

It looks like for a save to be recognized by a game, the following have to be true:
- Game code and maker code must exactly match what the game expects.
- Filename is only checked up to the first null byte. All bytes afterwards can be whatever.

The BIOS itself does a full compare of the filename when checking for whether it should allow copying a file from one card to another, but behaves oddly in some cases when there's non-null bytes after the first null. See the big comment in `HasSameIdentity()` for details.
2020-07-15 19:17:22 +02:00
Tilka
695a96498a
Merge pull request #8922 from Filoppi/timer-fixes
Timer fixes
2020-07-13 00:16:45 +01:00
JMC47
3c70fb7277
Merge pull request #8950 from jordan-woyak/double-time-fix
Common/Timer: Fix integer underflow in Timer::GetDoubleTime for dates before ~2008.
2020-07-12 15:52:15 -04:00
Jordan Woyak
eab07866a3 Common/Timer: Fix integer underflow in Timer::GetDoubleTime for dates before ~2008. 2020-07-12 12:55:02 -05:00
LC
4d36f6a5b0
Merge pull request #8936 from jordan-woyak/wiimote-extension-calibration-fix
ControllerInterface/Wiimote: Provide fallback values for extensions with bad calibration.
2020-07-12 12:46:15 -04:00
Jordan Woyak
d9e7d0514c WiimoteEmu: Allow writes of the i2c bus to play speaker data. 2020-07-11 21:19:16 -05:00
Jordan Woyak
5299e902aa ControllerInterface/Wiimote: Provide fallback values for extensions with bad calibration data. 2020-07-11 19:55:14 -05:00
Rena Kunisaki
a553f22385 Add Break On Hit and Log On Hit for instruction breakpoints 2020-07-11 13:38:58 -04:00
LC
ed32a2a1fe
Merge pull request #8946 from jordan-woyak/unbreak-mayflash
InputCommon/GCAdapter: Unbreak Mayflash GCAdapters by allowing libusb_control_transfer call to fail.
2020-07-11 11:56:30 -04:00
JosJuice
f7c32bc04e RVZ: Fix split seed reads
This could cause read errors if chunks were laid out a certain
way in the file and the whole chunk wasn't being read at once.
Should fix https://bugs.dolphin-emu.org/issues/12184.
2020-07-11 17:45:16 +02:00
Jordan Woyak
b350d3cca3 InputCommon/GCAdapter: Unbreak Mayflash GCAdapters by allowing libusb_control_transfer call to fail. 2020-07-09 17:17:44 -05:00
JosJuice
9c7704c0ac DolphinQt: Attempt to fix ParallelProgressDialog constantly reopening
I believe the value returned by value() resets when we call
setValue() with the maximum (due to auto-reset). I have been
unable to test this because I can't reproduce the issue, which is
described at https://bugs.dolphin-emu.org/issues/12158#note-9.
2020-07-09 15:45:29 +02:00
JosJuice
aeeb85aa3a DolphinQt: Replace QTBUG-10561 workaround with better workaround
This workaround is not timing sensitive, unlike the old one.

Hopefully fixes https://bugs.dolphin-emu.org/issues/12158
and https://bugs.dolphin-emu.org/issues/12180.
2020-07-08 20:29:26 +02:00
JosJuice
f5da6e07d7 Android: Use correct encoding when converting strings
The functions with "UTF" in the name use "modified UTF-8" rather
than the standard UTF-8 which Dolphin uses, at least according
to Oracle's documentation, so it is incorrect for us to use them.
This change fixes the problem by converting between UTF-8 and
UTF-16 manually instead of letting JNI do it for us.
2020-07-08 14:52:05 +02:00
JosJuice
38791eec18 Common: Never convert from UCS-2 in WStringToUTF8
Probably not something we would run into in practice since
Windows uses a separate implementation, but let's do it
for the sake of correctness.
2020-07-08 14:51:35 +02:00
JosJuice
15d9fab0bb Common: Rename UTF16ToUTF8
This function does *not* always convert from UTF-16. It converts
from UTF-16 on Windows and UTF-32 on other operating systems.

Also renaming UTF8ToUTF16 for consistency, even though it
technically doesn't have the same problem since it only was
implemented on Windows.
2020-07-08 14:51:35 +02:00
LC
87287181dd
Merge pull request #8907 from JosJuice/android-overlay-stick-gate
Android: Use octagonal stick gate in overlay
2020-07-08 08:50:47 -04:00
LC
4c50eadf34
Merge pull request #8908 from jordan-woyak/wiimote-battery-hax
WiimoteCommon: Tweak battery level math.
2020-07-08 08:46:58 -04:00
LC
b9ae7c350e
Merge pull request #8926 from JosJuice/sysconf-sound
DolphinQt: Expose SYSCONF sound setting
2020-07-08 08:41:23 -04:00
LC
0bff77d9e4
Merge pull request #8925 from JosJuice/tas-turbo-interval
DolphinQt: Allow customizing TAS input turbo interval
2020-07-08 08:40:46 -04:00
LC
a1195fbf91
Merge pull request #8933 from jordan-woyak/gcadapter-nyko
InputCommon/GCAdapter: Fix offbrand "GCAdapters".
2020-07-08 08:38:52 -04:00
JosJuice
6f298378a1 Reword "Please avoid forcing Dolphin to use MSAA by the driver" message
Some users who get this error don't seem to gain much understanding
of how to resolve the problem from reading the error message.
2020-07-08 11:34:36 +02:00
Jordan Woyak
f2fd5c7f90 InputCommon/GCAdapter: Fix offbrand "GCAdapters" with a libusb_control_transfer call. 2020-07-07 14:45:19 -05:00
JosJuice
327b985718 DVDInterface: Increase the latency for read commands
Hardware tested using cached reads.

Fixes Ed, Edd n Eddy. https://bugs.dolphin-emu.org/issues/10373
2020-07-05 18:57:39 +02:00
JosJuice
7a45ca0334 DolphinQt: Mark Zstandard as recommended for RVZ 2020-07-05 12:52:59 +02:00
JosJuice
74f74ac928 DiscIO: Use Volume::IsDatelDisc in VolumeVerifier
I forgot to do this in the PR where I added Volume::IsDatelDisc.
2020-07-04 20:24:26 +02:00
Tilka
4f98653ec6
Merge pull request #8930 from JosJuice/datel-scrub-ignored
DolphinQt: Fix scrubbing not being disabled for Datel discs
2020-07-04 14:49:34 +01:00
Tilka
c5a3882617
Merge pull request #8929 from JosJuice/datel-covers
DiscIO: Fix downloading covers for non-GNHE5d Datel discs
2020-07-04 14:07:46 +01:00
JosJuice
5360ec80c8 DolphinQt: Fix scrubbing not being disabled for Datel discs
The code for disabling scrubbing for RVZ was overriding the code
for disabling scrubbing for Datel discs.
2020-07-04 15:06:05 +02:00
JosJuice
fb922781e7 RedumpVerifier: Treat Datel game IDs as empty
Replacement for the reverted commit
f9705fd117.
2020-07-04 15:00:02 +02:00
JosJuice
f24566bf39 DiscIO: Add Volume::IsDatelDisc 2020-07-04 14:51:13 +02:00
JosJuice
f9aaf8b971 Revert "Return nothing from VolumeWii::GetGameTDBID if Datel"
This reverts commit f9705fd117.
GameTDB.com has covers for non-GNHE5d Datel discs.
2020-07-04 14:45:15 +02:00
Connor McLaughlin
9c12a843f8
Merge pull request #8884 from iwubcode/freelook_performance_fix
VertexShaderManager: Only look for freelook config changes if we're using freelook
2020-07-04 14:19:59 +10:00
JosJuice
e1e57fc359 DolphinQt: Expose SYSCONF sound setting 2020-07-02 22:25:41 +02:00
iwubcode
0441d6aa5e VertexShaderManager: Avoid accessing freelook control type configuration each call which caused a performance hit, move check to RenderBase where it is checked when config changes 2020-07-02 12:55:08 -05:00
JosJuice
1c4088e203 DolphinQt: Allow customizing TAS input turbo interval
As a side effect of 9c5c3c0, Dolphin's frame counter was changed
to run at 60/50 Hz even if the game is running at a lower framerate
such as 30 fps. Since the TAS input turbo button functionality
toggled the state of a button every other frame as reported by
the frame counter, this change made the turbo button functionality
not work with 30/25 fps games.

I believe it would be hard to change the frame counter back to
how it used to work without undermining the point of 9c5c3c0,
and I'm not sure if doing so would be desireable or not anyway,
so what I'm doing instead is letting the user determine how long
turbo button presses should last. This lets users avoid the 30/25
fps game problem while also granting additional flexibility.
Perhaps there is some game where it is useful to mash at a speed
which is slower than frame perfect.
2020-07-02 16:58:29 +02:00
Filoppi
4b5ca9923c Fixes the timer returning 1 when it should return 0. The case mentioned by the comment does not exist anymore.
Also added a IsRunning function as it was impossible to know whether it had been started or not (I will use it in later PRs but it should be there anyway)
2020-07-01 22:29:30 +03:00
MerryMage
a10447eae2 JitArm64_Paired: Fix ps_msub when d == b 2020-07-01 20:11:54 +01:00
Tillmann Karras
a04ac23794 JitArm64: no intermediate rounding for paired FMA 2020-07-01 00:24:08 +01:00
Tillmann Karras
2a46c1f86f JitArm64: annotate intentional fallthrough 2020-07-01 00:10:15 +01:00
LC
4ff560a6e4
Merge pull request #8913 from JosJuice/msvc-preprocessor
Support the new MSVC preprocessor
2020-06-30 04:34:10 -04:00
Markus Wick
5792881eeb
Merge pull request #8912 from JosJuice/fix-profiler
VideoCommon: Show profiler output again
2020-06-29 14:01:57 +02:00
JosJuice
293745afce Support the new MSVC preprocessor
Intends to fix https://bugs.dolphin-emu.org/issues/12170.
2020-06-29 13:50:59 +02:00
JosJuice
81d399a4f2 VideoCommon: Show profiler output again
This profiler was added in 94d9d13, but must've broken at some point.
2020-06-29 11:59:47 +02:00
Markus Wick
4095fb6c20
Merge pull request #8911 from OatmealDome/arm64-fastmem-off
JitArm64: Don't assume fastmem arena is available
2020-06-29 09:20:19 +02:00
OatmealDome
089ffb9ef4 JitArm64: Don't assume fastmem arena is available 2020-06-29 00:42:56 -04:00
OatmealDome
0a22df3a9d Analytics: Remove deprecated usage of Gestalt to get macOS version 2020-06-29 00:37:50 -04:00
Jordan Woyak
d382c6bab9 WiimoteCommon: Tweak battery level math. 2020-06-28 19:40:26 -05:00
JosJuice
db75509ec5 Android: Enfore correct stick gate in overlay
Currently, the touch controller overlay uses a square gate for
sticks. This commit changes that so that it instead uses the
stick gate configured in the INI, which ensures that the values
sent to the core are appropriately scaled regardless of what
is configured in the INI and makes the overlay look nicer
if the INI is set to a stick gate that matches the graphics.
2020-06-29 01:20:02 +02:00
JMC47
961f937010
Merge pull request #8853 from CrunchBite/feature-xlink-kai-bba
Feature XLink Kai BBA
2020-06-27 23:32:49 -04:00
Admiral H. Curtiss
27e49c00b3 FreeLookCamera: Fix savestate branch inconsistency.
Fixes https://bugs.dolphin-emu.org/issues/12168
2020-06-28 02:31:37 +02:00
Tilka
2e8d1dd1db
Merge pull request #8889 from JosJuice/movie-frame-update-frequency
Core: Call Movie::FrameUpdate per field, not per line
2020-06-27 18:10:08 +01:00
Tilka
b36ab8360e
Merge pull request #8820 from iwubcode/freelook_field_of_view
Core / VideoCommon / DolphinQt - allow tweaking freelook camera's field of view
2020-06-27 18:00:48 +01:00
CrunchBite
067667fda5 Add XLink Kai UDP BBA 2020-06-26 14:52:30 -04:00
JMC47
1ab37990b1
Merge pull request #8808 from sepalani/net-widgets-block
NetworkWidget: Add Blocking column
2020-06-26 07:38:52 -04:00
iwubcode
bb6582783b Core: update save state version 2020-06-25 13:35:47 -05:00
iwubcode
69bd6bbdef DolphinQt: change freelook fov by the step size 2020-06-25 13:34:42 -05:00
iwubcode
8ccb684711 VideoCommon: change freelook camera fov step size and expose it 2020-06-25 13:34:42 -05:00
iwubcode
dc4b938526 DolphinQt: use hotkeys for field of view to modify freelook camera 2020-06-25 13:34:42 -05:00
iwubcode
7aa153d57e HotkeyManager: Add hotkeys for freelook field-of-view x and y 2020-06-25 13:34:42 -05:00
iwubcode
3d7d4dfc8a VideoCommon: Use freelook field of view to change the perspective of the camera 2020-06-25 13:34:42 -05:00
Tilka
98de22a1e6
Merge pull request #8900 from JosJuice/disc-deduplicate
DiscIO: Deduplicate some VolumeGC/VolumeWii code
2020-06-25 16:10:04 +01:00
JosJuice
a2c51e027f DolphinQt: Fix a -Wshadow warning in ConvertDialog 2020-06-25 16:44:02 +02:00
JosJuice
d17b801518 DiscIO: Deduplicate some VolumeGC/VolumeWii code 2020-06-25 16:37:21 +02:00
JosJuice
94fd583147 DolphinQt: Fix a -Wswitch warning in ConvertDialog 2020-06-25 16:34:43 +02:00
Tilka
6468978dd0
Merge pull request #8897 from JosJuice/qt-file-format-columns
DolphinQt: Add columns with file format details
2020-06-25 15:21:44 +01:00
Tilka
4eb4b1d2b7
Merge pull request #8898 from JosJuice/windows-cmake-new-lambda-processor
Replace Windows CMake lambda constexpr capture workaround
2020-06-25 15:19:09 +01:00
JMC47
502ab789d9
Merge pull request #8813 from nbouteme/master
Make SO_POLL complete asynchronously in IOS_NET SO
2020-06-25 08:20:56 -04:00
JosJuice
c9edfa0eaa Replace Windows CMake lambda constexpr capture workaround
While manually capturing constexpr variables used in lambda
expressions does work, it's really easy to forget doing so since
we don't have a Windows CMake builder and the workaround isn't
necessary anywhere else. Fortunately, MSVC has a flag that fixes
the constexpr capture behavior, so let's use that instead.
2020-06-25 13:11:29 +02:00
JosJuice
265e0d00d6 DolphinQt: Add columns with file format details 2020-06-25 12:49:36 +02:00
Tilka
26ed3b318c
Merge pull request #8891 from JosJuice/file-details
Show file format details in game properties
2020-06-25 11:00:49 +01:00
Sepalani
7f3c4b19b9 GCMemcard: Rename unknown field to m_dtv_status 2020-06-24 23:39:59 +04:00
nbouteme
b68ab560dc Make SO_POLL complete asynchronously 2020-06-24 12:59:41 +02:00
Techjar
0eb9ac7777 Include SRAM in savestates
This fixes an issue with saving after loading a savestate in Pokemon Colosseum.
2020-06-24 02:42:50 -04:00
Pierre Bourdon
cf36877608
Merge pull request #8879 from AdmiralCurtiss/gci-folder-savestates
Keep memory card header and use it to reinitialize GCI folders on mismatch. (Fix savestate with GCI folders)
2020-06-24 08:36:58 +02:00
JosJuice
8c205ef8f3 DolphinQt: Show version number for WIA/RVZ introduction 2020-06-21 21:16:10 +02:00
JosJuice
d494e0230c Show file format details in game properties 2020-06-21 20:47:23 +02:00
Tilka
9982251899
Merge pull request #8538 from JosJuice/wia
Add support for the WIA and RVZ disc image formats
2020-06-21 11:40:58 +01:00
JosJuice
660d81a10b RVZ: Bump version number to 1.0 2020-06-21 12:38:03 +02:00
JosJuice
9eb36afeb0 Core: Call Movie::FrameUpdate per field, not per line
Fixes https://bugs.dolphin-emu.org/issues/12066.

I must've only tested the frame counter with an earlier version
of the PR that broke this, not the final version...
2020-06-20 19:32:08 +02:00
Pierre Bourdon
03e0d2c820
Merge pull request #8885 from delroth/spr-thrm
PowerPC: partially implement thermal related SPRs
2020-06-19 03:48:30 +02:00
Sepalani
dc2733ce24 Socket: Fix ENOTCONN error code 2020-06-18 22:23:57 +04:00
JosJuice
364ef76ba1 PatchEngine: Attempt to fix crash in IsStackSane
HostIsInstructionRAMAddress uses XCheckTLBFlag::OpcodeNoException,
so we should also use XCheckTLBFlag::OpcodeNoException when reading,
to ensure that we use the IBAT (as opposed to the DBAT) for both.
2020-06-18 11:57:00 +02:00
Pierre Bourdon
dd1fc711c7
PowerPC: partially implement thermal related SPRs
Doesn't support triggering interrupts when the thermal threshold is
exceeded, but allows polling for temperature information.

The THRM[123] registers are documented in most PPC datasheets, see e.g.
this PPC750CX one: http://datasheets.chipdb.org/IBM/PowerPC/750/750cx_um3-17-05.pdf
2020-06-18 07:37:44 +02:00
iwubcode
a65ef35f1a VideoCommon: Clean freelook camera dirty state when getting the new view 2020-06-17 12:07:40 -05:00
JosJuice
224c6e799d RVZ: Extend GroupEntry 2020-06-17 13:48:45 +02:00
JosJuice
f2c38c0e67 RVZ: Make m_rvz a template parameter
Needed for the next commit.
2020-06-17 13:48:45 +02:00
JosJuice
ca4e4a6207 WIA/RVZ: Move (de)compression to a different file 2020-06-17 13:48:45 +02:00
JosJuice
2ec608f059 DolphinQt: Set block size to 128 KiB by default 2020-06-17 13:48:45 +02:00
JosJuice
3f753fc87d RVZ: Detect junk data in the same block as a file 2020-06-17 13:48:44 +02:00
JosJuice
4b74993374 RVZ: Store pseudorandom junk data efficiently 2020-06-17 13:48:42 +02:00
JosJuice
1e92b54bf5 WIA/RVZ: Skip some memory allocations when reusing chunks 2020-06-17 13:48:16 +02:00
JosJuice
f5ef70fc76 RVZ: Don't store redundant exceptions when chunk size is < 2 MiB 2020-06-17 13:48:16 +02:00
JosJuice
b06c50ed2e RVZ: Support chunk sizes between 32 KiB and 2 MiB
WIA doesn't support smaller than 2 MiB.
2020-06-17 13:48:15 +02:00
JosJuice
0d433baeb5 RVZ: Remove PURGE support
PURGE isn't especially useful, while requiring some annoying
special handling in the file format. If you want no compression,
use NONE. If you want fast compression, use Zstandard.
2020-06-17 13:48:15 +02:00
JosJuice
1f7c0b636f RVZ: Add Zstandard as a compression method 2020-06-17 13:48:12 +02:00
JosJuice
e2ae2b3b0b Add new file format RVZ based on WIA 2020-06-17 13:47:34 +02:00
JosJuice
f21a254042 WIA: Implement multithreaded compression 2020-06-17 13:47:34 +02:00
JosJuice
9dea8169e0 WIA: Write all headers at the start of the file
Gets rid of the need to seek to the end of the file
when opening a file.

The downside of this is that we waste a little space,
since we can't know in advance exactly how much
space the compressed parts of the headers will need.
2020-06-17 13:47:34 +02:00
JosJuice
e5b9e1ba1f WIA: Reuse groups when writing
This is useful for the way Dolphin scrubs Wii discs.
The encrypted data is what gets zeroed out, but this
zeroed out data then gets decrypted before being stored,
and the resulting data does not compress well.
However, each block of decrypted scrubbed data is
identical given the same encryption key, and there's
nothing stopping us from making multiple group entries
point to the same offset in the file, so we only have
to store one copy of this data per partition.

For reference, wit zeroes out the decrypted data,
but Dolphin's WIA writer can't do this because it currently
doesn't know which parts of the disc are scrubbed.

This is also useful for things such as storing Datel discs
full of 0x55 blocks (repesenting unreadable blocks)
without compression enabled.
2020-06-17 13:47:34 +02:00
JosJuice
40e46aee57 WIA: Store all-zero data efficiently 2020-06-17 13:47:34 +02:00
JosJuice
e8b019ac29 WIA: Implement compression 2020-06-17 13:47:30 +02:00
JosJuice
e936c4acd8 WIA: Write hash exceptions 2020-06-17 13:43:54 +02:00
JosJuice
3b8c44fd0e WIA: Decrypt Wii data when writing 2020-06-17 13:43:54 +02:00
JosJuice
115edea34e WIA: Add early support for WIA writing 2020-06-17 13:43:54 +02:00
JosJuice
791e363c9a WIA: Make use of the exception lists 2020-06-17 13:43:54 +02:00
JosJuice
47067f661a WIA: Properly check for overlapping data 2020-06-17 13:43:53 +02:00
JosJuice
04089f24f9 WIA: Implement re-encryption of Wii partition data 2020-06-17 13:43:53 +02:00
JosJuice
e3d291a529 WIA: Check the internal WIA hashes 2020-06-17 13:43:53 +02:00
JosJuice
827437c036 WIA: Fix the handling of chunk sizes larger than 2 MiB 2020-06-17 13:43:53 +02:00
JosJuice
0b407228b7 WIA: Add documentation 2020-06-17 13:43:53 +02:00
JosJuice
01a77ae8a1 WIA: Implement caching and partial decompression 2020-06-17 13:43:53 +02:00
JosJuice
b59ef81a7e WIA: Implement bzip2, LZMA, and LZMA2 decompression 2020-06-17 13:43:52 +02:00
JosJuice
1579e061a3 WIA: Correctly handle data with size not divisible by chunk size 2020-06-17 13:43:52 +02:00
JosJuice
3c373c8aa8 WIA: Treat groups with size 0 as containing only zeroes 2020-06-17 13:43:52 +02:00
JosJuice
36991e2dde WIA: Implement PURGE decompression 2020-06-17 13:43:52 +02:00
JosJuice
3672bd79f3 WIA: Implement ReadWiiDecrypted 2020-06-17 13:43:52 +02:00
JosJuice
2a5fcc9c25 WIA: Add reading raw data 2020-06-17 13:43:51 +02:00
JosJuice
8da5d0c4fe Add an early version of WIABlobReader
It can currently only read the first 0x80 bytes of a disc image,
which is enough for identifying it but not for doing anything else.
2020-06-17 13:43:51 +02:00
JosJuice
b45f2c2ad3 DolphinQt: Disable convert dialog dropdowns when they have one option 2020-06-17 13:23:58 +02:00
JosJuice
ec3ea6c1df DolphinQt: Allow converting to same format
Mainly useful for WIA and RVZ, but also has some use for GCZ.
2020-06-17 12:44:16 +02:00
JosJuice
864dcd40b5 Revert "DolphinQt: Disable converting from TGC"
This reverts commit d006a8b52f.
2020-06-17 12:32:40 +02:00
JosJuice
31ecc6c214 Revert "DolphinQt: Actually disable converting from TGC"
This reverts commit c236d89f64.
2020-06-17 12:32:39 +02:00
JosJuice
75d032161f DiscIO: Rework the implementation of TGC reading
Fixes https://bugs.dolphin-emu.org/issues/10654.

To quote the documenation file included with the program tgctogcm:

"TGC's are miniaturized .gcm images with a 32kB header.
The embedded gcm contains some bogus data, namely:
-FST Location (0x424 in gcm)
-DOL Location (0x420 in gcm)
-FST File offsets (all files are offset/spoofed by a certain amount)"

Dolphin has been handling the values at 0x420 and 0x424 by simply
overwriting them with a working value (just like tgctogcm does),
but it has used a different approach for the file offsets in the FST.
Instead of changing the offsets that are stored in the FST, Dolphin
changed where the files actually are placed on the virtual disc.
My hope was that this would make the loading times more accurate to
how they are when running a TGC file as part of a larger disc.
However, there are TGC files where we would need to move files
backwards on the disc in order to do this (this is what issue
10654 is about), so the approach we have been using is flawed.

This change makes Dolphin overwrite offsets in the FST instead, like
tgctogcm does. Other than making Dolphin handle the affected TGC files
correctly, this change also makes it so that unnecessary padding data
isn't written if you use Dolphin to convert a TGC file to an ISO file.
This feature is not actually implemented in Dolphin as of now, but I'm
planning to add it in the near future as part of a larger feature.
2020-06-17 12:32:39 +02:00
Admiral H. Curtiss
476c95900d EXI: When loading a savestate with a mismatching GCI folder memory card, reinizialize it with the header from the savestate to let a game still recognize it as the same card. 2020-06-17 01:44:46 +02:00
Admiral H. Curtiss
8b13e1882a EXI: Store data for regenerating a GCI folder memory card header in EXI_Channel and pass it down to the memory card device. 2020-06-17 01:44:46 +02:00
Admiral H. Curtiss
e810d492f2 GCMemcard: Split off HeaderData from Header to have a compact block of data for consistent initialization. 2020-06-17 01:44:46 +02:00
Admiral H. Curtiss
cc52558c0e GCMemcard: Assert struct requirements in header. 2020-06-17 01:30:42 +02:00
Admiral H. Curtiss
07bd200596 GCMemcard: Remove dependency on g_SRAM and force the caller to provide the relevant values instead. 2020-06-17 01:30:37 +02:00
Tilka
1f505870a9
Merge pull request #8873 from AdmiralCurtiss/gcmemcard-namespace
GCMemcard: Move into a Memcard namespace.
2020-06-16 19:55:06 +01:00
Tilka
de5941d6f8
Merge pull request #8878 from JosJuice/actually-disable-tgc-conversion
DolphinQt: Actually disable converting from TGC
2020-06-16 19:39:40 +01:00
Admiral H. Curtiss
914ebdf0dd GCMemcard: Move from global namespace into a Memcard namespace. 2020-06-16 20:18:39 +02:00
Admiral H. Curtiss
2e1bfe073c GCMemcard: Split out MemoryCardBase into its own header, which is the base class for the raw and folder memory cards and has little to do with the actual memory card data structures. 2020-06-16 20:18:39 +02:00
JosJuice
c236d89f64 DolphinQt: Actually disable converting from TGC
When I made PR 8773, I only covered the case where multiple files
are selected, not the more common case where one file is selected.
Oops
2020-06-16 11:21:44 +02:00
Tilka
d4418a2b43
Merge pull request #8877 from JosJuice/convert-fail-message
DolphinQt: Make conversion error messages actually show up
2020-06-16 09:59:03 +01:00
JosJuice
20a3119d7a DolphinQt: Make conversion error messages actually show up
I don't know why QErrorMessage doesn't work, but ModalMessageBox
works, so let's use ModalMessageBox.
2020-06-16 10:39:40 +02:00
JosJuice
2b25e1d6b9 DolphinQt: Don't show success message when converting missing file 2020-06-16 10:35:00 +02:00
JosJuice
349cdd5136 DolphinQt: Fix crash on right-clicking multiple games
GetSelectedGames() constructs a new list each time you call it.
2020-06-16 10:33:18 +02:00
Tilka
f9f4734237
Merge pull request #8850 from JosJuice/block-size-warning
Show an OSD message when running a disc image with a large block size
2020-06-14 15:03:32 +01:00
Tilka
ad85012172
Merge pull request #8843 from Techjar/fastmem-ui
DolphinQt: Add fastmem option to debugger UI
2020-06-14 14:54:32 +01:00
Tilka
9f5e6edc34
Merge pull request #8809 from Ebola16/ABB
Replace some acronyms
2020-06-14 14:30:52 +01:00
Ryan Meredith
2a70d86d55 Replace some acronyms 2020-06-14 08:37:24 -04:00
Tilka
cb54fc7543
Merge pull request #8857 from JosJuice/qt-bounding-box-width
DolphinQt: Use QFontMetrics::boundingRect instead of QFontMetrics::width
2020-06-14 12:10:33 +01:00
Tilka
0ef9b998ce
Merge pull request #8658 from orbea/glslang
Externals: Update glslang.
2020-06-13 18:43:53 +01:00
Shawn Hoffman
17498dbb4c DolReader: if data segment goes off end of file, treat it as zero-fill (bss) 2020-06-09 18:00:24 -07:00
JosJuice
87330ae524 DolphinQt: Use QFontMetrics::boundingRect instead of QFontMetrics::width
See https://kdepepo.wordpress.com/2019/08/05/about-deprecation-of-qfontmetricswidth/
2020-06-08 12:32:36 +02:00
CrunchBite
595e1197b6 Rename existing BBA to BBA (TAP) to prepare for new BBA
Based on work by tommy1019
2020-06-07 23:17:28 -04:00
Tillmann Karras
d5c00b8909 DSPSymbols: fix off-by-one error 2020-06-08 03:41:45 +01:00
JosJuice
162e3be82b Show an OSD message when running a disc image with a large block size
This is intended to catch WIA files which have been created using
wit's default parameters (40 MiB block size), once the WIA PR is
merged. The check does however also work for GCZ files – not that
I think anyone has a GCZ file with a block size that large.
2020-06-07 14:11:00 +02:00
Tilka
94f317010e
Merge pull request #8847 from Techjar/faster-file-path
Qt/GameListModel: Use absolutePath for file path column
2020-06-06 22:56:38 +01:00
JosJuice
d89162c8ad
Merge pull request #8848 from JosJuice/fix-build
Fix build
2020-06-06 15:46:32 +02:00
JosJuice
b4584abaa6 Fix build
There was a race condition between two PRs incrementing the
array size. CI didn't catch it because the PR that was merged
last (PR #8824) wasn't rebuilt after the first PR was merged.
2020-06-06 15:09:48 +02:00
JMC47
9f7c72b7eb
Merge pull request #8824 from Techjar/sd-read-only
Add option to disallow SD card writes
2020-06-06 07:02:02 -04:00
Techjar
fa208c4acd Qt/GameListModel: Use absolutePath for file path column
canonicalPath is orders of magnitude slower as it has to perform actual
disk I/O to resolve symlinks, which makes sorting by this column
ridiculously slow for large game lists, especially if the games are on
a NAS. We probably don't need that, simply resolving relative paths
should be sufficient.
2020-06-06 05:24:23 -04:00
JosJuice
f1ec4fb70a DolphinQt: Enable RTL layout
Fixes https://bugs.dolphin-emu.org/issues/11508
2020-06-02 22:24:49 +02:00
JosJuice
74ae02f979 DolphinQt: Support gettext contexts (Qt disambiguations) 2020-06-02 22:24:49 +02:00
Techjar
5c38727651 DolphinQt: Add fastmem option to debugger UI 2020-06-02 06:18:52 -04:00
Techjar
209308a4d6 Replace usage of std::result_of with std::invoke_result
std::result_of is deprecated in C++17, and removed in C++20. Microsoft
has gone ahead with the removal as of Visual Studio 16.6.0, so before
this change our code is broken there.
2020-06-01 17:33:18 -04:00
Tillmann Karras
b0258af530 DSP/Interpreter: fix comments not matching opcode table 2020-05-31 15:21:20 +01:00
Tillmann Karras
198a307db3 DSP/Interpreter: simplify switch 2020-05-31 15:21:20 +01:00
Tillmann Karras
89de40a22e DSP/Interpreter: remove redundant masking 2020-05-31 15:21:19 +01:00
orbea
ba2d04b793 Externals: Fix build failures with the newer glslang.
v2: Don't include glslang project wide.
2020-05-30 18:54:21 -07:00
Techjar
52e0294166 Add option to disallow SD card writes 2020-05-28 15:11:37 -04:00
Connor McLaughlin
b3c705fa96
Merge pull request #8829 from stenzek/fix-macos-again
Core: Use window instead of surface for ControllerInterface updates
2020-05-28 16:56:13 +10:00
Connor McLaughlin
b4e063311e
Merge pull request #8827 from stenzek/adreno-more-like-brokenreno
FramebufferManager: Fix invalid readback of EFB D24S8 depth
2020-05-28 16:55:42 +10:00
Lioncash
86f8768268 VideoCommon/ShaderGenCommon: Make template functions regular functions
These are only ever used with ShaderCode instances and nothing else.
Given that, we can convert these helper functions to expect that type of
object as an argument and remove the need for templates, improving
compiler throughput a marginal amount, as the template instantiation
process doesn't need to be performed.

We can also move the definitions of these functions into the cpp file,
which allows us to remove a few inclusions from the ShaderGenCommon
header. This uncovered a few instances of indirect inclusions being
relied upon in other source files.

One other benefit is this allows changes to be made to the definitions
of the functions without needing to recompile all translation units that
make use of these functions, making change testing a little quicker.

Moving the definitions into the cpp file also allows us to completely
hide DefineOutputMember() from external view, given it's only ever used
inside of GenerateVSOutputMembers().
2020-05-25 21:12:29 -04:00
Lioncash
e3506ff4ef VideoCommon/ShaderGenCommon: Convert helper functions over to fmt
A very trivial conversion, this simply converts calls to Write over to
WriteFmt and adjusts the formatting specifiers as necessary.

This also allows the const char* parameters to become std::string_view
instances, allowing for ease of use with other string types.
2020-05-25 21:12:29 -04:00
Markus Wick
68706973d2
Merge pull request #8828 from stenzek/gles-readpixels
FramebufferManager: Copy to color format for depth readbacks on GLES
2020-05-25 08:57:20 +02:00
Tillmann Karras
aaa19acbd0 DSP/Interpreter: simplify opcode table by masking 2020-05-24 15:51:52 +01:00
Tillmann Karras
e651592ef5 Misc cleanup 2020-05-24 15:51:52 +01:00
Léo Lam
a660033e8c
Merge pull request #8792 from leoetlino/video-backend
Migrate video backend setting to the new config system
2020-05-24 15:26:44 +02:00
Léo Lam
1203e626b3
Merge pull request #8800 from sepalani/kd-shutdown
IOS/KD: Implement IOCTL_NWC24_REQUEST_SHUTDOWN
2020-05-24 15:24:51 +02:00
Léo Lam
166633bf27
Merge pull request #8826 from iwubcode/try_parse_any_base
Common / Core: Update StringUtil to allow specifying the base
2020-05-24 15:13:49 +02:00
Léo Lam
7449c7153c
Merge pull request #8830 from JosJuice/delete-empty-rfl-db
CheckNAND: Delete RFL_DB.dat if empty
2020-05-24 15:12:39 +02:00
JosJuice
f71ebfe9c1 CheckNAND: Delete RFL_DB.dat if empty 2020-05-24 11:04:23 +02:00
Stenzek
ff92357b63 Core: Use window instead of surface for ControllerInterface updates
Fixes crashes with Vulkan on macOS.
2020-05-24 17:39:56 +10:00
Stenzek
bf74553878 FramebufferManager: Copy to color format for depth readbacks on GLES
glReadPixels() with depth formats is not supported.

Should fix broken EFB access on GLES.
2020-05-24 16:11:11 +10:00
Stenzek
ad373950a2 FramebufferManager: Fix invalid readback of EFB D24S8 depth
Fixes assertion tripping when saving state on Adreno.
2020-05-24 15:36:04 +10:00
iwubcode
85e11cd4ab Common / Core: Update StringUtil to allow specifying the base, default to 0. Fix ActionReplay code to use this instead of prepending '0x' in front 2020-05-23 18:40:10 -05:00
Sepalani
1df1a9abe6 IOS/KD: Implement IOCTL_NWC24_REQUEST_SHUTDOWN 2020-05-22 19:19:36 +04:00
Léo Lam
8df56cb319 Migrate video backend setting to the new config system
Fixes https://bugs.dolphin-emu.org/issues/12087
2020-05-22 16:54:53 +02:00
Léo Lam
393ce529af
Merge pull request #8771 from Leseratte10/master
Add /dev/dolphin interface to allow game to read the REAL product code
2020-05-22 16:49:31 +02:00
JosJuice
6d3b0db041 DolphinQt: Fix freelook description typos
cControls -> controls, axis -> axes, removed leading spaces.
2020-05-20 21:56:04 +02:00
JosJuice
cc330afa6b DolphinQt: Fix the panic alert deadlock, Pause on Focus Loss edition
why are there so many ways to trigger this issue
2020-05-18 19:38:56 +02:00
Tilka
abe125aea7
Merge pull request #8816 from JosJuice/qfontmetrics-width
DolphinQt: Remove another usage of QFontMetrics::width
2020-05-18 00:19:41 +01:00
JosJuice
f87e32840f DolphinQt: Remove another usage of QFontMetrics::width
QFontMetrics::width breaks building with CMake on Windows,
due to a deprecation warning which gets promoted to an error.
2020-05-18 00:39:57 +02:00
Sepalani
10870a0f74 Config: Migrate SSL options to Onion config 2020-05-17 20:37:10 +01:00
JosJuice
2250fbce0e
Merge pull request #8802 from leoetlino/wiiroot-mii-db
WiiRoot: Fix empty files being created when source is missing
2020-05-17 20:11:11 +02:00
Pierre Bourdon
099197b480
Merge pull request #8797 from iwubcode/save-state-CLI
Core: Add support for booting a save state from command line
2020-05-17 17:34:08 +02:00
Pierre Bourdon
cea779cc84
Merge pull request #8767 from iwubcode/freelook-camera-type
Expand freelook camera with control options
2020-05-17 17:33:04 +02:00
JosJuice
2137fb7813 Externals: Add zstd
I had to rename Source/Common/Compiler.h because the VS build
confuses it with Externals/zstd/lib/common/compiler.h otherwise.
2020-05-13 20:53:10 +02:00
Sepalani
4bf7c3e051 NetworkWidget: Add Blocking column 2020-05-13 11:53:29 +04:00
Techjar
ac9b246809 Core/UICommon: Fix EnableScreenSaver preprocessor directive
The include for X11Utils.h (and by extension Xlib.h) is gated behind
HAVE_XRANDR, as well as the declaration for this function, but its
definition was mistakenly gated behind HAVE_X11. Therefore, if we have
X11 but not Xrandr, the build will fail due to declaration/definition
mismatch and the missing Window type.
2020-05-13 02:11:29 -04:00
Connor McLaughlin
2488e4a587
Merge pull request #8795 from WamWooWam/master
InputCommon: Use the Window handle when initializing DirectInput.
2020-05-10 19:16:15 +10:00
Pierre Bourdon
daf1c30a94
GCAdapter: add libusb error logging on reads/writes 2020-05-10 09:26:49 +02:00
Thomas May
76ae1d4070 Apply fixes to all platforms 2020-05-09 22:35:20 +01:00
Léo Lam
47ee5ac284 WiiRoot: Fix empty files being created when source is missing
CopyNandFile must not create empty files on the destination filesystem
if the source file doesn't exist.

Otherwise, this can lead to an empty Mii database being created in the
session Wii root if there's no database in the configured Wii root and
netplay or Movie is used -- that database would then be copied back to
the configured root, which causes games like MKW to complain about
corrupted Mii data even when the player has stopped using netplay.

This commit also simplifies CreateFullPath usage.
There's no need to manually extract the directory from the path,
FS::CreateFullPath does it automatically just like File::CreateFullPath
2020-05-09 16:47:45 +02:00
iwubcode
cdf5490d56 Core: Add support for specifying a command line option to boot the game into a save-state 2020-05-06 22:10:30 -05:00
Markus Wick
74b2410d7e
Merge pull request #8760 from JosJuice/multithreaded-compress
DiscIO: Implement multithreaded compression
2020-05-06 15:25:30 +02:00
JosJuice
b93bbbf2e5 DiscIO: Implement multithreaded compression 2020-05-06 14:18:51 +02:00
Thomas May
78e8ccea6d Update ControllerInterface.cpp 2020-05-06 01:30:49 +01:00
Jun Su
bb75050f68 Jit: fix warning -Winvalid-offsetof
Remove the warning:
warning: offsetof within non-standard-layout type ‘JitBlock’ is conditionally-supported
JitBlock contains non-trival types now. Split the fields with trival
types that needs to be access from JIT code into JitBlockData structure.
2020-05-04 18:26:56 +02:00
Léo Lam
7c0ef725ab
Merge pull request #8744 from cristian64/save_restore_netplay_browser_settings
DolphinQt: Saving and restoring NetPlay Session Browser dialog's settings.
2020-05-04 00:50:26 +02:00
Léo Lam
c53ecdd689
Merge pull request #8686 from sepalani/thread-tab
Debugger: Add a Thread widget
2020-05-04 00:50:10 +02:00
Léo Lam
947d6732a8
Merge pull request #8712 from sepalani/console-type
Boot: Add ConsoleType enum class
2020-05-03 23:10:44 +02:00
Mat M
9e2560b825
Merge pull request #8790 from leoetlino/ras-syndrome
Remove redundant "Emulation" from "DSP HLE Emulation"
2020-05-03 16:47:05 -04:00
iwubcode
aed7319ef8 DolphinQt: Expose freelook camera control to UI 2020-05-03 13:34:13 -05:00