Fix calculation of negative sectors offset in DDT tables.

This commit is contained in:
2025-11-22 13:51:10 +00:00
parent 649ac6003d
commit bb6c427378
3 changed files with 8 additions and 8 deletions

View File

@@ -605,7 +605,7 @@ int32_t decode_ddt_single_level_v2(aaruformat_context *ctx, uint64_t sector_addr
// Calculate positive or negative sector
if(negative)
sector_address -= ctx->user_data_ddt_header.negative;
sector_address = ctx->user_data_ddt_header.negative - sector_address;
else
sector_address += ctx->user_data_ddt_header.negative;
@@ -757,7 +757,7 @@ int32_t decode_ddt_multi_level_v2(aaruformat_context *ctx, uint64_t sector_addre
// Calculate positive or negative sector
if(negative)
sector_address -= ctx->user_data_ddt_header.negative;
sector_address = ctx->user_data_ddt_header.negative - sector_address;
else
sector_address += ctx->user_data_ddt_header.negative;
@@ -1045,7 +1045,7 @@ bool set_ddt_single_level_v2(aaruformat_context *ctx, uint64_t sector_address, c
// Calculate positive or negative sector
if(negative)
sector_address -= ctx->user_data_ddt_header.negative;
sector_address = ctx->user_data_ddt_header.negative - sector_address;
else
sector_address += ctx->user_data_ddt_header.negative;
@@ -1125,7 +1125,7 @@ bool set_ddt_multi_level_v2(aaruformat_context *ctx, uint64_t sector_address, bo
// Calculate positive or negative sector
if(negative)
sector_address -= ctx->user_data_ddt_header.negative;
sector_address = ctx->user_data_ddt_header.negative - sector_address;
else
sector_address += ctx->user_data_ddt_header.negative;

View File

@@ -888,7 +888,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_read_sector_long(void *context, const uint64
// Calculate positive or negative sector
if(negative)
corrected_sector_address -= ctx->user_data_ddt_header.negative;
corrected_sector_address = ctx->user_data_ddt_header.negative - sector_address;
else
corrected_sector_address += ctx->user_data_ddt_header.negative;
@@ -1529,7 +1529,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_read_sector_tag(const void *context, const u
// Calculate positive or negative sector
if(negative)
corrected_sector_address -= ctx->user_data_ddt_header.negative;
corrected_sector_address = ctx->user_data_ddt_header.negative - sector_address;
else
corrected_sector_address += ctx->user_data_ddt_header.negative;

View File

@@ -604,7 +604,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_write_sector_long(void *context, uint64_t se
// Calculate positive or negative sector
if(negative)
corrected_sector_address -= ctx->user_data_ddt_header.negative;
corrected_sector_address = ctx->user_data_ddt_header.negative - sector_address;
else
corrected_sector_address += ctx->user_data_ddt_header.negative;
@@ -2127,7 +2127,7 @@ AARU_EXPORT int32_t AARU_CALL aaruf_write_sector_tag(void *context, const uint64
// Calculate positive or negative sector
if(negative)
corrected_sector_address -= ctx->user_data_ddt_header.negative;
corrected_sector_address = ctx->user_data_ddt_header.negative - sector_address;
else
corrected_sector_address += ctx->user_data_ddt_header.negative;