On Feb 10, 2012, at 4:24 PM, Dan Kegel wrote:
On Fri, Feb 10, 2012 at 2:00 PM, Charles Davis cdavis@mymail.mines.edu wrote:
p->StartingDataSector = l->start_sector;
p->EndDataSector = l->end_sector;
p->EndLayerZeroSector = l->end_sector_l0;
p->StartingDataSector = GET_BE_DWORD(l->start_sector);
p->EndDataSector = GET_BE_DWORD(l->end_sector);
p->EndLayerZeroSector = GET_BE_DWORD(l->end_sector_l0);
I don't know about this. To make your original patch work right on Mac, one of the things I had to do was get rid of the OSReadBigInt32() calls that swapped the endianness of the sector fields from big to host.
This was needed for Dragon Age Origins able to detect its disc, see http://bugs.winehq.org/show_bug.cgi?id=29667 That's our source of truth, I guess.
Huh. I guess then that's a problem with your test program, which fails because the descriptor returned from SCSI pass-through (at least, on Mac) has those fields in big-endian order, but the descriptor returned from the IOCTL has them in host order, and the test program compares them directly without swapping one or the other.
Do you have a copy of Dragon Age handy to test with?
No, not for Windows, anyway. I have plenty of other DVD games, though.
Chip