- bit: At least in Windows 95 OSR 2.x, I still can't read the mounted ISO's.
Edit: You're writing, into the TOC, the data track and a seemingly failed second track (attr 0x00), but not a lead out track (attr 0x16).
Edit #2: This is how to fix the ISO's:
1. In image_get_last_block(), change:
address = MSFtoLBA(tmsf.min, tmsf.sec, tmsf.fr);
To:
address = MSFtoLBA(tmsf.min, tmsf.sec, tmsf.fr) - 150;
.
This is because the DOSBox code returns real MSF, starting from 00:02:00 (corresponding to LBA 0x00000000).
2. In image_readtoc() and image_readtoc_session(), change:
MSFtoLBA(tmsf.min, tmsf.sec, tmsf.fr);
To:
MSFtoLBA(tmsf.min, tmsf.sec, tmsf.fr) - 150;
.
This is because the DOSBox code returns real MSF, starting from 00:02:00 (corresponding to LBA 0x00000000).
3. In CDROM_Interface_Image::LoadIsoFile(char* filename), add:
track.track_number = 1;
After:
track.number = 1;
.
This is because the DOSBox code erroneously forgets to set the reported number of the data track to 1.
4. In the same function, change:
track.attr = 0;
To:
track.attr = 0x16;
.
I believe 0x16 is the correct lead out control byte.
5. In CDROM_Interface_Image::LoadCueSheet(char *cuefile), change:
track.attr = 0;
To:
track.attr = 0x16;
After:
track.track_number = 0xAA;
.
This is for CUE/BIN rather than ISO but I believe 0x16 is the correct lead out control byte.
This is it. :p