mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-28 10:02:31 -06:00
Merge pull request #4813 from leoetlino/larger-code
ncch_container: Add support for exheader replacement
This commit is contained in:
commit
2f7a10eeaa
1 changed files with 10 additions and 2 deletions
|
@ -320,9 +320,17 @@ Loader::ResultStatus NCCHContainer::Load() {
|
||||||
|
|
||||||
// System archives and DLC don't have an extended header but have RomFS
|
// System archives and DLC don't have an extended header but have RomFS
|
||||||
if (ncch_header.extended_header_size) {
|
if (ncch_header.extended_header_size) {
|
||||||
if (file.ReadBytes(&exheader_header, sizeof(ExHeader_Header)) !=
|
auto read_exheader = [this](FileUtil::IOFile& file) {
|
||||||
sizeof(ExHeader_Header))
|
const std::size_t size = sizeof(exheader_header);
|
||||||
|
return file && file.ReadBytes(&exheader_header, size) == size;
|
||||||
|
};
|
||||||
|
|
||||||
|
FileUtil::IOFile exheader_override_file{filepath + ".exheader", "rb"};
|
||||||
|
if (read_exheader(exheader_override_file)) {
|
||||||
|
is_tainted = true;
|
||||||
|
} else if (!read_exheader(file)) {
|
||||||
return Loader::ResultStatus::Error;
|
return Loader::ResultStatus::Error;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_encrypted) {
|
if (is_encrypted) {
|
||||||
// This ID check is masked to low 32-bit as a toleration to ill-formed ROM created
|
// This ID check is masked to low 32-bit as a toleration to ill-formed ROM created
|
||||||
|
|
Loading…
Reference in a new issue