On Feb 10, 2012, at 4:24 PM, Dan Kegel wrote: > On Fri, Feb 10, 2012 at 2:00 PM, Charles Davis <cda...@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