98 Commits

Author SHA1 Message Date
Matt Nadareski
de17b0c59c Bump version 2026-11-11 17:41:51 +01:00
gmipf
1663345195 Add a UDF reader and wrapper (#100)
* Add a UDF reader

Reads the Volume Recognition Sequence, the Anchor Volume Descriptor
Pointer (sector 256, then the end of the volume), the Main or Reserve
Volume Descriptor Sequence, the File Set Descriptor and the directory
hierarchy. Type 1 and Metadata Partitions are mapped, Virtual and
Sparable partitions are not.

File Entries, Allocation Extent Descriptors and directories are read in
ascending sector order with wrap-around, adjacent sectors merged into
one request. FindFileEntry follows one path and reads only the
directories on it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Add a UDF wrapper

Prints the volume and file set structures and the directory hierarchy,
and extracts the files. CreateDiscImageWrapper tries UDF after ISO 9660
for a stream at offset 0, so discs with both file systems still open as
ISO 9660.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Treat the stream position as the start of the UDF volume

The UDF reader addresses logical sectors from the start of the stream,
so the wrapper hands it a view that starts at the current position and
keeps that offset, like the other wrappers. CreateDiscImageWrapper no
longer skips UDF for a stream that is not at offset 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Address review comments on the UDF code

- Move the descriptor tag check to UDFExtensions, with tests
- Parse Volume Structure Descriptors in their own method
- Use the existing extensions for numbers, the partition type identifier
  and printing entity identifiers
- Use Array.Exists in IsSafeName
- Make Extract non-virtual and remove the printing test
- Use collection expressions and string interpolation

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Parse File Identifier Descriptors in their own method

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Add a TODO to use the CRC from Hashing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 17:18:23 +01:00
Matt Nadareski
5c3184baa7 Add .NET 11 support 2026-11-11 12:02:16 +01:00
Matt Nadareski
3798dbcb47 Bump version 2026-08-31 19:15:36 -04:00
Matt Nadareski
2a70a9a20e Update IO to 2.3.0 2026-08-28 13:11:31 -04:00
Matt Nadareski
05c86e4c24 Add support for BLAKE3 2026-07-23 11:36:54 -04:00
Matt Nadareski
b9ffd61252 Bump version 2026-07-10 13:29:35 -04:00
Matt Nadareski
b4e1f6b729 Update packages, relax requirements 2026-07-10 11:23:17 -04:00
Matt Nadareski
451fc0b394 Bump version 2026-07-06 09:57:11 -04:00
Matt Nadareski
88aae0dd26 Bump version 2026-06-12 08:56:35 -04:00
Matt Nadareski
d3c9849908 Attempt to fix detection issues 2026-05-14 20:08:32 -04:00
Matt Nadareski
249c51933b Update packages 2026-05-14 09:25:26 -04:00
Matt Nadareski
cf586f7af2 Add Nintendo Disc extensions tests 2026-05-12 22:47:19 -04:00
Matt Nadareski
2a0e8e2eb0 First round of cleanup for DolphinLib additions 2026-05-12 20:33:53 -04:00
Matt Nadareski
59f76b1036 Editorconfig cleanup 2026-04-27 13:28:23 -04:00
Deterous
6fa3631c80 Add Opera FileSystem support (#90)
* Add Opera FileSystem support

* Fix tests
2026-04-27 13:24:30 -04:00
Matt Nadareski
ca3ebf33a8 Flatten Analog out of existence 2026-04-09 22:21:15 -04:00
Matt Nadareski
853e2ff5c0 Flatten Extension out of existence 2026-04-09 22:06:41 -04:00
Matt Nadareski
967d9ffe87 Flatten Instance out of existence 2026-04-09 21:34:00 -04:00
Matt Nadareski
770f6f75d5 Flatten Condition out of existence 2026-04-09 21:13:55 -04:00
Matt Nadareski
f3d6adbe1d Add RV-specific deduped status 2026-04-06 18:37:56 -04:00
Matt Nadareski
4772768c1f Handle item type filtering properly again 2026-04-06 15:03:16 -04:00
Matt Nadareski
e2b2f4d8a5 Rename "CRC" to "CRC32" where appropriate 2026-04-06 07:44:19 -04:00
Matt Nadareski
e31be83832 RomProperties, no, not that one 2026-04-04 22:31:23 -04:00
Matt Nadareski
0491133329 Move hash-based equality checkers lower down the chain 2026-04-04 20:04:01 -04:00
Matt Nadareski
040ad65a5e DeepClone was left as self-referential, like this commit message 2026-04-04 18:48:00 -04:00
Matt Nadareski
f9437314cb Finalize property conversion for header 2026-04-04 18:46:35 -04:00
Matt Nadareski
ebf67d39cf Lazily make OfflineList-specific header items properties 2026-04-04 18:24:58 -04:00
Matt Nadareski
cd49a64c2b Split header skipper and header row into separate properties 2026-04-04 17:58:09 -04:00
Matt Nadareski
b547792799 Two more header keys to properties 2026-04-04 16:34:13 -04:00
Matt Nadareski
7a9f5d1fa1 Machine is now propertyful 2026-04-04 16:06:07 -04:00
Matt Nadareski
d08427f1ba Trurip finally gets integrated, more at 11 2026-04-04 15:17:58 -04:00
Matt Nadareski
12e1086838 Convert Dump to using properties 2026-04-04 14:23:31 -04:00
Matt Nadareski
096f1d9534 Remove get/set name methods where appropriate 2026-04-04 14:07:37 -04:00
Matt Nadareski
4acd2d9fd6 Reduce generic DictionaryBase use 2026-04-04 13:31:12 -04:00
Matt Nadareski
9828119bdd Further reduce use of GetName and SetName 2026-04-04 12:31:47 -04:00
Matt Nadareski
eb2f5babd9 Migrate DataArea, DiskArea, and Part to property-driven 2026-04-04 11:40:48 -04:00
Matt Nadareski
845a0cb998 Convert Archive fully over to properties 2026-04-04 02:18:55 -04:00
Matt Nadareski
3f3f73a56f Convert Slot fully over to properties 2026-04-04 01:46:00 -04:00
Matt Nadareski
4bb670ac15 Convert Port fully over to properties 2026-04-04 01:36:42 -04:00
Matt Nadareski
9e721c5c43 Convert Input fully over to properties 2026-04-04 01:28:17 -04:00
Matt Nadareski
9ffa2a5e23 Convert Disk fully over to properties 2026-04-04 01:15:40 -04:00
Matt Nadareski
e5e279a48d Convert Device fully over to properties 2026-04-04 00:25:50 -04:00
Matt Nadareski
f7ac1073b0 Convert subitems for Configuration and DipSwitch 2026-04-04 00:08:56 -04:00
Matt Nadareski
a8c060ff26 Turn Condition keys into properties as a test 2026-04-03 23:33:11 -04:00
Matt Nadareski
cdc55e721e Split Input.Control and Input.ControlAttr 2026-04-03 22:31:10 -04:00
Matt Nadareski
b55a932b2b String Machine keys to properties 2026-04-03 22:17:31 -04:00
Matt Nadareski
8e2f519e15 Convert most of Media over to properties 2026-04-03 19:47:58 -04:00
Matt Nadareski
5b3ff31f85 Make ReleaseDetails more complete 2026-04-03 19:11:55 -04:00
Matt Nadareski
c623c2b1f6 Make Serials more complete 2026-04-03 18:50:04 -04:00