diff --git a/DiscImageChef.CommonTypes/MediaType.cs b/DiscImageChef.CommonTypes/MediaType.cs index ddea2df5e..b92640bc7 100644 --- a/DiscImageChef.CommonTypes/MediaType.cs +++ b/DiscImageChef.CommonTypes/MediaType.cs @@ -125,6 +125,7 @@ namespace DiscImageChef.CommonTypes /// marks track as audio pause. /// CDIREADY = 34, + FMTOWNS = 35, #endregion Somewhat standard Compact Disc formats, types 10 to 39 #region Standard DVD formats, types 40 to 50 diff --git a/DiscImageChef.CommonTypes/Metadata/Dimensions.cs b/DiscImageChef.CommonTypes/Metadata/Dimensions.cs index d3563c54b..7c4742b5d 100644 --- a/DiscImageChef.CommonTypes/Metadata/Dimensions.cs +++ b/DiscImageChef.CommonTypes/Metadata/Dimensions.cs @@ -886,6 +886,12 @@ namespace DiscImageChef.CommonTypes.Metadata case CommonTypes.MediaType.WUOD: case CommonTypes.MediaType.PCFX: case CommonTypes.MediaType.CDIREADY: + case CommonTypes.MediaType.FMTOWNS: + case CommonTypes.MediaType.CDTV: + case CommonTypes.MediaType.CD32: + case CommonTypes.MediaType.Nuon: + case CommonTypes.MediaType.Playdia: + case CommonTypes.MediaType.Pippin: dmns.Diameter = 120; dmns.DiameterSpecified = true; dmns.Thickness = 1.2; diff --git a/DiscImageChef.CommonTypes/Metadata/MediaType.cs b/DiscImageChef.CommonTypes/Metadata/MediaType.cs index 247e0e144..c19e24803 100644 --- a/DiscImageChef.CommonTypes/Metadata/MediaType.cs +++ b/DiscImageChef.CommonTypes/Metadata/MediaType.cs @@ -368,6 +368,10 @@ namespace DiscImageChef.CommonTypes.Metadata discType = "Blu-ray"; discSubType = "Xbox One Game Disc (XGD4)"; break; + case CommonTypes.MediaType.FMTOWNS: + discType = "Compact Disc"; + discSubType = "FM-Towns"; + break; case CommonTypes.MediaType.Apple32SS: discType = "5.25\" floppy"; discSubType = "Apple DOS 3.2"; diff --git a/DiscImageChef.DiscImages/Alcohol120/Helpers.cs b/DiscImageChef.DiscImages/Alcohol120/Helpers.cs index 30841d8f2..182e6ca16 100644 --- a/DiscImageChef.DiscImages/Alcohol120/Helpers.cs +++ b/DiscImageChef.DiscImages/Alcohol120/Helpers.cs @@ -121,7 +121,15 @@ namespace DiscImageChef.DiscImages case MediaType.SATURNCD: case MediaType.ThreeDO: case MediaType.VCD: - case MediaType.VCDHD: return AlcoholMediumType.CD; + case MediaType.VCDHD: + case MediaType.NeoGeoCD: + case MediaType.PCFX: + case MediaType.CDTV: + case MediaType.CD32: + case MediaType.Nuon: + case MediaType.Playdia: + case MediaType.Pippin: + case MediaType.FMTOWNS: return AlcoholMediumType.CD; case MediaType.CDR: return AlcoholMediumType.CDR; case MediaType.CDRW: case MediaType.CDMRW: return AlcoholMediumType.CDRW; @@ -149,9 +157,7 @@ namespace DiscImageChef.DiscImages } } - static (byte minute, byte second, byte frame) LbaToMsf(ulong sector) - { - return ((byte)((sector + 150) / 75 / 60), (byte)((sector + 150) / 75 % 60), (byte)((sector + 150) % 75)); - } + static (byte minute, byte second, byte frame) LbaToMsf(ulong sector) => + ((byte)((sector + 150) / 75 / 60), (byte)((sector + 150) / 75 % 60), (byte)((sector + 150) % 75)); } } \ No newline at end of file diff --git a/DiscImageChef.DiscImages/Alcohol120/Properties.cs b/DiscImageChef.DiscImages/Alcohol120/Properties.cs index 2d428d228..491e486a2 100644 --- a/DiscImageChef.DiscImages/Alcohol120/Properties.cs +++ b/DiscImageChef.DiscImages/Alcohol120/Properties.cs @@ -133,7 +133,7 @@ namespace DiscImageChef.DiscImages MediaType.SuperCDROM2, MediaType.SVCD, MediaType.SVOD, MediaType.SATURNCD, MediaType.ThreeDO, MediaType.UDO, MediaType.UDO2, MediaType.UDO2_WORM, MediaType.UMD, MediaType.VCD, MediaType.VCDHD, MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, MediaType.CD32, MediaType.Nuon, - MediaType.Playdia, MediaType.Pippin + MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS }; public IEnumerable<(string name, Type type, string description)> SupportedOptions => new (string name, Type type, string description)[] { }; diff --git a/DiscImageChef.DiscImages/Alcohol120/Write.cs b/DiscImageChef.DiscImages/Alcohol120/Write.cs index 7562c518c..ca891524d 100644 --- a/DiscImageChef.DiscImages/Alcohol120/Write.cs +++ b/DiscImageChef.DiscImages/Alcohol120/Write.cs @@ -100,6 +100,14 @@ namespace DiscImageChef.DiscImages case MediaType.ThreeDO: case MediaType.VCD: case MediaType.VCDHD: + case MediaType.NeoGeoCD: + case MediaType.PCFX: + case MediaType.CDTV: + case MediaType.CD32: + case MediaType.Nuon: + case MediaType.Playdia: + case MediaType.Pippin: + case MediaType.FMTOWNS: isDvd = false; break; default: @@ -445,7 +453,8 @@ namespace DiscImageChef.DiscImages new AlcoholSession { sessionEnd = - (int)(writingTracks[0].TrackEndSector - writingTracks[0].TrackStartSector + 1), + (int)(writingTracks[0].TrackEndSector - writingTracks[0].TrackStartSector + + 1), sessionSequence = 1, allBlocks = 1, nonTrackBlocks = 3, @@ -464,7 +473,8 @@ namespace DiscImageChef.DiscImages adrCtl = 20, point = 1, extraOffset = - (uint)(writingTracks[0].TrackEndSector - writingTracks[0].TrackStartSector + 1), + (uint)(writingTracks[0].TrackEndSector - writingTracks[0].TrackStartSector + + 1), sectorSize = 2048, files = 1, footerOffset = (uint)footerOffset, @@ -632,8 +642,8 @@ namespace DiscImageChef.DiscImages // Daemon Tools expect it to be like this alcTrk.unknown = new byte[] { - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00 + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }; alcTrk.unknown2 = new byte[24]; @@ -713,17 +723,16 @@ namespace DiscImageChef.DiscImages unknown2 = new byte[24] }); - thisSessionTracks.Add(0xC0, - new AlcoholTrack - { - point = 0xC0, - adrCtl = 0x50, - min = 128, - pmin = 97, - psec = 25, - unknown = new byte[18], - unknown2 = new byte[24] - }); + thisSessionTracks.Add(0xC0, new AlcoholTrack + { + point = 0xC0, + adrCtl = 0x50, + min = 128, + pmin = 97, + psec = 25, + unknown = new byte[18], + unknown2 = new byte[24] + }); currentTrackOffset += Marshal.SizeOf(typeof(AlcoholTrack)) * 2; } @@ -733,8 +742,7 @@ namespace DiscImageChef.DiscImages alcFooter = new AlcoholFooter { - filenameOffset = (uint)(footerOffset + Marshal.SizeOf(typeof(AlcoholFooter))), - widechar = 1 + filenameOffset = (uint)(footerOffset + Marshal.SizeOf(typeof(AlcoholFooter))), widechar = 1 }; byte[] filename = Encoding.Unicode.GetBytes("*.mdf"); // Yup, Alcohol stores no filename but a wildcard. @@ -847,10 +855,7 @@ namespace DiscImageChef.DiscImages return true; } - public bool SetMetadata(ImageInfo metadata) - { - return true; - } + public bool SetMetadata(ImageInfo metadata) => true; public bool SetGeometry(uint cylinders, uint heads, uint sectorsPerTrack) { @@ -970,16 +975,8 @@ namespace DiscImageChef.DiscImages } } - public bool SetDumpHardware(List dumpHardware) - { - // Not supported - return false; - } + public bool SetDumpHardware(List dumpHardware) => false; - public bool SetCicmMetadata(CICMMetadataType metadata) - { - // Not supported - return false; - } + public bool SetCicmMetadata(CICMMetadataType metadata) => false; } } \ No newline at end of file diff --git a/DiscImageChef.DiscImages/CDRDAO/Properties.cs b/DiscImageChef.DiscImages/CDRDAO/Properties.cs index ef0857280..a921ad40c 100644 --- a/DiscImageChef.DiscImages/CDRDAO/Properties.cs +++ b/DiscImageChef.DiscImages/CDRDAO/Properties.cs @@ -115,7 +115,7 @@ namespace DiscImageChef.DiscImages MediaType.JaguarCD, MediaType.MEGACD, MediaType.PD650, MediaType.PD650_WORM, MediaType.PS1CD, MediaType.PS2CD, MediaType.SuperCDROM2, MediaType.SVCD, MediaType.SATURNCD, MediaType.ThreeDO, MediaType.VCD, MediaType.VCDHD, MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, MediaType.CD32, - MediaType.Nuon, MediaType.Playdia, MediaType.Pippin + MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS }; public IEnumerable<(string name, Type type, string description)> SupportedOptions => new[] {("separate", typeof(bool), "Write each track to a separate file.")}; diff --git a/DiscImageChef.DiscImages/CDRWin/Properties.cs b/DiscImageChef.DiscImages/CDRWin/Properties.cs index 8e910659e..3de27f286 100644 --- a/DiscImageChef.DiscImages/CDRWin/Properties.cs +++ b/DiscImageChef.DiscImages/CDRWin/Properties.cs @@ -120,7 +120,7 @@ namespace DiscImageChef.DiscImages MediaType.PS3DVD, MediaType.PS4BD, MediaType.SuperCDROM2, MediaType.SVCD, MediaType.SVOD, MediaType.SATURNCD, MediaType.ThreeDO, MediaType.UDO, MediaType.UDO2, MediaType.UDO2_WORM, MediaType.UMD, MediaType.VCD, MediaType.VCDHD, MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, - MediaType.CD32, MediaType.Nuon, MediaType.Playdia, MediaType.Pippin + MediaType.CD32, MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS }; public IEnumerable<(string name, Type type, string description)> SupportedOptions => new[] {("separate", typeof(bool), "Write each track to a separate file.")}; diff --git a/DiscImageChef.DiscImages/CloneCD/Properties.cs b/DiscImageChef.DiscImages/CloneCD/Properties.cs index 19967f735..5ddfcb64f 100644 --- a/DiscImageChef.DiscImages/CloneCD/Properties.cs +++ b/DiscImageChef.DiscImages/CloneCD/Properties.cs @@ -67,7 +67,8 @@ namespace DiscImageChef.DiscImages MediaType.CDRW, MediaType.CDV, MediaType.DTSCD, MediaType.JaguarCD, MediaType.MEGACD, MediaType.PS1CD, MediaType.PS2CD, MediaType.SuperCDROM2, MediaType.SVCD, MediaType.SATURNCD, MediaType.ThreeDO, MediaType.VCD, MediaType.VCDHD, MediaType.NeoGeoCD, MediaType.PCFX, - MediaType.CDTV, MediaType.CD32, MediaType.Nuon, MediaType.Playdia, MediaType.Pippin + MediaType.CDTV, MediaType.CD32, MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, + MediaType.FMTOWNS }; public IEnumerable<(string name, Type type, string description)> SupportedOptions => new (string name, Type type, string description)[] { }; diff --git a/DiscImageChef.DiscImages/DiscImageChef/Helpers.cs b/DiscImageChef.DiscImages/DiscImageChef/Helpers.cs index d4f620ffc..68de35564 100644 --- a/DiscImageChef.DiscImages/DiscImageChef/Helpers.cs +++ b/DiscImageChef.DiscImages/DiscImageChef/Helpers.cs @@ -213,7 +213,8 @@ namespace DiscImageChef.DiscImages case MediaType.CD32: case MediaType.Nuon: case MediaType.Playdia: - case MediaType.Pippin: return XmlMediaType.OpticalDisc; + case MediaType.Pippin: + case MediaType.FMTOWNS: return XmlMediaType.OpticalDisc; default: return XmlMediaType.BlockMedia; } } diff --git a/templates/dicformat.bt b/templates/dicformat.bt index c34b1f759..c55dc2e6e 100644 --- a/templates/dicformat.bt +++ b/templates/dicformat.bt @@ -8,7 +8,7 @@ // Category: Misc // File Mask: *.dicf // ID Bytes: 44 49 43 4D 46 52 4D 54 // DICMFRMT -// History: +// History: // 1.0 2018-01-26 Natalia Portillo: Initial release //------------------------------------------------ @@ -48,6 +48,7 @@ enum MediaType PD650 = 32, PD650_WORM = 33, CDIREADY = 34, + FMTOWNS = 35, DVDROM = 40, DVDR = 41, @@ -107,6 +108,7 @@ enum MediaType PS3BD = 116, PS4BD = 117, UMD = 118, + PlayStationVitaGameCard = 119, XGD = 130, XGD2 = 131, @@ -125,6 +127,10 @@ enum MediaType ThreeDO = 173, PCFX = 174, NeoGeoCD = 175, + CDTV = 176, + CD32 = 177, + Nuon = 178, + Playdia = 179, Apple32SS = 180, Apple32DS = 181, @@ -502,6 +508,7 @@ enum MediaType AppleWidget = 691, AppleHD20 = 692, PriamDataTower = 693, + Pippin = 694, RA60 = 700, RA80 = 701, @@ -664,7 +671,7 @@ enum ChecksumAlgorithm SpamSum = 4 }; -typedef struct +typedef struct { char identifier[8]; wchar_t application[32];