| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
| |
Adds support for loading games with multiple programs embedded within such as the Dragon Quest 1+2+3 Collection
|
|
|
|
|
|
| |
Now that we have most of core free of shadowing, we can enable the
warning as an error to catch anything that may be remaining and also
eliminate this class of logic bug entirely.
|
|
|
|
| |
Brings us closer to enabling -Wshadow as an error in the core code.
|
| |
|
|\
| |
| | |
file_sys/nsp: Make SetTicketKeys actually do something
|
| |
| |
| |
| |
| | |
Previously, the method wasn't modifying any class state and therefore not having any effects when called.
Since this has been the case for a very long time now, I'm not sure if we couldn't just remove this method altogether.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Previously we assumed a submission package can only contain one Program NCA with a single TitleID.
However, Super Mario 3D All-Stars contains four Program NCAs, each with their unique TitleIDs.
This accounts for the existence of multi-content games such as this one.
- Fixes booting Super Mario 3D All-Stars from the games list.
|
|/
|
|
| |
Same behavior, minus unnecessary inclusions where not necessary.
|
|
|
|
| |
Our codebase uppercases member function names.
|
|
|
|
|
|
| |
Previously, we were reading the keys everytime a KeyManager object was created, causing yuzu to reread the keys file multiple hundreds of times when loading the game list.
With this change, it is only loaded once.
On my system, this decreased game list loading times by a factor of 20.
|
|
|
| |
Prevents a crash if the filename is less than 9 characters long.
|
|\
| |
| | |
nsp: Fix various errors with loading and processing of extracted NSPs
|
| |
| |
| |
| | |
Avoids all extracted NSPs being marked as error file type because they don't have program NCAs.
|
| |
| |
| |
| | |
Avoids 0 being used as title ID for all extracted NSPs.
|
| |
| |
| |
| | |
DeltaFragments are not useful to us and are often not included in patch NSPs.
|
|/
|
|
|
|
| |
These can be generified together by using a concept type to designate
them. This also has the benefit of not making copies of potentially very
large arrays.
|
| |
|
|
|
|
| |
Creates a single KeyManager for the entire container and then passes it into the NCA constructor, eliminating several unnecessary KeyManager reads.
|
|
|
|
| |
When writing VFS, it initally seemed useful to include a function to in-place convert container files into directories in one homogenous directory structure, but re-evaluating it now there have been plenty of chances to use it and there has always been a better way. Removing as it is unused and likely will not be used.
|
| |
|
|
|
|
|
|
|
|
| |
GetName() returns a std::string by value, not by reference, so after the
std::string_view is constructed, it's not well defined to actually
execute any member functions of std::string_view that attempt to access
the data, as the std::string has already been destroyed. Instead, we can
just use a std::string and erase the last four characters.
|
|
|
|
|
| |
If a ticket file was ever a null pointer, we'd cause a null pointer
dereference, as we were calling GetExtension() on the pointer instance.
|
|
|
|
|
|
|
| |
When searching for a file extension, it's generally preferable to begin
the search at the end of the string rather than the beginning, as the
whole string isn't going to be walked just to check for something at the
end of it.
|
|
|
|
|
|
|
|
| |
If an error occurs when constructing the PartitionFilesystem instance,
the constructor would be exited early, which wouldn't initialize the
extracted data member, making it possible for other code to perform an
uninitialized read by calling the public IsExtractedType() member
function. This prevents that.
|
|
|
|
|
|
|
|
|
|
| |
Like the other two bits of factored out code, this can also be put
within its own function. We can also modify the code so that it accepts
a const reference to a std::vector of files, this way, we can
deduplicate the file retrieval.
Now the constructor for NSP isn't a combination of multiple behaviors in
one spot. It's nice and separate.
|
|
|
|
|
|
| |
This too, is completely separate behavior from what is in the
constructor, so we can move this to its own isolated function to keep
everything self-contained.
|
|
|
|
|
| |
This behavior is entirely independent of the surrounding code, so it can
be put in its own function to keep the behavior separate.
|
|
|
|
| |
We can use early continues here to reduce the amount of nesting.
|
|\
| |
| | |
file_sys/submission_package: Replace includes with forward declarations where applicable
|
| |
| |
| |
| |
| | |
Orders the elements in the sequence to match the order in which they'll
actually be initialized in.
|
| | |
|
|/
|
|
| |
Now display correct error instead of catch-all MissingProgramNCA
|
| |
|
| |
|
|
|