Update sector tag constants for Aaru compatibility

This commit is contained in:
2025-10-18 16:14:49 +01:00
parent ebd345ce82
commit 112f8ab320
4 changed files with 18 additions and 10 deletions

View File

@@ -893,7 +893,7 @@ typedef struct ImageInfo // NOLINT
// NOLINTBEGIN(readability-identifier-naming)
typedef enum
{
AppleSectorTag = 0, ///< Apple's GCR sector tags, 12 bytes (address prolog + checksum)
AppleSonyTagAaru = 0, ///< Apple's Sony sector tags, 12 bytes (address prolog + checksum)
CdSectorSync = 1, ///< 12-byte CD sync pattern (00 FF*10 00)
CdSectorHeader = 2, ///< 4-byte CD header (minute, second, frame, mode)
CdSectorSubHeader = 3, ///< Mode 2 Form subheader (8 bytes: copy, submode, channel)
@@ -913,6 +913,8 @@ typedef enum
DvdSectorNumber = 17, ///< DVD sector number, 3 bytes
DvdSectorIedAaru = 18, ///< DVD sector ID error detection, 2 bytes
DvdSectorEdcAaru = 19, ///< DVD sector EDC, 4 bytes
AppleProfileTagAaru = 20, ///< Apple's Profile sector tags, 20 bytes
PriamDataTowerTagAaru = 21, ///< Priam DataTower sector tags, 24 bytes
MaxSectorTag = DvdSectorEdcAaru
} SectorTagType;

View File

@@ -361,14 +361,20 @@ int32_t process_data_block(aaruformat_context *ctx, IndexEntry *entry)
ctx->readableSectorTags[CdSectorEdc] = true;
break;
case CdSectorSubchannel:
ctx->sector_subchannel = data;
ctx->sector_subchannel = data;
ctx->readableSectorTags[CdSectorSubchannelAaru] = true;
break;
case AppleProfileTag:
ctx->sector_subchannel = data;
ctx->readableSectorTags[AppleProfileTagAaru] = true;
break;
case AppleSonyTag:
ctx->sector_subchannel = data;
ctx->readableSectorTags[PriamDataTowerTagAaru] = true;
break;
case PriamDataTowerTag:
ctx->sector_subchannel = data;
ctx->readableSectorTags[AppleSectorTag] = true;
ctx->sector_subchannel = data;
ctx->readableSectorTags[AppleSonyTagAaru] = true;
break;
case CompactDiscMode2Subheader:
ctx->mode2_subheaders = data;

View File

@@ -1769,7 +1769,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_read_sector_tag(const void *context, const u
memcpy(buffer, ctx->sector_decrypted_title_key + corrected_sector_address * 5, 5);
TRACE("Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK");
return AARUF_STATUS_OK;
case AppleSectorTag:
case AppleSonyTagAaru:
if(ctx->image_info.MetadataMediaType != BlockMedia)
{
FATAL("Invalid media type for tag");
@@ -1795,7 +1795,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_read_sector_tag(const void *context, const u
memcpy(buffer, ctx->sector_subchannel + corrected_sector_address * 12, 12);
TRACE("Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK");
return AARUF_STATUS_OK;
case AppleProfileTag:
case AppleProfileTagAaru:
if(ctx->image_info.MetadataMediaType != BlockMedia)
{
FATAL("Invalid media type for tag");
@@ -1821,7 +1821,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_read_sector_tag(const void *context, const u
memcpy(buffer, ctx->sector_subchannel + corrected_sector_address * 20, 20);
TRACE("Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK");
return AARUF_STATUS_OK;
case PriamDataTowerTag:
case PriamDataTowerTagAaru:
if(ctx->image_info.MetadataMediaType != BlockMedia)
{
FATAL("Invalid media type for tag");

View File

@@ -2372,7 +2372,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_write_sector_tag(void *context, const uint64
memcpy(ctx->sector_decrypted_title_key + corrected_sector_address * 5, data, 5);
TRACE("Exiting aaruf_write_sector_tag() = AARUF_STATUS_OK");
return AARUF_STATUS_OK;
case AppleSectorTag:
case AppleSonyTagAaru:
if(ctx->image_info.MetadataMediaType != BlockMedia)
{
FATAL("Invalid media type for tag");
@@ -2400,7 +2400,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_write_sector_tag(void *context, const uint64
memcpy(ctx->sector_subchannel + corrected_sector_address * 12, data, 12);
TRACE("Exiting aaruf_write_sector_tag() = AARUF_STATUS_OK");
return AARUF_STATUS_OK;
case AppleProfileTag:
case AppleProfileTagAaru:
if(ctx->image_info.MetadataMediaType != BlockMedia)
{
FATAL("Invalid media type for tag");
@@ -2428,7 +2428,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_write_sector_tag(void *context, const uint64
memcpy(ctx->sector_subchannel + corrected_sector_address * 20, data, 20);
TRACE("Exiting aaruf_write_sector_tag() = AARUF_STATUS_OK");
return AARUF_STATUS_OK;
case PriamDataTowerTag:
case PriamDataTowerTagAaru:
if(ctx->image_info.MetadataMediaType != BlockMedia)
{
FATAL("Invalid media type for tag");