JosJuice
a2c51e027f
DolphinQt: Fix a -Wshadow warning in ConvertDialog
2020-06-25 16:44:02 +02:00
JosJuice
d17b801518
DiscIO: Deduplicate some VolumeGC/VolumeWii code
2020-06-25 16:37:21 +02:00
JosJuice
94fd583147
DolphinQt: Fix a -Wswitch warning in ConvertDialog
2020-06-25 16:34:43 +02:00
JosJuice
c9edfa0eaa
Replace Windows CMake lambda constexpr capture workaround
...
While manually capturing constexpr variables used in lambda
expressions does work, it's really easy to forget doing so since
we don't have a Windows CMake builder and the workaround isn't
necessary anywhere else. Fortunately, MSVC has a flag that fixes
the constexpr capture behavior, so let's use that instead.
2020-06-25 13:11:29 +02:00
JosJuice
265e0d00d6
DolphinQt: Add columns with file format details
2020-06-25 12:49:36 +02:00
JosJuice
eb278b61ca
Translation resources sync with Transifex
2020-06-23 11:17:46 +02:00
JosJuice
8c205ef8f3
DolphinQt: Show version number for WIA/RVZ introduction
2020-06-21 21:16:10 +02:00
JosJuice
d494e0230c
Show file format details in game properties
2020-06-21 20:47:23 +02:00
JosJuice
8ce25769d7
Merge pull request #8803 from Ebola16/ANDROID
...
Android: Android INI section and make platform tab selection an INI setting
2020-06-21 13:49:56 +02:00
JosJuice
08c93adde2
Merge pull request #8739 from Ebola16/GCOVERLAY
...
Android: Separate GameCube overlay refresh logic
2020-06-21 13:49:45 +02:00
JosJuice
660d81a10b
RVZ: Bump version number to 1.0
2020-06-21 12:38:03 +02:00
JosJuice
224c6e799d
RVZ: Extend GroupEntry
2020-06-17 13:48:45 +02:00
JosJuice
f2c38c0e67
RVZ: Make m_rvz a template parameter
...
Needed for the next commit.
2020-06-17 13:48:45 +02:00
JosJuice
ca4e4a6207
WIA/RVZ: Move (de)compression to a different file
2020-06-17 13:48:45 +02:00
JosJuice
39caac925a
RVZ: Add documentation
2020-06-17 13:48:45 +02:00
JosJuice
2ec608f059
DolphinQt: Set block size to 128 KiB by default
2020-06-17 13:48:45 +02:00
JosJuice
3f753fc87d
RVZ: Detect junk data in the same block as a file
2020-06-17 13:48:44 +02:00
JosJuice
4b74993374
RVZ: Store pseudorandom junk data efficiently
2020-06-17 13:48:42 +02:00
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
JosJuice
fba5ff5ea5
Translation resources sync with Transifex
2020-06-16 22:51:59 +02:00
JosJuice
851b438419
Merge pull request #8844 from Ebola16/RGL
...
Android: Refresh game library when resuming (Tv)MainActivity
2020-06-16 18:08:48 +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
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
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
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
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
JosJuice
b805c3511d
Translation resources sync with Transifex
2020-05-31 21:08:33 +02:00
JosJuice
53aff81c45
Merge pull request #8821 from Ebola16/TV
...
Android TV: Add Open File and Install WAD
2020-05-27 21:41:09 +02:00
JosJuice
f71ebfe9c1
CheckNAND: Delete RFL_DB.dat if empty
2020-05-24 11:04:23 +02:00
JosJuice
9dafeb3bc5
Translation resources sync with Transifex
2020-05-21 18:40:33 +02:00
JosJuice
6d3b0db041
DolphinQt: Fix freelook description typos
...
cControls -> controls, axis -> axes, removed leading spaces.
2020-05-20 21:56:04 +02: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
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
JosJuice
d7389dc287
Add bzip2, liblzma, zstd to Externals/licenses.md
2020-05-13 21:08:08 +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
JosJuice
b93bbbf2e5
DiscIO: Implement multithreaded compression
2020-05-06 14:18:51 +02:00
JosJuice
bf57abc0d5
Fix Windows CMake build errors
...
Lambda expressions with uncaptured constants were leading to errors,
and there were also some warnings about deprecated functions
(QFontMetrics::width and inet_ntoa).
2020-05-03 14:10:24 +02:00
JosJuice
8d4e8314a3
Translation resources sync with Transifex
2020-05-02 22:21:38 +02:00
JosJuice
aab694e6b5
DolphinQt: Store name of user style, not path
...
This makes user styles not break when for instance
moving a portable.txt install between different folders.
2020-05-02 02:13:01 +02:00
JosJuice
423241b8a2
DolphinQt: Reword memory override description
2020-05-01 14:11:08 +02:00
JosJuice
b7db7ebbc7
Don't assume fixed width for "Emulated memory size mismatch!" message
...
Panic alerts don't use fixed width fonts, and translators are
unlikely to preserve the exact spacing unless they are given
specific instructions to do so and are willing to fight against
the Transifex interface a bit.
2020-05-01 13:40:34 +02:00
JosJuice
492bb5ccee
DolphinQt: Add some i18n comments for recently added strings
2020-05-01 13:22:54 +02:00
JosJuice
66c91b9dfb
Translation resources sync with Transifex
2020-04-30 22:56:50 +02:00
JosJuice
5b722b775a
VolumeVerifier: Treat IOS9 as always present
...
Fixes a false positive for Mario Party 8.
2020-04-28 23:40:01 +02:00
JosJuice
d006a8b52f
DolphinQt: Disable converting from TGC
...
This should not be exposed to users before the merge of PR #8644 .
(PR #8738 was unintentionally merged before PR #8644.)
2020-04-28 18:49:52 +02:00
JosJuice
95a0897491
Core: Call CreateFullPath before using Backup directory
2020-04-28 17:53:12 +02:00
JosJuice
18a4afb053
Android: Use touch emulation of IR by default
...
While having motion control emulation of IR enabled by default
makes sense in situations like using a DualShock 4 on a PC,
Android has the additional option of touch emulation of IR
which seems to be better liked, and the default value which
was chosen with PC in mind was carried over to Android
without any particular consideration. This change disables
motion control emulation of IR by default on Android only.
2020-04-27 17:02:53 +02:00
JosJuice
bacf0d629d
VolumeVerifier: Show desync warning for dual layer discs too
2020-04-25 19:47:08 +02:00
JosJuice
99c8ce9d8d
DolphinQt: Add info about formats in convert dialog
2020-04-24 15:11:20 +02:00
JosJuice
466b2d7202
DolphinQt: Make block size configurable in convert dialog
2020-04-24 15:11:20 +02:00
JosJuice
acd00723ad
DolphinQt: Make scrubbing configurable in convert dialog
2020-04-24 15:11:20 +02:00
JosJuice
6ffcbcee70
DiscIO: Move scrubbing code out of ConvertToGCZ
...
This way, scrubbing can also be performed when converting
to other formats.
2020-04-24 15:11:20 +02:00
JosJuice
04c7892b93
DiscIO: Add GameCube disc scrubbing support
...
The code was actually already rather well adapted for this.
We more or less just have to skip ParseDisc and run
ParsePartitionData directly. This required the PartitionHeader
struct to be removed (which wasn't that useful anyway).
2020-04-24 15:10:36 +02:00
JosJuice
cefc2a7baa
DiscIO: Fix edge case where blocks could get scrubbed accidentally
...
If we start 31 KiB into a 32 KiB block and want to mark 2 KiB
of data as used, we need to mark 2 blocks as used, not just 1.
This problem is avoided when calling MarkAsUsed from
MarkAsUsedE, since MarkAsUsedE aligns to 32 KiB on its own.
Most calls to MarkAsUsed are from MarkAsUsedE, which is why
this hasn't been a noticeable problem in the past.
2020-04-24 15:10:36 +02:00
JosJuice
dae2c14f7f
DolphinQt: Turn the compress/decompress action into a dialog
2020-04-24 15:10:35 +02:00
JosJuice
42f6913bcc
Move DiscIO::ConvertToPlain to FileBlob.cpp
...
There is no longer anything GCZ specific about it.
2020-04-24 15:10:35 +02:00
JosJuice
8a9597e32e
DiscIO: Allow converting from formats other than ISO and GCZ
...
The constant DESIRED_BUFFER_SIZE was determined by multiplying the
old hardcoded value 32 with the default GCZ block size 16 KiB.
Not sure if it actually is the best value, but it seems fine.
2020-04-24 15:10:35 +02:00
JosJuice
432f342bc8
DiscIO: Use a struct for Wii hashes
2020-04-24 14:44:29 +02:00
JosJuice
da9e0fb598
DiscIO: Parallelize the re-encryption code
2020-04-24 14:44:26 +02:00
JosJuice
319c508978
DiscIO: Implement re-encryption of Wii partition data
2020-04-24 14:24:12 +02:00
JosJuice
a4c7100bcc
DiscIO: Use partition data offset for ReadWiiDecrypted parameter
...
Instead of the partition offset (which is usually 0x20000 less).
2020-04-24 14:16:55 +02:00
JosJuice
c9aab4f809
Merge pull request #8752 from TheRealPSV/master
...
Remove unnecessary EFB to Texture disabling for Spider-Man 2
2020-04-22 10:33:10 +02:00
JosJuice
21e3e14d8a
Translation resources sync with Transifex
2020-04-17 11:44:24 +02:00
JosJuice
cf67b2093e
Merge pull request #8735 from Ebola16/INIT
...
Android: Reload Wii Remote settings upon saving them
2020-04-17 11:31:18 +02:00
JosJuice
3629e75dd2
Merge pull request #8716 from Pokechu22/properties-leak
...
Delete properties dialog on close
2020-04-16 13:53:37 +02:00
JosJuice
19e9a9c945
DiscIO: Clean up decompression size calculation
...
We can use subtraction and std::min instead of
modulo and explicit if statements.
This commit does not change the behavior.
2020-04-15 22:15:40 +02:00
JosJuice
3aa463cdae
DiscIO: Fix decompressing writing too much sometimes
...
This issue cannot happen with good dumps due to their size,
but it can happen with trimmed dumps.
2020-04-12 21:47:10 +02:00
JosJuice
26b21e3186
DiscIO: Fix decompressing writing too little sometimes
...
This issue cannot happen with good dumps due to their size,
but it can happen with trimmed dumps.
2020-04-12 21:45:55 +02:00