Commit Graph

12156 Commits

Author SHA1 Message Date
Admiral H. Curtiss 247f5d823f
Config: Port USBPassthrough setting to new config system. 2021-12-31 01:15:38 +01:00
Admiral H. Curtiss 526887899e
Config: Port BluetoothPassthrough settings to new config system. 2021-12-30 23:17:19 +01:00
Admiral H. Curtiss 810dcfa0f6
Config: Port Debug settings to new config system. 2021-12-30 22:28:05 +01:00
Admiral H. Curtiss 9c4b2b65b4
Config: Port Input setting to new config system. 2021-12-30 21:50:36 +01:00
Admiral H. Curtiss aa437d9805
Config: Port Movie settings to new config system. 2021-12-30 20:16:17 +01:00
JMC47 1112b2a19e
Merge pull request #10307 from AdmiralCurtiss/config-port-autoupdate
Config: Port AutoUpdate settings to new config system.
2021-12-30 14:12:36 -05:00
JMC47 de91afaff3
Merge pull request #10298 from aldelaro5/gdb-stub-fix-registers
GDB Stub: Fix the id of the registers returned by p and P packets
2021-12-29 21:02:31 -05:00
JMC47 01f180217b
Merge pull request #10299 from aldelaro5/gdb-stub-add-query-packets
GDB Stub: add support for various query packets
2021-12-29 19:37:28 -05:00
JMC47 1c8a7f1867
Merge pull request #10277 from AdmiralCurtiss/memarena-cleanup
MemArena: Cleanup & interface changes for safer memory mapping.
2021-12-29 19:06:47 -05:00
aldelaro5 b369d822b1 GDB Stub: add support for various query packets
These tends to get requested from either pure GDB or Ghidra. They reduce the verbosity of the communications. The QSupported packet is also important to implemnent for future proofing too.
2021-12-28 23:34:33 -05:00
aldelaro5 beabd56ff8 GDB Stub: Fix the id of the registers returned by p and P packets
The stub was made with the assumption that the GDB architecture is rs6000:6000, but the closest is actually powerpc:750 which features much more SPR that the gekko supports, but it also has slightly different ID. This commit now assumes the more proper powerpc:750.
2021-12-28 19:27:34 -05:00
Admiral H. Curtiss ebe27e0140
Interpreter: Fix cycle counting inconsistency between debug mode and regular mode loops. 2021-12-28 05:48:33 +01:00
Rafaël Kooi edb843415d BBA: Fix TAP detection 2021-12-27 22:03:00 +01:00
Admiral H. Curtiss 96fa0919be
Config: Port AutoUpdate settings to new config system. 2021-12-27 21:19:28 +01:00
JosJuice 8d237eb102
Merge pull request #10305 from AdmiralCurtiss/config-port-fifoplayer
Config: Port FifoPlayer setting to new config system.
2021-12-27 21:11:41 +01:00
JMC47 ddb3bad9c9
Merge pull request #10288 from JosJuice/jit64-safe-paired-load
Jit64: Make paired loads always safe
2021-12-27 14:47:27 -05:00
Admiral H. Curtiss 56f747ebf3
Config: Port FifoPlayer setting to new config system. 2021-12-27 17:56:34 +01:00
JMC47 1f1e78ee7a
Merge pull request #10273 from Pokechu22/fifoplayer-efb-clear-wait
FifoPlayer: Wait after clearing the screen
2021-12-27 02:01:02 -05:00
JMC47 66411571fa
Merge pull request #10293 from AdmiralCurtiss/config-port-cpu-overclock
Config: Port CPU overclock setting to new config.
2021-12-27 00:16:24 -05:00
Admiral H. Curtiss 5999e9e139
Config: Port GameList settings to new config system. 2021-12-26 23:46:35 +01:00
Admiral H. Curtiss 7625cb7aca
CoreTiming: Cache the overclock factor instead of re-querying it every Advance(). 2021-12-25 23:40:26 +01:00
Admiral H. Curtiss cae4b545bd
Config: Port CPU overclock settings to new config system. 2021-12-25 21:52:50 +01:00
Admiral H. Curtiss e54657254a
Core: Make format of D_WIIROOT_IDX consistent with the rest of the user directories. 2021-12-25 20:21:32 +01:00
Admiral H. Curtiss 1554128560
MemArena: Prepare interface for proper memory reservation. 2021-12-25 20:20:36 +01:00
JosJuice 1295bc4272 Jit64: Make paired loads always safe
It's always a good sign when the comments say "this will definitely
crash" and "I don't know if this is for a good reason".

Fixes https://bugs.dolphin-emu.org/issues/12762.
2021-12-24 19:09:12 +01:00
JosJuice 5dd2ddb1df Memmap: Replace some GetPointer calls
These GetPointer calls could cause crashes, in part because the
callers didn't do null checks and in part because GetPointer
inherently is unsafe to use for accesses larger than 1 byte.
2021-12-24 11:03:58 +01:00
Pokechu22 86f2b39d66 FifoPlayer: Wait after clearing the screen
If we don't wait, then the copy will be performed at a later time, which may overwrite memory updates.
2021-12-23 12:35:18 -08:00
Pokechu22 d981944d7c FifoPlayer: Fix uninitialized variable warnings in ClearEfb
The actual values don't matter since we overwrite all of the relevant fields, but other bits were not initialized (e.g. the top 12 bits of X10Y10), so the warning was semi-valid.
2021-12-23 12:35:18 -08:00
JosJuice b6395a7c49 PPCAnalyst: Don't treat blr as writing to CR
This piece of code is rather hard to understand, but my best guess
at what it's trying to do is that it tries to create opportunities
to skip writing CRs back to ppcState if we know that there are no
CR instructions (or branch instructions, etc) between an instruction
that writes to a CR register and the next blr. This is technically
inaccurate emulation, but as long as games don't do anything too
weird with their ABIs, I suppose it doesn't break anything.

So why do I want to get rid of it? Well, other than breaking some
hypothetical weird game, I imagine it could trip up people trying
to debug a game who are looking at the CR contents. And the code
is just plain confusing. (blr clearly doesn't write to CRs!)
2021-12-21 21:29:55 +01:00
JMC47 32fed91b0d
Merge pull request #9718 from Pokechu22/better-fifo-analyzer-part-3
Fifo analyzer improvements, part 3
2021-12-20 14:27:14 -05:00
JMC47 1714dc64bb
Merge pull request #10120 from Sintendo/jit64arithcxrefactor
Jit64: Merge arithcx into addx/subfx
2021-12-20 14:20:49 -05:00
JMC47 9ed368ead7
Merge pull request #9376 from merryhime/rlwimix2
Jit_Integer: Optimize rlwimix
2021-12-20 14:20:26 -05:00
JMC47 2d1c7352e4
Merge pull request #10280 from iwubcode/wfs_root_configurable
Core / DolphinQt: make WFS directory configurable
2021-12-18 19:02:53 -05:00
Pokechu22 e4605fa399 Fifo analyzer: Create a new object for each EFB copy
Previously, EFB copies would be in the middle of other objects, as objects were only split on primitive data.  A distinct object for each EFB copy makes them easier to spot, but does also mean there are more objects that do nothing when disabled (as disabling an object only skips primitive data, and there is no primitive data for EFB copies).
2021-12-18 15:21:48 -08:00
Pokechu22 d84d695fdf Remove DataReader from LoadXFReg 2021-12-18 15:21:48 -08:00
Pokechu22 b5fd35f951 Refactor OpcodeDecoding and FIFO analyzer to use callbacks 2021-12-18 15:21:36 -08:00
Pokechu22 0441826206 Fix wrapping in FifoPlayer comment 2021-12-18 12:51:56 -08:00
Pokechu22 d5cfac71d0 Refactor object listing code
This also adds the commands after the last primitive data but before the next frame as a unique object; this is mainly just the XFB copy.  It's nice to have these visible, though disabling the object does nothing since only primitive data is disabled and there is no primitive data in this case.
2021-12-18 12:51:56 -08:00
Pokechu22 1914087998 Create and use CPArray enum class 2021-12-18 12:51:56 -08:00
Pokechu22 3aaeb2b9ef Convert OpcodeDecoder::Opcode and OpcodeDecoder::Primitive to enum class 2021-12-18 12:51:56 -08:00
iwubcode 5ecd5f010f Core / DolphinQt: make WFS directory configurable 2021-12-18 01:08:35 -06:00
Admiral H. Curtiss 48560135b3
Jit64: Put the exception exit in twX into farcode.
As a byproduct, this fixes the dont_trap jump not having enough available jump distance to its target in some instances (eg. in Not64).
2021-12-18 06:05:08 +01:00
Markus Wick 80ccb20931
Merge pull request #10267 from JosJuice/jitarm64-bigger-farcode
JitArm64: Allocate 64 MB for farcode
2021-12-16 19:23:31 +01:00
JosJuice 094290792a Core: Add missing header to NetPlayCommon.cpp
https://bugs.dolphin-emu.org/issues/12765
2021-12-15 18:57:10 +01:00
Admiral H. Curtiss b928900f6e
Core/WiiRoot: Handle the combination of NetPlay and savegame redirects. 2021-12-14 06:15:37 +01:00
Admiral H. Curtiss 387d148357
NetPlay: Add functions to sync folders. 2021-12-12 21:26:10 +01:00
Pokechu22 2025763420 Treewide: Adjust order of includes 2021-12-10 14:49:57 -08:00
Pokechu22 824e0c00df JitCache: Remove irrelevant comment
It became irrelevant in 952dfcd610, when the define was removed; now, the code the comment is referring to is in JitRegister.cpp, and oprofile is controlled by cmake.
2021-12-10 13:59:38 -08:00
Pokechu22 04d747dd10 GCMemcardUtils: Add missing license comment 2021-12-10 13:59:38 -08:00
Pokechu22 89f0b7b10c DolphinAnalytics: Add missing license comment 2021-12-10 13:59:38 -08:00
JosJuice 67787b59d6 JitArm64: Allocate 64 MB for farcode
My change in 867cd99 caused farcode to fill up much more than before.
Most games still ran fine, but certain games would have multiple
cache clears per minute, on top of being overall slow.

Maybe there's something prettier we can do about this than just
allocating more RAM, but we have the resource budget for making
Dolphin use more RAM, so I consider increasing the size of the
cache to be a good solution at least for the time being.

At least for Prince of Persia: The Forgotten Sands, 48 MB isn't
enough to stop the cache clears, but 64 MB is. (I only played the
game for a few minutes when testing, though.)
2021-12-08 20:56:00 +01:00
JosJuice 85e5070215
Merge pull request #10257 from Pokechu22/no-bs2-rtc-flags
BS2Emu: Stop clearing the RTC flags
2021-12-03 22:39:38 +01:00
Scott Mansell 0327bc2ab6
Merge pull request #10256 from malleoz/show-rerecord-count
Renderbase: Show rerecord count
2021-12-03 14:42:10 +13:00
Pokechu22 5af18773bf FifoPlayer: Clear EFB before starting playback
This fixes the bad rendering on the first frame when using the software renderer: the software renderer's Z buffer started out at 0, but most games clear it to 0xffffff instead; this means that things don't render correctly except for in the regions where the screen was cleared by an EFB copy earlier in the frame.
2021-12-01 19:09:24 -08:00
sowens99 e4fed7cce8 Add Rerecord Count display
Simply shows Movie::s_rerecords in the ImGui Movie window
2021-11-30 20:08:29 -05:00
Pokechu22 5134caf68c BS2Emu: Stop clearing the RTC flags
The system menu does clear the RTC flags, but we currently aren't updating the cache file, and since we clear them the system menu doesn't know to update the cache either.  This means that launching a game via the system menu, and then launching a game directly and exiting via HOME will result in the system menu using an outdated cache and displaying the old game.  This causes it to fail to launch the game on the disc channel (since it doesn't match the cache), resulting in it resetting (though it will ignore the cache after resetting).  Not clearing the cache avoids this issue.
2021-11-30 14:43:49 -08:00
Scott Mansell 57d251c2f0
Merge pull request #10242 from smitdylan2001/master
Fixed Gamecube naming to GameCube
2021-11-30 06:58:55 +13:00
JMC47 55e331836d
Merge pull request #10243 from JosJuice/jitarm64-push-size
JitArm64: Fix incorrect push size calculation
2021-11-24 16:53:06 -05:00
JosJuice 83d2d55aab JitArm64: Fix incorrect push size calculation 2021-11-24 22:39:54 +01:00
Dylan Smit 9de7ef6d8d Fix improper naming
I'm so sorry
2021-11-24 17:04:30 +01:00
Léo Lam aa5cb35c86
Merge pull request #10143 from Pokechu22/png-compression-level
Add option for setting the PNG zlib compression level
2021-11-23 16:40:34 +01:00
Admiral H. Curtiss 6350c93ae1
NetPlay: Pass Wii FS sync data directly to game boot logic instead of indirectly through globals. 2021-11-22 01:33:46 +01:00
Admiral H. Curtiss 894773f607
Core/Boot: Add Wii FS sync data (for temp NAND/netplay) to BootSessionData and handle it in the boot and shutdown logic. 2021-11-22 01:33:45 +01:00
Admiral H. Curtiss 7b776f3769
NetPlay: Refactor game boot code path to allow passing BootSessionData through it. 2021-11-22 00:52:15 +01:00
Admiral H. Curtiss 83ad84061e
Core/Boot: Refactor storage of boot-to-savestate data into a separate class. 2021-11-22 00:35:35 +01:00
Léo Lam d5b917a6c2
Merge pull request #10237 from AdmiralCurtiss/netplay-server-crash
NetPlayServer: Clear remaining m_players when netplay thread ends so that their destructors can run while the ENetHost still exists.
2021-11-21 22:04:12 +01:00
Admiral H. Curtiss 8488ff6884
GBA: Add import and export save options to context menu. 2021-11-21 18:08:23 +01:00
Admiral H. Curtiss e2c4cf49e2
NetPlayServer: Clear remaining m_players when netplay thread ends so that their destructors can run while the ENetHost still exists. 2021-11-21 00:18:44 +01:00
JosJuice 5490797867 JitArm64: Implement memcheck for psq_lXX/psq_stXX with update 2021-11-20 23:39:27 +01:00
JosJuice 61c73061e9 JitArm64: Implement memcheck for psq_lXX/psq_stXX without update 2021-11-20 23:39:27 +01:00
JosJuice 9e43796912 JitArm64: Allow passing temp FPR to EmitMemcheck
Small optimization. If the caller already has an FPR that
it isn't using, might as well pass it on to fpr.Flush.
2021-11-20 23:39:27 +01:00
JosJuice 89301b1f91 JitArm64: Implement memcheck for lfXX/stfXX with update 2021-11-20 23:39:27 +01:00
JosJuice 8c96e60cd1 JitArm64: Implement memcheck for lfXX/stfXX without update 2021-11-20 23:39:27 +01:00
JosJuice 1c8ddcdda1 JitArm64: Implement memcheck for dcbz 2021-11-20 23:39:27 +01:00
JosJuice 4fe15e788f JitArm64: Implement memcheck for lmw/stmw 2021-11-20 23:39:27 +01:00
JosJuice b4ffdce800 JitArm64: Implement memcheck for lXX/stX with update 2021-11-20 23:39:27 +01:00
JosJuice 662ae570a0 JitArm64: Make EmitBackpatchRoutine support saving W0
Being able to preserve the address register is useful for the
next commit, and W0 is the address register used for loads. Saving
the address register used for stores, W1, was already supported.
2021-11-20 23:39:27 +01:00
JosJuice e316d0e94f JitArm64: Don't update dest reg when load triggers exception, part 2
If a host register has been newly allocated for the destination
guest register, and the load triggers an exception, we must make
sure to not write the old value in the host register into ppcState.
This commit achieves this by not marking the register as dirty
until after the load is done.
2021-11-20 23:39:26 +01:00
JosJuice 96190887ce JitArm64: Don't update dest reg when load triggers exception
Fixes a problem introduced in the previous commit.
2021-11-20 23:39:26 +01:00
JosJuice ab1ceee16f JitArm64: Implement memcheck for lXX/stX without update 2021-11-20 23:39:26 +01:00
JosJuice 8c905e152a JitArm64: Make WriteConditionalExceptionExit more flexible
You can now specify an already allocated register for it to use as a
temporary register, and it also supports being called while in farcode.
2021-11-20 23:37:02 +01:00
JMC47 e5a4a86672
Merge pull request #10055 from JosJuice/jitarm64-reuse-memory
JitArm64: Codegen space reuse
2021-11-20 17:35:24 -05:00
DevJPM 61cfd8696e Fix CPU Core Count detection and Enable Parallel Shader Compilation
This does this following things:

- Default to the runtime automatic number of threads for pre-compiling shaders
- Adds a distinct automatic thread count computation for pre-compilation  (which has less other things going on
and should scale better beyond 4 cores)
- Removes the unused logical_core_count field from the CPU detection
- Changes the semantics of num_cores from maximaum addressable number of cores to actually available CPU cores
(which is also how it was actually used)
- Updates the computation of the HTT flag now that AMD no longer lies about it for its Zen processors
- Background shader compilation is *not* enabled by default
2021-11-20 16:08:10 +01:00
Pokechu22 94ccf765af Add option for setting the PNG zlib compression level 2021-11-18 13:10:22 -08:00
Pokechu22 95b9941044 Use Fast Texture Sampling by default
This commit changes the default value of Fast Texture Sampling to true, and also moves the setting that controls it to the experimental section of the advanced tab.  This is its own commit so that it can be easily reverted when we want to default to Manual Texture Sampling.

Co-authored-by: JosJuice <josjuice@gmail.com>
2021-11-17 21:29:57 -08:00
Pokechu22 93eea7cb13 VideoCommon: Add option to use old behavior (Fast Texture Sampling)
Co-authored-by: JosJuice <josjuice@gmail.com>
2021-11-17 21:27:32 -08:00
JosJuice da0be24b2f DSP: Reword inappropriate references to Global User Directory
These messages apply to the User directory regardless of
whether it's global or local, so we shouldn't specify "global".

Also changing "directory" to "folder", just for consistency
with "GC folder" in the same sentence.
2021-11-14 22:55:50 +01:00
Shawn Hoffman 58dc9e7049 msvc: fix compile warning on arm64 2021-11-11 08:01:39 -08:00
Merry 850d281cb8 Jit_Integer: Fix pure rotation rlwimix case
We are writing to a.
2021-11-07 14:10:19 +00:00
Mai M 6c72e6814d
Merge pull request #10169 from leoetlino/fmt-localtime
Use fmt::localtime instead of thread-unsafe std::localtime
2021-11-07 00:08:14 -04:00
Mai M c89226cbd4
Merge pull request #10203 from merryhime/ctx_lr
MachineContext: Correct CTX_LR for Apple ARM64
2021-11-07 00:06:24 -04:00
Merry c385e7e57b MachineContext: Correct CTX_LR for Apple ARM64 2021-11-06 21:46:35 +00:00
Merry 9c75957319 JitArm64_FloatingPoint: Implement fctiwx in ARM64 JIT
We implement this by first rounding to nearest integer using the current
rouding mode, then converting this value from floating point to an integral
value.
2021-11-06 20:54:26 +00:00
Léo Lam 2c5d11cace
Merge pull request #9721 from linkmauve/fix-warnings
Fix some warnings found with gcc 11 and ffmpeg master
2021-11-06 14:38:07 +01:00
Sintendo dfb32040bf Jit64: divwx - Micro-optimize division by 2
Prefer using eax to isolate the sign bit. This saves a byte when the
destination ends up as r8-15, because those require a REX prefix.

Before:
41 8B C5             mov         eax,r13d
41 C1 ED 1F          shr         r13d,1Fh
44 03 E8             add         r13d,eax
41 D1 FD             sar         r13d,1

After:
41 8B C5             mov         eax,r13d
C1 E8 1F             shr         eax,1Fh
44 03 E8             add         r13d,eax
41 D1 FD             sar         r13d,1
2021-11-03 21:01:41 +01:00
Sintendo f18f6cd0a2 Jit64: divwx - Improve comments 2021-11-02 21:50:28 +01:00
Emmanuel Gil Peyrot 3d662e746b Core: Fix a -Wshadow warning in gcc 11
This moves the only direct call to zlib’s crc32() into its own
translation unit, but that operation is cold enough that this won’t
matter in the slightest.  crc32_z() would be more appropriate, but
Android has an older zlib version…
2021-11-02 13:50:21 +01:00
Emmanuel Gil Peyrot ab252aedfa Core, DolphinQt, UICommon: Fix all cases of -Wrange-loop-construct in gcc 11 2021-11-02 13:50:21 +01:00
Sepalani e51119c4ce HLE: Fix hooks overlapping Riivolution patches 2021-11-01 00:07:14 +04:00
Admiral H. Curtiss 5bb71760d7
Core/CheatSearchSession: Mark class as final. 2021-10-28 06:50:57 +02:00
Admiral H. Curtiss b154ba513c
Core/CheatSearchSession: Make a few methods const. 2021-10-28 02:16:19 +02:00
Admiral H. Curtiss 6e814cbb8f
Qt/CheatSearchWidget: Add a checkbox to force parsing a value as hexadecimal. 2021-10-28 02:00:38 +02:00
Léo Lam 8cb51f276c HLE: Fix hook flag for HBReload
The reload stub is at a fixed address (0x80001800) so its hook flag
should be HookFlag::Fixed.

Otherwise the hook is installed by HLE::PatchFixedFunctions but
immediately removed by HLE::PatchFunctions (which is called by
HLE::Reload right after PatchFixedFunctions).

Should fix https://bugs.dolphin-emu.org/issues/12716
2021-10-25 16:54:25 +02:00
Pokechu22 04d8cdfe88 Convert LOG_TYPE and LOG_LEVELS to enum class 2021-10-24 11:48:36 -07:00
Admiral H. Curtiss 0efff5167d
IOS/FS: On NAND redirected files, the source and target of a Rename operation may be on different partitions or devices. Implement a fallback for that. 2021-10-24 00:09:09 +02:00
Admiral H. Curtiss ba3373b476
RiivolutionPatcher: Modify memory patching logic to be more accurate to actual Riivolution. 2021-10-24 00:09:09 +02:00
Admiral H. Curtiss dd64c0e423
Core: Deduplicate Riivolution Patch to BootParameters apply logic. 2021-10-24 00:09:08 +02:00
Admiral H. Curtiss d0c11f76b5
Core/BootManager: Disable loading time emulation for Riivolution-patched games until we have proper emulation for that. 2021-10-24 00:09:07 +02:00
Admiral H. Curtiss 6394960f54
Core: Add ability to specify and launch a riivolution-modded game via a .json file. 2021-10-24 00:09:07 +02:00
Admiral H. Curtiss fe242f79ee
Core: Implement Wii NAND path redirects for Riivolution savegame patches. 2021-10-24 00:09:07 +02:00
Admiral H. Curtiss 175f225ac1
DolphinQt: Add ability to start a game with Riivolution patches from the GUI. 2021-10-24 00:09:06 +02:00
Scott Mansell b997048cfe
Merge pull request #10142 from aldelaro5/gdb-stub-rework
Rework the entire logic of the GDB stub
2021-10-24 01:51:29 +13:00
aldelaro5 6a4d607e09 GDBStub: Add log when break is sent 2021-10-21 08:26:50 -04:00
aldelaro5 7ad586fe2c GDBStub: Make step force pausing even if play was pressed 2021-10-21 08:26:50 -04:00
aldelaro5 2f7a3e59e5 GDBStub: upgrade some logs from debug to info 2021-10-21 08:26:50 -04:00
aldelaro5 1b92f81379 GDBStub: Refactor the whole code 2021-10-21 08:26:50 -04:00
aldelaro5 94a0f416eb GDBStub: remove the cmake option and the ifdefs 2021-10-21 08:26:42 -04:00
aldelaro5 657bb00c01 GDBStub: Cleanly shut down on stop 2021-10-21 08:26:42 -04:00
aldelaro5 b8395280d3 GDBStub: Correctly inform the CPU thread if we are stepping 2021-10-21 08:26:28 -04:00
aldelaro5 b9b7c4ac80 GDBStub: Add support for the T command 2021-10-21 08:26:28 -04:00
aldelaro5 7d3ea4c3a1 GDBStub: rework the breakpoint and the control logic 2021-10-21 08:26:28 -04:00
aldelaro5 994847f09c GDBStub: move the stalling logic to CPU::Run 2021-10-21 08:26:16 -04:00
aldelaro5 e3b978cf20 GDBStub: boot to pause 2021-10-21 08:26:16 -04:00
aldelaro5 e03ddc2116 Let the GDB stub listen for commands while running
This is needed to send ctrl+C signals while the CPU thread is running.
2021-10-21 08:26:16 -04:00
Léo Lam 8195d0bda1
Merge pull request #10144 from malleoz/dsp-onion
Port Main.DSP to MainSettings
2021-10-16 11:32:38 +02:00
sowens99 8ea6bef98f Port Main.DSP to MainSettings
While trying to work on adding audiodump support for CLI, I was alerted that it was important to first try moving the DSP configs to the new config before continuing, as that makes it substantially easier to write clean code to add such a feature.

This commit aims to allow for Dolphin to only rely on the new config for DSP-related settings.
2021-10-15 23:24:46 -04:00
Léo Lam 9a6f0bd9b2
Merge pull request #10168 from JosJuice/jitarm64-gcc-float-null
JitArm64: Work around a GCC warning promoted to error
2021-10-15 23:03:57 +02:00
Léo Lam fd7df2ccae
Use fmt::localtime instead of thread-unsafe std::localtime
fmt::localtime is also less awkward to use compared to std::localtime.
2021-10-15 22:49:13 +02:00
Léo Lam 7855e5f73b
Turn MAX_LOGLEVEL into a true constant (and fix self-comparison warning)
This replaces the MAX_LOGLEVEL define with a constexpr variable
in order to fix self-comparison warnings in the logging macros
when compiling with Clang. (Without this change, the log level check
in the logging macros is expanded into something like this:
`if (LINFO <= LINFO)`, which triggers a tautological compare warning.)
2021-10-15 21:51:01 +02:00
JosJuice 7c88ca7c4e JitArm64: Work around a GCC warning promoted to error
GCC complains about float_emit being null when inlining
ByteswapAfterLoad into MMIOLoadToReg. ByteswapAfterLoad
does dereference float_emit, but only when passing FLAG_FLOAT,
which MMIOLoadToReg has an assert for and does not support.

Also cleaning up some unnecessarily specified namespaces while
I'm at it.
2021-10-15 21:32:46 +02:00
JosJuice 2d1674cd56 JitArm64: Keep track of free code regions and reuse space when possible
JitArm64 port of 306a5e6.
2021-10-13 21:52:16 +02:00
JosJuice 44beaeaff5 Arm64Emitter: Check end of allocated space when emitting code
JitArm64 port of 5b52b3e.
2021-10-13 21:52:16 +02:00
JosJuice 867cd99de1 JitArm64: Remove the ability to reuse backpatch slowmem handlers
Reusing the slowmem handlers of existing blocks meshes badly
with reusing the empty space left when destroying blocks.
I don't think reusing slowmem handlers was much of a gain anyway.
2021-10-13 21:51:45 +02:00
Pokechu22 78bfd25964 Fix all uninitialized variable warnings (C26495) 2021-10-13 12:32:16 -07:00
Pokechu22 525e6b2194 MMU: Replace TryReadResult and TryWriteResult with std::optional 2021-10-13 11:44:28 -07:00
Pokechu22 673f886a7e MMU: Replace uses of cassert with Common/Assert.h 2021-10-13 11:44:28 -07:00
JosJuice 25bff91054 Interpreter: Fix NI_div ZX check 2021-10-13 17:42:56 +02:00
JosJuice 9f525d69c8 Jit: Raise program exception on floating point exceptions
This is done entirely through interpreter fallbacks. It would
probably be possible to implement this using host exception
handlers instead, but I think it would be a lot of complexity
for a rarely used feature, so let's not do it for now.

For performance reasons, there are two settings for this feature:
One setting which does enables just what True Crime: New York City
needs and one setting which enables it all. The latter makes
almost all float instructions fall back to the interpreter.
2021-10-13 17:42:56 +02:00
JosJuice 7f7748e181 Interpreter: Raise program exception on floating point exceptions 2021-10-13 17:42:56 +02:00
JosJuice c3bcc67653 PowerPC: Update FEX on FPSCR store instead of FPSCR load
This is needed not only for the next commit, but also for
correctly emulating float instructions that write to CR1.
2021-10-13 17:42:56 +02:00
JosJuice 89a464dafa Interpreter: Optimize FEX calculation
The next commit will make the interpreter run this after every
float instruction, so I think a little optimization here is justified.
2021-10-13 17:42:56 +02:00
JosJuice 83c6df1965 PowerPC: Set SRR1 correctly for program exceptions 2021-10-13 17:42:56 +02:00
sowens99 2aa400e72f Add option for Never Hide Mouse Cursor
Instead of having a single GUI checkbox for "Always Hide Mouse Cursor",
I have instead opted to use radio buttons so the user can swap between
different states of mouse visibility. "Movement" is the default
behavior, "Never" will hide the mouse cursor the entire time the game is
running, and "Always" will keep the mouse cursor always visible.
2021-10-12 21:04:27 -04:00
Léo Lam f19da1cf92
Merge pull request #10118 from lioncash/messageid
NetPlayProto: Remove lots of casts to MessageId when inserting enum values into packets
2021-10-13 02:27:52 +02:00
Léo Lam dd936c5072
Merge pull request #10126 from malleoz/l-r-digital-input-display
Include digital L and R buttons in Input Display
2021-10-13 02:06:20 +02:00
Léo Lam 6c1a625f0d
Merge pull request #10159 from JosJuice/print-callstack-log
Core: Use log variant of PrintCallstack, not print variant
2021-10-13 01:40:07 +02:00
Mai M 6bf467ff4b
Merge pull request #10161 from JosJuice/jitarm64-emitting-routine
JitArm64: Consistently set emitting_routine
2021-10-12 14:34:26 -04:00
JosJuice 26322a54cf JitArm64: Consistently set emitting_routine
Important regression fix for 96760093e9.
2021-10-12 18:55:06 +02:00
JMC47 6987ea0596
Merge pull request #8350 from phire/fix-tmem
Extend Minimal TMEM cache implementation.
2021-10-11 23:11:43 -04:00
Scott Mansell a33cf27885 TMEM: Handle savestate and init 2021-10-12 15:51:24 +13:00
JMC47 3bfb3fa52b
Merge pull request #9884 from JosJuice/jitarm64-paired-loadstore-addr
JitArm64: Improve psq_l/psq_st address checking
2021-10-11 16:49:26 -04:00
JosJuice 97a5a7be24 Core: Use log variant of PrintCallstack, not print variant
There are two reasons for this.

1. Using Dolphin's logging system lets the user decide whether
the printout should go to the terminal, the GUI, or a file.
fmt::print always prints to stdout... unless you're on Android, in
which case it does nothing at all, because Android disables stdout.

2. The Windows version of Dolphin crashes when you use fmt::print.
Yes, really. The crash happens because a call to std::fprint in
fmt::v7::detail::fwrite_fully returns that less characters were
written than requested, which fmt handles by throwing an exception.
(As always, Dolphin does not use exception handling.)
I'm not sure why std::fprint is doing this, but since switching
away from using fmt::print is a good idea due to the previous point
anyway, I'd say it's best to just switch.
2021-10-10 17:13:03 +02:00
iwubcode 0bbea6d67b Core: Update state to account for save system change 2021-10-08 18:17:18 -05:00
iwubcode e70157474b Core / VideoCommon: refactor FreeLookCamera to have the underlying controller handle all the logic (field-of-view, movement, etc) 2021-10-08 18:16:32 -05:00
Léo Lam ff1cb5a1c0
Merge pull request #9803 from Techjar/bbox-videocommon
VideoCommon: Abstract bounding box
2021-10-08 22:24:38 +02:00
Techjar 1161af8059 VideoCommon: Abstract bounding box
This moves much of the duplicated bounding box code into VideoCommon,
leaving only the specific buffer implementations in each backend.
2021-10-04 15:51:24 -04:00
sowens99 faa5cf40ce Movie: display correct input difference on movie mismatch
Previously, s_temp_input was being used for BOTH the savestate's and the movie's input printout in the panic alert.

This commit simply performs memcpy from the correct vector for the movInput printout.
2021-09-29 20:58:19 -04:00
aldelaro5 39569ed1f8 Remove unecessary include of the gdb stub 2021-09-29 12:54:18 -04:00
sowens99 ffaa149b96 Core: UpdateTitle with total framecount on recording playback
Previously, only the number of total input polls would be shown in the window title when playing back a movie. This simply adds the VI / frame count total as well, which is a much more relevant number to look at while TASing.
2021-09-28 21:51:24 -04:00
sowens99 6fd54276ea Include digital L and R buttons in Input Display
Previously, using TAS Input to activate the digital L and R buttons would not show these inputs in the Input Display. This commit adds the digital L and R presses to the Input Display, and also displays just "L" or "R" if the analog is set to 255.
2021-09-25 18:07:42 -04:00
Sintendo da9546cb2f Jit64: Merge subfx and subfcx
Again, logic and optimizations are mostly the same so it makes sense.
2021-09-22 22:29:20 +02:00
Sintendo a725eb80ff Jit64: Merge addx and addcx
They are extremely similar and can share nearly all optimizations.
2021-09-22 22:28:54 +02:00
Lioncash 3840b55292 NetPlayClient/NetPlayServer: Remove now-unnecessary static_casts
Now that we have the enum helpers in place, quite a few casts on their
own can be removed.
2021-09-22 15:59:43 -04:00
Lioncash 80b4a4d7fd NetPlayProto: Remove now-unused MessageId type alias
Now that we have enum helpers for inserting values into packets and have
migrated all other enumerations over, there's no need to keep this alias
around any longer.
2021-09-22 15:42:04 -04:00
Lioncash a034f378a0 NetPlayProto: Turn connection error enum into an enum class
Continues the migration off the MessageId type alias
2021-09-22 15:42:04 -04:00
Lioncash dedd0b7ba1 NetPlayProto: Turn Sync-related enums into enum classes 2021-09-22 15:42:04 -04:00
Lioncash af4aaf4609 NetPlayProto: Turn MessageID enum into an enum class
Now we can leverage our helper to insert enum values without the need to
cast.
2021-09-22 15:42:04 -04:00
Lioncash 07af775afa SFMLHelper: Add stream insertion overload helpers for enum types
Will be used in future changes to eliminate the need to cast when
inserting various message IDs
2021-09-22 15:42:01 -04:00
Sintendo a9e0f21373 Jit64: Split arithcx into addcx and subfcx
JitArm64 also opts to separate the two. The shared logic makes less
sense once we start adding more optimizations.
2021-09-21 22:11:11 +02:00
Léo Lam 6129290d31
Merge pull request #10057 from JosJuice/jitarm64-divwx
JitArm64: Optimize divwx
2021-09-20 15:37:57 +02:00
Léo Lam a25f4fab20
Merge pull request #10080 from lioncash/membf
MemoryInterface: Migrate bitfields over to Common::BitField
2021-09-20 14:54:27 +02:00
Léo Lam 276ea43237
Merge pull request #10102 from lioncash/netplay
NetPlayClient: Split out OnData() into smaller functions
2021-09-20 14:41:47 +02:00
Mai M 57f71a55f8
Merge pull request #10110 from JosJuice/remove-request-refresh-info
Core: Remove s_request_refresh_info
2021-09-19 16:09:58 -04:00
Mai M ca2589f7df
Merge pull request #10103 from AdmiralCurtiss/cheat-search-length-underflow
Core/CheatSearch: Avoid length underflow on new search.
2021-09-19 16:09:43 -04:00
JMC47 31ca114721
Merge pull request #10068 from leoetlino/more-low-mem1-constants
IOS: Add missing writes of low MEM1 constants
2021-09-19 09:45:01 -04:00
JosJuice e5ed9ee920 Core: Remove s_request_refresh_info
It's only used for frame stepping. We can use s_frame_step instead.
2021-09-18 13:39:38 +02:00
Léo Lam 7379450633
Merge pull request #10092 from JosJuice/android-cheats
Android: Add cheat GUI
2021-09-16 19:21:33 +02:00
JosJuice 53ae1a0725 Android: Add Gecko code downloading 2021-09-16 18:48:39 +02:00
Admiral H. Curtiss bd92c29ef5
Core/CheatSearch: Avoid length underflow on new search. 2021-09-16 08:13:02 +02:00
Admiral H. Curtiss f3346262d2 Core/CheatSearch: Implement cheat searching functionality. 2021-09-15 19:05:48 +02:00
Lioncash 2b9c65967e NetPlayClient: Change return value of OnData() to void
In all usage cases, the return value isn't utilized.
2021-09-15 11:31:32 -04:00
Lioncash ae714b25ba NetPlayClient: Split out OnData()
Over time OnData() has become a huge function-long case statement that
attempts to manage numerous packet-related behaviors, which makes it a
little difficult to reliably ensure certain handling doesn't interfere
with another case's. It's also mildly annoying to navigate due to its
size.

To make it a little easier to read and find the specific behavior, we
can break the relevant pieces of code out into their own functions.
2021-09-15 11:31:28 -04:00
Léo Lam 111c36e6cd
Merge pull request #10101 from lioncash/kb
SI_DeviceKeyboard: Shorten MapKeys()
2021-09-15 13:24:05 +02:00
Lioncash 7c909a73de SI_DeviceKeyboard: Shorten MapKeys()
We can wrap this logic into a lambda to avoid copy-pasted checking of
the over 400+ lines of code.
2021-09-15 01:58:02 -04:00
Léo Lam 15ec7bd546
Merge pull request #10097 from JosJuice/jitarm64-w0-clobber
JitArm64: Fix fresx/frsqrtex unlocking W0 too early
2021-09-14 23:51:24 +02:00
Léo Lam 819a0a69ff
Merge pull request #10076 from lioncash/sibf
SI: Migrate bitfields to Common::BitField
2021-09-14 19:10:39 +02:00
JosJuice 74f2acd83b JitArm64: Move fresx/frsqrtex RW calls earlier
If W0 is locked when fpr.RW is called, the indirectly called
ConvertSingleToDoubleLower may need to emit a push+pop, so it's
better for fresx/frsqrtex to call RW before locking W0 than after.
2021-09-13 19:27:16 +02:00
JosJuice 1c4155f800 JitArm64: Fix fresx/frsqrtex unlocking W0 too early
fpr.RW may clobber GPRs that are not locked.
Fixes https://bugs.dolphin-emu.org/issues/12656.
2021-09-13 19:03:43 +02:00
Lioncash d00e7d5a75 SI: Collapse interrupt generation check in UpdateInterrupts()
We can simplify this by storing the result of the test into a variable
instead.
2021-09-13 11:25:03 -04:00
Lioncash ca24c32cbf SI: Eliminate trivial sign conversion cases in RegisterMMIO()
Previously differently signed types were being used to create addresses
and bit offsets.
2021-09-13 11:24:59 -04:00
Léo Lam ee863e6722
Merge pull request #10014 from OatmealDome/wiimote-disconnect-crash
WiimoteReal: Fix Wiimote disconnection causing Dolphin to crash on macOS
2021-09-13 15:26:02 +02:00
JosJuice b4787cdbd3
Merge pull request #10077 from lioncash/dvdbf
DVDInterface: Migrate bitfields over to Common::BitField
2021-09-08 21:37:09 +02:00
JosJuice 52304df943
Merge pull request #10011 from JosJuice/android-cheats-preparation
Split out code for serializing/deserializing cheat lines
2021-09-08 21:36:56 +02:00
JosJuice 15eb56142a JitArm64: Read BATs in psq_l/psq_st address check
Same approach as Jit64 here as well.
2021-09-08 21:32:16 +02:00
JosJuice 93e968208e JitArm64: Lock fewer registers when assumeNoPairedQuantize 2021-09-08 21:32:11 +02:00
JosJuice 96760093e9 JitArm64: Move psq_st address check to EmitBackpatchRoutine
This way the address check will take up less icache (since it's
only emitted once for each routine rather than once for each
psq_st instruction), and we also get address checking for psq_l.
Matches Jit64's approach.

The disadvantage: In the slowmem case, the routines have to
push *every* caller-saved register onto the stack, even though
most callers probably don't need it. But at long as the slowmem
case isn't hit frequently, this is fine.
2021-09-08 21:26:10 +02:00
JosJuice cd84339dfd JitArm64: Use EmitBackpatchRoutine more for psq_l/psq_st
In the case of the JitAsm routines, we can't actually use
backpatching. Still, I would like to gather all the load and
store instructions in one place to make future changes easier.
2021-09-08 21:26:10 +02:00
JosJuice de21dc5fd9 JitArm64: Add bitset constants for caller saved registers 2021-09-08 21:26:05 +02:00
JosJuice 6c3141e0cc JitArm64: Change parameter order for quantized load routines
EmitBackpatchRoutine (see the upcoming commits) expects
the address to be in W0 for loads and W1 for stores.
2021-09-08 21:26:03 +02:00
JosJuice 36b3d51523 JitArm64: Restructure the BackPatchInfo flags enum
This makes it possible to construct flag combinations like
"load 16 bits into an FPR".
2021-09-08 21:23:00 +02:00