JosJuice
1e92b54bf5
WIA/RVZ: Skip some memory allocations when reusing chunks
2020-06-17 13:48:16 +02:00
JosJuice
f5ef70fc76
RVZ: Don't store redundant exceptions when chunk size is < 2 MiB
2020-06-17 13:48:16 +02:00
JosJuice
b06c50ed2e
RVZ: Support chunk sizes between 32 KiB and 2 MiB
...
WIA doesn't support smaller than 2 MiB.
2020-06-17 13:48:15 +02:00
JosJuice
0d433baeb5
RVZ: Remove PURGE support
...
PURGE isn't especially useful, while requiring some annoying
special handling in the file format. If you want no compression,
use NONE. If you want fast compression, use Zstandard.
2020-06-17 13:48:15 +02:00
JosJuice
1f7c0b636f
RVZ: Add Zstandard as a compression method
2020-06-17 13:48:12 +02:00
JosJuice
e2ae2b3b0b
Add new file format RVZ based on WIA
2020-06-17 13:47:34 +02:00
JosJuice
f21a254042
WIA: Implement multithreaded compression
2020-06-17 13:47:34 +02:00
JosJuice
9dea8169e0
WIA: Write all headers at the start of the file
...
Gets rid of the need to seek to the end of the file
when opening a file.
The downside of this is that we waste a little space,
since we can't know in advance exactly how much
space the compressed parts of the headers will need.
2020-06-17 13:47:34 +02:00
JosJuice
e5b9e1ba1f
WIA: Reuse groups when writing
...
This is useful for the way Dolphin scrubs Wii discs.
The encrypted data is what gets zeroed out, but this
zeroed out data then gets decrypted before being stored,
and the resulting data does not compress well.
However, each block of decrypted scrubbed data is
identical given the same encryption key, and there's
nothing stopping us from making multiple group entries
point to the same offset in the file, so we only have
to store one copy of this data per partition.
For reference, wit zeroes out the decrypted data,
but Dolphin's WIA writer can't do this because it currently
doesn't know which parts of the disc are scrubbed.
This is also useful for things such as storing Datel discs
full of 0x55 blocks (repesenting unreadable blocks)
without compression enabled.
2020-06-17 13:47:34 +02:00
JosJuice
40e46aee57
WIA: Store all-zero data efficiently
2020-06-17 13:47:34 +02:00
JosJuice
e8b019ac29
WIA: Implement compression
2020-06-17 13:47:30 +02:00
JosJuice
e936c4acd8
WIA: Write hash exceptions
2020-06-17 13:43:54 +02:00
JosJuice
3b8c44fd0e
WIA: Decrypt Wii data when writing
2020-06-17 13:43:54 +02:00
JosJuice
115edea34e
WIA: Add early support for WIA writing
2020-06-17 13:43:54 +02:00
JosJuice
791e363c9a
WIA: Make use of the exception lists
2020-06-17 13:43:54 +02:00
JosJuice
47067f661a
WIA: Properly check for overlapping data
2020-06-17 13:43:53 +02:00
JosJuice
04089f24f9
WIA: Implement re-encryption of Wii partition data
2020-06-17 13:43:53 +02:00
JosJuice
e3d291a529
WIA: Check the internal WIA hashes
2020-06-17 13:43:53 +02:00
JosJuice
827437c036
WIA: Fix the handling of chunk sizes larger than 2 MiB
2020-06-17 13:43:53 +02:00
JosJuice
0b407228b7
WIA: Add documentation
2020-06-17 13:43:53 +02:00
JosJuice
01a77ae8a1
WIA: Implement caching and partial decompression
2020-06-17 13:43:53 +02:00
JosJuice
b59ef81a7e
WIA: Implement bzip2, LZMA, and LZMA2 decompression
2020-06-17 13:43:52 +02:00
JosJuice
1579e061a3
WIA: Correctly handle data with size not divisible by chunk size
2020-06-17 13:43:52 +02:00
JosJuice
3c373c8aa8
WIA: Treat groups with size 0 as containing only zeroes
2020-06-17 13:43:52 +02:00
JosJuice
36991e2dde
WIA: Implement PURGE decompression
2020-06-17 13:43:52 +02:00
JosJuice
3672bd79f3
WIA: Implement ReadWiiDecrypted
2020-06-17 13:43:52 +02:00
JosJuice
2a5fcc9c25
WIA: Add reading raw data
2020-06-17 13:43:51 +02:00
JosJuice
8da5d0c4fe
Add an early version of WIABlobReader
...
It can currently only read the first 0x80 bytes of a disc image,
which is enough for identifying it but not for doing anything else.
2020-06-17 13:43:51 +02:00
JosJuice
b45f2c2ad3
DolphinQt: Disable convert dialog dropdowns when they have one option
2020-06-17 13:23:58 +02:00
JosJuice
ec3ea6c1df
DolphinQt: Allow converting to same format
...
Mainly useful for WIA and RVZ, but also has some use for GCZ.
2020-06-17 12:44:16 +02:00
Admiral H. Curtiss
476c95900d
EXI: When loading a savestate with a mismatching GCI folder memory card, reinizialize it with the header from the savestate to let a game still recognize it as the same card.
2020-06-17 01:44:46 +02:00
Admiral H. Curtiss
8b13e1882a
EXI: Store data for regenerating a GCI folder memory card header in EXI_Channel and pass it down to the memory card device.
2020-06-17 01:44:46 +02:00
Admiral H. Curtiss
e810d492f2
GCMemcard: Split off HeaderData from Header to have a compact block of data for consistent initialization.
2020-06-17 01:44:46 +02:00
Admiral H. Curtiss
cc52558c0e
GCMemcard: Assert struct requirements in header.
2020-06-17 01:30:42 +02:00
Admiral H. Curtiss
07bd200596
GCMemcard: Remove dependency on g_SRAM and force the caller to provide the relevant values instead.
2020-06-17 01:30:37 +02:00
Tilka
1f505870a9
Merge pull request #8873 from AdmiralCurtiss/gcmemcard-namespace
...
GCMemcard: Move into a Memcard namespace.
2020-06-16 19:55:06 +01:00
Tilka
de5941d6f8
Merge pull request #8878 from JosJuice/actually-disable-tgc-conversion
...
DolphinQt: Actually disable converting from TGC
2020-06-16 19:39:40 +01:00
Admiral H. Curtiss
914ebdf0dd
GCMemcard: Move from global namespace into a Memcard namespace.
2020-06-16 20:18:39 +02:00
Admiral H. Curtiss
2e1bfe073c
GCMemcard: Split out MemoryCardBase into its own header, which is the base class for the raw and folder memory cards and has little to do with the actual memory card data structures.
2020-06-16 20:18:39 +02:00
JosJuice
c236d89f64
DolphinQt: Actually disable converting from TGC
...
When I made PR 8773, I only covered the case where multiple files
are selected, not the more common case where one file is selected.
Oops
2020-06-16 11:21:44 +02:00
Tilka
d4418a2b43
Merge pull request #8877 from JosJuice/convert-fail-message
...
DolphinQt: Make conversion error messages actually show up
2020-06-16 09:59:03 +01:00
JosJuice
20a3119d7a
DolphinQt: Make conversion error messages actually show up
...
I don't know why QErrorMessage doesn't work, but ModalMessageBox
works, so let's use ModalMessageBox.
2020-06-16 10:39:40 +02:00
JosJuice
2b25e1d6b9
DolphinQt: Don't show success message when converting missing file
2020-06-16 10:35:00 +02:00
JosJuice
349cdd5136
DolphinQt: Fix crash on right-clicking multiple games
...
GetSelectedGames() constructs a new list each time you call it.
2020-06-16 10:33:18 +02:00
Tilka
f9f4734237
Merge pull request #8850 from JosJuice/block-size-warning
...
Show an OSD message when running a disc image with a large block size
2020-06-14 15:03:32 +01:00
Tilka
ad85012172
Merge pull request #8843 from Techjar/fastmem-ui
...
DolphinQt: Add fastmem option to debugger UI
2020-06-14 14:54:32 +01:00
Tilka
9f5e6edc34
Merge pull request #8809 from Ebola16/ABB
...
Replace some acronyms
2020-06-14 14:30:52 +01:00
Ryan Meredith
2a70d86d55
Replace some acronyms
2020-06-14 08:37:24 -04:00
Tilka
cb54fc7543
Merge pull request #8857 from JosJuice/qt-bounding-box-width
...
DolphinQt: Use QFontMetrics::boundingRect instead of QFontMetrics::width
2020-06-14 12:10:33 +01:00
Tilka
0ef9b998ce
Merge pull request #8658 from orbea/glslang
...
Externals: Update glslang.
2020-06-13 18:43:53 +01:00
JosJuice
87330ae524
DolphinQt: Use QFontMetrics::boundingRect instead of QFontMetrics::width
...
See https://kdepepo.wordpress.com/2019/08/05/about-deprecation-of-qfontmetricswidth/
2020-06-08 12:32:36 +02:00
CrunchBite
595e1197b6
Rename existing BBA to BBA (TAP) to prepare for new BBA
...
Based on work by tommy1019
2020-06-07 23:17:28 -04:00
Tillmann Karras
d5c00b8909
DSPSymbols: fix off-by-one error
2020-06-08 03:41:45 +01:00
JosJuice
162e3be82b
Show an OSD message when running a disc image with a large block size
...
This is intended to catch WIA files which have been created using
wit's default parameters (40 MiB block size), once the WIA PR is
merged. The check does however also work for GCZ files – not that
I think anyone has a GCZ file with a block size that large.
2020-06-07 14:11:00 +02:00
Tilka
94f317010e
Merge pull request #8847 from Techjar/faster-file-path
...
Qt/GameListModel: Use absolutePath for file path column
2020-06-06 22:56:38 +01:00
JosJuice
d89162c8ad
Merge pull request #8848 from JosJuice/fix-build
...
Fix build
2020-06-06 15:46:32 +02:00
JosJuice
b4584abaa6
Fix build
...
There was a race condition between two PRs incrementing the
array size. CI didn't catch it because the PR that was merged
last (PR #8824 ) wasn't rebuilt after the first PR was merged.
2020-06-06 15:09:48 +02:00
JMC47
9f7c72b7eb
Merge pull request #8824 from Techjar/sd-read-only
...
Add option to disallow SD card writes
2020-06-06 07:02:02 -04:00
Techjar
fa208c4acd
Qt/GameListModel: Use absolutePath for file path column
...
canonicalPath is orders of magnitude slower as it has to perform actual
disk I/O to resolve symlinks, which makes sorting by this column
ridiculously slow for large game lists, especially if the games are on
a NAS. We probably don't need that, simply resolving relative paths
should be sufficient.
2020-06-06 05:24:23 -04:00
Techjar
5c38727651
DolphinQt: Add fastmem option to debugger UI
2020-06-02 06:18:52 -04:00
Techjar
209308a4d6
Replace usage of std::result_of with std::invoke_result
...
std::result_of is deprecated in C++17, and removed in C++20. Microsoft
has gone ahead with the removal as of Visual Studio 16.6.0, so before
this change our code is broken there.
2020-06-01 17:33:18 -04:00
Tillmann Karras
b0258af530
DSP/Interpreter: fix comments not matching opcode table
2020-05-31 15:21:20 +01:00
Tillmann Karras
198a307db3
DSP/Interpreter: simplify switch
2020-05-31 15:21:20 +01:00
Tillmann Karras
89de40a22e
DSP/Interpreter: remove redundant masking
2020-05-31 15:21:19 +01:00
orbea
ba2d04b793
Externals: Fix build failures with the newer glslang.
...
v2: Don't include glslang project wide.
2020-05-30 18:54:21 -07:00
Techjar
52e0294166
Add option to disallow SD card writes
2020-05-28 15:11:37 -04:00
Connor McLaughlin
b3c705fa96
Merge pull request #8829 from stenzek/fix-macos-again
...
Core: Use window instead of surface for ControllerInterface updates
2020-05-28 16:56:13 +10:00
Connor McLaughlin
b4e063311e
Merge pull request #8827 from stenzek/adreno-more-like-brokenreno
...
FramebufferManager: Fix invalid readback of EFB D24S8 depth
2020-05-28 16:55:42 +10:00
Lioncash
86f8768268
VideoCommon/ShaderGenCommon: Make template functions regular functions
...
These are only ever used with ShaderCode instances and nothing else.
Given that, we can convert these helper functions to expect that type of
object as an argument and remove the need for templates, improving
compiler throughput a marginal amount, as the template instantiation
process doesn't need to be performed.
We can also move the definitions of these functions into the cpp file,
which allows us to remove a few inclusions from the ShaderGenCommon
header. This uncovered a few instances of indirect inclusions being
relied upon in other source files.
One other benefit is this allows changes to be made to the definitions
of the functions without needing to recompile all translation units that
make use of these functions, making change testing a little quicker.
Moving the definitions into the cpp file also allows us to completely
hide DefineOutputMember() from external view, given it's only ever used
inside of GenerateVSOutputMembers().
2020-05-25 21:12:29 -04:00
Lioncash
e3506ff4ef
VideoCommon/ShaderGenCommon: Convert helper functions over to fmt
...
A very trivial conversion, this simply converts calls to Write over to
WriteFmt and adjusts the formatting specifiers as necessary.
This also allows the const char* parameters to become std::string_view
instances, allowing for ease of use with other string types.
2020-05-25 21:12:29 -04:00
Markus Wick
68706973d2
Merge pull request #8828 from stenzek/gles-readpixels
...
FramebufferManager: Copy to color format for depth readbacks on GLES
2020-05-25 08:57:20 +02:00
Tillmann Karras
aaa19acbd0
DSP/Interpreter: simplify opcode table by masking
2020-05-24 15:51:52 +01:00
Tillmann Karras
e651592ef5
Misc cleanup
2020-05-24 15:51:52 +01:00
Léo Lam
a660033e8c
Merge pull request #8792 from leoetlino/video-backend
...
Migrate video backend setting to the new config system
2020-05-24 15:26:44 +02:00
Léo Lam
1203e626b3
Merge pull request #8800 from sepalani/kd-shutdown
...
IOS/KD: Implement IOCTL_NWC24_REQUEST_SHUTDOWN
2020-05-24 15:24:51 +02:00
Léo Lam
166633bf27
Merge pull request #8826 from iwubcode/try_parse_any_base
...
Common / Core: Update StringUtil to allow specifying the base
2020-05-24 15:13:49 +02:00
Léo Lam
7449c7153c
Merge pull request #8830 from JosJuice/delete-empty-rfl-db
...
CheckNAND: Delete RFL_DB.dat if empty
2020-05-24 15:12:39 +02:00
JosJuice
f71ebfe9c1
CheckNAND: Delete RFL_DB.dat if empty
2020-05-24 11:04:23 +02:00
Stenzek
ff92357b63
Core: Use window instead of surface for ControllerInterface updates
...
Fixes crashes with Vulkan on macOS.
2020-05-24 17:39:56 +10:00
Stenzek
bf74553878
FramebufferManager: Copy to color format for depth readbacks on GLES
...
glReadPixels() with depth formats is not supported.
Should fix broken EFB access on GLES.
2020-05-24 16:11:11 +10:00
Stenzek
ad373950a2
FramebufferManager: Fix invalid readback of EFB D24S8 depth
...
Fixes assertion tripping when saving state on Adreno.
2020-05-24 15:36:04 +10:00
iwubcode
85e11cd4ab
Common / Core: Update StringUtil to allow specifying the base, default to 0. Fix ActionReplay code to use this instead of prepending '0x' in front
2020-05-23 18:40:10 -05:00
Sepalani
1df1a9abe6
IOS/KD: Implement IOCTL_NWC24_REQUEST_SHUTDOWN
2020-05-22 19:19:36 +04:00
Léo Lam
8df56cb319
Migrate video backend setting to the new config system
...
Fixes https://bugs.dolphin-emu.org/issues/12087
2020-05-22 16:54:53 +02:00
Léo Lam
393ce529af
Merge pull request #8771 from Leseratte10/master
...
Add /dev/dolphin interface to allow game to read the REAL product code
2020-05-22 16:49:31 +02:00
JosJuice
6d3b0db041
DolphinQt: Fix freelook description typos
...
cControls -> controls, axis -> axes, removed leading spaces.
2020-05-20 21:56:04 +02:00
Tilka
abe125aea7
Merge pull request #8816 from JosJuice/qfontmetrics-width
...
DolphinQt: Remove another usage of QFontMetrics::width
2020-05-18 00:19:41 +01:00
JosJuice
f87e32840f
DolphinQt: Remove another usage of QFontMetrics::width
...
QFontMetrics::width breaks building with CMake on Windows,
due to a deprecation warning which gets promoted to an error.
2020-05-18 00:39:57 +02:00
Sepalani
10870a0f74
Config: Migrate SSL options to Onion config
2020-05-17 20:37:10 +01:00
JosJuice
2250fbce0e
Merge pull request #8802 from leoetlino/wiiroot-mii-db
...
WiiRoot: Fix empty files being created when source is missing
2020-05-17 20:11:11 +02:00
Pierre Bourdon
099197b480
Merge pull request #8797 from iwubcode/save-state-CLI
...
Core: Add support for booting a save state from command line
2020-05-17 17:34:08 +02:00
Pierre Bourdon
cea779cc84
Merge pull request #8767 from iwubcode/freelook-camera-type
...
Expand freelook camera with control options
2020-05-17 17:33:04 +02:00
JosJuice
2137fb7813
Externals: Add zstd
...
I had to rename Source/Common/Compiler.h because the VS build
confuses it with Externals/zstd/lib/common/compiler.h otherwise.
2020-05-13 20:53:10 +02:00
Sepalani
4bf7c3e051
NetworkWidget: Add Blocking column
2020-05-13 11:53:29 +04:00
Techjar
ac9b246809
Core/UICommon: Fix EnableScreenSaver preprocessor directive
...
The include for X11Utils.h (and by extension Xlib.h) is gated behind
HAVE_XRANDR, as well as the declaration for this function, but its
definition was mistakenly gated behind HAVE_X11. Therefore, if we have
X11 but not Xrandr, the build will fail due to declaration/definition
mismatch and the missing Window type.
2020-05-13 02:11:29 -04:00
Connor McLaughlin
2488e4a587
Merge pull request #8795 from WamWooWam/master
...
InputCommon: Use the Window handle when initializing DirectInput.
2020-05-10 19:16:15 +10:00
Pierre Bourdon
daf1c30a94
GCAdapter: add libusb error logging on reads/writes
2020-05-10 09:26:49 +02:00
Thomas May
76ae1d4070
Apply fixes to all platforms
2020-05-09 22:35:20 +01:00
Léo Lam
47ee5ac284
WiiRoot: Fix empty files being created when source is missing
...
CopyNandFile must not create empty files on the destination filesystem
if the source file doesn't exist.
Otherwise, this can lead to an empty Mii database being created in the
session Wii root if there's no database in the configured Wii root and
netplay or Movie is used -- that database would then be copied back to
the configured root, which causes games like MKW to complain about
corrupted Mii data even when the player has stopped using netplay.
This commit also simplifies CreateFullPath usage.
There's no need to manually extract the directory from the path,
FS::CreateFullPath does it automatically just like File::CreateFullPath
2020-05-09 16:47:45 +02:00
iwubcode
cdf5490d56
Core: Add support for specifying a command line option to boot the game into a save-state
2020-05-06 22:10:30 -05:00