diff --git a/Aaru.Images/AaruFormat/Properties.cs b/Aaru.Images/AaruFormat/Properties.cs
index fc34cd41e..d7b98f9ed 100644
--- a/Aaru.Images/AaruFormat/Properties.cs
+++ b/Aaru.Images/AaruFormat/Properties.cs
@@ -5,7 +5,9 @@ using Aaru.CommonTypes;
using Aaru.CommonTypes.AaruMetadata;
using Aaru.CommonTypes.Enums;
using Aaru.CommonTypes.Structs;
+using Humanizer;
using Partition = Aaru.CommonTypes.Partition;
+using Track = Aaru.CommonTypes.Structs.Track;
namespace Aaru.Images;
@@ -48,7 +50,52 @@ public sealed partial class AaruFormat
public string Author => Authors.NataliaPortillo;
///
- public List Partitions { get; private set; }
+ public List Partitions
+ {
+ get
+ {
+ if(IsTape)
+ {
+ if(TapePartitions is null) return null;
+
+ ulong i = 0;
+
+ return TapePartitions.ConvertAll(part => new Partition
+ {
+ Start = part.FirstBlock,
+ Length = part.LastBlock - part.FirstBlock + 1,
+ Scheme = "Tape",
+ Sequence = i++,
+ Type = "Tape Partition",
+ Name = $"Partition {part.Number}"
+ });
+ }
+
+ if(Tracks is null) return null;
+
+ ulong currentTrackOffset = 0;
+ List partitions = [];
+
+ foreach(Track track in Tracks.OrderBy(t => t.StartSector))
+ {
+ partitions.Add(new Partition
+ {
+ Sequence = track.Sequence,
+ Type = track.Type.Humanize(),
+ Name = string.Format(Localization.Track_0, track.Sequence),
+ Offset = currentTrackOffset,
+ Start = (ulong)track.Indexes[1],
+ Size = (track.EndSector - (ulong)track.Indexes[1] + 1) * (ulong)track.BytesPerSector,
+ Length = track.EndSector - (ulong)track.Indexes[1] + 1,
+ Scheme = Localization.Optical_disc_track
+ });
+
+ currentTrackOffset += (track.EndSector - track.StartSector + 1) * (ulong)track.BytesPerSector;
+ }
+
+ return partitions;
+ }
+ }
///
public List DumpHardware { get; private set; }