Commit Graph

25064 Commits

Author SHA1 Message Date
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
2c355b81f2 Add NetBSD support 2020-12-15 02:34:25 +01:00
ed1564515b Merge pull request #9326 from Subject38/wiimote_deadlock
InputCommon: Fix callback dispatch deadlock
2020-12-15 01:16:59 +01:00
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
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
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
3634508e46 Merge pull request #9311 from JosJuice/config-get-fast-2
Add caching to Config::Info
2020-12-13 03:55:39 +01:00
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
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
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
3c6ad495b4 DolphinQt: Fix crash after removing extra patch line 2020-12-11 22:13:10 +01:00
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
b285991b88 Turn Config::Info into a class with getters 2020-12-11 19:54:16 +01:00
11e8783893 Core: Don't copy default _Enabled sections to user INIs 2020-12-11 15:38:11 +01:00
7d9276c340 Merge pull request #9317 from JosJuice/default-enabled-codes
GameSettings: Enable compatibility patches by default
2020-12-11 10:40:03 +01:00
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
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
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
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
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
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
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
3328eb4523 Merge pull request #9293 from JosJuice/jitarm64-stack-pointer
JitArm64: Properly set m_stack_pointer
2020-12-08 07:56:30 +01:00
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
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
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
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
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
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
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
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
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
b43f7c85cc DiscIO: Fix recursive directory extraction
https://bugs.dolphin-emu.org/issues/12331
2020-12-03 21:13:53 +01:00
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
a5880fa402 Qt: Add missing tr calls for tooltip descriptions 2020-11-30 14:04:08 +01:00
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
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
361bf25cf8 Merge pull request #9254 from flagrama/fallback-region-selection
Fallback Region Option
2020-11-29 00:19:15 +01:00
738e1a6dbb Merge pull request #9297 from JosJuice/movie-game-id-comparison
Movie: Fix 83b9fef regressions
2020-11-29 00:09:30 +01:00
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
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
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
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
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
cc837a59d6 Core / DolphinQt: Add ini only option to force low-contrast tooltips 2020-11-28 11:49:14 -06:00
9c204428fe DolphinQt: Add tooltip support to Software Renderer Graphics tab 2020-11-28 11:49:14 -06:00
2bfb8ebf96 DolphinQt: Add tooltip support to Hacks Graphics tab 2020-11-28 11:49:14 -06:00
1673442794 DolphinQt: Add tooltip support to Advanced Graphics tab 2020-11-28 11:49:14 -06:00
d083dae7fd DolphinQt: Add tooltip support to Enhancements Graphics tab 2020-11-28 11:49:14 -06:00