Commit Graph

9220 Commits

Author SHA1 Message Date
de8a2d49ea [Compression] Stop ignoring the status returned by the native Apple LZH, KenCode, ShrinkWrap and Blast functions, returning -1 on error, and fail reading UDIF and NDIF sectors when any of their decompressors fails. 2026-10-08 21:20:35 +01:00
52a15dbcd1 [Compression] Stop ignoring the status returned by the native BZip2 and LZMA functions, returning -1 on error, and fail reading UltraISO, PowerISO, EWF, UDIF and ZIP data when decompression fails instead of using the buffer as is. 2026-10-08 21:20:35 +01:00
43ba557ac0 [ACE] Pass the dictionary size from the file header to the native LZ77 and blocked decompressors, which require it. 2026-10-08 21:20:35 +01:00
1c2a35bf44 [Compression] Read the status returned by the ADC, Apple RLE, LZ4, LZIP, LZFSE, LZVN, Zstandard and FLAC native functions and the size from their destination size parameter, as they no longer return the number of bytes written, returning -1 on error. 2026-10-08 21:20:24 +01:00
d6caf1eb7f [Compression] Pass the destination size of the ZIP PPMd native decompressor by reference and use the size it returns as the stream length. 2026-10-08 21:20:24 +01:00
608382454f [Compression] Pass the source buffer first and the destination size by reference to the StuffIt, StuffIt X, DiskDoubler, Compact Pro, ZIP, Apple LZH, KenCode, XZ, LZO, BZip2 and LZMA native functions, with size_t as nuint, matching the unified exported API of Aaru.Compression.Native. 2026-10-08 21:20:24 +01:00
fca61d26ce [Compression] Declare size_t parameters of the ARC, PAK, HA, LHA, LArc, PMarc, ARJ, ARJZ, RAR, LH5 and ACE native decompressors as nuint instead of nint, matching the exported API of Aaru.Compression.Native. 2026-10-08 21:20:16 +01:00
d8b025fd5c [Dependencies] Update libaaruformat to version 1.0.0-beta.2 2026-10-08 21:12:14 +01:00
073d06e99e [DPM] Stop marking Data Position Measurement on Blu-ray as experimental. 2026-10-08 19:46:24 +01:00
6def3b5361 [Dump] Report the total time of the whole dump, including trimming, retrying and the Data Position Measurement, instead of only the first read pass, the same way for every kind of media. 2026-10-08 19:43:01 +01:00
42cb33bb92 [DPM] Stop writing the per sector CSV of the Data Position Measurement next to the image, only the graph. 2026-10-08 19:38:02 +01:00
e57dc84c3b [Tests] Add DPM simulator tests with random host delays between commands, on CD and dual layer DVD. 2026-10-08 19:19:49 +01:00
30dda196ba [DPM] Time reads from the end of the previous command instead of from when they are sent, so the time the host takes between commands, like logging or updating the progress, counts as the disc turning, which made every entry lose a constant angle, about 4% of it with debug logging. 2026-10-08 19:19:49 +01:00
9b1b840a2d [Localization] Use Castilian Spanish: orden instead of comando, tardó instead of tomó, and suma de comprobación instead of checksum, with their articles and adjectives in feminine. 2026-10-08 19:03:05 +01:00
3053a980b9 [Localization] Use Castilian Spanish in the total dump time messages. 2026-10-08 18:57:34 +01:00
2d94b49be6 [Dump] Time the Data Position Measurement phase, count it in the total dump time and show it apart. 2026-10-08 18:56:25 +01:00
68bb9e7dd0 [Spiral] Use the VideoNow Color disc parameters for VideoNow XP. 2026-10-08 18:22:20 +01:00
35dcac5c5f [Spiral] Add VideoNow (85mm) and VideoNow Color (100mm) disc parameters, as CDs of a smaller diameter. 2026-10-08 18:20:12 +01:00
e1cd09a74a [Tests] Add unit tests for the Alcohol 120% list of sectors that could not be read, with and without DPM. 2026-10-08 18:13:15 +01:00
25181cf473 [Alcohol120] Read and write the disc metadata block of sectors that could not be read, type 2, reporting them as errored, and read every disc metadata block, not only the first. 2026-10-08 18:13:15 +01:00
564e0595fe Updated latest Arch Linux rolling package. 2026-10-08 17:54:52 +01:00
caca7772a3 [Dump] Measure the Data Position Measurement of Xbox Game Discs on OmniDrives, and on Kreon drives unlocked to read up to the end of the game data. 2026-10-08 17:20:36 +01:00
00417a2670 [DPM] Say the disc rotation is being calibrated in the progress bar while a calibration stops the measurement, so it does not look like trouble reading. 2026-10-08 16:25:44 +01:00
37e41c376f [DPM] Reword the Data Position Measurement messages so they do not measure measurements. 2026-10-08 16:23:15 +01:00
6c2ab9eb33 [DPM] Time CD audio sectors with READ CD, asking for any sector type and only the main channel user data, as READ(12) can't read them, keeping READ(12) for data sectors. 2026-10-08 16:18:32 +01:00
3fd12c2b59 [Tests] Add unit tests for reading BlindWrite Data Position Measurement from its image and its BWA file. 2026-10-08 16:09:19 +01:00
b7d48b3ceb [BlindWrite5] Read the Data Position Measurement from the BWA file next to the image or, failing that, from the block stored in the image, as libmirage does. 2026-10-08 16:09:19 +01:00
b8c6ea1853 [BlindWrite4] Read the Data Position Measurement from the BWA file next to the image, skipping its first value, that is not an angle. 2026-10-08 16:09:19 +01:00
c9798364da [DPM] Color the rotation speed apart from the rotation period. 2026-10-08 15:55:46 +01:00
6cfefb3160 [DPM] Add a helper to build Data Position Measurement from a grid of 256 per turn angles, and use it in Alcohol 120%, reading them as little endian. 2026-10-08 15:52:57 +01:00
0064d9b808 [DPM] Color the Data Position Measurement messages like the dump messages. 2026-10-08 15:47:02 +01:00
60373ee540 [DPM] Title the Data Position Measurement graph with the name of the image. 2026-10-08 15:39:00 +01:00
816aae85d2 [Dump] Measure the Data Position Measurement of CDs, DVDs and Blu-rays as the last dump phase, after reading, trimming and retrying, skipping the sectors that could not be read, whatever reader dumped the data, storing it in the image and writing its graph and CSV. Enabled by default, it can be disabled with --dpm false. 2026-10-08 15:19:34 +01:00
832075f9b5 [Media] Add the dpm command, that measures the Data Position Measurement of a medium already dumped to an AaruFormat image, skipping the sectors the dump could not read, and adds it to the image, writing its graph and per sector CSV next to it. 2026-10-08 15:14:26 +01:00
377012de74 [Tests] Add unit tests measuring Data Position Measurement on a simulated drive, with CD, dual layer DVD and three and four layer Blu-ray spirals, missed rotations, unreadable rings and speed drops. 2026-10-08 15:10:21 +01:00
ce91dd678b [DPM] Write Data Position Measurement as a per sector CSV, comparable with the reference tool, and as a dark graph of the density and the rotation speed. 2026-10-08 15:10:21 +01:00
7bc115f2ed [DPM] Measure Data Position Measurement from drives, timing reads with our own clock, calibrating the rotation from paired read sawtooths and chaining reads between entries, handling unreadable sectors, speed changes and any number of layers, on CD, DVD and, experimentally, Blu-ray. 2026-10-08 15:10:21 +01:00
10387585bd [ImageInfo] Show the Data Position Measurement of optical images, with its entries, spacing, range, turns, calibrations and layers. 2026-10-08 14:53:45 +01:00
e5f4f366bd [Tests] Add unit tests for Data Position Measurement in AaruFormat images, on new and resumed images, and converting it to and from Alcohol 120%. 2026-10-08 14:51:39 +01:00
65fbdeb3db [AaruFormat] Read, write and clear Data Position Measurement, stored in the libaaruformat DPM block with its status, layer ends and rotation calibrations, also on resumed images. 2026-10-08 14:51:39 +01:00
7e0f136375 [Tests] Add unit tests for the Data Position Measurement helpers, and for writing and reading it in Alcohol 120% images, exactly on its grid and resampled from uneven measurements. 2026-10-08 14:37:18 +01:00
47ab48b278 [DPM] Replace the Data Position Measurement API, which passed Alcohol 120% tables, with a structure holding control points with cumulative angles in 1/2560000 turn, their status, layer ends and rotation calibrations, read with ReadDpm and written with SetDpm, convert it between image formats, and have Alcohol 120% resample it to its grid, fixing a crash when writing images without DPM. 2026-10-08 14:31:15 +01:00
d292f466a6 [CommonTypes] Remove the DPM media tag type, which nothing used, because Data Position Measurement is a structured block and not a media tag. 2026-10-08 14:25:48 +01:00
ff3d93e5c5 [Tests] Add ISO9660 tests for the Acorn ARCHIMEDES extension, covering application names, filetypes, load and execution addresses, attributes and locked files, with a new image. 2026-10-02 17:21:43 +01:00
caa1990d7a [ISO9660] Expose the RISC OS attributes of the Acorn ARCHIMEDES extension as riscos.attr, and the load and execution addresses of files without a filetype as riscos.loadaddr and riscos.execaddr, as the ADFS filesystem does, and report locked files as read-only. 2026-10-02 17:19:19 +01:00
ef9ab4e41f [ISO9660] Restore the initial exclamation mark of RISC OS application names, recorded as an underscore, when the Acorn ARCHIMEDES extension says so. 2026-10-02 17:17:16 +01:00
5e9d0b5d12 [ISO9660] Read the load address, execution address and attributes of the Acorn ARCHIMEDES extension from offsets 10, 14 and 18, where mkisofs records them, instead of from the reserved bytes, deriving the filetype and the application flag from them. 2026-10-02 17:15:33 +01:00
d90b99d00a [Tests] Add ISO9660 tests for the Apple extensions, covering resource forks, Finder information, HFS and ProDOS extended attributes, CD-ROM XA discs, old "BA" extensions, the protocol identifier and ProDOS filename restoration, with new genisoimage made images. 2026-10-02 16:47:15 +01:00
09cf1d6228 [AppleHFSPlus] Return the hfs.type and hfs.creator extended attributes with their most significant byte first, as recorded, instead of reversed on little endian machines ("TXET" instead of "TEXT"). 2026-10-02 16:43:58 +01:00
494910a6d7 [AppleHFS] Return the hfs.type and hfs.creator extended attributes with their most significant byte first, as recorded, instead of reversed on little endian machines ("TXET" instead of "TEXT"). 2026-10-02 16:43:58 +01:00