Merge pull request #728 from pcercuei/libretro-wiiu-v4
[pcsx_rearmed.git] / deps / libretro-common / include / libchdr / cdrom.h
CommitLineData
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
34enum
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
48enum
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 */
64int ecc_verify(const uint8_t *sector);
65void ecc_generate(uint8_t *sector);
66void ecc_clear(uint8_t *sector);
67#endif
68
69#endif /* __CDROM_H__ */