Hi Bret (continuing on -devel again)

DOSBOX implements only the audio Q-channels subchannel data,
as does UDVD2. With OAKCDROM, you can also use another call
to get all raw subchannels and then extract whatever you want
to know from them, maybe CD TEXT, maybe some copy protection
data. With DOSBOX and OAKCDROM, you can access the UPC/EAN,
which you can not yet access with UDVD2. Again, we do not
know which of the two are required by the protected games.

So in theory, games which rely only on UPC could work in
DOSBOX, while games which need sub-channels beyond the
timestamp subclass of Q-channel data would neither work
with DOSBOX nor UDVD2, but probably work with OAKCDROM.

Note that to use UPC in DOSBOX, you either have to use
a real CD in the host OS or (I think) first configure
metadata about your ISO. Maybe there are file formats
for CD images which already include that, no idea.

I think implementing UPC/EAN in UDVD2 would be easier
than implementing "all raw subchannel data", because
I would guess that Jack's Q-channel timestamp reader
code could be recycled for that: Simply change the
required Q-channel type from timestamp to UPC/EAN,
then do some format transformation of the returned
data to interpret it as UPC instead of timestamps?

See the "ReqAQI" implementation in the UDVD2 sources,
or to be more exact the "RdAST2" implementation. The
trick is that to get the "Audio STatus", you read any
audio subchannel with any settings, so Jack chose to
let RdAST2 read exactly the right type of Q-channel
data to match the needs of the audio Q-channel for
timestamps (where relative to CD and track start
you are listening to at the moment). This covers
two topics with one and a half implementations and
contributes to keeping the driver compact.

To read the UPC, you would have to use other command
bytes (see RdAST2) to request a different type of Q
channel data, but the rest of the code would look very
much like RdAST2 and ReqAQI, as far as I can tell :-)
Note that I am no expert for ASPI/SCSI/ATAPI/similar.
There is no bug in Jack's implementation of the UPC
read or the "read all raw subchannels" IOCTL call,
there simply is not yet an implementation of those.

Regards, Eric




_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to