2019-03-31 15:37:07 +01:00
|
|
|
// /***************************************************************************
|
|
|
|
|
// The Disc Image Chef
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Filename : helpers.c
|
|
|
|
|
// Author(s) : Natalia Portillo <claunia@claunia.com>
|
|
|
|
|
//
|
|
|
|
|
// Component : Disk image plugins.
|
|
|
|
|
//
|
|
|
|
|
// --[ Description ] ----------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// Contains helpers for DiscImageChef format disk images.
|
|
|
|
|
//
|
|
|
|
|
// --[ License ] --------------------------------------------------------------
|
|
|
|
|
//
|
|
|
|
|
// This library is free software; you can redistribute it and/or modify
|
|
|
|
|
// it under the terms of the GNU Lesser General Public License as
|
|
|
|
|
// published by the Free Software Foundation; either version 2.1 of the
|
|
|
|
|
// License, or (at your option) any later version.
|
|
|
|
|
//
|
|
|
|
|
// This library is distributed in the hope that it will be useful, but
|
|
|
|
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
|
//
|
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
|
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
//
|
|
|
|
|
// ----------------------------------------------------------------------------
|
2020-01-03 17:47:47 +00:00
|
|
|
// Copyright © 2011-2020 Natalia Portillo
|
2019-03-31 15:37:07 +01:00
|
|
|
// ****************************************************************************/
|
|
|
|
|
|
|
|
|
|
#include <dic.h>
|
|
|
|
|
#include <dicformat.h>
|
|
|
|
|
|
|
|
|
|
// Converts between image data type and dic media tag type
|
2019-03-31 20:30:27 +01:00
|
|
|
int32_t GetMediaTagTypeForDataType(int32_t type)
|
2019-03-31 15:37:07 +01:00
|
|
|
{
|
|
|
|
|
switch(type)
|
|
|
|
|
{
|
|
|
|
|
case CompactDiscPartialToc: return CD_TOC;
|
|
|
|
|
case CompactDiscSessionInfo: return CD_SessionInfo;
|
|
|
|
|
case CompactDiscToc: return CD_FullTOC;
|
|
|
|
|
case CompactDiscPma: return CD_PMA;
|
|
|
|
|
case CompactDiscAtip: return CD_ATIP;
|
|
|
|
|
case CompactDiscLeadInCdText: return CD_TEXT;
|
|
|
|
|
case DvdPfi: return DVD_PFI;
|
|
|
|
|
case DvdLeadInCmi: return DVD_CMI;
|
|
|
|
|
case DvdDiscKey: return DVD_DiscKey;
|
|
|
|
|
case DvdBca: return DVD_BCA;
|
|
|
|
|
case DvdDmi: return DVD_DMI;
|
|
|
|
|
case DvdMediaIdentifier: return DVD_MediaIdentifier;
|
|
|
|
|
case DvdMediaKeyBlock: return DVD_MKB;
|
|
|
|
|
case DvdRamDds: return DVDRAM_DDS;
|
|
|
|
|
case DvdRamMediumStatus: return DVDRAM_MediumStatus;
|
|
|
|
|
case DvdRamSpareArea: return DVDRAM_SpareArea;
|
|
|
|
|
case DvdRRmd: return DVDR_RMD;
|
|
|
|
|
case DvdRPrerecordedInfo: return DVDR_PreRecordedInfo;
|
|
|
|
|
case DvdRMediaIdentifier: return DVDR_MediaIdentifier;
|
|
|
|
|
case DvdRPfi: return DVDR_PFI;
|
|
|
|
|
case DvdAdip: return DVD_ADIP;
|
|
|
|
|
case HdDvdCpi: return HDDVD_CPI;
|
|
|
|
|
case HdDvdMediumStatus: return HDDVD_MediumStatus;
|
|
|
|
|
case DvdDlLayerCapacity: return DVDDL_LayerCapacity;
|
|
|
|
|
case DvdDlMiddleZoneAddress: return DVDDL_MiddleZoneAddress;
|
|
|
|
|
case DvdDlJumpIntervalSize: return DVDDL_JumpIntervalSize;
|
|
|
|
|
case DvdDlManualLayerJumpLba: return DVDDL_ManualLayerJumpLBA;
|
|
|
|
|
case BlurayDi: return BD_DI;
|
|
|
|
|
case BlurayBca: return BD_BCA;
|
|
|
|
|
case BlurayDds: return BD_DDS;
|
|
|
|
|
case BlurayCartridgeStatus: return BD_CartridgeStatus;
|
|
|
|
|
case BluraySpareArea: return BD_SpareArea;
|
|
|
|
|
case AacsVolumeIdentifier: return AACS_VolumeIdentifier;
|
|
|
|
|
case AacsSerialNumber: return AACS_SerialNumber;
|
|
|
|
|
case AacsMediaIdentifier: return AACS_MediaIdentifier;
|
|
|
|
|
case AacsMediaKeyBlock: return AACS_MKB;
|
|
|
|
|
case AacsDataKeys: return AACS_DataKeys;
|
|
|
|
|
case AacsLbaExtents: return AACS_LBAExtents;
|
|
|
|
|
case CprmMediaKeyBlock: return AACS_CPRM_MKB;
|
|
|
|
|
case HybridRecognizedLayers: return Hybrid_RecognizedLayers;
|
|
|
|
|
case ScsiMmcWriteProtection: return MMC_WriteProtection;
|
|
|
|
|
case ScsiMmcDiscInformation: return MMC_DiscInformation;
|
|
|
|
|
case ScsiMmcTrackResourcesInformation: return MMC_TrackResourcesInformation;
|
|
|
|
|
case ScsiMmcPowResourcesInformation: return MMC_POWResourcesInformation;
|
|
|
|
|
case ScsiInquiry: return SCSI_INQUIRY;
|
|
|
|
|
case ScsiModePage2A: return SCSI_MODEPAGE_2A;
|
|
|
|
|
case AtaIdentify: return ATA_IDENTIFY;
|
|
|
|
|
case AtapiIdentify: return ATAPI_IDENTIFY;
|
|
|
|
|
case PcmciaCis: return PCMCIA_CIS;
|
|
|
|
|
case SecureDigitalCid: return SD_CID;
|
|
|
|
|
case SecureDigitalCsd: return SD_CSD;
|
|
|
|
|
case SecureDigitalScr: return SD_SCR;
|
|
|
|
|
case SecureDigitalOcr: return SD_OCR;
|
|
|
|
|
case MultiMediaCardCid: return MMC_CID;
|
|
|
|
|
case MultiMediaCardCsd: return MMC_CSD;
|
|
|
|
|
case MultiMediaCardOcr: return MMC_OCR;
|
|
|
|
|
case MultiMediaCardExtendedCsd: return MMC_ExtendedCSD;
|
|
|
|
|
case XboxSecuritySector: return Xbox_SecuritySector;
|
|
|
|
|
case FloppyLeadOut: return Floppy_LeadOut;
|
|
|
|
|
case DvdDiscControlBlock: return DCB;
|
|
|
|
|
case CompactDiscFirstTrackPregap: return CD_FirstTrackPregap;
|
|
|
|
|
case CompactDiscLeadOut: return CD_LeadOut;
|
|
|
|
|
case ScsiModeSense6: return SCSI_MODESENSE_6;
|
|
|
|
|
case ScsiModeSense10: return SCSI_MODESENSE_10;
|
|
|
|
|
case UsbDescriptors: return USB_Descriptors;
|
|
|
|
|
case XboxDmi: return Xbox_DMI;
|
|
|
|
|
case XboxPfi: return Xbox_PFI;
|
|
|
|
|
case CompactDiscMediaCatalogueNumber: return CD_MCN;
|
|
|
|
|
case CompactDiscLeadIn: return CD_LeadIn;
|
|
|
|
|
default: return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-03-31 20:30:27 +01:00
|
|
|
|
|
|
|
|
// Get the CICM XML media type from DIC media type
|
|
|
|
|
int32_t GetXmlMediaType(int32_t type)
|
|
|
|
|
{
|
|
|
|
|
switch(type)
|
|
|
|
|
{
|
|
|
|
|
case CD:
|
|
|
|
|
case CDDA:
|
|
|
|
|
case CDG:
|
|
|
|
|
case CDEG:
|
|
|
|
|
case CDI:
|
|
|
|
|
case CDIREADY:
|
|
|
|
|
case CDROM:
|
|
|
|
|
case CDROMXA:
|
|
|
|
|
case CDPLUS:
|
|
|
|
|
case CDMO:
|
|
|
|
|
case CDR:
|
|
|
|
|
case CDRW:
|
|
|
|
|
case CDMRW:
|
|
|
|
|
case VCD:
|
|
|
|
|
case SVCD:
|
|
|
|
|
case PCD:
|
|
|
|
|
case SACD:
|
|
|
|
|
case DDCD:
|
|
|
|
|
case DDCDR:
|
|
|
|
|
case DDCDRW:
|
|
|
|
|
case DTSCD:
|
|
|
|
|
case CDMIDI:
|
|
|
|
|
case CDV:
|
|
|
|
|
case DVDROM:
|
|
|
|
|
case DVDR:
|
|
|
|
|
case DVDRW:
|
|
|
|
|
case DVDPR:
|
|
|
|
|
case DVDPRW:
|
|
|
|
|
case DVDPRWDL:
|
|
|
|
|
case DVDRDL:
|
|
|
|
|
case DVDPRDL:
|
|
|
|
|
case DVDRAM:
|
|
|
|
|
case DVDRWDL:
|
|
|
|
|
case DVDDownload:
|
|
|
|
|
case HDDVDROM:
|
|
|
|
|
case HDDVDRAM:
|
|
|
|
|
case HDDVDR:
|
|
|
|
|
case HDDVDRW:
|
|
|
|
|
case HDDVDRDL:
|
|
|
|
|
case HDDVDRWDL:
|
|
|
|
|
case BDROM:
|
|
|
|
|
case BDR:
|
|
|
|
|
case BDRE:
|
|
|
|
|
case BDRXL:
|
|
|
|
|
case BDREXL:
|
|
|
|
|
case EVD:
|
|
|
|
|
case FVD:
|
|
|
|
|
case HVD:
|
|
|
|
|
case CBHD:
|
|
|
|
|
case HDVMD:
|
|
|
|
|
case VCDHD:
|
|
|
|
|
case SVOD:
|
|
|
|
|
case FDDVD:
|
|
|
|
|
case LD:
|
|
|
|
|
case LDROM:
|
|
|
|
|
case LDROM2:
|
|
|
|
|
case LVROM:
|
|
|
|
|
case MegaLD:
|
|
|
|
|
case PS1CD:
|
|
|
|
|
case PS2CD:
|
|
|
|
|
case PS2DVD:
|
|
|
|
|
case PS3DVD:
|
|
|
|
|
case PS3BD:
|
|
|
|
|
case PS4BD:
|
|
|
|
|
case UMD:
|
|
|
|
|
case XGD:
|
|
|
|
|
case XGD2:
|
|
|
|
|
case XGD3:
|
|
|
|
|
case XGD4:
|
|
|
|
|
case MEGACD:
|
|
|
|
|
case SATURNCD:
|
|
|
|
|
case GDROM:
|
|
|
|
|
case GDR:
|
|
|
|
|
case SuperCDROM2:
|
|
|
|
|
case JaguarCD:
|
|
|
|
|
case ThreeDO:
|
|
|
|
|
case PCFX:
|
|
|
|
|
case NeoGeoCD:
|
|
|
|
|
case GOD:
|
|
|
|
|
case WOD:
|
|
|
|
|
case WUOD:
|
|
|
|
|
case CDTV:
|
|
|
|
|
case CD32:
|
|
|
|
|
case Nuon:
|
|
|
|
|
case Playdia:
|
|
|
|
|
case Pippin:
|
|
|
|
|
case FMTOWNS:
|
|
|
|
|
case MilCD:
|
|
|
|
|
case VideoNow:
|
|
|
|
|
case VideoNowColor:
|
|
|
|
|
case VideoNowXp: return OpticalDisc;
|
|
|
|
|
default: return BlockMedia;
|
|
|
|
|
}
|
|
|
|
|
}
|