Commit Graph

36590 Commits

Author SHA1 Message Date
JosJuice
9ebfdff6b4
Merge pull request #10423 from Pokechu22/improperly-exclusive-radio-buttons
Fix improperly exclusive radio buttons
2022-02-18 21:20:14 +01:00
JosJuice
35b436bd6b
Merge pull request #10377 from Pokechu22/warning-fixes-jan-2022
Fix several compile warnings on GCC
2022-02-18 21:05:42 +01:00
Léo Lam
92455f7cef
Merge pull request #10446 from AdmiralCurtiss/unbreak-shift
HotkeyManager: Change defaults for GBA hotkeys so they don't conflict with common keyboard mappings.
2022-02-18 19:09:36 +01:00
Léo Lam
eb98bcd2ae
Merge pull request #10455 from Pokechu22/directly-map-fifo-breakpoint
CommandProcessor: Add FIFO_BP_LO/HI to directly_mapped_vars
2022-02-18 18:54:06 +01:00
Léo Lam
fa059b20ba
Merge pull request #10460 from Dentomologist/convert_option_type_to_enum_class
VideoCommon: Convert OptionType to enum class
2022-02-18 18:40:59 +01:00
Léo Lam
067fbe8f86
Merge pull request #10376 from shuffle2/uidctor
GXPipelineUid: remove explicit shallow copy where it's the default
2022-02-18 18:39:59 +01:00
Mai M
8b0c6af75a
Merge pull request #10459 from Dentomologist/convert_movie_playmode_to_enum_class
Movie: Convert PlayMode to enum class and move to cpp file
2022-02-18 10:00:33 -05:00
Mai M
1e126d23e6
Merge pull request #10457 from Pokechu22/movie-no-pause-menubar-desync
Fix menu bar becoming desynced when Pause at End of Movie is disabled
2022-02-18 09:59:32 -05:00
Mai M
5077599679
Merge pull request #10461 from Techjar/fix-missing-include
ShaderGenCommon: Add missing <functional> include
2022-02-18 09:59:02 -05:00
Techjar
63181f0446 ShaderGenCommon: Add missing <functional> include 2022-02-18 06:34:01 -05:00
Dentomologist
edbe202aa3 VideoCommon: Convert OptionType to enum class 2022-02-17 10:03:08 -08:00
Dentomologist
f56251168e Movie: Convert PlayMode to enum class and move to cpp file 2022-02-16 16:04:36 -08:00
JosJuice
d9e0bf72dc
Merge pull request #10456 from merryhime/rm-StringFromFormatV
JitRegister: Use fmt
2022-02-17 00:02:12 +01:00
Merry
be81fe86e1 JitRegister: Use fmt
Prefer fmt to printf-style formatting.
2022-02-16 20:09:38 +00:00
Pokechu22
a81b44f697 Fix menu bar becoming desynced when Pause at End of Movie is disabled
Previously, when Pause at End of Movie was disabled, the game would continue running as it should, but the menu bar would think the game was paused, showing the play button instead of the pause button.  To make things worse, clicking the play button would then restart the game, instead of pausing or doing nothing.  F10 paused/unpaused as normal, though.

The old behavior was essentially to enable stepping/pause mode (via `CPU::Break()`) and then if Pause at End of Movie was disabled, to un-pause on the host thread (via `CPU::EnableStepping(false)`).  For reasons which aren't entirely clear to me, the first one notified the menu bar (through the `Host::UpdateDisasmDialog` callback, not the `Settings::EmulationStateChanged` one), and the second did not.  In any case, this approach does not particularly make sense; I don't see any reason to pause and unpause if Pause at End of Movie is disabled; instead, we should only pause when Pause at End of Movie is enabled.

This behavior was probably introduced in c1944f623b, though I haven't tested it.
2022-02-16 11:07:12 -08:00
Pokechu22
68d987bbee CommandProcessor: Add FIFO_BP_LO/HI to directly_mapped_vars
directly_mapped_vars was added in #69 (4129b30494), but for some reason FIFO_BP_LO/HI were split out from it in in #885 (65af90669b).  As far as I can tell, this code (and the code that existed at the time) is identical, so there's no reason to have it handled separately.
2022-02-15 22:34:31 -08:00
Zopolis4
5e4d1f732d
Remove the Maps folder from the Sys directory
It only had two out of date and game-specific maps from decades ago
2022-02-16 12:32:25 +11:00
JMC47
bb097c0576
Merge pull request #10421 from UnicorNora/master
GameINI: Update Cheats for GP5E01, GP6E01, GP7E01, RM8E01
2022-02-15 16:41:55 -05:00
Nora
e38918565b GameINI: Update Cheats for GMPE01, GP5E01, GP6E01, GP7E01, RM8E01 2022-02-15 16:21:34 -05:00
Admiral H. Curtiss
ffbe6cb21f
MemArena: Keep fastmem region mapped on Linux. 2022-02-14 22:14:41 +01:00
JosJuice
eba19988cf
Merge pull request #10452 from AdmiralCurtiss/win7-unmap-view-of-file-ex
MemArena: Restore Windows 7 support.
2022-02-14 22:13:13 +01:00
JosJuice
20b2300ce1 PPCAnalyst: Count outputs as being in use
In a code block where a guest register is accessed at least twice and the
last access is a write and the register is not discardable immediately
after the second-to-last instruction (perhaps there is an instruction
in between that can cause an exception), currently Dolphin's JITs will
flush the register after the second-to-last instruction.

It would be better if we replaced the flush after the second-to-last
instruction with a flush that only happens if the exception path is
taken. This change accomplishes that by marking guest registers as
"in use" not just when they are used as inputs but also when they are
used as outputs, preventing the loop in DoJit from flushing the
register until after the last access.
2022-02-14 22:09:21 +01:00
Admiral H. Curtiss
4a9553bf6d
MemArena: Load UnmapViewOfFileEx dynamically to restore Windows 7 support. 2022-02-14 21:57:18 +01:00
Admiral H. Curtiss
3a4de2b306
MemArena: Use Common::DynamicLibrary for m_api_ms_win_core_memory_l1_1_6_handle. 2022-02-14 21:57:15 +01:00
JosJuice
fd511a689f Jit: Skip redundant flushes
This makes codegen faster (by perhaps 10-20% in the case of Jit64,
I didn't measure too closely), which helps speed up NBA Live 2005
a little. But the game still has serious performance issues.
2022-02-14 19:17:59 +01:00
Pokechu22
d2ebbfb91a GDB Stub: Make s_socket_context static 2022-02-13 14:38:59 -08:00
Pokechu22
50d9349926 Fix integer sign difference comparison warnings 2022-02-13 14:38:59 -08:00
Pokechu22
5f9e04be1d DSPJit: Suppress offsetof conditionally-supported warnings
The DSP JIT only applies on x64, so if it doesn't work on esoteric compilers then that's not a problem.  (And if it fails to compile, then it'll still produce an error on that platform, just no warnings on other platforms)
2022-02-13 14:38:59 -08:00
Pokechu22
15f80f7234 MathUtil: Mark lo in SaturatingCast as [[maybe_unused]]
It's unused in the case that T is unsigned and dest is signed (e.g. SaturatingCast<int, size_t> which appears SetIsoPaths in MainSettings.cpp)
2022-02-13 14:38:59 -08:00
Pokechu22
a6d516dc94 Fix shadowing variables in labmdas
GCC generates warnings about these, although the variable being shadowed is not captured by the lambda.
2022-02-13 14:38:59 -08:00
Pokechu22
0e23dfbb25 FifoDataFile: Stop ignoring size
The size variable started to be unused when I created std::array variants of ReadArray, but we should follow it in case any files have fewer registers stored than they should (otherwise the remaining registers would end up with garbage data from later in the fifolog).  Though, there probably aren't many fifologs where this is relevant.
2022-02-13 14:38:59 -08:00
Pokechu22
a720596771 GDB Stub: Fix typo mixing ppcState.spr and ppcState.sr
This resulted in an out-of-bounds array access, since sr is only 16 entries long and SPR_IBAT0U evaluates to 528.
2022-02-13 14:38:59 -08:00
Pokechu22
3b5faf90f3 FifoAnalyzer: Fix "enumeration value ‘NotPresent’ not handled in switch" warning 2022-02-13 14:38:59 -08:00
Pokechu22
7c91acb000
Merge pull request #10449 from Pokechu22/unknown-opcode-log
CommandProcessor: Move unknown opcode log message before the panic alert and log ignored unknown opcodes at warn level
2022-02-13 14:37:06 -08:00
JMC47
86dbf768b9
Merge pull request #10447 from JosJuice/resetcodeptr-on-decrement
Common/CodeBlock: Call ResetCodePtr when decreasing region_size
2022-02-13 17:25:11 -05:00
Pokechu22
07578d8f1d CommandProcessor: Log ignored unknown opcodes at warn level
Large amounts of logging can have an impact on performance, so moving the ones that have been determined to not matter to the warn level gives a way to hide those messages without hiding actual errors (and also gives a fast visual way of distinguishing between ignored and non-ignored ones due to the different colors).
2022-02-13 14:16:05 -08:00
Pokechu22
4ea9287a09 CommandProcessor: Move unknown opcode log message before the panic alert
This way, the extra information is already in the log by the time the panic alert appears, which is slightly more convenient for debugging.
2022-02-13 14:15:54 -08:00
JMC47
eed7d3b692
Merge pull request #10448 from Pokechu22/prince-of-persia-rival-swords-unknown-opcode
Ignore unknown opcode for 0x3f
2022-02-13 13:58:58 -05:00
Pokechu22
97482a61c6 CommandProcessor: Ignore unknown opcode for 0x3f 2022-02-12 23:38:20 -08:00
Pokechu22
68cdceb4be CommandProcessor: Log PC and LR on unknown opcodes 2022-02-12 23:38:20 -08:00
Pokechu22
095803d1e9 CommandProcessor: Move contents of second unknown opcode panic alert to the log
This way, the information is always available, and users don't have to deal with a wall of meaningless information.
2022-02-12 23:38:19 -08:00
Pokechu22
1c74867c71 GPFifo: Make s_gather_pipe size new constant GATHER_PIPE_EXTRA_SIZE 2022-02-12 23:38:19 -08:00
Pokechu22
55f8aa9921 VideoCommon/Fifo: Use GPFifo::GATHER_PIPE_SIZE instead of magic 32 2022-02-12 23:38:19 -08:00
Pokechu22
9ffe9d3dc1 CommandProcessor: Remove redundant GATHER_PIPE_SIZE constant 2022-02-12 16:17:03 -08:00
Pokechu22
ce52ea35ec Jit: Replace magic 32 with GPFifo::GATHER_PIPE_SIZE 2022-02-12 16:14:05 -08:00
Pokechu22
f2f9df7541 Remove unused includes of QButtonGroup 2022-02-12 11:40:53 -08:00
Pokechu22
0daee4fe9f CheatSearchFactoryWidget: Set QButtonGroup's parent 2022-02-12 11:40:53 -08:00
Pokechu22
99b3ac21e4 NewBreakpointDialog: Fix improperly behaving radio buttons 2022-02-12 11:40:53 -08:00
Pokechu22
a05dd6b7e6 MemoryWidget: Fix improperly behaving radio buttons 2022-02-12 11:40:53 -08:00
JosJuice
989bdb8d6d Common/CodeBlock: Call ResetCodePtr when decreasing region_size
Fixes https://bugs.dolphin-emu.org/issues/12827.

A description of what was going wrong:

JitArm64::Init first calls CodeBlock::AllocCodeSpace, after which
CodeBlock and Arm64Emitter consider us to have 96 MB of code space
available. JitArm64::Init then calls AddChildCodeSpace, which is
supposed to take 64 MiB of that space and give it to m_far_code.
CodeBlock's view of how much space there is gets updated from 96 MiB
to 32 MiB, but due to the missing call, Arm64Emitter keeps thinking
that it has 96 MiB of space available.

The last thing JitArm64::Init does is to call ResetFreeMemoryRanges.
This function asks Arm64Emitter how much code space is available and
stores a range of that size in m_free_ranges_near, meaning that
m_free_ranges_near ends up being backed by both nearcode and farcode!
This is a ticking time bomb; as soon as we grab memory from
m_free_ranges_near which is backed by farcode, we're in trouble.
The crash I ran into in my testing was caused by fastmem code being
allocated in farcode (our backpatch handler only handles accesses made
from nearcode), but you may as well get errors caused by code intended
for nearcode overwriting code intended for farcode or vice versa.

So why did NBA Live 2005 crash when most games had no problems,
and why was the bug bisected to the commit that increased the size
of far code from 16 MiB to 64 MiB? Well, as long as we're only
using the first 32 MiB of the big 96 MiB range, everything works.
What happens with NBA Live 2005 (I have not investigated exactly
through what mechanism this happens) is that at some point the range
in m_free_ranges_near gets split into two ranges, one which is
backed by nearcode and one which is backed by farcode. Dolphin
prefers to select the biggest range available (we don't want to
pick a tiny 1 KiB range that may not be able to fit the whole block
we're about to emit, after all), and after increasing the size of
farcode to 64 MiB, farcode is bigger than nearcode.
2022-02-12 17:51:32 +01:00