Implement GET TRACK INFORMATION for CD-R for invisible/incomplete track.

This commit is contained in:
2025-09-24 17:11:23 +01:00
parent 814a552f43
commit f84c36c351

View File

@@ -2946,7 +2946,43 @@ cdrom_read_track_information(cdrom_t *dev, const uint8_t *cdb, uint8_t *buffer)
break;
case 0x01:
if (dev->blank_media) {
ret = -cdb[1];
if (pos != 0xff) {
ret = -cdb[1];
break;
}
// Otherwise it is asking the invisible/incomplete track information
memset(buffer, 0, 36);
buffer[ 0] = 0x00; /* Data Length (MSB) */
buffer[ 1] = 0x22; /* Data Length (LSB) */
buffer[ 2] = 0x01; /* Logical Track Number (LSB) */
buffer[ 3] = 0x01; /* Session Number (LSB) */
buffer[ 4] = 0x00; /* Reserved */
buffer[ 5] = 0x04; /* LJRS, Damage, Copy, Track Mode */
buffer[ 6] = 0x4f; /* RT, Blank, Packet, FP, Data Mode */
buffer[ 7] = 0x01; /* LRA_V, NWA_V */
buffer[ 8] = 0x00; /* Logical Track Start Addres (MSB...) */
buffer[ 9] = 0x00; /* ... */
buffer[10] = 0x00; /* ... */
buffer[11] = 0x00; /* Logical Track Start Address (...LSB) */
buffer[12] = 0x00; /* Next Writable Address (MSB...) */
buffer[13] = 0x00; /* ... */
buffer[14] = 0x00; /* ... */
buffer[15] = 0x00; /* Next Writable Address (...LSB) */
buffer[16] = 0x00; /* Free Blocks (MSB...) */
buffer[17] = 0x05; /* ... */
buffer[18] = 0x7d; /* ... */
buffer[19] = 0xa4; /* Free Blocks (...LSB) */
buffer[20] = 0x00; /* Fixed Packet Size (MSB...) */
buffer[21] = 0x00; /* ... */
buffer[22] = 0x00; /* ... */
buffer[23] = 0x00; /* Fixed Packet Size (...LSB) */
buffer[24] = 0x00; /* Logical Track Size (MSB...) */
buffer[25] = 0x05; /* ... */
buffer[26] = 0x7d; /* ... */
buffer[27] = 0xa4; /* Logical Track Size (...LSB) */
ret = 28;
break;
}