# [6.0.0-alpha.13] - 2025-10-21

## Added

- AaruFormat V2.

## Fixed

- Several colorization fixes in console output.
- Fix spiral drawing for 80mm DVDs.

# [6.0.0-alpha.12] - 2025-09-28

## Added

### - Archives

- Support for AMG archives
- Support for ARC archives
- Support for HA archives
- Support for PAK archives
- Support for Xbox 360 Secure Transacted File System (STFS) archives
- Support for ZOO archives

# [6.0.0-alpha.11] - 2025-08-22

## Added

### - Console

- Add colors to all output from console, except from plugins themselves (this will come later).

## Fixed

### - Media detection

- Fix detection of BD-R when profile is set wrong by drive.

### - Media information

- Fix media information not returning anything.
- Prevent crash when incorrect MMC features are returned by the drive.

### - Media scanning

- Fixed wrong speed average.

### - Decoding

- Guards against certain EVPD page 80h.

### - Dumping

- Show MAX instead of "0x" when dumping CDs.
- DI and BCA will be dumped from all Blu-ray derived media types.

## Changes

- Add Sentry to catch and send exceptions to be reviewed.
- Add option to save log file globally.
- Disable automatic creation of log file on dumping, use global log file.
- Updated to .NET 10

# [5.4.1] - 2025-08-14

- Updated EntityFrameworkCore due to compatibility issues.

# [5.4] - 2025-08-14

- Updated to run on more modern systems. No changes applied.

# [6.0.0-alpha10] - 2025-04-24

## Added

### - Archives

- Support for archive formats:
  - Identify, list contents, extract contents.
    - Symbian Installation File (SIS, SISX).

### - Dumping

- Add HL-DT-ST raw DVD read support
- Add Lite-On raw DVD read support
- Find CSS keys from pattern attack

### - Filesystems

- Implement full support for mounting, reading and extracting Commodore 1540/1541/1571/1581 filesystems.

### - Fletcher-32 checksum

- ARM NEON implementation if supported by running host.
- SSSE3 implementation if supported by running host.

### - Formats

- A2R flux format support
- HyperFlex floppy formats.
- SuperCard Pro flux parsing

## Fixes

### - Commands

- Continue identifying filesystems if one of them throws an exception, and ask user to fill a report about it.
- Ensure a directory that exists with the same name of a file is considered as file already existing.
- Fix creation of metadata sidecar for optical media images not mounting supported filesystems.

### - Devices

- Make Kreon SCSI CDB10 for Linux.
- Fix spiral maximum sector count for DDCD parameters from a real DDCD-R disc.
- Workaround some devices not liking oddly sized buffers when calling MODE SENSE (6) / MODE SENSE (10).

### - SCSI response decoders

- Fix decoding of MODE SENSE (10) pages in page 0 format.
- Fix handling of corrupt/invalid MODE SENSE (6) block descriptors. Fixes #842
- Fix SCSI SENSE not being decoded if VALID bit set. Fixes #824

### - Dumping

- Check title keys resume for null when not a DVD Video (#827)
- Check sector validity when reading scrambled using Plextor drives.
- Fix USB field sizes for 64-bit Windows systems.
- Fix trying to write to subchannel log when there's none available.
- In CD-i discs with no tracks in TOC and an audio lead-out, fix setting track 1 as data.
- When trimming or retrying using scrambled mode, fix offset and check validity of data sectors because drive can report
  no error but return errored data.

### - ISO9660 filesystem

- Do not declare the presence of MODE 2 sub-headers based on long sector content, but on tag presence on media image.
- Fixed performance issue caused by reading the whole data previous to the asked offset.

### - VirtualPC disk image

- Create and flush footer separately.
- Implement support for writing sparse (dynamically allocated) images.
- Use same CHS calculation as VirtualPC.

# [6.0.0-alpha9] - 2022-12-23

## Added

### - Adler checksum

- SSSE3 implementation if supported by running host.

### - Apple Data Compression algorithm

- Use faster native library if supported by running host.

### - Apple RLE compression algorithm

- Use faster native library if supported by running host.

### - Apple Universal Disk Image Format

- Support for LZFSE compressed images (ULFO).
- Support for XZ compressed images (ULMO).

### - Atari Lynx cartridge dumps

- Dumping by supported hardware.
- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.

### - BZIP2 compression algorithm

- Faster non-native implementation.
- Use faster native library if supported by running host.

### - Console

- Use new console system that allows to show colors, tables and progress bars in command line.

### - CRC32 checksum

- ARM specific instructions if supported by running host.
- PCLMUL implementation if supported by running host.

### - CRC64 checksum

- PCLMUL implementation if supported by running host.

### - Dumping

- Draw the MHDD log as an image.
- For most spiral media (CD/DVD/BD) draw a graph with the dump status.
- For non-spiral media draw a block map.

### - FLAC compression algorithm

- Use faster native library if supported by running host.

### - LZFSE compression algorithm

- Now available if native library is supported by running host.

### - LZMA compression algorithm

- Use faster native library if supported by running host.

### - LZIP compression algorithm

- Use faster native library if supported by running host.

### - NES / Famicom cartridge dumps

- Dumping by supported hardware.
- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.
- Support for iNES and NES 2.0 formats

### - Nintendo 64 cartridge dumps

- Dumping by supported hardware.
- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.
- Support for `z64` and `n64` formats.

### - Nintendo Game Boy cartridge dumps

- Dumping by supported hardware.
- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.

### - Nintendo Game Boy Advance cartridge dumps

- Dumping by supported hardware.
- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.

### - Nintendo Game Boy Color cartridge dumps

- Dumping by supported hardware.
- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.

### - Retrode cartridge dumping hardware

- Dumping Nintendo 64 cartridges.
- Dumping Nintendo Game Boy cartridges.
- Dumping Nintendo Game Boy Advance cartridges.
- Dumping Nintendo Game Boy Color cartridges.
- Dumping Sega Game Gear cartridges.
- Dumping Sega Master System / Mark III cartridges.
- Dumping Sega Mega Drive / Genesis cartridges.
- Dumping Super Nintendo / Super Famicom cartridges.

### - Sega 32X cartridge dumps

- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.
- Dumping by supported hardware.

### - Sega Game Gear cartridge dumps

- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.
- Dumping by supported hardware.

### - Sega Master System / Mark III cartridge dumps

- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.
- Dumping by supported hardware.

### - Sega Mega Drive / Genesis cartridge dumps

- Full support for converting between `smd` and `bin` formats.
- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.
- Dumping by supported hardware.

### - Sega Pico cartridge dumps

- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.
- Dumping by supported hardware.

### - Super Nintendo / Super Famicom cartridge dumps

- Support by `print`, `convert`, `info`, `entropy`, `checksum`, `compare` and `create sidecar` commands.
- Dumping by supported hardware.

### - ZSTD compression algorithm

- Now available if native library is supported by running host.

## Changes

- All used checksums now call a much faster native library if supported.
- CICM metadata XML sidecars are deprecated, new more complete JSON format is used instead.
- Remove FreeBSD support code. Use `aaruremote` for dumping devices connected to FreeBSD systems.
- Resume file is now in JSON format. XML resumes will be automatically replaced.
- Use APTD for accessing ATA devices in Windows.

# [5.3.2] - 2022-12-23

## Fixed

### - Aaru Image Format

- DDT verification when its size on-image is bigger than 1MiB.
- Parent block identifier in AaruFormat.
- Track indexes in when a disc contains a hidden track.

### - Apple DOS filesystem

- Calculation of file sizes

### - Apple Macintosh filesystem

- Calculation of file sizes

### - BlindWrite 5/6/7 disc images

- Opening split images in Windows

### - CDRWin cuesheet disc images

- Do not report ISRC as present if no tracks contain ISRC data.

### - Device report

- Add workaround for device report the AccessTek/Optorite DD0203 drive.

### - Devices

- Add transfer size to ATA(PI) IDENTIFY (PACKET) DEVICE commands as required by a recent change in the Linux kernel API.

### - Dumping

- Correct offset fixing when trimming or re-reading errored audio sectors.
- Do not set INDEX 1 to a value higher than what the TOC already said.

### - FAT filesystem

- Fix that first 2 FAT entries are not considered part of the allocation ones, allocating two more.
- Return current clusters when a file overflows the FAT.

### - ISO9660 filesystem

- Do not try to interpret an 0-length Continuation Area.

### - SGI Volume Header

- Partition types not properly interpreted.

## Changes

- Do not allow dumping or converting to image formats that do not properly support hidden tracks when there is a hidden
  track in the media.
- Update Newtonson.Json dependency due to security issues.

# [5.3.1] - 2022-03-06

## Added

### - Device information

- Add another Kingston vendor ID for SecureDigital.
- Add MMC vendor ID for Nokia.

### - Media types

- Add MetaFloppy Mod I.
- Add MetaFloppy.
- Add CRVdisc.

## Fixed

### - Aaru Image Format

- Do not skip blocks that have CRC as 0, as we do not set them for DDTs and CD Prefix/Suffix.
- Fix reading long sectors when all suffixes and prefixes are standard.

### - Device information

- Fix endianness when decoding SD/MMC OCR register.

### - Dumping

- Fix detecting errors from OS buffered reads in Linux.
- When dumping an SD/MMC card try to detect if OS buffered reads are failing, and max readable blocks using sequential
  commands, and downgrade accordingly. Now also detects cards that are totally unreadable.

### - ISO9660 filesystem

- Do not break when an ISO9660/HighSierra/CD-i directory spans several sectors if we only have a partial last sector
  read.
- Do not try to decode empty path table in ISO9660/CD-i/HighSierra.

### - Media detection

- Do not try to read past directory sector in detection of media type.

## Changes

- Fix CRC64 calculations.

# [5.3.0] - 2021-10-01

## Added

### - Aaru Image Format

- DVD CSS related structures.

### - AaruRemote

- Use system URI parser to parse AaruRemote endpoints. Allows to set different ports.

### - Alcohol 120% disc image

- Support for images created by CDRWin 10 and GameJack.
- Support incorrect implementation of images with track 1 pregap made by UltraISO.

### - Apple DOS interleaved disk images

- Support for 13-sector Apple DOS images.

### - Apple Universal Disk Image Format

- Detect LZMA chunks.

### - BlindWrite 4 disc image

- Consider there is subchannel if we have a subchannel file, ignoring header.
- Reverse engineer unknown field that adjusts the file offset per track.

### - BlindWrite 5/6 disc image

- Return empty data where only some tracks has subchannel.
- Support split images.

### - CDRWin cuesheet disc image

- Check if media is a CD when generating track list.
- Detect corrupt DVD images created by PowerISO and stop processing.
- Detect incorrect images created by MagicISO.
- Do not reconstruct long sectors when media is not a CD.
- Set application to MagicISO when appropriate.
- Show a message that DVD images created with MagicISO are most probably unrecoverable garbage.
- Show error message when trying to convert multi-session Redump dumps.
- Support Redump GD-ROM dumps.
- Support writing with hidden tracks (NOT CD-i Ready).
- Try to detect, and workaround, disc images that lack the first track data when there's a hidden track, as such created
  by PowerISO.

### - CloneCD disc image

- More possible values for track mode and index handling.
- Process track entries.

### - Device information

- Check Extended CSD is empty on device info.

### - Device report

- Check support for SCSI READ LONG(16) in device report.
- Try other ways of getting the SCSI MODE SENSE values that are more effective with certain devices.
- Workaround firmware bug in Lite-On iHOS104.

### - Devices

- Better decoding of SecureDigital Card Register.
- More fields to MultiMediaCard's Extended CSD.
- Enlarge sense buffer to 64 bytes.

### - Dumping

- Do not cross into each session's first track pregap as this makes some drives fail.
- Dumping of CSS disc key and title keys.
- Enable storing decrypted CSS sectors.
- Enable to continue dumping non-removable drives if serial number is different using the force option.
- Implement reading SD/MMC using buffered OS calls.
- Workaround some firmware bug in some audio CDs with hidden audio.
- Write media tags to image even when aborted.
- Write MMC/SD card registers to image before closing it.

### - FAT filesystem

- Check entire FAT validity to fix identifying between FAT12 and FAT16.
- Check which FAT is valid (first or second) and use it for FAT12 and FAT16.
- Do not return *invalid argument* when reading a 0-byte sized file.
- Handle directory entries that contain a forward slash in the filename.
- Handle empty directory entries.
- Handle unallocated, but reserved, directories.
- Set encoding before interpreting the BPB.
- Support for FAT32 volumes that uses *sectors* field in BPB.

### - HD-Copy disk image

- Support for different or newer format.

### - Image information

- Show Pre-Recorded Information (PRI).

### - ISO9660 filesystem

- Do not stop processing a directory when there is 1 or more sectors of data left to process.
- Mounting volumes with an invalid path table.

### - Media detection

- Detect ISO 15041 magneto-opticals
- Detect SyJet disks using number of sectors.
- Detect when DVD book type is different from drive's firmware profile.
- PlayStation 5 Ultra HD Blu-ray game discs.
- Ultra HD Blu-ray.
- Xbox Game Disc 4 (Xbox One).

### - Media images

- DiskDupe (DDI) image format.

### - Media information

- Decode Pre-Recorded Information.
- Decode smaller disc information from older DVD drives.
- More media manufacturers.
- Print Disc Key and Sector CMI information.
- Print recordable Physical Format Information (PFI).
- Show hidden track.

### - Media scan

- Allow scanning Audio CD on drives that don't allow READ(12) on them.

### - Nero Burning ROM disc image

- Detect incorrect images where the track mode does not match with the track sector size and try to workaround it.
- Implement support for Nero Burning ROM 4 disc images.
- Support alternate audio track mode number in disc images.
- Support reading sector tags in MODE2 disc images.
- Workaround from invalid images created by MagicISO with invalid session descriptors.
- Workaround images created by MagicISO from DVD discs that contain a completely invalid description and a single track.
- Workaround MagicISO bug in images with more than 15 tracks.

### - RAW (sector by sector) disk image

- Support setting sector size in raw image when the extension describes it.
- Recognize Toast disc images by extension.

### - SCSI response decoders

- Decode fixed or descriptor SCSI sense in a single pass, use whichever was returned by drive.
- Do not skip pages when decoding a page longer than the MODE SENSE buffer.

### - Universal Disk Format filesystem

- Recognize volumes that expected a 2048 bytes per sector device but are in a 512 bytes per sector image.
- Set volume serial as volume set identifier.

### - VirtualBox disk image

- Support for version 1.1+ geometry.

## Fixed

### - Aaru Image Format

- Images that got a wrong track end beyond a leadout on dumping.
- Workaround for corrupt multisession AaruFormat images.

### - AaruRemote

- Ensure remotes pointing to a UNIX device node have the proper absolute path slash.

### - Alcohol 120% disc image

- Prevent writing non-long sectors.
- Reading images with a hidden track.
- Reading images with pregaps.
- Setting session.
- Taking account of session start pregaps when writing Alcohol 120% images.

### - AmigaDOS filesystem

- Guard identification against too small partitions.

### - Apple New Disk Image Format

- Prevent identifying obsolete UDIF images.

### - Apple Universal Disk Image Format

- Data offset.
- Reading obsolete RO images, these require resource fork.
- Sectors in obsolete RO images.

### - BlindWrite 4 disc image

- Reading images with pregaps.
- Track flags.

### - cdrdao disc image

- Track properties.
- Return session.

### - CDRWin cuesheet disc image

- Calculation of sizes when it has *CDG* tracks.
- Completely wrong handling of *PREGAP* value.
- Do not allow CD-only tags on non-CD media.
- Reading track flag when track 1 has a pregap bigger than 150 sectors.
- Sectors calculations.
- Setting index sectors on multi-file images.
- Skipping non-present pregap images when there is more than one.

### - CloneCD disc image

- Detection of track mode.
- File offsets when reading multisession images.
- Image size calculation.
- Invert condition when retrieving flags.
- Partitions on multi-session images.
- Sessions.
- Track 1 pregap.

### - Commands

- Do not crash without configuration when no argument is used.
- Do not try to read arguments when there are none.

### - CPCEMU Disk-File and Extended CPC Disk-File disk image

- Interleaved sectors numbers.
- Reading of images where the headers have different case.

### - CP/M File System

- Handling filenames that contain a forward slash.

### - Devices

- 48-bit ATA commands.
- Block size for SD cards, that must always be read using 512b blocks even if their CSD says otherwise.
- Block size from READ(16).
- Correct transfer length type for MMC/SD cards.
- Decoding MultiMediaCard Extended CSD.
- Decoding of USB or FireWire serial numbers with control characters.
- Decoding SecureDigital CID.
- Detect SD/MMC READ_MULTIPLE_BLOCK in Windows.
- Marshalling MultiMediaCard serial number from CID registers.
- Overflow calculations of blocks when device has more than 0x7FFFFFFF blocks.
- READ CAPACITY(16) block size calculation.
- Stack corruption when sending multiple MMC/SD commands in Linux.

### - DiscJuggler disc image

- Be more lenient with unknown data images.
- Correct image size.
- Do not generate long sectors on non-CD media.
- Offset problem preventing proper read of most images.
- Processing images with MODE 2 tracks.
- Subchannel types being set incorrectly.
- Track flags not readable.

### - Dumping

- Creating sidecar from MMC trying to hash non-existing SD registers.
- Non-CD optical media when drive does not return track list.
- Pregap calculation on first tracks of each session when dumping CDs.
- Re-setting track end when correctly reading a new subchannel that changes the next track start.
- Speed calculations for very fast devices.
- Stop processing sidecar when aborted.
- Use a bigger buffer for READ TOC command that was preventing dumping > 90 track discs.

### - FAT filesystem

- Add a guard for FAT12 and FAT16 to prevent an exception on invalid FAT chains.
- Clusters calculation in FAT12 and FAT16.
- Fix reserved FAT entries.
- Force identification of hard disk volumes made by Atari ST with FAT16 filesystems when they're not bootable.
- In FAT filesystem, 0 means no time stored.
- Interpretation of BPB value used by Atari ST in FAT16 partitions of type BIG GEMDOS.
- Mounting a FAT filesystem that does not contain a valid FS_TYPE field and have invalid clusters.
- Null reference exception in FAT filesystem when entry points to a cluster beyond volume.
- Reading FAT when it has an odd number of clusters.
- Regression in setting timestamps from FAT filesystems.

### - Filesystems

- Creation of destination folders when extracting files.
- Extracting extended attributes

### - Flash-Friendly File System (F2FS)

- Guard against reading beyond partition end when identifying.

### - Image conversion

- Converting tape images using command line.

### - Image verification

- Off by one error when verifying disc images with tracks.

### - ISO9660 filesystem

- Extents not being created for 0 byte files in High Sierra, ISO9660 and CD-i volumes.
- ISO9660, High Sierra and CD-i volumes where the directories span multiple sectors.

### - Kreon firmware (XGD dumping and information)

- Correct calculations on dumping and media information.
- Ensure Kreon commands return proper error status.

### - Media detection

- Detecting CD-R and CD-RW when dumping if drive reports as CD-ROM.
- DVD discs being detected always as -ROM when the drive returned this profile on dump.
- Misdetecting optical discs as flash drives.
- Number of blocks for 70Gb iomega REV.
- XGD.

### - Media images

- Fix full TOC generation.

### - Media scan

- Calculating blocks to read when dumping or scanning MMC/SD.
- Seeking test in SD/MMC media scan.

### - Nero Burning ROM disc image

- Incorrect size in multisession media.
- Invalid pregaps detected.
- Long sectors returning subchannel.
- Reading MODE 1 sectors from track marked as MODE 2.
- Returning long sectors in non-CD media.
- Track starts and ends made no sense.
- Unreadable track flags.
- Wrong raw bytes per sector.
- Wrong sessions in some media.

### - Parallels disk image

- Images bigger than 4GiB.

### - QEMU Copy-On-Write disk image

- Align structures when writing.

### - QEMU Copy-On-Write v2 disk image

- Tables calculations that crashed and made unreadable images.

### - RAW (sector by sector) disk image

- Getting tracks when writing raw image.
- Returned track properties in raw ISO images.

### - Reiser 3 filesystem

- Volume label decoding.

### - SCSI response decoders

- Descriptor sense decoding.
- Skip invalid EVPD page 80h if it contains non-ASCII characters.

### - UNICOS filesystem

- Guard against reading beyond partition end when identifying.

### - Universal Disk Format filesystem

- Regression in volume identification.

### - VirtualBox disk image

- Working with disk images bigger than 4GiB.

### - VirtualPC disk image

- Reading disk images bigger than 4GiB.
- Reading dynamic images.

### - Xbox FAT filesystem

- Exchange access and creation timestamps.

## Changes

- Add command line to pause before exiting.
- Clarify anonymouslity of stats sharing.
- Consider 0 to be "current default timeout", otherwise some device commands / operating system combinations fail.
- Create .xattrs folder only in root path of extracted volume.
- Detect all unknown non-removable media as hard disk drives.
- Detect USB flash drives that identify themselves as CD readers but are in reality just block devices.
- Disable calculation of disc entropy on multisession discs.
- Disable dumping with multisession except in AaruFormat and CDRWin formats until 6.0.
- Disable force unit access in SCSI devices during media detection.
- Do not allow converting multisession images to formats that don't support multisession.
- Do not pre-calculate pregaps when dumping on a Plextor as some older models contains firmware bugs that crash the bus.
- Do not write to subchannel log when there's none.
- Ensure first-time setup is invoked even when another command is requested.
- Fix calculating track entropy.
- Fix extents creation from a list of extents to prevent overlapping extents to be added.
- Guard several filesystems against crashes when identifying on a data buffer smaller than needed.
- In image information, only show indexes if there's any index to show.
- Move IRC to Libera.
- Reduce seek times to 100 when scanning MMC/SD cards.
- Rename *image analyze* command to *filesystem info*.
- Use ATA Pass Through Direct API in Windows.
- Use same codepath for calculating optical media tag sidecar fields dumping or from image.
- Use SCSI reader detection of maximum supporter blocks to read at once when scanning non-CD media.

# [5.2.0.3330] - 2020-12-03

## Added

### - Aaru Image Format

- Enable checksums by default when writing.

### - Alcohol 120% disc image

- Support writing PhotoCD.

### - cdrdao disc image

- Support writing PhotoCD.

### - CDRWin cuesheet disc image

- Support writing PhotoCD.

### - CloneCD disc image

- Support writing PhotoCD.

### - Device report

- Check DVD-RAM if the drive claims to be able to read any DVD based format.
- Use features to see MMC drives read capabilities.

### - ISO9660 filesystem

- Support a block size different from 2048 bytes.

### - Media detection

- Handle calculating blank sectors when environment does not support MEDIUM SCAN command (consider all written and trim
  later).

### - Media information

- Add detection of 44Mb Bernoulli Box II disks.
- Add detection of 150Mb Bernoulli Box II disks.
- Add detection of ECMA-322 / ISO/IEC 22092 1024bps magneto-optical disks.
- Add detection of ISO/IEC 10089 1024bps magneto-optical disks.
- Add detection of ISO/IEC 14517 512bps and 1024bps magneto-optical disks.
- Add detection of ISO/IEC 15286 2048bps and 1024bps media disks.
- Add detection of SyQuest SQ400 disks.

## Fixed

### - Aaru Image Format

- Fix reporting track flags and ISRCs on non-CD media.
- Fix resuming subchannel and other CD structures.
- Fix when writing subchannel that doesn't belong to any track.
- Load more structures when resuming.
- Remove check for track crossing when writing.

### - AaruRemote

- Catch when host is already an IP address.
- Cover closing remote connection when socket is disposed.
- Remove trailing slash on remote device command.

### - AppleSingle filter

- Do not try to open non-existing file.

### - BlindWrite 4 disc image

- Fix images that contain sectors 150 sectors of first track pregap.
- Fix off by one track ends.
- Fix track file offsets in BlindWrite 4 disc images.
- If any track has subchannel, the subchannel sidecar file contains them for all tracks.

### - BlindWrite 5/6 disc image

- Add sessions.
- Fix cross track detection.
- Fix disc size calculation.
- Fix length of tracks.
- Fix negative index.
- Fix setting track session.

### - cdrdao disc image

- Prevent empty ISRC from being added.

### - CDRWin cuesheet disc image

- Prevent empty ISRC from being added.

### - CloneCD disc image

- Fix indexes.

### - DiscJuggler disc image

- Do not try to read descriptors if there are none.
- Fix cross track detection.

### - Dumping

- Add classifying rw full off 0xFF as being empty
- Check MMC drive profile when dumping.
- Consider RW subchannels as ok if some are all 0s and some are all 1s.
- Consider the last sector of all the tracks on a DVD or Blu-ray as the last block on disc even if drive tells
  otherwise.
- Continue printing SCSI sense buffer in error log even if we have an operating system error.
- Disable FUA to fix reading from old SCSI disks.
- Do not generate subchannels if aborted.
- Do not recalculate logical track size when DVD drive returns a negative start.
- Do not try to find SCSI read command if the medium is not written.
- Ensure only unique bad blocks are saved in resume file.
- Fix decoding of last digit of MCN subcode.
- Fix detecting XGD3.
- Fix log message when trimming found a blank block.
- Fix MEDIUM SCAN SCSI command.
- Fix retrieving CD drive offsets from database when model or manufacturer contains a slash.
- Get back tracks, indexes, MCN and ISRCs from resumed file.
- Guard against some firmware bugs when getting DVD/BD track number and length.
- Handle calculating blank sectors when environment does not support MEDIUM SCAN command (consider all written and trim
  later).
- Hardcode read command and blocks to read if we cannot calculate them for magneto-opticals.
- If device returns "corrected error", consider it as a good read.
- Use image capabilities when dumping CDs.

### - FAT filesystem

- Fix reading volume name from incorrect implementations that fill it with NULs.

### - ISO9660 filesystem

- Fix extended attributes.
- Reject processing a path table that doesn't start with the root directory.

### - MacBinary filter

- Do not try to open non-existing file.

### - Media detection

- Do not decode invalid ATIP data.
- Fix detection of CD-i Ready discs when negative offset and drive cannot read negative sectors.
- Fix detection of dual layer DVDs.
- Fix detection of hidden data track mode when drive returns it scrambled.
- Fix detection of version 3 and upper DVD-RW and DVD-RW DL.
- Fix negative offset calculating when detecting scrambled CD-i Ready.

### - XZ filter

- Fix crashing when file is too small.

### - RAW (sector by sector) disk image

- Fix capabilities.

## Changes

- Add new issue templates.
- Add support for dumping CDs to images that only support cooked user data.
- Allow to dump the video partition of XGD discs when forced is enable.
- Allow user to choose maximum number of block to read at once when dumping media.
- Change how pregap starting with 0 is calculated dumping versus converting.
- Change method of reading subchannels in Plextor drives.
- Continue trying filters when one raises an exception.
- Do not dump multi-session CDs in Plextor drives connected to a USB bridge until it is fixed.
- If there is an OS error only print the sense buffer if it contains data.
- Mark FreeBSD code as obsolete. Pending removal.
- Reverse used SCSI READ command, as some USB devices claim to support a later one but don't properly.
- Scan blank blocks in magneto-optical disks before dumping, and do not treat them as errors.
- Use track 1's first sector to check readability of CompactDisc media.

# [5.1.0.3214] - 2020-07-25

## Added

### - Aaru Image Format

- Save Compact Disc track indexes in.
- Support reading mode2 subheaders.
- Support writing multi-session DVD/Blu-ray in Aaru Image Format and CDRWin.

### - BlindWrite 4 disc image

- Add reading subchannels.

### - CDRWin cuesheet disc image

- Support Redump GD-ROM variant.
- Support writing multi-session DVD/Blu-ray in Aaru Image Format and CDRWin.
- Write proper Lead-Out entry on CDRWin images.

### - Device report

- Add MediaTek command F1h subcommand 06h to device report.
- Add test for reading Lead-Out using a trap disc.
- Support creating device reports of MiniDisc Data drives.

### - Devices

- Add ATA commands for lock, unlock and eject.
- Add READ TRACK INFORMATION command from SCSI MMC.

### - Dumping

- Add dumping MD DATA discs.
- Add floptical detection.
- Add list of files for media dump command.
- Add option to eject media after a dump completes.
- Add option to fix subchannel position.
- Add option to fix subchannels.
- Add option to retry bad subchannel sectors.
- Add option to use list of output files when dumping media.
- Detect disc type when dumping non-CD MMC devices.
- Dump sessions and tracks on non-CD optical discs.
- Enable accessing generic SCSI node in Linux.
- Read SD/MMC devices one block at a time, as READ MULTIPLE is timing out, pending investigation.
- Report and stop dump if pregaps cannot be preserved, unless forced.
- Save error log on dump.
- Save indexes on dump.
- Support dumping CD-i Ready when drive returns data sectors as audio.
- Use subchannel, if available, to set ISRC.
- Use subchannel, if available, to set MCN.
- Write subchannel log when dumping Compact Disc media.

### - Image analysis

- Print track indexes in image info.

### - Image conversion

- Add option to fix subchannels on image conversion.
- Add option to generate subchannels.

### - ISO9660 filesystem

- Add interpretation of timezone offsets.
- Check if PVD points to the real root directory, if not check path table, if neither do not mount.
- Expose MODE2 subheaders as extended attributes.

### - Media image formats

- Add generation of RAW CD sectors from images that do only contains them cooked.

### - Media information

- Add detection of CD32 and CDTV discs.
- Add detection of China Video Disc.
- Add detection of HiFD floppies.
- Add detection of Neo Geo CD discs.
- Add detection of PhotoCD.
- Add detection of Sony PlayStation Compact Disc.
- Add detection of VideoCD and Super Video CD.
- Add support for MD DATA drives.
- Calculate all pregaps in media info.
- Detect CD-i Ready when the drive returns data scrambled.
- Implement detection of CD+G, CD+EG and CD+MIDI.
- Show the reasons while a media type has been chosen on detection.

### - Media types

- Add China Video Disc media type.

### - Metadata sidecar

- Add media catalogue number, track isrc, flag and indexes.

## Fixed

### - Aaru Image Format

- Clarify error message in case of corrupted prefix/suffix data.
- Ensure FLAC buffer is finished correctly.
- Fix marking CD track flags and ISRCs as present.
- Fix setting indexes from track start and pregap.
- Sectors with no entry in the DDTs to be considered not dumped.

### - Acorn Advanced Disc Filing System

- Fix identification of some variants.

### - Alcohol 120% disc image

- Fix message about incorrect images showing with correct images.
- Fix saving proper pregap, length and offset.
- Fix writing multi-session images.
- Write extra field in Alcohol for tracks that don't have it (POINT>=A0h).

### - BlindWrite 4 disc image

- Fixed track offsets and pregaps in BlindWrite 4 images.

### - BlindWrite 5/6 disc image

- Fix identifying BlindWrite 5 vs 6.
- Fix images that contain a non existent data file.
- Fix multi-session images.
- Fix reading ATIP.
- Fix reading subchannels.

### - cdrdao disc image

- Fix writing indexes.

### - CDRWin cuesheet disc image

- Fix reading images that do not have track mode in all caps.
- Fix reading multi-session images.
- Fix writing indexes.

### - CloneCD disc image

- Fix reading multi-session images.
- Fix subchannels.
- Fix track solving.
- Fix writing multi-session images.
- Fix writing pregap mode.

### - Database

- Ensure not adding duplicate seen devices to database.

### - Device report

- Correctly handle report of pregap and Lead-in readability.
- On device report try only a few sectors from track 1 pregap.

### - Devices

- Add SCSI MEDIUM SCAN command.
- Do not show information about CD offsets in device info when device is not an MMC class device. Fixes #357
- Fix getting serial from USB or FireWire.

### - DiscJuggler disc image

- Fix incorrect mode2 handling.
- Fix indexes and track starts.
- Fix partition calculations.
- Fix session sequence in tracks.

### - Dumping

- Do not cross Lead-out in data tracks.
- Do not show speed burst if they have not been set.
- Fix calculating offset using scrambled read as audio when device is in database.
- Fix detecting indexes in track 1.
- Fix dumping when read subchannel is PQ only.
- Fix infinite loop failing to cross Lead-Out dumping CDs.
- Fix infinite loop on some CD track mode changes while dumping.
- Fix not exiting when an image cannot be appended.
- Fix opening SecureDigital / MultiMediaCard devices.
- Fix pregap calculation in track mode changes when pregap ends in 0.
- Fix reading OCR from newer versions of Linux sysfs.
- Fix re-setting track pregap when a read subchannel indicates a different value.
- Fix reversing list of bad blocks only if we're retrying backwards.
- Fix setting track pregaps from subchannel.
- Fix setting track subchannel type to the desired type.
- Handle discs that have pregap ending in LBA 1 instead of ending in LBA 0.
- If block 0 can not be read, try another random block before deciding media cannot be read, for SBC and ATA.
- If track mode can not be guessed, try again after pregap.
- Make pregap calculation faster in some drive/disc combinations.
- On errors when dumping with INSITE floptical drives, always stop, as these drives have a SCSI bus quirk that makes
  them need a reset on modern software stacks after an error has been found.
- Trim as audio when we know it is an audio sector, fixes some firmware bugs in audio pregap after a data track.
- Update the pregap while dumping if found to be bigger than known one.
- Use SCSI MEDIUM SCAN to find the first readable block.

### - FAT filesystem

- Do not try to read EAs from FAT16 directory entry field when it is a FAT32 volume.
- Fix false positive in FAT identification.

### - Image analysis

- Do not calculate pregaps on non-CD optical disc images.

### - Image conversion

- Fix overwriting flags and isrc in all CD writable image formats.

### - ISO9660 filesystem

- Fix files of size 0.
- Fix listing extended attributes for empty files.
- Fix reading directories that span more than a sector when detecting media type.
- Fix swapping location of big-endian path table in debug mode.
- If use path table option is indicated, use it also for the root directory.

### - MAME Compressed Hunks of Data

- Disable support for CHD v5 until it can be fixed properly.
- Fix indexes and pregap.

### - Media information

- Discard PMA without descriptors.
- Display media sizes in international system units.

### - Metadata sidecar

- Disable trying to checksum between sessions, as all images throw an exception here.
- Fix creating sidecar when a track's index 0 is negative.

### - Nero Burning ROM disc image

- Fix off by one error reading.
- Fix reading multi-session images.

### - Statistics

- Fix sending media formats statistics.

## Changes

- Change database name to be more inclusive.
- Move common subchannel code to decoders.
- Optimize speed when reading subchannels.
- Read with subchannel even if not supported by image or not asked by user.
- Send statistics at program end, not start.

# [5.0.1.2884] - 2020-04-23

## Fixed

### - Aaru Image Format

- Fixes data loss on certain Compact Disc audio tracks when dumping in Aaru Format with compression enabled.

# [5.0.0.2879] - 2020-03-15

- First and most importantly, we got a rename. We're now Aaru, part of the Aaru Data Preservation Suite, that
  encompasses Aaru (previously DiscImageChef), Aaru.Server (previously DiscImageChef.Server), aaruformat (previously
  dicformat) and aaruremote.
- This release is dedicated to the loving memory of Facunda "Tata" Suárez Domínguez, R.I.P. 2019/07/24.

## Added

### - Aaru Image Format

- Add ".aif" as a supported extension.
- Add CD Mode 2 sector reconstruction.
- Claunia Subchannel Transform algorithm. Makes subchannel compress 100% faster and 25% better.
- Compress VideoNow discs as data not audio.
- Support for CD-i Ready.
- Support for skipping storing CD prefixes and suffixes that are correct.
- Support writing logically block addressable tapes.
- Update template with block addressable tape types.

### - CDRWin cuesheet disc image

- Save metadata in CDRWin cuesheet.

### - Database

- Add entities for USB vendor and product IDs.
- Add entry for optimal count of sectors for multiple read in devices.
- Added new database system
- Enhance support and tweaks for devices depending on the parameters in the database
- Fill CompactDisc read offsets from AccurateRip list.
- Store and retrieve USB IDs from databases.
- Store device reports in the database instead of XML files
- Store statistics on database
- Submit pending statistics in background.

### - Device report

- Add check for Nintendo discs.
- Add new CompactDisc and Blu-ray variants.
- Add test for inter-session reading in multi-session discs.
- Change device report entry for Lead-in to first track pre-gap and add a new entry for proper Lead-in
- Check if data CDs can be read scrambled by READ CD command.
- Check sector 16 for MMC discs, as 0 is usually empty.
- Clear ATA IDENTIFY DEVICE private fields.
- Clear serial numbers.
- Create new more extensible device report format in JSON.
- Do not allow to be run without administrative privileges.
- Eject SCSI DirectAccess devices if removable.
- Save data when not in debug mode.
- Store not only default, but current and changeable modes in SCSI.
- Store read results in report and database.
- Support iomega REV disks.

### - Dumping

- Add default value for writable image options.
- Add option to not store paths and serial numbers when dumping.
- Add support for CD-i Ready.
- Add support for dumping MemoryStick from USB attached PlayStation Portable with CFW installed.
- Add support for dumping UMD from USB attached PlayStation Portable with CFW installed.
- Allow to abort anywhere
- Change --no-metadata to --metadata and --no-trim to --trim.
- Prevent dumping XGD without administrative privileges.
- Show error message if unsupported dump is tried.
- Show more information when dumping an XGD.
- Support fixing Compact Disc audio tracks offset using scrambled read commands and database.
- Support iomega REV disks.
- Support PD650 discs.

### - Filesystems

- Full read-only implementation of Xbox and Xbox 360 FAT filesystems

### - FAT filesystem

- Full read-only implementation.
- Support for Microsoft FASTFAT long file names.
- Support for OS/2 Extended Attributes.
- Support for OS/2 WorkPlace Shell long file names.
- Support for PCExchange filenames.
- Support for PCExchange Resource Fork.
- Support for Sharp X68000 extended filenames.

### - ISO9660 filesystem

- Full read-only implementation for CD-i filesystem.
- Full read-only implementation for High Sierra Format.
- Full read-only implementation for ISO 9660 (up to level 4).
- Support for AAIP.
- Support for Amiga RRIP.
- Support for Apple Extensions.
- Support for eXtended Architecture (XA).
- Support for Joliet extensions.
- Support for Rock Ridge Interchange Protocol.
- Support for Romeo variant.

### - Media image formats

- Add support for DataPackRat's f2d/d2f disk images.
- Full read/write support for CopyTape tape images.

### - Media information

- Add another value for Mitsubishi Chemical ATIP frame number. (97:34:22)
- Detect 3DO discs.
- Detect Atari Jaguar CD discs.
- Detect audio MiniDisc.
- Detect Bandai Playdia discs.
- Detect Castlewood Orb 2.2Gb.
- Detect CD-i Ready.
- Detect EZFlyer 230MB.
- Detect Fujitsu FM-Towns discs.
- Detect Hasbro VideoNow Color detection.
- Detect Hi-MD formatted 60 minutes MiniDisc.
- Detect Hi-MD formatted 74 minutes MiniDisc.
- Detect iomega REV, REV70 and REV120.
- Detect media types also in ATA.
- Detect NEC PC-Engine discs.
- Detect NEC PC-FX discs.
- Detect Sega CD / Mega CD.
- Detect Sega Dreamcast GD-ROM.
- Detect Sega MilCD discs.
- Detect Sega Saturn CD.
- Detect Sony PlayStation 2 discs (CD and DVD).
- Detect Sony PlayStation 3 discs (DVD and Blu-ray).
- Detect Sony PlayStation 4 Blu-ray discs.
- Detect SparQ carts in SCSI devices.
- Detect SparQ media in ATA drive.
- Detect SyQuest SQ2000 and SQ800.
- Detect SyQuest SQ310.
- Detect TR-4 and TR-5.

### - Media types

- Add Amiga CD32
- Add Amiga CDTV.
- Add another DDS1 SCSI medium type.
- Add Bandai Pippin.
- Add Bandai Playdia
- Add CD-i Ready.
- Add dimensions for Iomega REV.
- Add Fujitsu FM-Towns.
- Add Hasbro VideoNow.
- Add HP codes for DDS.
- Add Nuon
- Add PD650.
- Add SEAGATE code for DDS-2.
- Add Sega MilCD.

### - Metadata sidecar

- List and hash filesystem contents when creating a sidecar.

### - Opera filesystem

- Full read-only implementation.

### - SCSI response decoders

- Add encoder for ATA IDENTIFY (PACKET) DEVICE.
- Add encoder for SCSI INQUIRY.
- Add encoder for SCSI MODE PAGE 2Ah.

## Fixed

### - Aaru Image Format

- Don't initialize LZMA when compression is disabled.
- Ensure all LZMA allocations are freed when closed.
- Fix double negation options
- Fix reading MODE2 sectors with incorrect EDC/ECC correctly.

### - Alcohol 120% disc image

- Fix media size calculation when reading Alcohol images with several pregaps.

### - Apple Hierarchical File System

- Fix interpretation of the Apple boot block.

### - CDRWin cuesheet disc image

- Fix pregap reading in CDRWin format.
- Fix pregap writing in CDRWin format.

### - Checksum

- Optimize SpamSum

### - CPCEMU Disk-File and Extended CPC Disk-File disk image

- Fix images not recognized as such.

### - CP/M File System

- Fix the CPM filesystem detection and file listing

### - Device report

- Allow ASC 28h in streaming device report.
- Eject media once reported.
- Fix SCSI Streaming Command device reporting.
- On streaming device report do not LOAD as the tape is already in loaded state once inserted in the drive, and some old
  drives get confused.
- Retry 50 times as tapes can take long to be ready.

### - Devices

- Allow opening read-only devices on Linux.
- Allows opening some devices in non-administrator mode.
- Close device when finished command execution.
- Correct detection of errors sending ATA commands.
- Correct detection of Plextor features.
- Correct showing EVPD page number.
- Do not search for floppy mode page when mode sense returned no pages.
- Get serial number using MMC GET CONFIGURATION for optical drives.
- In Windows, close the device handle, to prevent an exception being raised.

### - Dreamcast GDI disc image

- Fix reading pregap in GDI images.

### - Dumping

- Check which LOCATE version is supported regardless of the next block on resume.
- Correct device not ready error messages on dumping SCSI.
- Fix Compact Disc type detection
- Fix detecting tape block size when tape reports a lower minimum size.
- Fix printing of sense in SSC dump.
- Fix speed calculation on.
- Handle errors when dumping SSC.
- Handle when SSC drive does not report block size for first block.
- Prevent showing option to dump first pregap on FreeBSD where it crashes the system.
- Save tape files when dumping SSC media.
- Save tape partitions when dumping SSC media.
- Set image's tape mode when dumping SSC.
- Show message indicating that audio MiniDisc cannot be dumped.
- Store MODE responses from SSC dumping in output image.
- Support resume in SSC dumping.
- Try to detect if the Kreon drive has not locked correctly, and try to use cold values if they look as possibly valid.
- Use output plugin when dumpìng SSC.
- When SCSI device is becoming ready, wait more, as tapes can take a long time to become ready.

### - Filesystems

- Fix extracting file from filesystems with subdirectories.
- Fix listing files walking thru subdirectories.
- Stylize output when listing files.

### - IBM Journaled File System

- Fix decoding of volume label.

### - Image analysis

- Fix crash in partitions enumeration.
- Treat tape files as partitions.

### - Image comparison

- Do not compare metadata between two images.

### - Image conversion

- Checking if input tracks is null when converting image.
- Fix showing sector where conversion fails.

### - Image filters

- Fix bzip2 initialization.

### - Image verification

- Fix verify command when image can represent optical media, but doesn't.

### - ISO9660 filesystem

- Do not set ISO identifiers in XML metadata if they are empty.
- Fix reading application identifier from ISO9660.
- Fix trimming of null character and spaces in Joliet volume descriptor.

### - Macintosh File System

- Correct behaviour when path starts with directory separator.
- Fix interpretation of the Apple boot block.

### - Media information

- Fix media type detection from SBC devices.
- Fix support for 128Mb 3.5" magneto optical.

### - Metadata sidecar

- Calculate tape hashes in smaller chunks as tapes can have huge blocks.
- Fix error creating sidecar with DVD's CMI.
- Fix media type sidecar on DVD based console discs.
- Fix setting application identifier for metadata sidecar.
- Fix when USB descriptors are null at sidecar creation after dump.

### - Nero Burning ROM disc image

- Fix offset by 1 that prevented reading the last sector of every track.

### - RAW (sector by sector) disk image

- Do not allow CDs with more than one tracks, or non-mode1 tracks to be written as raw images (.iso).
- Fix dumping CDs in raw image format (.iso).

### - SCSI response decoders

- Protect against null mode pages.

### - SecureDigital devices

- Fix overflow on SecureDigital CSD v2.0 size calculation.

### - VirtualPC disk image

- Conversion optimizations make opening images up to 38 times faster.

## Changes

- Add binary packages for major targets.
- Add mime database file for Linux systems to correctly recognize aaruformat images.
- Add support to use devices remotely with Aaruremote.
- Change command line to a cleaner and more natural system.
- Complete CompactDisc dumping rewrite, allowing fixing audio tracks offset, more correct audio track dumping,
  workarounds firmware bugs from several common drives and gives more preservation-quality dumps.
- Deprecate Mono and .NET Framework.
- Fix null reference exception on verify.
- Fix overflow with small sectors in Apple Partition Map.
- Fix overflow with small sectors in BSD disklabel.
- Fix progress crashing when terminal window changes size.
- Get device information from database when dumping Compact Disc.
- Hide device commands on unsupported platforms.
- Remove RIPEMD160.
- Separate CRC16 IBM and CRC16 CCITT contexts, use cached tables.
- Use .NET Core.

# [4.5.1.1692] - 2018-07-19

## Fixed

### - Alcohol 120% disc image

- Correct writing images of Compact Disc >= 60 min
- Correct writing MODE2 tracks to image
- Correct writing TOC to image
- Generation of multisession images
- Generation of pregaps changing tracks

# [4.5.0.1663] - 2018-06-24

## Added

### - Alcohol 120% disc image

- 010editor template.
- Support for creating images.

### - Apple New Disk Image Format

- Support RLE compressed images.

### - Blindwrite 4 disc image

- 010editor template.
- Information about why this format cannot support writing.

### - Blindwrite 5 disc image

- 010editor template.
- Information about why this format cannot support writing.

### - DART disk image

- Support RLE compressed images.

### - Decoders

- Added Blu-ray DI decoders.
- Support decoding 2048 bytes PFI.

### - Devices

- On Linux try to open in read/write and exclusive mode, if not retry in readonly.
- On Linux use direct SG_IO.
- Workaround some Blu-ray drives not reporting correct size on READ DISC STRUCTURE.

### - DiscJuggler disc image

- Information about why this format cannot support writing.

### - Dumping

- Added support for CD drives that don't return a TOC.
- Added support for CD drives that don't support READ CD command.
- Added support for Compact Disc that don't report tracks.
- Add support for dumping media in any of the now supported writable formats.
- Dump ISRC.
- Dump MCN.
- Fix reading PW subchannels.
- Separate trimming from error retry.
- When dumping CDs in persistent mode, try disabling L-EC check if drive doesn't support TB bit, or doesn't return data
  with TB bit enabled.
- When dumping, print bad sectors to dump log.

### - FAT filesystem

- Add list of known boot sector hashes.
- Support Human68k FAT16 BPB.

### - Filesystems

- Detecting High Performance Optical File System (HPOFS).
- Detecting Microsoft Resilient filesystem (ReFS).
- Detecting PC-FX executable tracks.
- Detecting Xia filesystem.

### - Apple 2IMG disk image

- Support for creating images.

### - Anex86 disk image

- Support for creating images.

### - Apple II interleaved disk image

- Support for creating images.

### - Apple Universal Disk Image Format

- Support for creating images.
- Support RLE compressed images.

### - Apridisk disk image

- Support for creating images.

### - Basic Lisa Utility disk image

- Support for creating images.

### - cdrdao disc image

- Support for creating images.

### - CDRWin cuesheet disc image

- Support for creating images.

### - CisCopy disk image

- Support for creating images.

### - CloneCD disc image

- Support for creating images.

### - Digital Research DISKCOPY disk image

- Support for creating images.

### - DiskCopy 4.2 disk image

- Support for creating images.

### - IBM SaveDskF disk image

- Support for creating images.

### - MaxiDisk disk image

- Support for creating images.

### - NHDr0 disk image

- Support for creating images.

### - Parallels disk image

- Support for creating images.

### - QEMU Copy-On-Write disk image

- Support for creating images.

### - QEMU Copy-On-Write v2 disk image

- Support for creating images.

### - QEMU Enhanced Disk image

- Support for creating images.

### - RAW (sector by sector) disk image

- Added geometry and size for ZIP100 and ZIP250.
- Support 2448 bytes/sector and 2352 bytes/sector CD images.
- Support media tags.

### - Ray Arachelian's disk image

- Support for creating images.

### - RS-IDE disk image

- Support for creating images.

### - T98 Hard Disk Image

- Support for creating images.

### - Virtual98 disk image

- Support for creating images.

### - VirtualBox disk image

- Added image type and flags.
- Support for creating images.

### - VirtualPC disk image

- Support for creating images.

### - VMware disk image

- Support for creating images.

## Fixes

### - Apple DOS filesystem

- Use Apple II character set encoding.

### - Apple ProDOS filesystem

- Use Apple IIc character set encoding.

### - BlindWrite 4 disc image

- Fix incorrect pregap calculation preventing images from showing correct data.

### - CICM metadata

- Can now get dump hardware information from images.

### - cdrdao disc image

- Fix audio track endian.
- Fix when disc catalog number uses whole ASCII and not only numeric digits.

### - CDRWin disc image

- Fix when disc catalog number uses whole ASCII and not only numeric digits.

### - CloneCD disc image

- Fix when disc catalog number uses whole ASCII and not only numeric digits.

### - Checksums

- Correct CD ECC.
- Correct CD EDC.
- Fix CRC16 returning a 32-bit value.
- Fix CRC64 endian.
- Fix Fletcher-16.
- Fix Fletcher-32.

### - Create sidecar

- Add filesystems only to the appropriate partition and track.
- Fix CD first track pregap, TOC and XGD tags.
- Fix diameter setting.
- Fix SCSI MODE SENSE.
- Fix USB descriptors.

### - DART disk image

- Fixed endian.

### - Devices

- Fix sending READ LONG commands to ATA devices.
- Fixed crashing with some rogue SCSI MMC firmwares.

### - Dumping

- Correctly detect CD-i, CD+ and CD-ROM XA.
- Correctly detect Mode 2 Form 1 and Form 2.
- Do not retry when retry passes are zero.
- Do not try to read multisession lead-out/lead-in as they result in errors that are not really there.
- Get correct track flags.
- Retry only the number of times requested.
- Return drive to previous error correction status.
- Send error recovery MODE before retrying sectors.

### - HDCopy disk image

- Fix sector calculation.

### - Image comparison

- Fix when sessions are null.

### - Image verification

- Corrected status printing.

### - ISO9660 filesystem

- Do not try to read past partition if El Torito indicates image goes beyond limits.
- Fix when root directory is outside of device.
- Skip null terminated strings in ISO9660 fields.

### - Lisa filesystem

- Corrected character set encoding.

### - Macintosh filesystem

- Corrected character set encoding.

### - PC-98 Partition Table

- Prevent some FAT BPBs to false positive as PC-98 partition tables.

### - RT-11 filesystem

- Use Radix-50 character set encoding.

### - System V filesystem

- Fix partition bounds.

### - VirtualPC disk image

- Corrected reading non-allocated blocks.

## Changes

- Added command to convert disc images.
- Added command to get information about an image and its contents.
- Added D/CAS-25, D/CAS-85 and D/CAS-103 formats.
- Added IRC notifications for Travis CI.
- Added measured dimensions from an UMD.
- Added media types for NEO GEO CD, PC-FX.
- Added new image format designed to store as much information about media as a drive returns: dicformat.
- Added numeric values to media types.
- Added project to create test filesystems on 16-bit OS/2.
- Added project to create test filesystems on 32-bit OS/2.
- Added project to create test filesystems on DOS.
- Added project to create test filesystems on Mac OS.
- Added size of 640MiB magneto-optical disk.
- Added support for writing disc images.
- Compliant with GDPR.
- Corrected floptical geometry to data according to IRIX.
- Do not assume pointers are 32-bit in several Windows device calls.
- Fixed when statistics settings are null.
- Minimum .NET Framework version is now 4.6.1.
- Sort verbs list.
- Support newest XDG Base Directory Specification for Linux.

# [4.0.1.0] - 2018-01-06

## Fixes

### Apple DOS and ProDOS interleaved disk images

- Fixed interleaving values.

### Apple Nibble disk image

- Fixed detection of DOS vs ProDOS sector order.

### Apple 2IMG disk image

- Fixed deinterleaving of DOS and ProDOS sector order.
- Fixed denibblizing images.

### Apple ProDOS filesystem

- Fixed detection on Apple II disks.

### UCSD Pascal filesystem

- Added support for Apple II variants (two physical sectors per logical sector and little endian fields).

# [4.0.0.0] - 2017-12-25

## Added

### - Advanced Disc Filing System

- Added support for ADFS-S, ADFS-M, ADFS-L, ADFS-D, ADFS-E, ADFS-E+, ADFS-F, ADFS-F+ and ADFS-G.

### - Apple Partition Map

- Added support for decoding Driver Description Map.
- Added support for maps without Driver Description Map.
- Added support for old partition table.

### - Commands

- Added separate application to debug commands sent to devices.
- list-devices: Lists devices that can be used for device dependent commands.
- list-encodings: Lists supported character encodings.

### - Create Sidecar command

- Added support for hashing DiscFerret flux images.
- Added support for hashing KryoFlux STREAM flux images.
- Added support for hashing SuperCardPro flux images.
- Added support for tape dumps where each tape-file is a separate dumped file.
- Calculate checksum of contents not only of image file.
- Consider each optical disc track as a separate partition.
- Store superblock modification time on sidecar.
- Support tracks.
- Use dump drive information from images that support it.

### - Decoders

- Xbox DMI.
- Xbox Security Sectors.

### - Devices

- MMC.
- PCMCIA block devices.
- SCSI Streaming Devices (aka "tapes").
- SecureDigital.

### - Device commands

- Add ATA and SCSI commands support for FreeBSD.
- Add ATA commands support for Windows.
- Add retrieval of USB information on Windows.
- Add SecureDigital/MMC commands support for Windows.

### - Disc images.

- Alcohol 120%.
- Anex86.
- Apple DOS interleaved (.do).
- Apple New Disk Image Format (aka NDIF, aka img, aka DiskCopy 6).
- Apple Nibble (aka NIB).
- Apple ProDOS interleaved (.po).
- Apple Universal Disk Image Format (aka UDIF, aka dmg).
- BlindWrite 4.
- BlindWrite 5.
- CisCopy (aka DC-File or DCF).
- CloneCD.
- CopyQM.
- CPCEMU Disk File.
- CPCEMU Extended Disk File.
- D64.
- D71.
- D81.
- Digital Research's DiskCopy.
- DiscJuggler.
- HD-Copy.
- IBM SaveDskF.
- IMD.
- MAME Compressed Hunks of Data (aka CHD).
- Parallels Hard Disk Image (aka HDD).
- Partclone disk images
- Partimage disk images
- QEMU Copy-On-Write (aka QCOW).
- QEMU Copy-On-Write v2.
- QEMU Enhanced Disk (aka QED).
- Quasi88 (.D77/.D88).
- Ray Arachelian's Disk IMage (.DIM).
- RS-IDE hard disk images.
- Spectrum floppy disk image (.FDI)
- T98.
- VHDX.
- Virtual98.
- VMware.
- X68k .DIM.

### - DiskCopy 4.2 disk image

- Added support for invalid images that use little-endian values.
- Added support for images created by macOS that don't have a format byte set.
- Use resource fork to get DiskCopy version used to create them.

### - Dumping

- Added the ability to resume a partially done dump, even on a separate drive.
- Added the ability to skip dumping the Lead-in.
- Allow creation of a separate subchannel file.
- Create dump log.
- Dumping optical media creates an Alcohol 120% descriptor file.
- Raw dump of DVD with Matshita recorders.
- XGD with Kreon drives.

### - ext2/3/4 filesystem

- Added new superblock fields.
- Added support for devices with sectors bigger than 512 bytes.

### - FAT filesystem

- Added DEC Rainbow's hard-wired BPB.
- Added support for volumes with 256 bytes/sector.
- Added support for ACT Apricot BPB.
- Gets volume label, creation time and modification time from root directory if available.

### - Filesystems

- Apple DOS.
- CP/M.
- Detecting AO-DOS.
- Detecting AtheOS.
- Detecting CD-i.
- Detecting Commodore 1540/1541/1571/1581.
- Detecting cram.
- Detecting Cray UNICOS.
- Detecting dump(8) (Old historic BSD, AIX, UFS and UFS2 types).
- Detecting ECMA-67.
- Detecting exFAT.
- Detecting Extent File System (aka SGI EFS).
- Detecting F2FS.
- Detecting FAT+.
- Detecting fossil.
- Detecting HAMMER.
- Detecting High Sierra Format.
- Detecting HP Logical Interchange Format.
- Detecting IBM JFS.
- Detecting Locus.
- Detecting MicroDOS file system.
- Detecting NILFS2.
- Detecting OS-9 Random Block File (aka RBF).
- Detecting Professional File System (aka PFS).
- Detecting QNX 4.
- Detecting QNX 6.
- Detecting Reiser.
- Detecting Reiser4.
- Detecting RT-11.
- Detecting SmartFileSystem (aka SFS, aka Standard File System).
- Detecting Squash.
- Detecting Universal Disk Format (aka UDF).
- Detecting Veritas.
- Detecting VMware.
- Detecting Xbox.
- Detecting XFS.
- Detecting Zettabyte File System (aka ZFS).
- UCSD Pascal.

### - Filters

- AppleDouble.
- Apple PCExchange.
- AppleSingle.
- BZIP2.
- GZIP.
- LZIP.
- MacBinary.
- XZ.

### - GUID Partition Table

- New type GUIDs.

### - ISO9660 filesystem

- Added detection of AAIP extensions.
- Added detection of Apple extensions.
- Added detection of EFI Platform ID for El Torito.
- Added detection of RRIP extensions.
- Added detection of SUSP extensions.
- Added detection of XA extensions.
- Added detection of ziso extensions.

### - Lisa filesystem

- Full read-only support.

### - Media types

- DDS, DDS-2, DDS-3, DDS-4.
- HiFD.
- IOMEGA Clik! (aka PocketZip).
- IOMEGA JAZ.
- LS-120, LS-240, FD32MB.
- NEC floppies.
- Old DEC hard disks
- SHARP floppies.
- XGD3.

### - Partitions

- Acorn FileCore.
- ACT Apricot.
- BSD disklabels.
- DEC disklabels.
- DragonFly BSD.
- Human68k.
- MINIX subpartitions.
- NEC PC-9800.
- Plan9 partition table.
- Rio Karma.
- SGI Disk Volume Headers.
- UNIX hardwired partition tables.
- UNIX VTOC.
- XENIX partition table.

### - SCSI decoding

- Handling of EVPDs smaller than length field.
- Handling of modes 02h, 04h and 1Ch smaller than expected.
- Prettyfying of mode 0Bh.

### - SmartFileSystem

- Added support for version 2.

### - Statistics

- Added version and operating system statistics.

### - Sun disklabel

- Added bound checks.
- Added support for 16-entries VTOC.
- Added support for pre-VTOC disklabels.
- Corrected structures for 8-entries VTOC.

### - System V filesystem

- Added COHERENT offsets.
- Check for it starting on second cylinder.
- Corrected cluster size calculation.
- Corrected detection between Release 2 and Release 4.
- Corrected Release 2 superblock parameters.
- Enlarged NICFREE for Version 7.

### TeleDisk images

- Added support for Advanced Compression.
- Added support for floppy lead-out.
- Added variable sectors per track support.

## Fixes

### - AmigaDOS filesystem

- Corrected checksum calculation.
- Corrected cluster size calculation.
- Corrected root block location.
- Corrected support for AROS i386 variant that has a PC bootblock before the AmigaDOS bootblock itself.
- Detection on hard disks or with clusters bigger than 1 sector.
- Tested FFS2.

### - Apple Partition Map

- Added bound checks.
- Added support for decoding Driver Description Map.
- Added support for maps without Driver Description Map.
- Added support for old partition table.
- Corrected partition start when map it's not on start of device.
- Corrected support for misaligned maps, like on CDs.
- Cut partitions that span outside the device.

### - cdrdao

- Audio track matching.
- Corrected images that start with comments.
- Prevent reading binary files.

### - CDRWin

- CD-Text detection.
- CD+G data return.
- Fixed composer parsing.
- Prevent reading binary files.

### - CP/M filesystem

- Corrected cluster count calculation.
- Corrected directory location on CP/M-86.
- Corrected sector reading.
- Skip media types that were never used as a CP/M disk.

### - Create Sidecar command

- Corrected creation when path is absolute.

### - Device commands

- Do not send SCSI INQUIRY to non-SCSI paths on Linux.

### - Device reports

- Call ATA READ LONG last, as it confuses some drives.
- Try SCSI READ LONG (10) until max block size (65535).

### - DiskCopy 4.2

- Corrected track order for Lisa and Macintosh Twiggy.

### - Dreamcast GDI images

- Prevent reading binary files.

### - Dumping

- Calculation of streaming device dumping speed.
- Corrected dumping CD-R and CD-RW.
- Optical media with 2048 bytes/sector now get ".iso" file extension.
- Retry when SCSI devices return reset status.
- Streaming Devices now store block size changes in metadata sidecar.
- Wait for SCSI devices to exit ASC 28h (MEDIUM CHANGE) status.

### - ext2/3/4 filesystem

- Use os type as XML system identifier.

### - FAT filesystem

- Behaviour with some non-compliant media descriptors.
- Corrected 5.25" MD1DD detection.
- Corrected boot code detection.
- Corrected misaligned volumes on optical media.
- Rewritten to better detect Atari, MSX, *-DOS and ANDOS variants.
- Use OEM name as XML system identifier.

### - Guid Partition Table

- Added bound checks.
- Corrected misaligned tables on optical media.
- Corrected when table is smaller than one sector.

### - HFS filesystem

- Corrected detection of a PowerPC only bootable volume (no boot sector).
- Corrected misaligned volumes on optical media.
- Corrected volume serial number case.

### - HFS+ filesystem

- Corrected misaligned volumes on optical media.
- Corrected misalignment of fields in Volume Header.
- Use last mount version as XML system identifier.

### - HPFS filesystem

- Corrected cluster size.
- Detect boot code.
- Show NT flags.
- Use OEM name as XML system identifier.

### - ISO9660 filesystem

- Complete rewrite.
- Check that date fields start with a number.

### - Master Boot Record partitioning scheme

- Check real presence of a GPT.
- Corrected infinite looping on extended partitions.
- Remove disklabels support.
- Support misaligned MBRs on optical media.
- Support NEC extensions.
- Support OnTrack extensions.

### - MINIX filesystem

- Added support for v1 and v2 created on MINIX 3.
- Corrected misaligned volumes on optical media.

### - Nero Burning ROM

- Corrected track handling.
- Corrected typo on parsing v2 images.
- Disc types.
- Do not identify positively if footer version is unknown.
- Lead-In handling.
- Mode2 RAW sectors.
- Session count.

### - NeXT partition table

- Added missing fields.
- Corrected offsets.
- Cut partitions that span outside the device.

### - ODS filesystem

- Corrected cluster size calculation.
- Corrected misaligned volumes on optical media.

### - ProDOS filesystem

- Corrected cluster size calculation.
- Corrected misaligned volumes on optical media.
- Volume size.

### - Rigid Disk Block partition scheme

- Corrected AMIX mappings.

### - SCSI decoding

- Handling of EVPDs smaller than length field.
- Handling of modes 02h, 04h and 1Ch smaller than expected.
- Prevented overflow on MMC FEATURES decoding.
- Prevented overflow on SCSI MODE PAGE decoding.

### - SmartFileSystem

- Added support for version 2.

### - Sun disklabel

- Added bound checks.
- Corrected structures for 8-entries VTOC.

### - System V filesystem

- Check for it starting on second cylinder.
- Corrected cluster size calculation.
- Corrected detection between Release 2 and Release 4.
- Corrected Release 2 superblock parameters.
- Enlarged NICFREE for Version 7.

### - UFS filesystem

- Corrected superblock locations.
- Move superblock to a single structure and marshal it, corrects detection of several variants.

## Changes

- Added a public changelog.
- Added a side application to create device reports under Linux without a .NET environment.
- Added operating system version statistics.
- Added partitioning scheme name to partition structures.
- Added several internal tests to prevent regression on changes.
- Added support for different character encodings.
- Added support for filters.
- Added support for nested partitioning schemes.
- Added support for propagating disk geometry, needed by PC-98 partitions and old MBRs.
- Better support for decoding multibyte encodings from C, Pascal and space-padded strings.
- Changed handling of compressed files, using temporary files and caching.
- Corrected casting on big-endian marshalling that was failing on some .NET Framework versions.
- Corrected filter list reuse.
- Disabled EDC check on CDs because it is not working (TODO).
- Filesystems now have access to full partition structure.
- Filters no longer return their own extension when requested for filename.
- Moved Claunia.RsrcFork to NuGet.
- Priam tags.
- Support drive firmware inside disc images.
- Support subchannel with only Q channel.

# [3.0.0.0] - 2016-07-19

## Added

### - Commands

- benchmark: Tests speed for checksum algorithms.
- create-sidecar: Creates an XML sidecar with metadata.
- decode: Decodes and prints a disk tag present on the image.
- device-info: Prints device information.
- dump-media: Dumps media to a disk image.
- entropy: Calculates disk entropy.
- media-info: Prints media information.
- scan-media: Scans media for errors.

### - Checksums

- Adler-32
- SpamSum

### - Devices

- ATA on Linux.
- ATA on Windows (untested).
- FireWire on Linux.
- SCSI on Linux.
- SCSI on Windows (untested).
- USB on Linux.

### - Disc images

- Apple 2IMG.
- CDRDAO.
- Dreamcast GDI.
- VirtualPC.

### - Fast File System (FFS)

- Atari UNIX variant.

### - Filesystems

- Acorn ADFS.
- AmigaDOS.
- Apple File System, aka APFS.
- Apple ProDOS.
- btrfs.
- Nintendo Gamecube.
- Nintendo Wii.

### - Partitions

- Amiga Rigid Disk Block (aka RDB).
- Atari.
- Sun.
- (U)EFI GPT.

## Changes

### - PrintHex command

- Allow to print several sectors.

## Fixes

### - Be filesystem

- Endianness.
- Support for Be CDs.

### - CDRWin disk image

- Behaviour on .NET Framework.
- Detection of CD-ROM XA.
- Flags.
- Partition calculations.

### - Fast File System (FFS)

- False positives with 7th Edition.

### - ISO9660

- Dreamcast IP.BIN decoding.
- Sega CD IP.BIN decoding.

### - System V Filesystem

- Big endian support

# [2.20] - 2014-08-28

## Added

### - Checksums

- Reed Solomon.

## Fixes

### - Apple Partition Map

- Disks with 2048 bytes/sector but a 512 bytes/sector map.

### - HFS

- Disks with 2048 bytes/sector but a 512 bytes/sector filesystem.

# [2.10] - 2014-08-25

## Added

### - Checksums

- CD EDC and ECC.
- CRC16.

### - Commands

- Verify: Verifies disk image contents, if supported.

### - Disc images

- Nero Burning ROM.

# [2.0] - 2014-07-03

## Added

### - Commands

- analyze: Gives information about disk image contents as well as detecting partitions and filesystems.
- checksum: Generates CRC32, CRC64, RIPEMD160, MD5, SHA1, SHA256, SHA384 and SHA512 checksums of disk image contents.
- compare: Compares two media images.
- printhex: Prints a hexadecimal output of a sector.

### - Disc images

- RAW (sector by sector).

### - Media types

- BD-R.
- BD-RE XL.
- FDFORMAT.

## Fixes

### - FAT filesystem

- Workaround FAT12 without BIOS Parameter Block.

### - MBR partitions

- Do not search for them on disks with less than 512 bytes/sector.

### - ODS-11 filesystem

- Do not search for them on disks with less than 512 bytes/sector.

# [1.10] - 2014-04-21

## Added

### - Disc images

- Sydex TeleDisk.

# [1.0] - 2014-04-17

## Added

### - Filesystems

- Detecting BeFS.
- Detecting ext.
- Detecting ext2.
- Detecting ext3.
- Detecting ext4.
- Detecting FAT12.
- Detecting FAT16.
- Detecting FAT32.
- Detecting FFS.
- Detecting HFS+.
- Detecting HFS.
- Detecting HPFS.
- Detecting ISO9660.
- Detecting LisaFS.
- Detecting MFS.
- Detecting MinixFS.
- Detecting NTFS.
- Detecting ODS-11.
- Detecting Opera.
- Detecting PCEngine.
- Detecting SolarFS.
- Detecting System V.
- Detecting UFS.
- Detecting UFS2.
- Detecting UnixWare boot.

### - Disc images

- Apple DiskCopy 4.2.
- CDRWin.

### - Partitions

- Apple Partition Map (aka APM).
- Master Boot Record (aka MBR).
- NeXT disklabels.

[6.0.0-alpha.13]: https://github.com/aaru-dps/Aaru/releases/tag/v6.0.0-alpha.13

[6.0.0-alpha.12]: https://github.com/aaru-dps/Aaru/releases/tag/v6.0.0-alpha.12

[6.0.0-alpha.11]: https://github.com/aaru-dps/Aaru/releases/tag/v6.0.0-alpha.11

[5.4.1]: https://github.com/aaru-dps/Aaru/releases/tag/v5.4.1

[5.4]: https://github.com/aaru-dps/Aaru/releases/tag/v5.4

[6.0.0-alpha10]: https://github.com/aaru-dps/Aaru/releases/tag/v6.0.0-alpha10

[6.0.0-alpha9]: https://github.com/aaru-dps/Aaru/releases/tag/v6.0.0-alpha9

[5.3.2]: https://github.com/aaru-dps/Aaru/releases/tag/v5.3.2

[5.3.1]: https://github.com/aaru-dps/Aaru/releases/tag/v5.3.1

[5.3.0]: https://github.com/aaru-dps/Aaru/releases/tag/v5.3.0

[5.2.0.3330]: https://github.com/aaru-dps/Aaru/releases/tag/v5.2.0.3330

[5.1.0.3214]: https://github.com/aaru-dps/Aaru/releases/tag/v5.1.0.3214

[5.0.1.2884]: https://github.com/aaru-dps/Aaru/releases/tag/v5.0.1.2884

[5.0.0.2879]: https://github.com/aaru-dps/Aaru/releases/tag/v5.0.0.2879

[4.5.1.1692]: https://github.com/aaru-dps/Aaru/releases/tag/v4.5.1.1692

[4.5.0.1663]: https://github.com/aaru-dps/Aaru/releases/tag/v4.5.0.1663

[4.0.1.0]: https://github.com/aaru-dps/Aaru/releases/tag/v4.0.1.0

[4.0.0.0]: https://github.com/aaru-dps/Aaru/releases/tag/v4.0.0.0

[3.0.0.0]: https://github.com/aaru-dps/Aaru/releases/tag/v3.0.0.0

[2.20]: https://github.com/aaru-dps/Aaru/releases/tag/v2.2

[2.10]: https://github.com/aaru-dps/Aaru/releases/tag/v2.1

[2.0]: https://github.com/aaru-dps/Aaru/releases/tag/v2.0
