Implement READ DISC INFORMATION for blank CD-R.

This commit is contained in:
2025-09-24 04:09:47 +01:00
parent 2d20d55a65
commit 7efcbddc80

View File

@@ -2742,6 +2742,45 @@ cdrom_read_disc_information(const cdrom_t *dev, uint8_t *buffer)
int ls_last = 0;
int t_b0 = -1;
if (dev->cd_status == CD_STATUS_BLANK_CDR) {
memset(buffer, 0x00, 34);
buffer[ 0] = 0x00; /* Disc Information Length (MSB) */
buffer[ 1] = 0x20; /* Disc Information Lenght (LSB) */
buffer[ 2] = 0x00; /* Reserved, Erasable, State of Last Session, Disc Status */
buffer[ 3] = 0x01; /* Number of First Track on Disc */
buffer[ 4] = 0x01; /* Number of Sessions (LSB) */
buffer[ 5] = 0x01; /* First track number in last session (LSB) */
buffer[ 6] = 0x01; /* Last track number in last session (LSB) */
buffer[ 7] = 0x00; /* DID_V, DBC_V, URU, DAC_V, Reserved, Dbit, BG format Status */
buffer[ 8] = 0xff; /* Disc type */
buffer[ 9] = 0x00; /* Number Of Sessions (MSB) */
buffer[10] = 0x00; /* First Track Number in Last Session (MSB) */
buffer[11] = 0x00; /* Last Track Number in Last Session (MSB) */
buffer[12] = 0x00; /* Disc identification (MSB...) */
buffer[13] = 0x00; /* ... */
buffer[14] = 0x00; /* ... */
buffer[15] = 0x00; /* Disc identification (...LSB) */
buffer[16] = 0x00; /* Last session Lead-In Start Address (MSB...) */
buffer[17] = 0x61; /* ... */
buffer[18] = 0x1a; /* ... */
buffer[19] = 0x42; /* Last session Lead-In Start Address (...LSB) */
buffer[20] = 0x00; /* Last Possible Start Time for Start of Lead-out (MSB) */
buffer[21] = 0x4f; /* ... */
buffer[22] = 0x3b; /* ... */
buffer[23] = 0x47; /* Last Possible Start Time for Start of Lead-out (...LSB) */
buffer[24] = 0x00; /* Disc barcode (MSB...) */
buffer[25] = 0x00; /* ... */
buffer[26] = 0x00; /* ... */
buffer[27] = 0x00; /* ... */
buffer[28] = 0x00; /* ... */
buffer[29] = 0x00; /* ... */
buffer[30] = 0x00; /* ... */
buffer[31] = 0x00; /* Disc barcode (...LSB) */
return;
}
dev->ops->get_raw_track_info(dev->local, &num, rti);
for (int i = 0; i < num; i++)