KallistiOS git master
Independent SDK for the Sega Dreamcast
Loading...
Searching...
No Matches
cdrom.h
Go to the documentation of this file.
1/* KallistiOS ##version##
2
3 dc/cdrom.h
4 Copyright (C) 2000-2001 Megan Potter
5 Copyright (C) 2014 Donald Haase
6 Copyright (C) 2023, 2024, 2025 Ruslan Rostovtsev
7*/
8
9#ifndef __DC_CDROM_H
10#define __DC_CDROM_H
11
12#include <sys/cdefs.h>
13__BEGIN_DECLS
14
15#include <arch/types.h>
16#include <stdint.h>
17#include <stdbool.h>
18
19/** \file dc/cdrom.h
20 \brief CD access to the GD-ROM drive.
21 \ingroup gdrom
22
23 This file contains the interface to the Dreamcast's GD-ROM drive. It is
24 simply called cdrom.h and cdrom.c because, by design, you cannot directly
25 use this code to read the high-density area of GD-ROMs. This is the way it
26 always has been, and always will be.
27
28 The way things are set up, as long as you're using fs_iso9660 to access the
29 CD, it will automatically detect and react to disc changes for you.
30
31 This file only facilitates reading raw sectors and doing other fairly low-
32 level things with CDs. If you're looking for higher-level stuff, like
33 normal file reading, consult with the stuff for the fs and for fs_iso9660.
34
35 \author Megan Potter
36 \author Ruslan Rostovtsev
37 \see kos/fs.h
38 \see dc/fs_iso9660.h
39*/
40
41/** \defgroup gdrom GD-ROM
42 \brief Driver for the Dreamcast's GD-ROM drive
43 \ingroup vfs
44*/
45
46/** \defgroup cd_cmd_codes Syscall Command Codes
47 \brief Command codes for GD-ROM syscalsl
48 \ingroup gdrom
49
50 These are the syscall command codes used to actually do stuff with the
51 GD-ROM drive. These were originally provided by maiwe.
52
53 @{
54*/
55#define CMD_CHECK_LICENSE 2 /**< \brief Check license */
56#define CMD_REQ_SPI_CMD 4 /**< \brief Request to Sega Packet Interface */
57#define CMD_PIOREAD 16 /**< \brief Read via PIO */
58#define CMD_DMAREAD 17 /**< \brief Read via DMA */
59#define CMD_GETTOC 18 /**< \brief Read TOC */
60#define CMD_GETTOC2 19 /**< \brief Read TOC */
61#define CMD_PLAY 20 /**< \brief Play track */
62#define CMD_PLAY2 21 /**< \brief Play sectors */
63#define CMD_PAUSE 22 /**< \brief Pause playback */
64#define CMD_RELEASE 23 /**< \brief Resume from pause */
65#define CMD_INIT 24 /**< \brief Initialize the drive */
66#define CMD_DMA_ABORT 25 /**< \brief Abort DMA transfer */
67#define CMD_OPEN_TRAY 26 /**< \brief Open CD tray (on DevBox?) */
68#define CMD_SEEK 27 /**< \brief Seek to a new position */
69#define CMD_DMAREAD_STREAM 28 /**< \brief Stream DMA until end/abort */
70#define CMD_NOP 29 /**< \brief No operation */
71#define CMD_REQ_MODE 30 /**< \brief Request mode */
72#define CMD_SET_MODE 31 /**< \brief Setup mode */
73#define CMD_SCAN_CD 32 /**< \brief Scan CD */
74#define CMD_STOP 33 /**< \brief Stop the disc from spinning */
75#define CMD_GETSCD 34 /**< \brief Get subcode data */
76#define CMD_GETSES 35 /**< \brief Get session */
77#define CMD_REQ_STAT 36 /**< \brief Request stat */
78#define CMD_PIOREAD_STREAM 37 /**< \brief Stream PIO until end/abort */
79#define CMD_DMAREAD_STREAM_EX 38 /**< \brief Stream DMA transfer */
80#define CMD_PIOREAD_STREAM_EX 39 /**< \brief Stream PIO transfer */
81#define CMD_GET_VERS 40 /**< \brief Get syscall driver version */
82#define CMD_MAX 47 /**< \brief Max of GD syscall commands */
83/** @} */
84
85/** \defgroup cd_cmd_response Command Responses
86 \brief Responses from GD-ROM syscalls
87 \ingroup gdrom
88
89 These are the values that the various functions can return as error codes.
90 @{
91*/
92#define ERR_OK 0 /**< \brief No error */
93#define ERR_NO_DISC 1 /**< \brief No disc in drive */
94#define ERR_DISC_CHG 2 /**< \brief Disc changed, but not reinitted yet */
95#define ERR_SYS 3 /**< \brief System error */
96#define ERR_ABORTED 4 /**< \brief Command aborted */
97#define ERR_NO_ACTIVE 5 /**< \brief System inactive? */
98#define ERR_TIMEOUT 6 /**< \brief Aborted due to timeout */
99/** @} */
100
101/** \defgroup cd_cmd_status Command Status Responses
102 \brief GD-ROM status responses
103 \ingroup gdrom
104
105 These are the raw values the status syscall returns.
106 @{
107*/
108#define FAILED -1 /**< \brief Command failed */
109#define NO_ACTIVE 0 /**< \brief System inactive? */
110#define PROCESSING 1 /**< \brief Processing command */
111#define COMPLETED 2 /**< \brief Command completed successfully */
112#define STREAMING 3 /**< \brief Stream type command is in progress */
113#define BUSY 4 /**< \brief GD syscalls is busy */
114/** @} */
115
116/** \defgroup cd_cmd_ata_status ATA Statuses
117 \brief ATA statuses for GD-ROM driver
118 \ingroup gdrom
119
120 @{
121*/
122#define ATA_STAT_INTERNAL 0x00
123#define ATA_STAT_IRQ 0x01
124#define ATA_STAT_DRQ_0 0x02
125#define ATA_STAT_DRQ_1 0x03
126#define ATA_STAT_BUSY 0x04
127/** @} */
128
129/** \defgroup cdda_read_modes CDDA Read Modes
130 \brief Read modes for CDDA
131 \ingroup gdrom
132
133 Valid values to pass to the cdrom_cdda_play() function for the mode
134 parameter.
135 @{
136*/
137#define CDDA_TRACKS 1 /**< \brief Play by track number */
138#define CDDA_SECTORS 2 /**< \brief Play by sector number */
139/** @} */
140
141/** \defgroup cd_read_sector_part Read Sector Part
142 \brief Whether to read data or whole sector
143 \ingroup gdrom
144
145 Parts of the a CD-ROM sector to read. These are possible values for the
146 third parameter word sent with the change data type syscall.
147 @{
148*/
149#define CDROM_READ_WHOLE_SECTOR 0x1000 /**< \brief Read the whole sector */
150#define CDROM_READ_DATA_AREA 0x2000 /**< \brief Read the data area */
151/** @} */
152
153/** \defgroup cd_read_subcode_type Read Subcode Type
154 \brief Types of data to read from sector subcode
155 \ingroup gdrom
156
157 Types of data available to read from the sector subcode. These are
158 possible values for the first parameter sent to the GETSCD syscall.
159 @{
160*/
161#define CD_SUB_Q_ALL 0 /**< \brief Read all Subcode Data */
162#define CD_SUB_Q_CHANNEL 1 /**< \brief Read Q Channel Subcode Data */
163#define CD_SUB_MEDIA_CATALOG 2 /**< \brief Read the Media Catalog
164 Subcode Data */
165#define CD_SUB_TRACK_ISRC 3 /**< \brief Read the ISRC Subcode Data */
166#define CD_SUB_RESERVED 4 /**< \brief Reserved */
167/** @} */
168
169/** \defgroup cd_subcode_audio Subcode Audio Status
170 \brief GETSCD syscall response codes
171 \ingroup gdrom
172
173 Information about CDDA playback from GETSCD syscall.
174 @{
175*/
176#define CD_SUB_AUDIO_STATUS_INVALID 0x00
177#define CD_SUB_AUDIO_STATUS_PLAYING 0x11
178#define CD_SUB_AUDIO_STATUS_PAUSED 0x12
179#define CD_SUB_AUDIO_STATUS_ENDED 0x13
180#define CD_SUB_AUDIO_STATUS_ERROR 0x14
181#define CD_SUB_AUDIO_STATUS_NO_INFO 0x15
182/** @} */
183
184/** \defgroup cd_read_sector_mode Read Sector Mode
185 \brief Mode to use when reading sectors
186 \ingroup gdrom
187
188 How to read the sectors of a CD, via PIO or DMA. 4th parameter of
189 cdrom_read_sectors_ex.
190 @{
191*/
192#define CDROM_READ_PIO 0 /**< \brief Read sector(s) in PIO mode */
193#define CDROM_READ_DMA 1 /**< \brief Read sector(s) in DMA mode */
194/** @} */
195
196/** \defgroup cd_status_values Status Values
197 \brief Status values for GD-ROM drive
198 \ingroup gdrom
199
200 These are the values that can be returned as the status parameter from the
201 cdrom_get_status() function.
202 @{
203*/
204#define CD_STATUS_READ_FAIL -1 /**< \brief Can't read status */
205#define CD_STATUS_BUSY 0 /**< \brief Drive is busy */
206#define CD_STATUS_PAUSED 1 /**< \brief Disc is paused */
207#define CD_STATUS_STANDBY 2 /**< \brief Drive is in standby */
208#define CD_STATUS_PLAYING 3 /**< \brief Drive is currently playing */
209#define CD_STATUS_SEEKING 4 /**< \brief Drive is currently seeking */
210#define CD_STATUS_SCANNING 5 /**< \brief Drive is scanning */
211#define CD_STATUS_OPEN 6 /**< \brief Disc tray is open */
212#define CD_STATUS_NO_DISC 7 /**< \brief No disc inserted */
213#define CD_STATUS_RETRY 8 /**< \brief Retry is needed */
214#define CD_STATUS_ERROR 9 /**< \brief System error */
215#define CD_STATUS_FATAL 12 /**< \brief Need reset syscalls */
216/** @} */
217
218/** \defgroup cd_disc_types Drive Disc Types
219 \brief Disc types within GD-ROM drive
220 \ingroup gdrom
221
222 These are the values that can be returned as the disc_type parameter from
223 the cdrom_get_status() function.
224 @{
225*/
226#define CD_CDDA 0x00 /**< \brief Audio CD (Red book) or no disc */
227#define CD_CDROM 0x10 /**< \brief CD-ROM or CD-R (Yellow book) */
228#define CD_CDROM_XA 0x20 /**< \brief CD-ROM XA (Yellow book extension) */
229#define CD_CDI 0x30 /**< \brief CD-i (Green book) */
230#define CD_GDROM 0x80 /**< \brief GD-ROM */
231#define CD_FAIL 0xf0 /**< \brief Need reset syscalls */
232/** @} */
233
234/** \brief TOC structure returned by the BIOS.
235 \ingroup gdrom
236
237 This is the structure that the CMD_GETTOC2 syscall command will return for
238 the TOC. Note the data is in FAD, not LBA/LSN.
239
240 \headerfile dc/cdrom.h
241*/
242typedef struct {
243 uint32 entry[99]; /**< \brief TOC space for 99 tracks */
244 uint32 first; /**< \brief Point A0 information (1st track) */
245 uint32 last; /**< \brief Point A1 information (last track) */
246 uint32 leadout_sector; /**< \brief Point A2 information (leadout) */
247} CDROM_TOC;
248
249/** \defgroup cd_toc_access TOC Access Macros
250 \brief Macros used to access the TOC
251 \ingroup gdrom
252
253 @{
254*/
255/** \brief Get the FAD address of a TOC entry.
256 \param n The actual entry from the TOC to look at.
257 \return The FAD of the entry.
258*/
259#define TOC_LBA(n) ((n) & 0x00ffffff)
260
261/** \brief Get the address of a TOC entry.
262 \param n The entry from the TOC to look at.
263 \return The entry's address.
264*/
265#define TOC_ADR(n) ( ((n) & 0x0f000000) >> 24 )
266
267/** \brief Get the control data of a TOC entry.
268 \param n The entry from the TOC to look at.
269 \return The entry's control value.
270*/
271#define TOC_CTRL(n) ( ((n) & 0xf0000000) >> 28 )
272
273/** \brief Get the track number of a TOC entry.
274 \param n The entry from the TOC to look at.
275 \return The entry's track.
276*/
277#define TOC_TRACK(n) ( ((n) & 0x00ff0000) >> 16 )
278/** @} */
279
280/** \brief CD-ROM streams callback
281*/
282typedef void (*cdrom_stream_callback_t)(void *data);
283
284/** \brief Set the sector size for read sectors.
285 \ingroup gdrom
286
287 This function sets the sector size that the cdrom_read_sectors() function
288 will return. Be sure to set this to the correct value for the type of
289 sectors you're trying to read. Common values are 2048 (for reading CD-ROM
290 sectors) or 2352 (for reading raw sectors).
291
292 \param size The size of the sector data.
293
294 \return \ref cd_cmd_response
295*/
297
298/** \brief Execute a CD-ROM command.
299 \ingroup gdrom
300
301 This function executes the specified command using the BIOS syscall for
302 executing GD-ROM commands.
303
304 \param cmd The command number to execute.
305 \param param Data to pass to the syscall.
306
307 \return \ref cd_cmd_response
308*/
309int cdrom_exec_cmd(int cmd, void *param);
310
311/** \brief Execute a CD-ROM command with timeout.
312 \ingroup gdrom
313
314 This function executes the specified command using the BIOS syscall for
315 executing GD-ROM commands with timeout.
316
317 \param cmd The command number to execute.
318 \param param Data to pass to the syscall.
319 \param timeout Timeout in milliseconds.
320
321 \return \ref cd_cmd_response
322*/
323int cdrom_exec_cmd_timed(int cmd, void *param, uint32_t timeout);
324
325/** \brief Abort a CD-ROM command with timeout.
326 \ingroup gdrom
327
328 This function aborts current command using the BIOS syscall for
329 aborting GD-ROM commands. They can also abort DMA transfers.
330
331 \param timeout Timeout in milliseconds.
332 \param abort_dma Whether to abort the DMA transfer.
333
334 \return \ref cd_cmd_response
335*/
336int cdrom_abort_cmd(uint32_t timeout, bool abort_dma);
337
338/** \brief Get the status of the GD-ROM drive.
339 \ingroup gdrom
340
341 \param status Space to return the drive's status.
342 \param disc_type Space to return the type of disc in the drive.
343
344 \return \ref cd_cmd_response
345 \see cd_status_values
346 \see cd_disc_types
347*/
348int cdrom_get_status(int *status, int *disc_type);
349
350/** \brief Change the datatype of disc.
351 \ingroup gdrom
352
353 \note This function is formally deprecated. It should not
354 be used in any future code, and may be removed in
355 the future. You should instead use
356 cdrom_change_datatype.
357*/
358int cdrom_change_dataype(int sector_part, int cdxa, int sector_size)
359 __depr("Use cdrom_change_datatype instead.");
360
361/** \brief Change the datatype of disc.
362 \ingroup gdrom
363
364 This function will take in all parameters to pass to the change_datatype
365 syscall. This allows these parameters to be modified without a reinit.
366 Each parameter allows -1 as a default, which is tied to the former static
367 values provided by cdrom_reinit and cdrom_set_sector_size.
368
369 \param sector_part How much of each sector to return.
370 \param cdxa What CDXA mode to read as (if applicable).
371 \param sector_size What sector size to read (eg. - 2048, 2532).
372
373 \return \ref cd_cmd_response
374 \see cd_read_sector_part
375*/
376int cdrom_change_datatype(int sector_part, int cdxa, int sector_size);
377
378/** \brief Re-initialize the GD-ROM drive.
379 \ingroup gdrom
380
381 This function is for reinitializing the GD-ROM drive after a disc change to
382 its default settings. Calls cdrom_reinit(-1,-1,-1)
383
384 \return \ref cd_cmd_response
385 \see cdrom_reinit_ex
386*/
387int cdrom_reinit(void);
388
389/** \brief Re-initialize the GD-ROM drive with custom parameters.
390 \ingroup gdrom
391
392 At the end of each cdrom_reinit(), cdrom_change_datatype is called.
393 This passes in the requested values to that function after
394 reinitialization, as opposed to defaults.
395
396 \param sector_part How much of each sector to return.
397 \param cdxa What CDXA mode to read as (if applicable).
398 \param sector_size What sector size to read (eg. - 2048, 2532).
399
400 \return \ref cd_cmd_response
401 \see cd_read_sector_part
402 \see cdrom_change_datatype
403*/
404int cdrom_reinit_ex(int sector_part, int cdxa, int sector_size);
405
406/** \brief Read the table of contents from the disc.
407 \ingroup gdrom
408
409 This function reads the TOC from the specified session of the disc.
410
411 \param toc_buffer Space to store the returned TOC in.
412 \param session The session of the disc to read.
413 \return \ref cd_cmd_response
414*/
415int cdrom_read_toc(CDROM_TOC *toc_buffer, int session);
416
417/** \brief Read one or more sector from a CD-ROM.
418 \ingroup gdrom
419
420 This function reads the specified number of sectors from the disc, starting
421 where requested. This will respect the size of the sectors set with
422 cdrom_change_datatype(). The buffer must have enough space to store the
423 specified number of sectors and size must be a multiple of 32 for DMA.
424
425 \param buffer Space to store the read sectors.
426 \param sector The sector to start reading from.
427 \param cnt The number of sectors to read.
428 \param mode \ref cd_read_sector_mode
429 \return \ref cd_cmd_response
430
431 \note If the buffer address points to the P2 memory area,
432 the caller function will be responsible for ensuring
433 memory coherency.
434
435 \see cd_read_sector_mode
436*/
437int cdrom_read_sectors_ex(void *buffer, int sector, int cnt, int mode);
438
439/** \brief Read one or more sector from a CD-ROM in PIO mode.
440 \ingroup gdrom
441
442 Default version of cdrom_read_sectors_ex, which forces PIO mode.
443
444 \param buffer Space to store the read sectors.
445 \param sector The sector to start reading from.
446 \param cnt The number of sectors to read.
447 \return \ref cd_cmd_response
448 \see cdrom_read_sectors_ex
449*/
450int cdrom_read_sectors(void *buffer, int sector, int cnt);
451
452/** \brief Start streaming from a CD-ROM.
453 \ingroup gdrom
454
455 This function pre-reads the specified number of sectors from the disc.
456
457 \param sector The sector to start reading from.
458 \param cnt The number of sectors to read, 0x1ff means until end of disc.
459 \param mode \ref cd_read_sector_mode
460 \return \ref cd_cmd_response
461 \see cdrom_transfer_request
462*/
463int cdrom_stream_start(int sector, int cnt, int mode);
464
465/** \brief Stop streaming from a CD-ROM.
466 \ingroup gdrom
467
468 This function finishing stream commands.
469
470 \param abort_dma Abort current G1 DMA transfer.
471
472 \return \ref cd_cmd_response
473 \see cdrom_transfer_request
474*/
475int cdrom_stream_stop(bool abort_dma);
476
477/** \brief Request stream transfer.
478 \ingroup gdrom
479
480 This function request data from stream.
481
482 \param buffer Space to store the read sectors (DMA aligned to 32, PIO to 2).
483 \param size The size in bytes to read (DMA min 32, PIO min 2).
484 \param block True to block until DMA transfer completes.
485 \return \ref cd_cmd_response
486 \see cdrom_stream_start
487*/
488int cdrom_stream_request(void *buffer, size_t size, bool block);
489
490/** \brief Check requested stream transfer.
491 \ingroup gdrom
492
493 This function check requested stream transfer.
494
495 \param size The transfered (if in progress) or remain size in bytes.
496 \return 1 - is in progress, 0 - done
497 \see cdrom_transfer_request
498*/
499int cdrom_stream_progress(size_t *size);
500
501/** \brief Setting up a callback for transfers.
502 \ingroup gdrom
503
504 This callback is called for every transfer request that is completed.
505
506 \param callback Callback function.
507 \param param Callback function param.
508 \see cdrom_transfer_request
509*/
511
512/** \brief Read subcode data from the most recently read sectors.
513 \ingroup gdrom
514
515 After reading sectors, this can pull subcode data regarding the sectors
516 read. If reading all subcode data with CD_SUB_CURRENT_POSITION, this needs
517 to be performed one sector at a time.
518
519 \param buffer Space to store the read subcode data.
520 \param buflen Amount of data to be read.
521 \param which Which subcode type do you wish to get.
522
523 \return \ref cd_cmd_response
524 \see cd_read_subcode_type
525*/
526int cdrom_get_subcode(void *buffer, int buflen, int which);
527
528/** \brief Locate the sector of the data track.
529 \ingroup gdrom
530
531 This function will search the toc for the last entry that has a CTRL value
532 of 4, and return its FAD address.
533
534 \param toc The TOC to search through.
535 \return The FAD of the track, or 0 if none is found.
536*/
538
539/** \brief Play CDDA audio tracks or sectors.
540 \ingroup gdrom
541
542 This function starts playback of CDDA audio.
543
544 \param start The track or sector to start playback from.
545 \param end The track or sector to end playback at.
546 \param loops The number of times to repeat (max of 15).
547 \param mode The mode to play (see \ref cdda_read_modes).
548 \return \ref cd_cmd_response
549*/
550int cdrom_cdda_play(uint32 start, uint32 end, uint32 loops, int mode);
551
552/** \brief Pause CDDA audio playback.
553 \ingroup gdrom
554
555 \return \ref cd_cmd_response
556*/
558
559/** \brief Resume CDDA audio playback after a pause.
560 \ingroup gdrom
561
562 \return \ref cd_cmd_response
563*/
565
566/** \brief Spin down the CD.
567 \ingroup gdrom
568
569 This stops the disc in the drive from spinning until it is accessed again.
570
571 \return \ref cd_cmd_response
572*/
574
575/** \brief Initialize the GD-ROM for reading CDs.
576 \ingroup gdrom
577
578 This initializes the CD-ROM reading system, reactivating the drive and
579 handling initial setup of the disc.
580*/
581void cdrom_init(void);
582
583/** \brief Shutdown the CD reading system.
584 \ingroup gdrom
585 */
586void cdrom_shutdown(void);
587
588__END_DECLS
589
590#endif /* __DC_CDROM_H */
void(* cdrom_stream_callback_t)(void *data)
CD-ROM streams callback.
Definition cdrom.h:282
int cdrom_change_datatype(int sector_part, int cdxa, int sector_size)
Change the datatype of disc.
int cdrom_spin_down(void)
Spin down the CD.
int cdrom_stream_request(void *buffer, size_t size, bool block)
Request stream transfer.
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_stream_progress(size_t *size)
Check requested stream transfer.
int cdrom_cdda_resume(void)
Resume CDDA audio playback after a pause.
int cdrom_abort_cmd(uint32_t timeout, bool abort_dma)
Abort a CD-ROM command with timeout.
int cdrom_cdda_pause(void)
Pause CDDA audio playback.
void cdrom_stream_set_callback(cdrom_stream_callback_t callback, void *param)
Setting up a callback for transfers.
int cdrom_reinit(void)
Re-initialize the GD-ROM drive.
void cdrom_init(void)
Initialize the GD-ROM for reading CDs.
int cdrom_set_sector_size(int size)
Set the sector size for read sectors.
int cdrom_reinit_ex(int sector_part, int cdxa, int sector_size)
Re-initialize the GD-ROM drive with custom parameters.
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_toc(CDROM_TOC *toc_buffer, int session)
Read the table of contents from the disc.
void cdrom_shutdown(void)
Shutdown the CD reading system.
int cdrom_get_status(int *status, int *disc_type)
Get the status of the GD-ROM drive.
int cdrom_stream_start(int sector, int cnt, int mode)
Start streaming from a CD-ROM.
int cdrom_get_subcode(void *buffer, int buflen, int which)
Read subcode data from the most recently read sectors.
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_stream_stop(bool abort_dma)
Stop streaming from a CD-ROM.
int cdrom_exec_cmd(int cmd, void *param)
Execute a CD-ROM command.
int cdrom_read_sectors(void *buffer, int sector, int cnt)
Read one or more sector from a CD-ROM in PIO mode.
int cdrom_exec_cmd_timed(int cmd, void *param, uint32_t timeout)
Execute a CD-ROM command with timeout.
unsigned long uint32
32-bit unsigned integer
Definition types.h:33
TOC structure returned by the BIOS.
Definition cdrom.h:242
uint32 first
Point A0 information (1st track)
Definition cdrom.h:244
uint32 leadout_sector
Point A2 information (leadout)
Definition cdrom.h:246
uint32 last
Point A1 information (last track)
Definition cdrom.h:245
Common integer types.