Image CD-ROM interface. More...
#include <cdrom.h>
Classes | |
| class | AudioFile |
| class | BinaryFile |
| Binary file reader for the image. | |
| struct | imagePlayer |
| struct | Track |
| class | TrackFile |
Public Member Functions | |
| CDROM_Interface_Image (Bit8u subUnit) | |
| Constructor, with parameter for subunit. | |
| void | InitNewMedia (void) |
| TODO? | |
| bool | SetDevice (char *path, int forceCD) |
| Set the device associated with this interface, if supported by emulation. | |
| bool | GetUPC (unsigned char &attr, char *upc) |
| Get UPC string from the CD-ROM. | |
| bool | GetAudioTracks (int &stTrack, int &end, TMSF &leadOut) |
| Retrieve start and end tracks and lead out position. | |
| bool | GetAudioTrackInfo (int track, TMSF &start, unsigned char &attr) |
| Retrieve start and attributes for a specific track. | |
| bool | GetAudioSub (unsigned char &attr, unsigned char &track, unsigned char &index, TMSF &relPos, TMSF &absPos) |
| Get subchannel data of the sectors at the current position, and retrieve current position. | |
| bool | GetAudioStatus (bool &playing, bool &pause) |
| Get audio playback status. | |
| bool | GetMediaTrayStatus (bool &mediaPresent, bool &mediaChanged, bool &trayOpen) |
| Get media tray status. | |
| bool | PlayAudioSector (unsigned long start, unsigned long len) |
| Initiate audio playback starting at sector and for how many. | |
| bool | PauseAudio (bool resume) |
| Pause audio playback. | |
| bool | StopAudio (void) |
| Stop audio playback. | |
| void | ChannelControl (TCtrl ctrl) |
| Set channel control data (TODO: clarify) | |
| bool | ReadSectors (PhysPt buffer, bool raw, unsigned long sector, unsigned long num) |
| Read sector data into guest memory. | |
| bool | ReadSectorsHost (void *buffer, bool raw, unsigned long sector, unsigned long num) |
| Read sector data into host memory (for IDE emulation) | |
| bool | LoadUnloadMedia (bool unload) |
| Load (close/spin up) or unload (eject/spin down) media. | |
| bool | ReadSector (uint8_t *buffer, const bool raw, const uint32_t sector) |
| Indicate whether the image has a data track. | |
| bool | HasDataTrack (void) |
| Indicate whether the image has a data track. | |
Static Public Attributes | |
| static bool | images_init = false |
| Flag to track if images have been initialized. | |
| static CDROM_Interface_Image * | images [26] = {} |
| Array of CD-ROM images, one per drive letter. | |
Image CD-ROM interface.
This provides CD-ROM emulation from .ISO and .BIN/.CUE images on the host system
| bool CDROM_Interface_Image::GetAudioTracks | ( | int & | stTrack, |
| int & | end, | ||
| TMSF & | leadOut | ||
| ) | [virtual] |
Retrieve start and end tracks and lead out position.
Guard: A valid CD has atleast two tracks: the first plus the lead-out, so bail out if we have fewer than 2 tracks
Implements CDROM_Interface.
Definition at line 491 of file cdrom_image.cpp.
| bool CDROM_Interface_Image::PlayAudioSector | ( | unsigned long | start, |
| unsigned long | len | ||
| ) | [virtual] |
Initiate audio playback starting at sector and for how many.
If the request falls in the pregap we deduct the difference from the playback duration, because we skip the pre-gap area and jump straight to the track start.
Guard: Before we update our player object with new track details, we lock access to it to prevent the Callback (which runs in a separate thread) from getting inconsistent or partial values.
Convert Redbook frames (len) to Track PCM frames, rounding up to whole integer frames. Note: the intermediate numerator in the calculation below can overflow uint32_t, so the variable types used must stay 64-bit.
Implements CDROM_Interface.
Definition at line 592 of file cdrom_image.cpp.
References StopAudio().
CDROM_Interface_Image * CDROM_Interface_Image::images = {} [static] |
bool CDROM_Interface_Image::images_init = false [static] |
1.8.0