Commit | Line | Data |
---|---|---|
3719602c PC |
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__ */ |