Commit graph

31876 commits

Author SHA1 Message Date
Dentomologist
71541c1324 VideoCommon: Fix D3D shader warning X4000 (uninitialized variables)
Initialize alpha_A and alpha_B. They were previously only initialized in
cases where they were used, but D3D isn't able to figure that out.
2022-07-08 00:25:14 -07:00
Dentomologist
0fac1d6e87 VideoCommon: Fix D3D shader warning X3571 (negative base for pow())
Add abs() to fix "pow(f, e) will not work for negative f, use abs(f) or
conditionally handle negative values if you expect them".
2022-07-08 00:19:05 -07:00
Merry
3092f40e9f Arm64Emitter: Simplify LogicalImm logic
Heavily simplify logical immediate encoding.

This is based on the observation that if a valid repeating element
exists, it repeats through `value`. Thus it does not matter which
one you analyse. Thus we skip over the least significent element
if LSB = 1 by masking it out with `inverse_mask_from_trailing_ones`,
to avoid the degenerate case of a stretch of 1 bits going 'round
the end' of the word.
2022-07-07 22:53:36 +01:00
Admiral H. Curtiss
eccf527bf6
Merge pull request #9147 from jordan-woyak/imu-accel-weight-setting
WiimoteEmu: Expose IMU pointing accelerometer weight setting.
2022-07-07 23:17:47 +02:00
Admiral H. Curtiss
ccdb909d06
Merge pull request #10710 from jordan-woyak/rename-range
DolphinQt: Renamed "Range" to "Multiplier" in advanced mapping window and improved UX.
2022-07-07 23:04:11 +02:00
TellowKrinkle
3ee4b89a46 VideoCommon: Remember to flush command buffers after multiple EFB copies 2022-07-06 18:38:05 -05:00
JMC47
7321802b4b
Merge pull request #10811 from Pokechu22/bs2-dfi-typo
BS2Emu: Fix DFI typo
2022-07-06 03:23:55 -04:00
Pokechu22
263d2a419a BS2Emu: Fix DFI typo 2022-07-05 17:15:59 -07:00
OatmealDome
c6eb5e2623 FileUtil: Only attempt to write to the destination in Copy if there is actually content to write 2022-07-05 15:13:20 -04:00
Admiral H. Curtiss
24498ca315
Merge pull request #10712 from tellowkrinkle/ControllerLocks
InputCommon/ControllerEmu: Use more locks
2022-07-05 11:39:48 +02:00
Admiral H. Curtiss
de3d1344d5
Merge pull request #10762 from CasualPokePlayer/fix_slow_audio_desyncs
Reduce gradual audio desyncing in dumps and apply the correct sample rate for GameCube audio
2022-07-05 11:37:30 +02:00
CasualPokePlayer
4234b25682 Do not directly store input sample rate, rather just store a divisor for that sample rate, with it using a fixed dividend of 54000000 * 2.
This should reduce (but not completely eliminate) gradual audio desyncs in dumps. This also allows for accurate sample rates for the GameCube.
Completely eliminating gradual audio desyncs will require resampling to an integer sample rate, as nothing seems to support a non-integer sample rate.
2022-07-03 15:07:06 -07:00
schthack
01ada3850f BBA: Added BuiltIn device that allow BBA emulation without the need of a TapDevice Configuration include a dns server setting 2022-07-02 18:02:50 -04:00
Admiral H. Curtiss
3bcd7aced9
Merge pull request #8467 from CookiePLMonster/interruptable-shader-precompile
Make shader precompilation interruptable
2022-07-02 13:08:37 +02:00
Admiral H. Curtiss
2f228310af
Merge pull request #10794 from TryTwo/PR_MemoryWidget_Cell_Edit
Debugger MemoryViewWidget: Allow direct editing of memory cells.
2022-07-02 13:05:39 +02:00
JosJuice
2a791116f1
Merge pull request #10800 from Pokechu22/registerwidget-crash
RegisterWidget: Fix crash when right-clicking when there is no selected cell
2022-07-02 09:18:28 +02:00
JosJuice
07a15a3228
Merge pull request #10624 from Minty-Meeo/resolve-gcc-warnings
Resolve Linux GCC Warnings
2022-07-02 09:17:44 +02:00
JMC47
b5f4b0dffe
Merge pull request #10803 from Zopolis4/clangingaround
Resolve additional warnings generated by clang
2022-07-02 03:12:34 -04:00
Zopolis4
0f07deb0ef
Remove unused variable in SI_DeviceKeyboard.h left over from SI_DeviceGCController.h 2022-07-02 16:16:54 +10:00
iwubcode
66f5085800 DolphinQt: add word wrap to graphics mods description 2022-07-01 19:31:19 -05:00
iwubcode
8dd4e916a7 DolphinQt: save changes to disk before refreshing mod list 2022-07-01 19:31:19 -05:00
TryTwo
bd59b0a490 Debugger MemoryViewWidget: Allow direct editing of memory cells. 2022-07-01 17:30:24 -07:00
Pokechu22
bf68211878 RegisterWidget: Fix crash when right-clicking when there is no selected cell 2022-07-01 17:13:00 -07:00
Minty-Meeo
69e32dea52 Resolve GCC Warnings 2022-06-30 15:26:48 -05:00
iwubcode
4788a05c76 VideoCommon: fix projection graphics mod affecting more than the intended draw call 2022-06-29 20:04:59 -05:00
JMC47
5d04e1e1de
Merge pull request #10518 from iwubcode/draw-mod
Introducing a 'GraphicsMod' system for creators
2022-06-28 13:35:39 -04:00
JMC47
e50e45f400
Merge pull request #10700 from sepalani/ssl-handshake
Socket: Fix some non-blocking connect edge cases
2022-06-27 21:39:36 -04:00
iwubcode
8aef0015fd DolphinQt: add warning if graphics mods are not enabled 2022-06-27 18:28:28 -05:00
iwubcode
f3054aa99f DolphinQt: add widget in game properties to list the various graphics mods available 2022-06-27 18:22:06 -05:00
iwubcode
1480b78f64 VideoCommon: dump EFB with size and texture format details and dump XFB with size details. Finally move count to front of image for XFB/EFB dumps so as to make it easier to see them in order. Change the count value prefix to 'n' 2022-06-27 18:20:52 -05:00
iwubcode
69839df1eb VideoCommon: support dynamically updating game mods at runtime 2022-06-27 18:20:52 -05:00
iwubcode
892678648e VideoCommon: trigger mod calls in TextureCacheBase (efb/xfb calls), VertexManagerBase (draw calls), and VertexShaderManager (projection calls) 2022-06-27 18:20:52 -05:00
iwubcode
62c186e14b VideoCommon: add UninitializeEFBMemory to mirror XFB function 2022-06-27 18:20:52 -05:00
iwubcode
0f88155729 Core / DolphinQt / VideoCommon: add setting for enabling graphic mods 2022-06-27 18:20:52 -05:00
iwubcode
f416b71925 VideoCommon: add logic to handle a GraphicsMod while Dolphin is running 2022-06-27 18:20:52 -05:00
iwubcode
254246b814 VideoCommon: add logic to read a GraphicsMod from configuration 2022-06-27 18:20:52 -05:00
Jordan Woyak
87fb42b64c DolphinQt: Renamed "Range" to "Multiplier" in advanced mapping window. Removed the slider. Moved the spin box. 2022-06-26 22:52:20 -05:00
Jordan Woyak
4c409411ed DolphinQt: Don't show the advanced input settings on the main dialog. 2022-06-26 22:48:13 -05:00
Jordan Woyak
80d9e79cf1 ControllerEmu: Allow settings to be categorized as "advanced". Make "Virtual Notches" and "Gate Size" categorized as such. 2022-06-26 22:42:16 -05:00
Jordan Woyak
643f82539c ControllerEmu: Expose gate size setting for octagon analog sticks. 2022-06-26 22:33:44 -05:00
iwubcode
f92beb611f VideoCommon: add game mod constants 2022-06-26 21:53:21 -05:00
iwubcode
3857e1fa66 Core: add GraphicsMod directory 2022-06-26 21:53:21 -05:00
iwubcode
4fbbd85ef4 VideoCommon: create variables for EFB/XFB copy prefix. Reword prefix to 'efb1' and 'xfb1' to match textures 2022-06-26 21:53:21 -05:00
iwubcode
b9995b04a0 VideoCommon: add a way to get have a graphics directory count for all games by using a special 'all.txt' instead of a 'gameid.txt' file 2022-06-26 00:45:13 -05:00
iwubcode
7854afe512 VideoCommon: add support for setting and getting the stage from the texture info 2022-06-26 00:45:13 -05:00
iwubcode
a1892a9c68 VideoCommon: add function to check whether TextureFormat is a valid value 2022-06-26 00:45:13 -05:00
Pokechu22
76401e8ffb BS2Emu: Initialize the last rows of postMatrices to the identity matrix
This fixes Datel titles having missing textures (which was an issue with the previous commit).
2022-06-25 17:29:49 -07:00
Pokechu22
b2ddffeeb1 BS2Emu: Set HID0/1/2/4 and MSR with correct default values
These values were obtained by setting a breakpoint at a game's entry point, and then observing the register values with Dolphin's register widget.

There are other registers that aren't handled by this PR, including CR, XER, SRR0, SRR1, and "Int Mask" (as well as most of the GPRs). They could be added in a later PR if it turns out that their values matter, but probably most of them don't.

This fixes Datel titles booting with the IPL skipped (see https://bugs.dolphin-emu.org/issues/8223), though when booted this way they are currently missing textures. Due to somewhat janky code, Datel overwrites the syscall interrupt handler and then immediately triggers it (with the `sc` instruction) before they restore the correct one. This works on real hardware due to icache, and also works in Dolphin when the IPL runs due to icache, but prior to this change `HID0.ICE` defaulted to 0 so icache was not enabled when the IPL was skipped.
2022-06-25 14:27:29 -07:00
Pokechu22
9675faa232 DSPHLE: Properly reflect initial halt state in mail handler
DSPHLE::Initialize sets the halt and init bits to true (i.e. m_dsp_control.Hex starts as 0x804), which is reasonable behavior (this is the state the DSP will be in when starting a game from the IPL, as after `__OSStopAudioSystem` the control register is 0x804).
However, CMailHandler::m_halted defaults to false, and we only call CMailHandler::SetHalted in DSPHLE::DSP_WriteControlRegister when m_dsp_control.DSPHalt changes, so since DSPHalt defaults to true, if the first thing that happens is writing true to DSPHalt, we won't properly halt the mail handler.
Now, we call CMailHandler::SetHalted on startup. This fixes Datel titles when the IPL is skipped with DSP HLE (though this configuration only works once https://bugs.dolphin-emu.org/issues/8223 is fixed).
2022-06-25 14:06:55 -07:00
Admiral H. Curtiss
caf0e5b3e8
DSPHLE: Add variables in CMailHandler to savestate. 2022-06-25 19:15:21 +02:00
Pokechu22
52f32e61dc DSPHLE: Fix build error in the libasnd uCode
This was a conflict between 8a144a735f and b063f15dcc.
2022-06-24 19:29:31 -07:00
JMC47
75943a7a2c
Merge pull request #10763 from Pokechu22/dsp-hle-asnd
DSPHLE: Add HLE version of libasnd ucode
2022-06-24 21:51:27 -04:00
iwubcode
a8b5266347 VideoCommon: enable optimizer and remove debug details when converting GLSL to SPIR-V with validation layers turned off 2022-06-24 18:09:53 -05:00
iwubcode
dda1479ecf VideoBackends / VideoCommon: refactor Vulkan to use new SPIRV functionality 2022-06-24 18:09:53 -05:00
iwubcode
c2d3b7e7f5 VideoCommon: update pixel shader output to match old D3D code 2022-06-24 18:09:53 -05:00
iwubcode
0eb9352579 D3D: update BoundingBox to match generated shader code 2022-06-24 18:09:53 -05:00
iwubcode
cad1d6ce90 VideoCommon: fix support of stereoscopic rendering after moving d3d to SPIRV generation 2022-06-24 18:09:53 -05:00
iwubcode
993fa3bf94 VideoCommon: update UberShaderPixel to properly support logic ops, matching the specialized shader 2022-06-24 18:09:53 -05:00
iwubcode
5dd2704416 D3D / VideoCommon: generate HLSL from SPIRV 2022-06-24 18:09:53 -05:00
iwubcode
3790c99a7d VideoCommon: add common spirv helper functions
Co-authored-by: tellowkrinkle <tellowkrinkle@gmail.com>
2022-06-24 17:52:31 -05:00
iwubcode
1c90d836a5 Externals: add spirv-cross using upstream commit 50b4d5389b6a06f86fb63a2848e1a7da6d9755ca
Co-authored-by: tellowkrinkle <tellowkrinkle@gmail.com>
2022-06-24 17:52:31 -05:00
Pokechu22
1faca4bfc7
Merge pull request #10752 from tellowkrinkle/BetterShaderNames
VideoCommon: Better shader names
2022-06-24 15:50:48 -07:00
JMC47
76f890f6b0
Merge pull request #10761 from Pokechu22/dsp-halt-mail
DSPHLE: Handle mail more accurately
2022-06-24 18:46:20 -04:00
JMC47
ffa3bf86fb
Merge pull request #10760 from tellowkrinkle/std430
VideoCommon: Fix SSBO layout and remove associated "bug"
2022-06-24 18:40:47 -04:00
Zopolis4
5d2290ba3c
Removed unused variable MAX_MSGLEN in LogManager.cpp 2022-06-24 14:57:03 +10:00
Pokechu22
8a144a735f DSPHLE: Add HLE version of libasnd ucode 2022-06-23 10:50:24 -07:00
Admiral H. Curtiss
0a2aabe6ec
Merge pull request #10753 from Pokechu22/dsp-hle-cdd1-constants
DSPHLE: Move CDD1 constants to UCodes.h
2022-06-23 13:43:57 +02:00
Pierre Bourdon
2bd72dfc6f
Merge pull request #10758 from shuffle2/x64-on-arm64
windows: detect and warn if running x64 dolphin on arm64
2022-06-23 07:34:34 +02:00
Pokechu22
f3c8e75666 DSPHLE: Move CDD1 constants to UCodes.h
These are used by *all* uCodes, though not all uCodes support MAIL_RESUME or MAIL_CONTINUE.
2022-06-22 22:01:13 -07:00
Shawn Hoffman
29ddd0e6f0 windows: detect and warn if running x64 dolphin on arm64 2022-06-22 15:33:12 -07:00
Pokechu22
a72fa4b9cc DSPHLE: Don't generate new mail if the DSP is halted
This fixes booting Datel titles with DSPHLE (see https://bugs.dolphin-emu.org/issues/12943). Datel messed up their DSP initialization code, so it only works by receiving a mail later on, but if halting isn't implemented then it receives the mail too early and hangs.
2022-06-22 09:57:33 -07:00
Pokechu22
3aeafcc70b DSPHLE: Return last mail with top bit cleared if there is no new mail
This is an accuracy improvement, though I don't think it matters for anything in practice.
2022-06-22 09:56:51 -07:00
Pokechu22
bdbb23fa1a DSPHLE: Rename CMailHandler::m_Mails to m_pending_mails 2022-06-22 09:56:51 -07:00
Pokechu22
0fec8ffb3c DSPHLE: Remove empty destructors
Most of these were made unnecessary by the previous commit.
2022-06-22 09:56:51 -07:00
Pokechu22
567f9bede4 DSPHLE: Remove unneeded calls to m_mail_handler.Clear()
It's cleared whenever the uCode changes, so there's no reason to clear it in a destructor or during initialization.

I've also renamed it to ClearPending.
2022-06-22 09:56:50 -07:00
Pokechu22
b063f15dcc DSPHLE: Replace CMailHandler::IsEmpty with CMailHandler::HasPending 2022-06-22 09:56:50 -07:00
Pierre Bourdon
c8e716234e
Merge pull request #10732 from Pokechu22/dsp-init
Increase accuracy of DSP initialization process
2022-06-22 14:36:04 +02:00
Pierre Bourdon
6ddff87d42
Merge pull request #10755 from tellowkrinkle/DebugUID
VideoCommon: Don't add garbage to shader uids in debug builds
2022-06-22 14:33:23 +02:00
Pierre Bourdon
dc61f87fe4
Merge pull request #10772 from shuffle2/morepch
msbuild: add pch for dolphinqt
2022-06-22 14:27:44 +02:00
Pierre Bourdon
ceef02ed2a
Merge pull request #10750 from Pokechu22/hermes-test
Enhance DSPAssemblyTest, and fix various DSPTool bugs discovered while doing so
2022-06-22 14:26:50 +02:00
Pierre Bourdon
efcb9bec9c
Merge pull request #10774 from spotlightishere/bsd-determine-nameserver
IP/Top: Expand host nameserver usage
2022-06-22 13:02:05 +02:00
Spotlight
430c58cf27
IOS: Use host nameserver on more BSDs 2022-06-21 21:49:02 -05:00
Spotlight
a2530e3b93
IOS: Use first available IPv4 nameserver 2022-06-21 21:49:02 -05:00
Zopolis4
0dfd9d4b43
Replace Cpp11 (A Deprecated alias for Latest) in .clang-format 2022-06-22 08:57:32 +10:00
Shawn Hoffman
b39a11e23b msbuild: add pch for dolphinqt
since this now includes Qt headers it's better than only using
the vanilla DolphinLib one alone (previous behavior before Qt6)
2022-06-21 13:35:14 -07:00
Pokechu22
a334883c47 Qt/MemoryViewWidget: Don't elide text
Before, the Hex 32 display would get truncated on Linux.
2022-06-20 18:53:23 -07:00
Admiral H. Curtiss
f441e3ab98
Merge pull request #10723 from Pokechu22/dsp-lle-unsigned-loop-counter
DSP LLE Recompiler: Fix LOOP and BLOOP when the counter is between 0x8001 and 0xFFFF
2022-06-21 02:01:13 +02:00
Admiral H. Curtiss
d524a92963
Merge pull request #10767 from Pokechu22/dsp-lle-dirq-zero-log
DSPLLE: Don't log when DIRQ is set to 0
2022-06-21 01:31:03 +02:00
JosJuice
fafc78b9b5 Re-run code formatting after update to Android Studio 2022.2
Android Studio 2022.2 "Chipmunk" changes the code formatting rules a
little. Let's apply the new formatting in this PR so that the lint bot
doesn't take it out on innocent PRs.
2022-06-20 17:41:41 +02:00
Pokechu22
c317f7fd22 DSPLLE: Don't log when DIRQ is set to 0
No interrupt is generated in this case. The homebrew liband uCode writes zero fairly frequently, so logging it results in spam.
2022-06-19 10:46:41 -07:00
Braxton Anderson
2b2b8e932d Rename FPS_REFRESH_INTERVAL in VideoCommon/FPSCounter 2022-06-17 20:11:53 -06:00
TellowKrinkle
f79ac768d8 VideoCommon:ShaderCache: Add const to some local variables 2022-06-17 20:14:32 -05:00
Admiral H. Curtiss
23ed611077
Merge pull request #10729 from Pokechu22/libusb-error-wrap
Improve libusb error logging
2022-06-17 16:01:46 +02:00
Admiral H. Curtiss
b199108964
Merge pull request #10520 from AdmiralCurtiss/resource-pack-init-crash
ResourcePack: Avoid crashes on invalid packs during Init().
2022-06-17 13:55:16 +02:00
Admiral H. Curtiss
efbf5a450b
ResourcePack: Avoid crashes on invalid packs during Init(). 2022-06-17 03:49:05 +02:00
TellowKrinkle
26529a31ab VideoCommon: Fix SSBO layout and remove associated "bug" 2022-06-16 20:26:11 -05:00
Shawn Hoffman
896d5454f0 updater: use new platform id for win-arm64 2022-06-16 14:55:51 -07:00
Pokechu22
053b3e725b DSPHLE: More accurately handle initialization behavior
This improves timing, but does not fix Datel titles.
2022-06-16 12:18:05 -07:00
Pokechu22
072913bbad DSPLLE: More accurately handle initialization behavior 2022-06-16 12:18:05 -07:00
Pokechu22
c38c2b1aaa DSPLLE: Fix debug logging in ReadMailboxLow
The # option means that 0x is prepended already, so the old code resulted in 0x0xDEADBEEF instead of the intended 0xDEADBEEF. WriteMailboxLow was already correct.
2022-06-16 12:18:05 -07:00
Pokechu22
3ceda1df8c DSPLLE: Rename cr to control_reg
Before, there were two distinct fields called cr and r.cr, which is needlessly confusing (see the comment in DSPCore.h).
2022-06-16 12:18:05 -07:00
TellowKrinkle
c7892d7371 VideoCommon: Name ubershaders 2022-06-16 02:08:45 -05:00
TellowKrinkle
23c1721fbd VideoCommon: Reduce duplicates of non-palette-requiring texture decode shaders 2022-06-16 02:08:45 -05:00
JosJuice
107a928452
Merge pull request #10748 from tellowkrinkle/SDL22Fun
InputCommon: SDL 2.0.22 init crash workaround
2022-06-15 18:02:59 +02:00
Admiral H. Curtiss
ac3920a0da
Qt/GameCubePane: Fix swapping memory cards mid-emulation. 2022-06-15 10:42:14 +02:00
TellowKrinkle
3fe1a1a3d7 VideoCommon: Don't add garbage to shader uids in debug builds
There wasn't anything stopping compilers from doing it in release builds either, but most optimizations would make the padding zero
2022-06-14 21:51:58 -05:00
TellowKrinkle
994210e369 InputCommon: SDL 2.0.22 init crash workaround
See https://github.com/libsdl-org/SDL/pull/5598
2022-06-14 21:02:45 -05:00
JMC47
431d757151
Merge pull request #10743 from tellowkrinkle/LargeBlockRVZ
Fix creation of rvz with > 2mb chunk size
2022-06-14 16:17:24 -04:00
JMC47
8a8e9c5ef6
Merge pull request #10742 from tellowkrinkle/Xcode
Improve incremental build time for Xcode projects
2022-06-14 16:14:54 -04:00
Pokechu22
dec48ed7de UnitTests: Remove unused include from DSPAssemblyTest 2022-06-14 13:07:14 -07:00
Pokechu22
5ea3efaedf UnitTests: Fix license for HermesBinary.cpp
This is an assembled version of HermesText.cpp, so the same license applies to it.
2022-06-14 12:22:06 -07:00
Pokechu22
75ff89e8c7 UnitTests: Edit wait_for_dsp_mail in HermesText to match HermesBinary
I don't know what happened here, unfortunately.  The version of dsp_mixer.s added to libogc on Nov 14, 2008 in c76d8b851f uses andcf and jlz here, and the version we have matches the one from Feb 5, 2009 in ae5c3a5fb5 exactly (prior to the fixes in my previous commit).  I can't see any reason why wait_for_dsp_mail would be changed like this.

ANDCF and ANDF were previously swapped and JNE/JEQ/JZR/JNZ became JNZ/JZ/JLNZ/JLZ on Apr 3, 2009 in 7c4e654253, corresponding to a change Hermes made on Nov 10, 2008 in 2cea6d99ad. But these predate the test being added.

The only other information I can find is that ASNDLIB 1.0 released on November 11, 2008, at https://web.archive.org/web/20120326145022/http://www.entuwii.net/foro/viewtopic.php?f=6&t=87 (but there aren't any surviving links from there).
2022-06-14 12:22:06 -07:00
Pokechu22
36769017c0 UnitTests: Update DSP test text for old renames
This change makes assembling DSPTestText match DSPTestBinary, though HermesText doesn't yet match HermesBinary.

The test data was originally added on April 18, 2009 in e7e4ef4481.  Then, set16 and set40 were swapped on April 22, 2009 89178f411c, which updated the DSPSpy version of dsp_code, but not the version in DSPTool used for testing.  So, when the test was made, the assembled data matched the text, but a few days after it no longer did.

Similarly, on Jul 7, 2009 in 1654c582ab the conditional instructions were adjusted, and 0x1706 was changed from JRL to JRNC and 0x0297 was changed from JGE to JC.

For what it's worth, devkitPro made the same changes on May 31, 2010 in 8a65c85c9b and updated their version of the asnd ucode (which is this ucode) on June 11, 2011 in b1b8ecab3a (though this update also includes other feature changes). Note that at the time, they didn't reassemble the ucode unless they made changes to it; the assembled was stored in the repo until bfb705fe16~...d20f9bdcfb43260c6c759f4fb98d724931443f93.

This fixes the following failures with Hermes:

!! 0015 : 8e00 vs 8f00 - set16         vs  set40
!! 016f : 8e00 vs 8f00 - set16         vs  set40

and with Hermes:

!! 0014 : 8e00 vs 8f00 - set16         vs  set40
!! 0063 : 8e00 vs 8f00 - set16         vs  set40
!! 019b : 1706 vs 1701 - jrnc        $AR0  vs  jrl         $AR0
!! 01bf : 0297 vs 0290 - jc          0x01dc  vs  jge         0x01dc
!! 01d2 : 0297 vs 0290 - jc          0x01dc  vs  jge         0x01dc

Hermes has the remaining failures:

!! 027b : 03c0 vs 03a0 - andcf       $AC1.M, #0x8000  vs  andf        $AC1.M, #0x8000
!! 027d : 029d vs 0294 - jlz         0x027a  vs  jnz         0x027a
2022-06-14 12:22:06 -07:00
Pokechu22
d52528a6f0 UnitTests: Add tests for assembling DSP code to expected binary
We already have the data for this, so this seems like a useful thing to do.  However, neither of the new tests currently pass...
2022-06-14 12:22:06 -07:00
Pokechu22
41939eeaf9 DSPDisassembler: Fix disassembly of LSR and ASR
Before, both 1441 and 147f would disassemble as `lsr $acc0, #1`, when the second should be `lsr $acc0, #-1`, and both 14c1 and 14ff would be `asr $acc0, #1` when the second should be `asr $acc0, #-1`. I'm not entirely sure whether the minus signs actually make sense here, but this change is consistent with the assembler so that's an improvement at least.

devkitPro previously changed the formatting to not require negative signs for lsr and asr; this is probably something we should do in the future: 8a65c85c9b

This fixes the HermesText and HermesBinary tests (HermesText already wrote `lsr $ACC0, #-5`, so this is consistent with what it used before.)
2022-06-14 12:22:06 -07:00
Pokechu22
6a2ec825a2 UnitTests: Fail DSPAssemblyTest if the assembled code doesn't match the expected result
This reveals that both HermesText and HermesBinary fail.  HermesBinary would have failed on master, too, if this had been implemented.
2022-06-14 12:22:06 -07:00
Pokechu22
2d774010c3 DSPCodeUtil: Include the PC and hex in the "Extra code words" section
It's included in the section before, so it's helpful to supply here too.
2022-06-14 12:22:06 -07:00
Pokechu22
087d89225c DSPCodeUtil: Give better output when comparing instructions with large immediates 2022-06-14 12:22:06 -07:00
Pokechu22
cad9801ded DSPDisassembler: Fix out-of-bounds read when the last word is an instruction with a large immediate
For instance, ending with 0x009e (which you can do with CW 0x009e) indicates a LRI $ac0.m instruction, but there is no immediate value to load, so before whatever garbage in memory existed after the end of the file was used.

The bounds-checking also previously assumed that IRAM or IROM was being used, both of which were exactly 0x1000 long.
2022-06-14 12:22:06 -07:00
Pokechu22
dc353ed84d DSPTool: Exit with status 1 if binary comparison fails 2022-06-14 12:22:06 -07:00
Pokechu22
693a29f8ce DSPCodeUtil: Use fmt::print instead of logging in DSP::Compare 2022-06-14 12:22:05 -07:00
Pokechu22
d8803a1298 UnitTests: Use fmt::print in DSPAssemblyTest 2022-06-14 12:22:05 -07:00
Pokechu22
8fac249581 UnitTests: Use fmt::print in PageFaultTest 2022-06-14 12:22:05 -07:00
Pokechu22
dd66dac5c1 UnitTests: Fix typo in DSPAssemblyTest 2022-06-14 12:22:05 -07:00
Pokechu22
3cb0976367 UnitTests: Use hermes.s as part of an actual test
Before, the file just existed as the source code for HermesBinary.cpp, but we can test that things assemble correctly too (compare DSPTestBinary.cpp and DSPTestText.cpp).

A bit of jank is needed due to MSVC limitations (see https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2026?view=msvc-170).
2022-06-14 12:22:05 -07:00
Pokechu22
2193c8964e DSPTool: Remove moved files from VS project file
These were moved into UnitTests in #5449.
2022-06-14 12:22:05 -07:00
TellowKrinkle
25929789c1 VideoCommon: Don't pass State by inout
Spirv-cross's MSL codegen makes the amazing choice of compiling calls to inout functions as `State temp = s; call_function(temp); s = temp`.  Not all Metal backends handle this mess well.  In particular, it causes register spills on Intel, losing about 5% in performance.
2022-06-14 00:48:47 -05:00
TellowKrinkle
db6e928c8d VideoCommon: Fix Intel GPUs on Metal/Vulkan locking up in ubershaders 2022-06-14 00:48:47 -05:00
JMC47
9315ac7071
Merge pull request #10587 from AdmiralCurtiss/memcard-path-unify
Raw Memory Card Path handling unification and consistency fixes.
2022-06-13 20:18:36 -04:00
JMC47
f96e91119a
Merge pull request #10735 from CasualPokePlayer/audio_dump_volume_fix
Have audio dumps apply volume
2022-06-13 17:09:58 -04:00
Jordan Woyak
1fc86cacd7 WiimoteEmu: Expose IMU pointing accelerometer weight setting. 2022-06-13 00:07:00 -05:00
Tillmann Karras
59dfc43949 Common: replace std::aligned_storage_t with alignas
C++23 deprecates std::aligned_storage_t while alignas works since C++11.

This fixes issue 12925.
2022-06-13 00:06:19 +01:00
JosJuice
62ec19c1ba JitArm64: Remove redundant line in the EmitBackpatchRoutine comment
All stores clobber X0, so that stores clobber X0 when emitting_routine
is true is nothing special.
2022-06-12 11:03:38 +02:00
JosJuice
75e897c40e JitArm64: Fix a minor mistake in the EmitBackpatchRoutine comment
X30 is used in fewer situations than the comment was claiming.

(I think that when I wrote the comment I was counting the use of X30
as a temp variable in the slowmem code as clobbering X30, but that
happens after pushing X30, so it doesn't actually get clobbered.)
2022-06-12 11:03:37 +02:00
JosJuice
3de49dee78 JitArm64: Properly reserve scratch register for soft MMU
Cleans up a hack from the previous commit.
2022-06-12 11:03:35 +02:00
JosJuice
3dce1df00e JitArm64: Implement "soft MMU"
This is used when fastmem isn't available. Instead of always falling
back to the C++ code in MMU.cpp, the JIT translates addresses on its
own by looking them up in a table that Dolphin constructs. This is
slower than fastmem, but faster than the old non-fastmem code.

This is primarily useful for iOS, since that's the only major platform
nowadays where you can't reliably get fastmem. I think it would make
sense to merge this feature to master despite this, since there's
nothing actually iOS-specific about the feature. It would be of use
for me when I have to disable fastmem to stop Android Studio from
constantly breaking on segfaults, for instance.

Co-authored-by: OatmealDome <julian@oatmealdome.me>
2022-06-12 11:03:25 +02:00
OatmealDome
3e5f1a4f99 MemTools: Always provide a valid pointer in send_msg for mach_msg_overwrite
This cannot be nullptr in macOS Ventura and iOS 16.
2022-06-12 00:19:09 -04:00
TellowKrinkle
7cf5547b97 CMake: Make bundled MoltenVK optional
Adds ~20s to incremental build time in Xcode projects
2022-06-11 16:34:33 -05:00
TellowKrinkle
26fc167a44 DiscIO: Fix creation of rvz with > 2mb chunk size 2022-06-11 16:10:32 -05:00
TellowKrinkle
e4614067b3 CMake: Respect SKIP_POSTPROCESS_BUNDLE 2022-06-11 15:46:38 -05:00
CasualPokePlayer
ad892176d0 have audio dumps apply volume (fixes cases of audio dumps being "too loud" and in game audio controls having no effect) 2022-06-10 21:27:10 -07:00
Silent
7faf5ea170
Clear the UI after async shader compilation 2022-06-10 17:19:59 +02:00
Silent
dcad3ec892
Allow to interrupt shader precompilation by stopping emulation 2022-06-10 17:11:32 +02:00
JosJuice
bcc64a05b3 Memmap: Remove outdated comments for 32-bit 2022-06-09 19:51:36 +02:00
JosJuice
63283dcc72 JitArm64: Refactor EmitBackpatchRoutine parameters, part 2 2022-06-09 19:51:36 +02:00
JosJuice
27ed2a99a0 JitArm64: Refactor EmitBackpatchRoutine parameters, part 1 2022-06-09 19:51:36 +02:00
Pokechu22
27772e01d9 GCAdapter: Compare with LIBUSB_SUCCESS instead of 0 2022-06-08 15:30:22 -07:00
Pokechu22
83afaba785 IOS/USB: Use LibusbUtils::ErrorWrap and LIBUSB_SUCCESS 2022-06-08 15:29:11 -07:00
Pokechu22
5d301cc206 BTReal: Log warnings when libusb calls fail 2022-06-08 15:29:11 -07:00
Pokechu22
eeab51e3a4 Log warnings when LibusbUtils::MakeConfigDescriptor fails 2022-06-08 15:29:11 -07:00