1 /* license:BSD-3-Clause 2 * copyright-holders:Aaron Giles 3 *************************************************************************** 4 5 cdrom.h 6 7 Generic MAME cd-rom implementation 8 9 ***************************************************************************/ 10 11 #pragma once 12 13 #ifndef __CDROM_H__ 14 #define __CDROM_H__ 15 16 #include <stdint.h> 17 18 /*************************************************************************** 19 CONSTANTS 20 ***************************************************************************/ 21 22 /* tracks are padded to a multiple of this many frames */ 23 #define CD_TRACK_PADDING (4) 24 25 #define CD_MAX_TRACKS (99) /* AFAIK the theoretical limit */ 26 #define CD_MAX_SECTOR_DATA (2352) 27 #define CD_MAX_SUBCODE_DATA (96) 28 29 #define CD_FRAME_SIZE (CD_MAX_SECTOR_DATA + CD_MAX_SUBCODE_DATA) 30 #define CD_FRAMES_PER_HUNK (8) 31 32 #define CD_METADATA_WORDS (1+(CD_MAX_TRACKS * 6)) 33 34 enum 35 { 36 CD_TRACK_MODE1 = 0, /* mode 1 2048 bytes/sector */ 37 CD_TRACK_MODE1_RAW, /* mode 1 2352 bytes/sector */ 38 CD_TRACK_MODE2, /* mode 2 2336 bytes/sector */ 39 CD_TRACK_MODE2_FORM1, /* mode 2 2048 bytes/sector */ 40 CD_TRACK_MODE2_FORM2, /* mode 2 2324 bytes/sector */ 41 CD_TRACK_MODE2_FORM_MIX, /* mode 2 2336 bytes/sector */ 42 CD_TRACK_MODE2_RAW, /* mode 2 2352 bytes / sector */ 43 CD_TRACK_AUDIO, /* redbook audio track 2352 bytes/sector (588 samples) */ 44 45 CD_TRACK_RAW_DONTCARE /* special flag for cdrom_read_data: just return me whatever is there */ 46 }; 47 48 enum 49 { 50 CD_SUB_NORMAL = 0, /* "cooked" 96 bytes per sector */ 51 CD_SUB_RAW, /* raw uninterleaved 96 bytes per sector */ 52 CD_SUB_NONE /* no subcode data stored */ 53 }; 54 55 #define CD_FLAG_GDROM 0x00000001 /* disc is a GD-ROM, all tracks should be stored with GD-ROM metadata */ 56 #define CD_FLAG_GDROMLE 0x00000002 /* legacy GD-ROM, with little-endian CDDA data */ 57 58 /*************************************************************************** 59 FUNCTION PROTOTYPES 60 ***************************************************************************/ 61 62 #ifdef WANT_RAW_DATA_SECTOR 63 /* ECC utilities */ 64 int ecc_verify(const uint8_t *sector); 65 void ecc_generate(uint8_t *sector); 66 void ecc_clear(uint8_t *sector); 67 #endif 68 69 #endif /* __CDROM_H__ */ 70