diff --git a/src/libromdata/Console/Dreamcast.cpp b/src/libromdata/Console/Dreamcast.cpp index 9205590ed2..e31ad3a2e2 100644 --- a/src/libromdata/Console/Dreamcast.cpp +++ b/src/libromdata/Console/Dreamcast.cpp @@ -772,11 +772,7 @@ int Dreamcast::loadFieldData(void) isoData = d->gdiReader->openIsoRomData(3); } else { // ISO object for ISO-9660 PVD - PartitionFilePtr isoFile = std::make_shared( - d->discReader.get(), 0, d->discReader->size()); - if (isoFile->isOpen()) { - isoData = std::make_shared(isoFile); - } + isoData = std::make_shared(d->discReader); } if (isoData && isoData->isOpen()) { diff --git a/src/libromdata/Console/Xbox360_XEX.cpp b/src/libromdata/Console/Xbox360_XEX.cpp index f6be43d982..2050a71e68 100644 --- a/src/libromdata/Console/Xbox360_XEX.cpp +++ b/src/libromdata/Console/Xbox360_XEX.cpp @@ -1188,18 +1188,21 @@ const EXE *Xbox360_XEX_Private::initEXE(void) // PE section, so we don't have to look anything up. // Attempt to open the EXE section. - // Assuming a maximum of 8 KB for the PE headers. - IRpFilePtr peFile_tmp; #ifdef ENABLE_LIBMSPACK if (!lzx_peHeader.empty()) { - peFile_tmp = std::make_shared(lzx_peHeader.data(), lzx_peHeader.size()); + IRpFilePtr peFile_tmp = std::make_shared(lzx_peHeader.data(), lzx_peHeader.size()); + if (peFile_tmp->isOpen()) { + EXE *const pe_exe_tmp = new EXE(peFile_tmp); + if (pe_exe_tmp->isOpen()) { + pe_exe = pe_exe_tmp; + } else { + delete pe_exe_tmp; + } + } } else #endif /* ENABLE_LIBMSPACK */ { - peFile_tmp = std::make_shared(peReader.get(), 0, PE_HEADER_SIZE); - } - if (peFile_tmp->isOpen()) { - EXE *const pe_exe_tmp = new EXE(peFile_tmp); + EXE *const pe_exe_tmp = new EXE(peReader); if (pe_exe_tmp->isOpen()) { pe_exe = pe_exe_tmp; } else { diff --git a/src/libromdata/Handheld/Nintendo3DS.cpp b/src/libromdata/Handheld/Nintendo3DS.cpp index c166df6027..5606c05c5b 100644 --- a/src/libromdata/Handheld/Nintendo3DS.cpp +++ b/src/libromdata/Handheld/Nintendo3DS.cpp @@ -595,8 +595,6 @@ int Nintendo3DSPrivate::openSRL(void) } // Attempt to open the SRL as if it's a new file. - // TODO: IRpFile implementation with offset/length, so we don't - // have to use both DiscReader and PartitionFile. // Check if this content is encrypted. // If it is, we'll need to create a CIAReader. @@ -615,15 +613,8 @@ int Nintendo3DSPrivate::openSRL(void) return -EIO; } - // TODO: Make IDiscReader derive from IRpFile. - // May need to add reference counting to IRpFile... - RomDataPtr srlData; - PartitionFilePtr srlFile = std::make_shared(srlReader.get(), 0, length); - if (srlFile->isOpen()) { - // Create the NintendoDS object. - srlData = std::make_shared(srlFile, true); - } - + // Create the NintendoDS object. + RomDataPtr srlData = std::make_shared(srlReader, true); if (srlData && srlData->isOpen() && srlData->isValid()) { // SRL opened successfully. this->mainContent = std::move(srlData); diff --git a/src/libromdata/Handheld/PSP.cpp b/src/libromdata/Handheld/PSP.cpp index 9851005a50..b5c3678aae 100644 --- a/src/libromdata/Handheld/PSP.cpp +++ b/src/libromdata/Handheld/PSP.cpp @@ -551,9 +551,7 @@ int PSP::loadFieldData(void) // TODO: Parse firmware update PARAM.SFO and EBOOT.BIN? // ISO object for ISO-9660 PVD - // TODO: DiscReader overload for ISO. - const PartitionFilePtr ptFile = std::make_shared(d->discReader.get(), 0, d->discReader->size()); - ISO *const isoData = new ISO(ptFile); + ISO *const isoData = new ISO(d->discReader); if (isoData->isOpen()) { // Add the fields. const RomFields *const isoFields = isoData->fields();