Pokechu22
af5f0b20bb
Report use of various unimplemented DI commands as game quirks
2020-01-04 11:43:32 -08:00
Pokechu22
f1dc908883
Clarify emulated behavior for ReadBCA
2020-01-04 11:43:32 -08:00
Pokechu22
6c0399103f
Handle partitions in /dev/di, not DVDInterface
...
Partitions are Wii-exclusive, and don't happen at the DVDInterface level in
IOS. This isn't quite the cleanest fix, but it gets rid of the assumption that
a partition is open on starting the game at least.
2020-01-04 11:43:32 -08:00
Pokechu22
71e8fb278f
Return more errors from DTK
2020-01-04 11:43:31 -08:00
Pokechu22
55a88ba2ed
Track drive state better, reporting errors if the state is wrong
...
Also, fix DVDLowStopMotor logging (which was based on the ioctl parameters)
2020-01-04 11:43:31 -08:00
Pokechu22
7d6b9bcb40
Check for error 001 out of bounds reads in DVDThread
...
All out of bounds reads should return the appropriate DI error, but it also
makes sense to have the error 001 read happen there.
2020-01-04 11:43:30 -08:00
Pokechu22
ef2fc5a49b
Split /dev/di commands from DVDInterface
...
The various ioctls sometimes have different arguments than the DI command
registers, though they generally overlap. There are also a bunch of ioctls
that don't even normally go into DVDInterface, just returning various data.
Some of the implemented ioctls are new to Dolphin.
2020-01-04 11:43:30 -08:00
Pokechu22
a8ae5fa21a
Expose setting DVDInterface errors and split setting into two parts
2020-01-04 11:43:30 -08:00
Pokechu22
3110599559
Increase DIMAR by DILENGTH after a command
2020-01-04 11:43:30 -08:00
Pokechu22
d3aad1d6d5
DIMAR only ignores bits 0-4, not the upper bits
...
Based on a hardware test on a Wii. The alignment code was originally added in 743641965a
.
2020-01-04 11:43:29 -08:00
Pokechu22
c564d64104
Remove unused drive debug command constants
...
The corresponding code that used these was removed in 2009 with 93b83f8d65
. Now their only purpose is to generate warnings on osx.
Minimalistic documentation on these commands can be found at http://hitmen.c02.at/files/yagcd/yagcd/chap5.html#sec5.7.2 and https://web.archive.org/web/20070328200323/http://tmb.elitedvb.net/dvd-game/index.php/CMDFE . Those constants only relate to the 0x11 subcommand, which is one of many. Most can't be properly emulated unless we LLE the drive firmware (in which case, they don't need to be reimplemented).
2020-01-04 11:43:29 -08:00
Pokechu22
84f099cf62
Tidy and eliminate some of the DI register unions
2020-01-04 11:43:26 -08:00
Pokechu22
11bd132650
Implement RTC flag, which is counter-intuitively disc drive related
2020-01-04 11:43:26 -08:00
Pokechu22
77189e74cd
Implement Broadway GPIOs
...
SLOT_LED and the AVE ones are not implemented yet, but the other Broadway ones are.
2020-01-04 11:43:26 -08:00
Pokechu22
a695b05b21
Add support for std::optional to PointerWrap
2020-01-04 11:43:26 -08:00
Jordan Woyak
0e8d4cb6ac
StringUtil: Make TryParse of floats handle comma and dot decimal separators.
2020-01-04 07:19:15 -06:00
Connor McLaughlin
04e9279f3d
Merge pull request #8536 from leoetlino/warnings
...
Fix several warnings
2020-01-04 21:24:27 +10:00
Léo Lam
ad75215bb0
Fix several warnings
...
A small, nonexhaustive set of warning fixes. The DiscIO Volume change
is a workaround for a GCC bug [1] that causes returning an unengaged
std::optional to emit annoying -Wmaybe-uninitialized warnings.
This last change alone fixes pages upon pages of warnings since
Volume.h is included from several files.
-Wstringop-truncation is another irrelevant warning for us, but
unfortunately there seems to be no way to disable it without
adding ugly pragmas wherever the warning appears.
2020-01-04 12:11:39 +01:00
Léo Lam
94c5460693
Merge pull request #8546 from jordan-woyak/default-num-mappings
...
HW: Add ticks to default mappings that are valid numeric literals.
2020-01-04 10:41:45 +01:00
Léo Lam
671defd8b9
Merge pull request #8543 from jordan-woyak/gcode-download-minor-fix
...
Core/GeckoCode: Fix DownloadCodes function assuming HTTP data is null terminated.
2020-01-04 10:18:44 +01:00
Jordan Woyak
2a9a04a1ec
HW: Add ticks to default mappings that are valid numeric literals.
2020-01-03 22:08:49 -06:00
Jordan Woyak
b505004d61
Core/GeckoCode: Fix DownloadCodes function assuming HTTP data is null terminated.
2020-01-03 20:14:10 -06:00
Jordan Woyak
723115b7b6
WiimoteEmu: Allow Recenter button to adjust the pitch.
2020-01-03 18:08:45 -06:00
Jordan Woyak
72c2be52ed
WiimoteEmu: Clean up ComplementaryFilter math.
2020-01-03 16:16:26 -06:00
Jordan Woyak
120c6dc850
DolphinQt: Fix accelerometer indicator math.
2020-01-03 12:34:11 -06:00
Jordan Woyak
540a3ce665
DolphinQt: Use FromQuaternion for a more accurate gyro indicator.
2020-01-02 15:46:18 -06:00
Jordan Woyak
8ab3694f51
Common: Add Matrix33::FromQuaternion.
2020-01-02 15:16:37 -06:00
Connor McLaughlin
a04d4982b1
Merge pull request #8544 from gtalusan/master
...
MacOS: Dispatch GL calls to main thread to prevent crashes on Catalina
2020-01-02 14:43:21 +10:00
George Talusan
b1a6cbc3b4
MacOS: Dispatch GL calls to main thread to prevent crashes on Catalina
2020-01-01 23:06:19 -05:00
Léo Lam
8c3d8e0811
DSPSpy: Remove unused stubs
...
The whole thing was commented out, and nothing is actually using it
2019-12-30 13:33:43 +01:00
Pierre Bourdon
7a6a4510f6
Merge pull request #8362 from GerbilSoft/feature/string-optimizations.2019-09-11
...
Various string and other optimizations
2019-12-30 10:59:14 +01:00
David Korth
11339d77c6
IsSettingSaveable.cpp: Significant code size reduction.
...
- Refactor the Config::System::Main check so we check system once,
then we check for the section.
- Use an std::array<> instead of std::vector<>.
- Use an array of pointers instead of an array of ConfigLocation.
The latter contains two std::string objects, whereas pointers
are only 8 bytes (on 64-bit).
Code size comparison: (64-bit Linux, gcc-9.2.0, release build)
text data bss dec hex filename
16136 0 40 16176 3f30 IsSettingSaveable.cpp.o [before]
3933 720 0 4653 122d IsSettingSaveable.cpp.o [after]
-12203 +720 -40 -11523 -2d03 Difference
2019-12-29 23:45:02 -05:00
David Korth
f5fe692842
Use pre-increment for iterators instead of post-increment.
...
Pre-increment is more efficient, since it doesn't have to return the
old iterator.
2019-12-29 23:45:02 -05:00
David Korth
c2dd2e8a2e
Use std::istringstream or std::ostringstream instead of std::stringstream where possible.
...
This removes std::iostream from the inheritance chain, which reduces
overhead slightly.
2019-12-29 23:45:02 -05:00
David Korth
6e549bb668
InputConfig::LoadConfig(): Convert num[] to an array of std::string_view.
...
NOTE: The explicit std::string() conversions later are needed. Otherwise,
gcc-9.2.0 throws all sorts of errors because it can't find a matching
operator+() function.
2019-12-29 23:45:02 -05:00
David Korth
a23b3d26f4
GLExtensions.cpp: Use arrays of `const char *const` instead of `std::string`.
...
The strings end up being copied, so we might as well initialize the
std::string in the unordered_map directly.
2019-12-29 23:45:02 -05:00
David Korth
05101b251c
OGL/Render.cpp, InitDriverInfo(): Use std::string_view to eliminate string copies.
...
Consolidate the NVIDIA Tegra and non-Tegra checks into one branch.
2019-12-29 23:45:02 -05:00
David Korth
1d7f128693
GetSysMenuVersionString(): Use a char instead of std::string for the region letter.
...
Append the region letter after determining the version number.
2019-12-29 23:45:02 -05:00
David Korth
9f3b9acad9
PowerPC.cpp: No need to explicitly initialize ppcState.
...
"ppcState{}" is stored in the .data segment, which means the full ~4 MB
is stored in the executable.
"ppcState" is stored in the .bss segment, which means it only stores a
note that tells it to allocate and zero ~4 MB at runtime.
2019-12-29 23:45:02 -05:00
David Korth
afe2e7de0f
VolumeVerifier.cpp: Verify that the string arrays are sorted before using std::binary_sort().
...
Debug builds only, since this is wrapped in assert().
2019-12-29 23:42:55 -05:00
David Korth
d660aba20f
VolumeVerifier.cpp: Use arrays of string_view objects instead of strings.
...
string_view is a thin wrapper around C strings, so it's more efficient
for constant strings than C++ strings.
The unordered_set<> also adds extra runtime overhead. For small arrays,
a simple linear search works. For larger arrays, std::binary_search()
works better than linear but without the unordered_set<> overhead.
ShouldBeDualLayer(): Removed a duplicate "SK8X52" entry.
2019-12-29 23:42:55 -05:00
degasus
aad8aab698
Jit64: Disable the fast address check if fastmem is disabled.
...
This was a huge speedup with disabled fastmem, but it still requires the fastmem arena.
So let's disable it for now, even if this commit has a huge performance hit with disabled fastmem.
2019-12-28 13:41:57 +01:00
degasus
d735943aa2
Jit64: Use safe memory helpers for psq_l* without fastmem.
...
RMEM won't help if there is no fastmem arena, so let's use our memory helpers.
2019-12-28 13:41:57 +01:00
degasus
74cb692591
Jit64: Only activate dcbz fastpath with fastmem.
...
The code is safe not to create memory errors, but it accesses the fastmem area.
2019-12-28 13:41:57 +01:00
degasus
c6019f9814
PowerPC/Jit: Create fastmem arena on init.
2019-12-28 13:41:57 +01:00
degasus
ccbadf6e72
Core: Refactor fastmem arena construction.
...
This shall be called by the Jit, not by the emulation start itself.
2019-12-28 13:41:57 +01:00
degasus
9d88180df7
MMU: Use the Memory helpers for physical memory.
...
physical_base is a fastmem helper. Its access is unsafe and might not be available without a Jit.
2019-12-28 12:57:51 +01:00
Connor McLaughlin
084344aa5d
Merge pull request #8495 from stenzek/windows-arm64
...
Platform support for Windows-on-ARM64
2019-12-28 19:27:47 +10:00
Stenzek
d744c5a148
Compile fixes for Windows-on-ARM64
2019-12-28 19:20:41 +10:00
Stenzek
6fcb1c6c46
Add an ARM64 target to Visual Studio projects
2019-12-28 19:20:41 +10:00