|
KallistiOS git master
Independent SDK for the Sega Dreamcast
|
CD access to the GD-ROM drive. More...
Go to the source code of this file.
Data Structures | |
| struct | CDROM_TOC |
| TOC structure returned by the BIOS. More... | |
Macros | |
| #define | CMD_CHECK_LICENSE 2 |
| Check license. | |
| #define | CMD_REQ_SPI_CMD 4 |
| Request to Sega Packet Interface. | |
| #define | CMD_PIOREAD 16 |
| Read via PIO. | |
| #define | CMD_DMAREAD 17 |
| Read via DMA. | |
| #define | CMD_GETTOC 18 |
| Read TOC. | |
| #define | CMD_GETTOC2 19 |
| Read TOC. | |
| #define | CMD_PLAY 20 |
| Play track. | |
| #define | CMD_PLAY2 21 |
| Play sectors. | |
| #define | CMD_PAUSE 22 |
| Pause playback. | |
| #define | CMD_RELEASE 23 |
| Resume from pause. | |
| #define | CMD_INIT 24 |
| Initialize the drive. | |
| #define | CMD_DMA_ABORT 25 |
| Abort DMA transfer. | |
| #define | CMD_OPEN_TRAY 26 |
| Open CD tray (on DevBox?) | |
| #define | CMD_SEEK 27 |
| Seek to a new position. | |
| #define | CMD_DMAREAD_STREAM 28 |
| Stream DMA until end/abort. | |
| #define | CMD_NOP 29 |
| No operation. | |
| #define | CMD_REQ_MODE 30 |
| Request mode. | |
| #define | CMD_SET_MODE 31 |
| Setup mode. | |
| #define | CMD_SCAN_CD 32 |
| Scan CD. | |
| #define | CMD_STOP 33 |
| Stop the disc from spinning. | |
| #define | CMD_GETSCD 34 |
| Get subcode data. | |
| #define | CMD_GETSES 35 |
| Get session. | |
| #define | CMD_REQ_STAT 36 |
| Request stat. | |
| #define | CMD_PIOREAD_STREAM 37 |
| Stream PIO until end/abort. | |
| #define | CMD_DMAREAD_STREAM_EX 38 |
| Stream DMA transfer. | |
| #define | CMD_PIOREAD_STREAM_EX 39 |
| Stream PIO transfer. | |
| #define | CMD_GET_VERS 40 |
| Get syscall driver version. | |
| #define | CMD_MAX 47 |
| Max of GD syscall commands. | |
| #define | ERR_OK 0 |
| No error. | |
| #define | ERR_NO_DISC 1 |
| No disc in drive. | |
| #define | ERR_DISC_CHG 2 |
| Disc changed, but not reinitted yet. | |
| #define | ERR_SYS 3 |
| System error. | |
| #define | ERR_ABORTED 4 |
| Command aborted. | |
| #define | ERR_NO_ACTIVE 5 |
| System inactive? | |
| #define | ERR_TIMEOUT 6 |
| Aborted due to timeout. | |
| #define | FAILED -1 |
| Command failed. | |
| #define | NO_ACTIVE 0 |
| System inactive? | |
| #define | PROCESSING 1 |
| Processing command. | |
| #define | COMPLETED 2 |
| Command completed successfully. | |
| #define | STREAMING 3 |
| Stream type command is in progress. | |
| #define | BUSY 4 |
| GD syscalls is busy. | |
| #define | ATA_STAT_INTERNAL 0x00 |
| #define | ATA_STAT_IRQ 0x01 |
| #define | ATA_STAT_DRQ_0 0x02 |
| #define | ATA_STAT_DRQ_1 0x03 |
| #define | ATA_STAT_BUSY 0x04 |
| #define | CDDA_TRACKS 1 |
| Play by track number. | |
| #define | CDDA_SECTORS 2 |
| Play by sector number. | |
| #define | CDROM_READ_WHOLE_SECTOR 0x1000 |
| Read the whole sector. | |
| #define | CDROM_READ_DATA_AREA 0x2000 |
| Read the data area. | |
| #define | CD_SUB_Q_ALL 0 |
| Read all Subcode Data. | |
| #define | CD_SUB_Q_CHANNEL 1 |
| Read Q Channel Subcode Data. | |
| #define | CD_SUB_MEDIA_CATALOG 2 |
| Read the Media Catalog Subcode Data. | |
| #define | CD_SUB_TRACK_ISRC 3 |
| Read the ISRC Subcode Data. | |
| #define | CD_SUB_RESERVED 4 |
| Reserved. | |
| #define | CD_SUB_AUDIO_STATUS_INVALID 0x00 |
| #define | CD_SUB_AUDIO_STATUS_PLAYING 0x11 |
| #define | CD_SUB_AUDIO_STATUS_PAUSED 0x12 |
| #define | CD_SUB_AUDIO_STATUS_ENDED 0x13 |
| #define | CD_SUB_AUDIO_STATUS_ERROR 0x14 |
| #define | CD_SUB_AUDIO_STATUS_NO_INFO 0x15 |
| #define | CDROM_READ_PIO 0 |
| Read sector(s) in PIO mode. | |
| #define | CDROM_READ_DMA 1 |
| Read sector(s) in DMA mode. | |
| #define | CD_STATUS_READ_FAIL -1 |
| Can't read status. | |
| #define | CD_STATUS_BUSY 0 |
| Drive is busy. | |
| #define | CD_STATUS_PAUSED 1 |
| Disc is paused. | |
| #define | CD_STATUS_STANDBY 2 |
| Drive is in standby. | |
| #define | CD_STATUS_PLAYING 3 |
| Drive is currently playing. | |
| #define | CD_STATUS_SEEKING 4 |
| Drive is currently seeking. | |
| #define | CD_STATUS_SCANNING 5 |
| Drive is scanning. | |
| #define | CD_STATUS_OPEN 6 |
| Disc tray is open. | |
| #define | CD_STATUS_NO_DISC 7 |
| No disc inserted. | |
| #define | CD_STATUS_RETRY 8 |
| Retry is needed. | |
| #define | CD_STATUS_ERROR 9 |
| System error. | |
| #define | CD_STATUS_FATAL 12 |
| Need reset syscalls. | |
| #define | CD_CDDA 0x00 |
| Audio CD (Red book) or no disc. | |
| #define | CD_CDROM 0x10 |
| CD-ROM or CD-R (Yellow book) | |
| #define | CD_CDROM_XA 0x20 |
| CD-ROM XA (Yellow book extension) | |
| #define | CD_CDI 0x30 |
| CD-i (Green book) | |
| #define | CD_GDROM 0x80 |
| GD-ROM. | |
| #define | CD_FAIL 0xf0 |
| Need reset syscalls. | |
| #define | TOC_LBA(n) ((n) & 0x00ffffff) |
| Get the FAD address of a TOC entry. | |
| #define | TOC_ADR(n) ( ((n) & 0x0f000000) >> 24 ) |
| Get the address of a TOC entry. | |
| #define | TOC_CTRL(n) ( ((n) & 0xf0000000) >> 28 ) |
| Get the control data of a TOC entry. | |
| #define | TOC_TRACK(n) ( ((n) & 0x00ff0000) >> 16 ) |
| Get the track number of a TOC entry. | |
Typedefs | |
| typedef void(* | cdrom_stream_callback_t) (void *data) |
| CD-ROM streams callback. | |
Functions | |
| int | cdrom_set_sector_size (int size) |
| Set the sector size for read sectors. | |
| int | cdrom_exec_cmd (int cmd, void *param) |
| Execute a CD-ROM command. | |
| int | cdrom_exec_cmd_timed (int cmd, void *param, uint32_t timeout) |
| Execute a CD-ROM command with timeout. | |
| int | cdrom_abort_cmd (uint32_t timeout, bool abort_dma) |
| Abort a CD-ROM command with timeout. | |
| int | cdrom_get_status (int *status, int *disc_type) |
| Get the status of the GD-ROM drive. | |
| int | cdrom_change_dataype (int sector_part, int cdxa, int sector_size) 1("Use cdrom_change_datatype instead.") |
| Change the datatype of disc. | |
| int | cdrom_change_datatype (int sector_part, int cdxa, int sector_size) |
| Change the datatype of disc. | |
| int | cdrom_reinit (void) |
| Re-initialize the GD-ROM drive. | |
| int | cdrom_reinit_ex (int sector_part, int cdxa, int sector_size) |
| Re-initialize the GD-ROM drive with custom parameters. | |
| int | cdrom_read_toc (CDROM_TOC *toc_buffer, int session) |
| Read the table of contents from the disc. | |
| int | cdrom_read_sectors_ex (void *buffer, int sector, int cnt, int mode) |
| Read one or more sector from a CD-ROM. | |
| int | cdrom_read_sectors (void *buffer, int sector, int cnt) |
| Read one or more sector from a CD-ROM in PIO mode. | |
| int | cdrom_stream_start (int sector, int cnt, int mode) |
| Start streaming from a CD-ROM. | |
| int | cdrom_stream_stop (bool abort_dma) |
| Stop streaming from a CD-ROM. | |
| int | cdrom_stream_request (void *buffer, size_t size, bool block) |
| Request stream transfer. | |
| int | cdrom_stream_progress (size_t *size) |
| Check requested stream transfer. | |
| void | cdrom_stream_set_callback (cdrom_stream_callback_t callback, void *param) |
| Setting up a callback for transfers. | |
| int | cdrom_get_subcode (void *buffer, int buflen, int which) |
| Read subcode data from the most recently read sectors. | |
| uint32 | cdrom_locate_data_track (CDROM_TOC *toc) |
| Locate the sector of the data track. | |
| int | cdrom_cdda_play (uint32 start, uint32 end, uint32 loops, int mode) |
| Play CDDA audio tracks or sectors. | |
| int | cdrom_cdda_pause (void) |
| Pause CDDA audio playback. | |
| int | cdrom_cdda_resume (void) |
| Resume CDDA audio playback after a pause. | |
| int | cdrom_spin_down (void) |
| Spin down the CD. | |
| void | cdrom_init (void) |
| Initialize the GD-ROM for reading CDs. | |
| void | cdrom_shutdown (void) |
| Shutdown the CD reading system. | |
CD access to the GD-ROM drive.
This file contains the interface to the Dreamcast's GD-ROM drive. It is simply called cdrom.h and cdrom.c because, by design, you cannot directly use this code to read the high-density area of GD-ROMs. This is the way it always has been, and always will be.
The way things are set up, as long as you're using fs_iso9660 to access the CD, it will automatically detect and react to disc changes for you.
This file only facilitates reading raw sectors and doing other fairly low- level things with CDs. If you're looking for higher-level stuff, like normal file reading, consult with the stuff for the fs and for fs_iso9660.
| typedef void(* cdrom_stream_callback_t) (void *data) |
CD-ROM streams callback.