Commit Graph

28008 Commits

Author SHA1 Message Date
1e92b54bf5 WIA/RVZ: Skip some memory allocations when reusing chunks 2020-06-17 13:48:16 +02:00
f5ef70fc76 RVZ: Don't store redundant exceptions when chunk size is < 2 MiB 2020-06-17 13:48:16 +02:00
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
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
1f7c0b636f RVZ: Add Zstandard as a compression method 2020-06-17 13:48:12 +02:00
e2ae2b3b0b Add new file format RVZ based on WIA 2020-06-17 13:47:34 +02:00
f21a254042 WIA: Implement multithreaded compression 2020-06-17 13:47:34 +02:00
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
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
40e46aee57 WIA: Store all-zero data efficiently 2020-06-17 13:47:34 +02:00
e8b019ac29 WIA: Implement compression 2020-06-17 13:47:30 +02:00
e936c4acd8 WIA: Write hash exceptions 2020-06-17 13:43:54 +02:00
3b8c44fd0e WIA: Decrypt Wii data when writing 2020-06-17 13:43:54 +02:00
115edea34e WIA: Add early support for WIA writing 2020-06-17 13:43:54 +02:00
791e363c9a WIA: Make use of the exception lists 2020-06-17 13:43:54 +02:00
47067f661a WIA: Properly check for overlapping data 2020-06-17 13:43:53 +02:00
04089f24f9 WIA: Implement re-encryption of Wii partition data 2020-06-17 13:43:53 +02:00
e3d291a529 WIA: Check the internal WIA hashes 2020-06-17 13:43:53 +02:00
827437c036 WIA: Fix the handling of chunk sizes larger than 2 MiB 2020-06-17 13:43:53 +02:00
0b407228b7 WIA: Add documentation 2020-06-17 13:43:53 +02:00
01a77ae8a1 WIA: Implement caching and partial decompression 2020-06-17 13:43:53 +02:00
b59ef81a7e WIA: Implement bzip2, LZMA, and LZMA2 decompression 2020-06-17 13:43:52 +02:00
1579e061a3 WIA: Correctly handle data with size not divisible by chunk size 2020-06-17 13:43:52 +02:00
3c373c8aa8 WIA: Treat groups with size 0 as containing only zeroes 2020-06-17 13:43:52 +02:00
36991e2dde WIA: Implement PURGE decompression 2020-06-17 13:43:52 +02:00
3672bd79f3 WIA: Implement ReadWiiDecrypted 2020-06-17 13:43:52 +02:00
2a5fcc9c25 WIA: Add reading raw data 2020-06-17 13:43:51 +02:00
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
b45f2c2ad3 DolphinQt: Disable convert dialog dropdowns when they have one option 2020-06-17 13:23:58 +02:00
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
1f505870a9 Merge pull request #8873 from AdmiralCurtiss/gcmemcard-namespace
GCMemcard: Move into a Memcard namespace.
2020-06-16 19:55:06 +01:00
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
a2b7627d66 Merge pull request #8860 from Ebola16/Emu
Android: Disallow multiple launcher activities
2020-06-16 19:38:55 +01:00
914ebdf0dd GCMemcard: Move from global namespace into a Memcard namespace. 2020-06-16 20:18:39 +02:00
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
851b438419 Merge pull request #8844 from Ebola16/RGL
Android: Refresh game library when resuming (Tv)MainActivity
2020-06-16 18:08:48 +02:00
1e6925e423 Android: Disallow multiple launcher activities 2020-06-16 11:52:58 -04:00
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
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
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
2b25e1d6b9 DolphinQt: Don't show success message when converting missing file 2020-06-16 10:35:00 +02:00
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
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
ad85012172 Merge pull request #8843 from Techjar/fastmem-ui
DolphinQt: Add fastmem option to debugger UI
2020-06-14 14:54:32 +01:00
9f5e6edc34 Merge pull request #8809 from Ebola16/ABB
Replace some acronyms
2020-06-14 14:30:52 +01:00
2a70d86d55 Replace some acronyms 2020-06-14 08:37:24 -04:00
bf83e3eea0 Merge pull request #8845 from Ebola16/DISC2
Android: Display disc number instead of company if mulipart disc
2020-06-14 12:20:36 +01:00
63c53ebc87 Merge pull request #8836 from Ebola16/REC
Android: Add recursive game paths to UI
2020-06-14 12:16:08 +01:00
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
0ef9b998ce Merge pull request #8658 from orbea/glslang
Externals: Update glslang.
2020-06-13 18:43:53 +01:00