summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/VolumeVerifier.cpp
AgeCommit message (Collapse)Author
2020-09-06Merge pull request #8861 from JosJuice/netplay-hashJMC47
Make netplay's "same game" check more robust
2020-08-19VolumeVerifier: Adjust problem descriptions for new netplay checkJosJuice
The new hash check catches essentially all desync problems that VolumeVerifier can catch, so from the user's perspective, such problems will result in Dolphin refusing to start the game on netplay rather than actually getting a desync.
2020-08-08VolumeVerifier: Split TMD error from ticket error for WADsJosJuice
When I first made VolumeVerifier, I figured that the distinction between an unsigned ticket and an unsigned TMD was a technical detail that users would have no reason to care about. However, while this might be true for discs, it isn't equally true for WADs, due to the widespread practice of fakesigning tickets to set the console ID to 0. This practice does not require fakesigning the TMD (though apparently people do it anyway, at least sometimes...), and the presence of a correctly signed TMD is a useful indicator that the contents have not been tampered with, even if the ticket isn't correctly signed.
2020-07-29DolphinQt: Show a warning when launching an NKit disc imageJosJuice
It is my opinion that nobody should use NKit disc images without being aware of the drawbacks of them. Since it seems like almost nobody who is using NKit disc images knows what NKit is (hmm, now how could that have happened...?), I am adding a warning to Dolphin so that you can't run NKit disc images without finding out about the drawbacks. In case someone really does want to use NKit disc images, the warning has a "Don't show this again" option. Unfortunately, I can't retroactively add the warning where it's most needed: in Dolphin 5.0, which does not support Wii NKit disc images.
2020-07-04DiscIO: Use Volume::IsDatelDisc in VolumeVerifierJosJuice
I forgot to do this in the PR where I added Volume::IsDatelDisc.
2020-07-04RedumpVerifier: Treat Datel game IDs as emptyJosJuice
Replacement for the reverted commit f9705fd1176432755df3dba0ef5c50f505193371.
2020-04-29Externals: Update minizip search path.degasus
2020-04-28VolumeVerifier: Treat IOS9 as always presentJosJuice
Fixes a false positive for Mario Party 8.
2020-04-28Merge pull request #8738 from JosJuice/convert-dialogJMC47
Replace the compress/uncompress actions with a convert dialog
2020-04-25VolumeVerifier: Show desync warning for dual layer discs tooJosJuice
2020-04-24DiscIO: Allow converting from formats other than ISO and GCZJosJuice
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-02-10Merge pull request #8621 from JosJuice/volumeverifier-invalid-partitionTilka
Fix VolumeVerifier not showing a problem for invalid partitions
2020-02-09VolumeVerifier: Ignore invalid partitions in GetBiggestReferencedOffsetJosJuice
Otherwise GetBiggestReferencedOffset might treat garbage data as a valid large offset, making Dolphin incorrectly say that the disc is too small.
2020-02-09Fix VolumeVerifier not showing a problem for invalid partitionsJosJuice
2020-02-02VolumeVerifier: Don't return early when file is too smallJosJuice
Not sure why that was there.
2020-02-02VolumeVerifier: Don't show an assert for files that are too smallJosJuice
2020-01-25VolumeVerifier: Report read errors to the userJosJuice
2020-01-04Fix several warningsLéo Lam
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.
2019-12-29VolumeVerifier.cpp: Verify that the string arrays are sorted before using ↵David Korth
std::binary_sort(). Debug builds only, since this is wrapped in assert().
2019-12-29VolumeVerifier.cpp: Use arrays of string_view objects instead of strings.David Korth
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-11-27VolumeVerifier: Detect broken Super Paper MarioJosJuice
https://bugs.dolphin-emu.org/issues/11900
2019-11-22VolumeVerifier: Fix a copypaste errorJosJuice
This was completely wrong, but I guess it happened to work correctly anyway due to timing reasons (MD5 is faster than SHA-1 + AES).
2019-11-02RedumpVerifier: Show an error when datfile lacks serials or versionsJosJuice
This happens if someone manually downloads a regular datfile from redump.org and puts it where Dolphin stores datfiles. Dolphin needs "special" datfiles that contain fields for serials and versions. Before this change, all discs (except Datel discs) would show up as "Unknown disc" when using a regular datfile.
2019-10-30Merge pull request #8443 from JosJuice/redumpverifier-datel-wiiMat M
RedumpVerifier: Fix handling of Datel Wii disc serials
2019-10-30RedumpVerifier: Fix handling of Datel Wii disc serialsJosJuice
GC Datel discs have empty serials, but Wii Datel discs have serials starting with DS followed by some digits.
2019-10-30RedumpVerifier: Don't crash on missing hyphen in serialJosJuice
2019-10-30VolumeVerifier: Fix "The data partition is missing" false positiveJosJuice
My bad...
2019-10-26Merge pull request #8429 from JosJuice/redump-create-pathMat M
Create necessary folder when using Redump.org integration
2019-10-25Create necessary folder when using Redump.org integrationJosJuice
This was making it impossible to use the Redump.org integration without first manually creating a Redump folder in the Cache folder. https://bugs.dolphin-emu.org/issues/11885
2019-10-25VolumeVerifier: Don't show problems with good dumps of Wii FreeloadersJosJuice
2019-10-23Merge pull request #8426 from JosJuice/volumeverifier-region-mismatchMat M
VolumeVerifier: Improve region/game ID mismatch checking
2019-10-23VolumeVerifier: Don't consider region mismatch for placeholder game IDsJosJuice
2019-10-23VolumeVerifier: Include revision when checking region mismatchJosJuice
2019-08-25VolumeVerifier: Add Redump.org downloadingJosJuice
2019-08-24VolumeVerifier: Add zip support for datfileJosJuice
2019-08-24VolumeVerifier: Add datfile parsingJosJuice
2019-08-09VolumeVerifier: Show underdump warnings for WBFS/CISO tooJosJuice
2019-08-06VolumeVerifier: MultithreadingJosJuice
2019-08-06VolumeVerifier: Don't read data multiple timesJosJuice
2019-07-23Merge pull request #8253 from JosJuice/fakesigned-common-key-fixLéo Lam
Re-implement FixCommonKeyIndex for WAD files
2019-07-22Merge pull request #8245 from JosJuice/volumeverifier-wii-menu-regionAnthony
Fix VolumeVerifier considering Wii Menu WADs to have wrong region
2019-07-21Re-implement FixCommonKeyIndex for WAD filesJosJuice
The old implementation of this was not able to distinguish between a title that had the common key index set to 1 because it actually was Korean and a title that had the common key index set to 1 due to fakesigning. This new implementation solves the problem by decrypting a content with each possible common key and checking which result matches the provided SHA-1 hash. The problem that the old implementation causes has only been reported to affect a certain pirated WAD of Chronos Twins DX (WC6EUP), but it's possible that the problem would start affecting more WADs if we add support for the vWii common key (which uses index 2). Adding support for the vWii common key would also prevent us from using the simpler solution of always forcing the index to 0 if the title is not Korean.
2019-07-21IOS: Put common key handles in an arrayJosJuice
2019-07-18DiscIO: Merge WiiWAD into VolumeWADJosJuice
These two classes are very similar, so let's merge them.
2019-07-15Fix VolumeVerifier considering Wii Menu WADs to have wrong regionJosJuice
2019-06-19Common/MsgHandler: Namespace code within the Common namespaceLioncash
Closes another gap in the Common library where code isn't being namespaced under it.
2019-06-07General: Migrate from deprecated mbedTLS functionsLioncash
As indicated by mbedTLS' documentation, all of the relevant functions have been superseded by _ret-suffixed variants in mbedTLS version 2.7.0.
2019-05-27DiscIO/VolumeVerifier: Make no-argument overload of GetBiggestUsedOffset() constLioncash
The overload taking a partition is already a const member function, so this one can be turned into one as well.
2019-05-27DiscIO/VolumeVerifier: Use structured bindings where applicableLioncash
Allows providing better names than "first" or "second".
2019-05-27DiscIO/VolumeVerifier: In-class initialize members where applicableLioncash
Removes redundant initializers from the constructor and provides initializers for all members that don't already have one for consistency (and deterministic initial state).