ISO mounting code now defaults to 2048 bytes per sector Mode 1 if it can not read the PVD rather than refusing to load the ISO, fixes mounting of Apple Rhapsody ISO's.

This commit is contained in:
OBattler
2017-07-22 11:51:00 +02:00
parent 843057a9a9
commit 2d13d7cb20
3 changed files with 8 additions and 1 deletions

View File

@@ -247,7 +247,11 @@ bool CDROM_Interface_Image::LoadIsoFile(char* filename)
} else if (CanReadPVD(track.file, RAW_SECTOR_SIZE, true)) {
track.sectorSize = RAW_SECTOR_SIZE;
track.mode2 = true;
} else return false;
} else {
/* Unknown mode: Assume regular 2048-byte sectors, this is needed so Apple Rhapsody ISO's can be mounted. */
track.sectorSize = COOKED_SECTOR_SIZE;
track.mode2 = false;
}
track.length = track.file->getLength() / track.sectorSize;
tracks.push_back(track);

View File

@@ -171,4 +171,6 @@ typedef std::vector<Track>::iterator track_it;
std::string mcn;
};
void cdrom_image_log(const char *format, ...);
#endif /* __CDROM_INTERFACE__ */

View File

@@ -988,6 +988,7 @@ int image_open(uint8_t id, wchar_t *fn)
wcstombs(afn, fn, sizeof(afn));
if (!cdimg[id]->SetDevice(afn, false))
{
pclog("Image failed to load\n");
image_close(id);
cdrom_set_null_handler(id);
return 1;