[PATCH 3/7] ntdll: fix endianness of three fields in DVD_LAYER_DESCRIPTOR (resend)
cdavis at mymail.mines.edu
Fri Feb 10 18:21:31 CST 2012
On Feb 10, 2012, at 4:24 PM, Dan Kegel wrote:
> On Fri, Feb 10, 2012 at 2:00 PM, Charles Davis <cdavis at 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
> 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.
More information about the wine-devel