Commit Graph
100 Commits
Author SHA1 Message Date
Léo Lam ae67a9382b CMake: Put the *.mo files directly in the correct output dir
Avoids the need to copy the *.mo files manually *and* more importantly
this ensures that the mo files are always recreated if the build
output directory is cleared.
2021-04-27 12:54:18 +02:00
Léo Lam e71aef6768 CMake: Ask windeployqt not to copy DLLs that are unnecessary
* no-system-d3d-compiler: d3dcompiler_47.dll
* no-angle, no-opengl-sw: libEGL.dll, libGLESv2.dll
2021-04-27 12:54:18 +02:00
Léo Lam f6b8d4758e CMake: Copy license.txt to output folder to match existing Win builds 2021-04-27 12:54:18 +02:00
Léo Lam c69747c7fb CMake: Fix CMAKE_RUNTIME_OUTPUT_DIRECTORY being ignored in UnitTests
CMAKE_RUNTIME_OUTPUT_DIRECTORY_<mode> overrode CMAKE_RUNTIME_OUTPUT_DIRECTORY.

It's just unnecessary and it broke UnitTests's custom output directory
2021-04-27 12:54:18 +02:00
Léo Lam dcf3ca0f89 CMake: Force gtest to link CRT dynamically to avoid runtime mismatches
Required to fix unit test builds for Windows+MSVC+CMake.

For more information, see:

https://github.com/google/googletest/blob/23ef29555ef4789f555f1ba8c51b4c52975f0907/googletest/README.md#visual-studio-dynamic-vs-static-runtimes
2021-04-27 12:54:18 +02:00
Léo Lam 51bf2dca21 Merge pull request #9675 from JosJuice/jit64-div-80000000
Jit64: Fix UB/infinite loop when compiling division by 0x80000000
2021-04-26 23:50:27 +02:00
Léo Lam aa3a96f048 Merge pull request #9644 from JosJuice/jit-fallback-discard
Jits: Fix interpreter fallback handling of discarded registers
2021-04-25 13:20:41 +02:00
Léo Lam 1c6232e95f Merge pull request #9646 from PatrickFerry/sw-textureencoder-alignedwidth
SW: Fix alignedWidth in TextureEncoder
2021-04-24 20:13:10 +02:00
Léo Lam 18174d3ed6 Merge pull request #9649 from leoetlino/cmake-auto-update-track
Make it possible to enable auto-updates by default with CMake builds
2021-04-24 19:44:51 +02:00
Léo Lam 302e8136a3 Merge pull request #5624 from Orphis/cmake_windows
cmake: Windows fixes
2021-04-24 18:11:23 +02:00
Léo Lam c812ab6a63 Jit: Optimize block link queries by using hash tables
Repeated erase() + iteration on a std::multimap is extremely slow.

Slow enough that it causes a 7 second long stutter during some
transitions in F-Zero X (a N64 VC game that triggers many, many icache
invalidations).

And slow enough that JitBaseBlockCache::DestroyBlock shows up on a
flame graph as taking >50% of total CPU time on the CPU-GPU thread:
https://i.imgur.com/vvqiFL6.png

This commit optimises those block link queries by replacing the
std::multimap (which is typically implemented with red-black trees)
with hash tables.

Master: https://i.imgur.com/vvqiFL6.png / 7s stutters
(starting from 5.0-2021 and with branch following disabled)

This commit: https://i.imgur.com/hAO74fy.png / ~0.7s stutters, which
is pretty close to 5.0 stable. (5.0-2021 introduced the performance
regression and it is especially noticeable when branch following
is disabled, which is the case for all N64 VC games since 5.0-8377.)
2021-04-24 17:20:59 +02:00
Léo Lam 1686b637df MIOS: Fix SConfig::OnNewTitleLoad not being called
Oversight from #9545, which moved the "new game has been loaded" logic
to a separate OnNewTitleLoad function that has to be called explicitly
*after* a title has loaded.

Coupled with the commit that makes Dolphin not clobber 0x1800-0x3000
when using MIOS, this fixes Wind Waker and other MIOS-patched games
when they are launched from the System Menu.
2021-04-22 21:55:07 +02:00
Léo Lam 568428ca67 HLE: Do not clobber 0x1800-0x3000 when using MIOS to fix IPL crash
MIOS puts patch data in low MEM1 (0x1800-0x3000) for its own use.
Overwriting data in this range can cause the IPL to crash when
launching games that get patched by MIOS.
See https://bugs.dolphin-emu.org/issues/11952 for more info.

Not applying the Gecko HLE patches means that Gecko codes will not work
under MIOS, but this is better than the alternative of having specific
games crash.
2021-04-22 21:50:05 +02:00
Léo Lam bfaed2b0b1 GameINI: Fix file path for RZDK01 INI 2021-04-20 01:43:02 +02:00
Léo Lam 34348fad1d Merge pull request #9658 from lioncash/fallthrough
BlockingLoop/Jit64: Indicate explicit fallthrough where applicable
2021-04-20 00:28:13 +02:00
Léo Lam cf80ed7f2d Merge pull request #9653 from JosJuice/android-import-nand
Android: Add "Import BootMii NAND Backup"
2021-04-19 21:57:40 +02:00
Léo Lam ec5fbeb0d6 Merge pull request #9654 from JosJuice/android-12-early
Android: Early changes to adapt for Android 12
2021-04-19 21:25:18 +02:00
Léo Lam 045c5a1fdc Merge pull request #9655 from PPLToast/ztp-korea-ini
GameINI: Add speed hack for Korean TP
2021-04-19 19:58:22 +02:00
Léo Lam e7f68cf850 Merge pull request #9634 from skylersaleh/xcode_strict_aliasing
Build: Fix -fno-strict-aliasing on Xcode builds
2021-04-17 22:24:52 +02:00
Léo Lam a7a69ecd2e Put x86_64 Windows binaries in Binary/x64 for consistency with ARM64
...and with our existing Visual Studio project files and
buildbot config.
2021-04-17 21:33:07 +02:00
Léo Lam 5f355690e0 Make it possible to enable auto-updates by default with CMake builds
This adds a CMake option (DOLPHIN_DEFAULT_UPDATE_TRACK) to allow
configuring SCM_UPDATE_TRACK_STR. This is needed to enable auto-updates
in Windows CMake builds by default.
2021-04-17 19:45:43 +02:00
Léo Lam a12d365d60 Fix PCH when building with CMake + Ninja + MSVC on Windows
fmt/format.h is included in the PCH, so we need to make sure fmt is
actually in the include path.

Not sure how Visual Studio + CMake manages to build without this.
2021-04-17 17:48:47 +02:00
Léo Lam cc32fa91af FifoPlayer: Copy data with memcpy instead of one byte at a time
Copying with memcpy/std::copy is a lot faster than writing one byte
at a time. And the behavior should be fully equivalent.
2021-04-17 16:02:43 +02:00
Léo Lam 336518049d WiiUtils: Add helper functions to get emulated/real Bluetooth device
This adds a function to get the emulated or real Bluetooth device for
an active emulation instance. This lets us deduplicate all the
`ios->GetDeviceByName("/dev/usb/oh1/57e/305")` calls that are currently
scattered in the codebase and ensures Bluetooth passthrough is being
handled correctly.

This also fixes the broken check in WiimoteCommon::UpdateSource.
There was a confusion between "emulated Bluetooth" (as opposed to
"real Bluetooth" aka Bluetooth passthrough) and "emulated Wiimote".
2021-04-12 18:16:56 +02:00
Léo Lam 136f59b434 DolphinQt: Fix latent build error on Windows 2021-04-12 18:16:56 +02:00
Léo Lam 3b6fdb74f6 Merge pull request #9628 from Dentomologist/wiiutils_fix_reference_to_temporary_subobject
WiiUtils: Remove reference qualifier
2021-04-07 01:46:45 +02:00
Léo Lam f18743ab89 Merge pull request #9576 from Pokechu22/invalid-gfx-reg-quirk
Add game quirks for unknown BP/CP/XF commands
2021-04-07 01:46:21 +02:00
Léo Lam c1617460a1 Merge pull request #9480 from leoetlino/saturating-cast
MathUtil: Add SaturatingCast to cast floats more safely
2021-04-07 01:43:39 +02:00
Léo Lam 2c537e341f Merge pull request #8937 from Pokechu22/icache-disable
Disable ICache emulation for some games
2021-04-07 01:41:12 +02:00
Léo Lam 1a9e72c9bb DiscIO: Use MathUtil::SaturatingCast 2021-04-06 23:27:23 +02:00
Léo Lam 8d21fa56a1 UnitTests: Use MathUtil::SaturatingCast to avoid UB
[conv.fpint]/1:

> A prvalue of a floating-point type can be converted to a prvalue of
> an integer type. The conversion truncates; that is, the fractional
> part is discarded. The behavior is undefined if the truncated value
> cannot be represented in the destination type.
2021-04-06 23:27:23 +02:00
Léo Lam 48712168b8 MathUtil: Add SaturatingCast to cast floats more safely 2021-04-06 23:27:23 +02:00
Léo Lam 49edd5f482 MMU: Remove a bunch of useless swaps
The swaps are confusing and don't accomplish much.

It was originally written like this:

u32 pte = bswap(*(u32*)&base_mem[pteg_addr]);

then bswap was changed to Common::swap32, and then the array access
was replaced with Memory::Read_U32, leading to the useless swaps.
2021-04-06 18:25:29 +02:00
Léo Lam 960d957f4f MMU: Fix SDR updates being silently dropped in some cases
While 6xx_pem.pdf §7.6.1.1 mentions that the number of trailing
zeros in HTABORG must be equal to the number of trailing ones
in the mask (i.e. HTABORG must be properly aligned), this is actually
not a hard requirement. Real hardware will just OR the base address
anyway. Ignoring SDR changes would lead to incorrect emulation.

Logging a warning instead of dropping the SDR update silently is a
saner behaviour.
2021-04-06 18:25:09 +02:00
Léo Lam ac250f7c20 Merge pull request #9623 from Techjar/pauseandlock-fix
Core: Fix PauseAndLock segfaulting under certain circumstances
2021-04-06 12:45:35 +02:00
Léo Lam d96874a4db Merge pull request #9622 from skylersaleh/fix_zstd_headers
Check that zstd headers can be found before using a shared zstd library
2021-04-06 12:42:44 +02:00
Léo Lam e89ae71cec Merge pull request #9388 from JosJuice/default-locale
Set console's default language/country/region based on computer settings
2021-04-06 12:34:58 +02:00
Léo Lam a1ee6ace71 Merge pull request #9620 from Dentomologist/convert_gamelist_col_to_enum_class
Convert GameList col enum to enum class
2021-04-06 12:08:15 +02:00
Léo Lam ccc99ebfe3 Merge pull request #9517 from NoraTheGamer/master
Mario Party Cheats Update
2021-04-04 22:37:33 +02:00
Léo Lam 6d1eb6ae5a Merge pull request #9621 from Pokechu22/cassert
Replace uses of cassert with Common/Assert.h
2021-04-03 12:46:21 +02:00
Léo Lam 391644dbb5 IOS/FS: Add a scoped FD class to make it harder to leak FDs
This changes FileSystemProxy::Open to return a file descriptor wrapper
that will ensure the FD is closed when it goes out of scope.

By using such a wrapper we make it more difficult to forget to close
file descriptors.

This fixes a leak in ReadBootContent. I should have added such a class
from the beginning... In practice, I don't think this would have caused
any obvious issue because ReadBootContent is only called after an IOS
relaunch -- which clears all FDs -- and most titles do not get close
to the FD limit.
2021-04-01 21:34:58 +02:00
Léo Lam 06439a2d40 Merge pull request #9610 from CookiePLMonster/fix-shortcut-creation
Fix shortcut creation
2021-03-30 17:30:37 +02:00
Léo Lam 8d2b0fff8a Merge pull request #9545 from leoetlino/es-launch-timings
IOS: Improve timing accuracy for title launches (both ARM and PPC)
2021-03-27 01:47:28 +01:00
Léo Lam 8fab253212 Merge pull request #9609 from Pokechu22/fix-WriteVertexArray
Fix PanicAlert when recording FIFOs
2021-03-27 01:39:53 +01:00
Léo Lam da534c7d75 Merge pull request #9571 from JosJuice/netplay-sync-more-settings
NetPlay: Sync more settings
2021-03-27 01:38:33 +01:00
Léo Lam cd0db58dc5 Merge pull request #9589 from Dentomologist/fix_no_objc_exceptions_warning
CMake: Fix unused compiler flag warning
2021-03-27 01:36:58 +01:00
Léo Lam c915b780cf Merge pull request #9596 from Minty-Meeo/apply-moar-RunAsCPUThread
Apply More Core::RunAsCPUThread
2021-03-27 01:11:34 +01:00
Léo Lam cd6ee13320 Merge pull request #9608 from Bonta0/swapucode
DSPHLE: Don't restore the last UCode when the crc doesn't match
2021-03-27 01:02:47 +01:00
Léo Lam f29c8b83c0 Merge pull request #9597 from Pokechu22/alt-enter
Open the properties window when alt+enter is used on the game list
2021-03-27 00:39:42 +01:00
Léo Lam f44f20560d Merge pull request #9573 from JosJuice/volumeverifier-cancel-crash
VolumeVerifier: Fix potential crash when cancelling
2021-03-16 11:10:47 +01:00
Léo Lam b7f931fc6b Merge pull request #9570 from JosJuice/wia-partial-exception-list
DiscIO: Fix reading certain WIA chunks with many exceptions
2021-03-16 11:10:12 +01:00
Léo Lam c8d8f9ef85 Merge pull request #9577 from JosJuice/di-unknown-size-hack
DVDInterface: Make the WBFS/CISO hack only affect WBFS/CISO
2021-03-16 11:03:36 +01:00
Léo Lam 3fcc018fa7 Merge pull request #9588 from JosJuice/jitarm64-srawx-a-s
JitArm64: Improve srawx special case carry calculation
2021-03-16 10:40:10 +01:00
Léo Lam f36b1cbb2a Merge pull request #9541 from InusualZ/detecting-rso
Symbols: Fix RSO Modules detection algorithm
2021-03-16 10:33:58 +01:00
Léo Lam b980dd1385 Merge pull request #9580 from MetroidPrimeModding/redundant-update-trigger-check
[Updater] Check whether we've already had an update triggered
2021-03-16 10:19:54 +01:00
Léo Lam 646bdc9459 Merge pull request #9583 from michaelszubartowicz/master
Fix loading save states with bluetooth passthrough
2021-03-16 10:12:49 +01:00
Léo Lam 9a3e752021 Merge pull request #9558 from iwubcode/dsu-multi-server-avoid-blocking
InputCommon: block on DSU servers collectively instead of individually
2021-03-16 10:12:32 +01:00
Léo Lam 5cea85f008 Merge pull request #9579 from Dentomologist/fix_open_containing_folder
Gamelist: Fix 'Open Containing Folder'
2021-03-16 09:52:46 +01:00
Léo Lam e6d8af3188 Merge pull request #9553 from sepalani/ghidra-tools
Tools: Dolphin symbol map ghidra scripts added
2021-03-16 09:47:03 +01:00
Léo Lam 064a00634e Merge pull request #9590 from JosJuice/android-recreate-main
Android: Fix recreating main activity
2021-03-16 09:42:31 +01:00
Léo Lam 13f79321f7 Merge pull request #9574 from Pokechu22/enumformatter-warnings
EnumFormatter: fix signed/unsigned comparison warnings
2021-03-16 09:39:42 +01:00
Léo Lam 3b0b221fcf Merge pull request #9567 from Dentomologist/fix_various_warnings
Fix various build warnings
2021-03-16 09:33:01 +01:00
Léo Lam 61198541a0 Merge pull request #9562 from sepalani/dis-icons
Breakpoints: Change icon when disabled
2021-03-07 12:14:12 +01:00
Léo Lam ac687bc364 Merge pull request #9568 from JosJuice/android-delay-save-tab
Android: Don't save settings immediately after switching platform tab
2021-03-07 12:03:46 +01:00
Léo Lam a5555c6300 Merge pull request #9569 from JosJuice/android-mainpresenter-skip-scan
Android: Move "skip scanning" logic to MainPresenter
2021-03-07 11:51:03 +01:00
Léo Lam 5f7d935b0a Merge pull request #9533 from sepalani/mmu-is-ram
MMU: Fix IsRAMAddress not working
2021-03-05 11:49:55 +01:00
Léo Lam adcdeda372 Merge pull request #9565 from sepalani/qt-blocker
BreakpointWidget: Use QSignalBlocker
2021-03-05 10:44:44 +01:00
Léo Lam a4de2502c5 Merge pull request #9550 from endrift/gba-flush
SI/DeviceGBA: Ensure data socket isn't backed up
2021-03-05 10:38:55 +01:00
Léo Lam de30559862 Merge pull request #9564 from sepalani/bp-del
BreakpointWidget: Fix delete deleting both MBP and BP at address
2021-03-05 10:28:48 +01:00
Léo Lam 1e3e5680db Merge pull request #9561 from sepalani/fix-watches
Watches: Fix Save and Load from strings
2021-03-05 00:57:40 +01:00
Léo Lam 19c5a19629 Merge pull request #9529 from JosJuice/android-broadcast-before-metadata
Android: Broadcast update before updating additional metadata
2021-03-05 00:48:04 +01:00
Léo Lam 5efd563b03 Merge pull request #9555 from JosJuice/android-jni-cleanup
Android: Some JNI cleanup
2021-03-05 00:47:36 +01:00
Léo Lam 6c23e163e1 Merge pull request #9563 from sepalani/bp-changed
BreakpointWidget: Emit BreakpointsChanged to update views
2021-03-04 20:49:54 +01:00
Léo Lam aef0760efe IOS/ES: Emulate /sys/launch.sys for more accurate timings
Also gets rid of one static variable
2021-03-04 18:41:13 +01:00
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
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 2aa1ff51bd Merge pull request #9493 from nolange/stricter_compiler_flag_check
Stricter test for compiler flags
2021-03-04 12:47:33 +01:00
Léo Lam 794e093223 Merge pull request #9530 from JosJuice/android-loading-indicator
Android: Use SwipeRefreshLayout in MainActivity
2021-03-04 12:42:20 +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 06a77493a4 Merge pull request #9547 from PatrickFerry/ini-fixes-1
Some Gameini Changes
2021-03-04 12:16:09 +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
Léo Lam 6bcef87f82 Merge pull request #9554 from Dentomologist/remove_unused_lambda_capture
DolphinQt: Removed unused this capture in lambda
2021-03-03 23:03:08 +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
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
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
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
Léo Lam 0920097614 Merge pull request #9534 from AdmiralCurtiss/chase-pointer-fix
Core/MemoryWatcher: Use appropriate memory read function in ChasePointer().
2021-02-26 01:51:31 +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