/* Automatically generated header! Do not edit! */

#ifndef _PPCINLINE_CDDA_H
#define _PPCINLINE_CDDA_H

#ifndef __PPCINLINE_MACROS_H
#include <ppcinline/macros.h>
#endif /* !__PPCINLINE_MACROS_H */

#ifndef CDDA_BASE_NAME
#define CDDA_BASE_NAME CDDABase
#endif /* !CDDA_BASE_NAME */

#define CDDA_AllocRequest(Type, TagList) \
	LP2(0x7e, APTR, CDDA_AllocRequest, ULONG, Type, d0, struct TagItem *, TagList, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define CDDA_AllocRequestTags(a0, ...) \
	({ULONG _tags[] = { __VA_ARGS__ }; CDDA_AllocRequest((a0), (struct TagItem *)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define CDDA_EjectTray(CDrive) \
	LP1(0x6c, BOOL, CDDA_EjectTray, CDRIVEPTR, CDrive, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_FastForward(CDrive) \
	LP1(0x72, BOOL, CDDA_FastForward, CDRIVEPTR, CDrive, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_FastRewind(CDrive) \
	LP1(0x78, BOOL, CDDA_FastRewind, CDRIVEPTR, CDrive, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_FindNextDrive(CDrive, TagList) \
	LP2(0x1e, CDRIVEPTR, CDDA_FindNextDrive, CDRIVEPTR, CDrive, a0, struct TagItem *, TagList, a1, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define CDDA_FindNextDriveTags(a0, ...) \
	({ULONG _tags[] = { __VA_ARGS__ }; CDDA_FindNextDrive((a0), (struct TagItem *)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define CDDA_FramesToMSF(Frames, MSFStruct) \
	LP2NR(0x30, CDDA_FramesToMSF, ULONG, Frames, d0, struct CDS_MSF *, MSFStruct, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_FreeRequest(Req) \
	LP1NR(0x8a, CDDA_FreeRequest, APTR, Req, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_GetAttr(Id, CDrive, Attr) \
	LP3(0x42, ULONG, CDDA_GetAttr, ULONG, Id, d0, CDRIVEPTR, CDrive, a0, ULONG *, Attr, a1, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_GetTrackInfo(CDrive, Track, Flags, Result) \
	LP4(0x48, BOOL, CDDA_GetTrackInfo, CDRIVEPTR, CDrive, a0, ULONG, Track, d0, ULONG, Flags, d1, struct CDS_TrackInfo *, Result, a1, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_LoadTray(CDrive) \
	LP1(0x66, BOOL, CDDA_LoadTray, CDRIVEPTR, CDrive, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_MSFToFrames(Min, Sec, Frames) \
	LP3(0x2a, ULONG, CDDA_MSFToFrames, UWORD, Min, d0, UWORD, Sec, d1, UWORD, Frames, d2, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_NumDrives() \
	LP0(0x24, ULONG, CDDA_NumDrives, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_ObtainDrive(CDrive, Access, TagList) \
	LP3(0x36, BOOL, CDDA_ObtainDrive, CDRIVEPTR, CDrive, a0, ULONG, Access, d0, struct TagItem *, TagList, a1, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define CDDA_ObtainDriveTags(a0, a1, ...) \
	({ULONG _tags[] = { __VA_ARGS__ }; CDDA_ObtainDrive((a0), (a1), (struct TagItem *)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define CDDA_Pause(CDrive) \
	LP1(0x54, BOOL, CDDA_Pause, CDRIVEPTR, CDrive, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_Play(CDrive, TagList) \
	LP2(0x4e, BOOL, CDDA_Play, CDRIVEPTR, CDrive, a0, struct TagItem *, TagList, a1, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define CDDA_PlayTags(a0, ...) \
	({ULONG _tags[] = { __VA_ARGS__ }; CDDA_Play((a0), (struct TagItem *)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define CDDA_ReleaseDrive(CDrive) \
	LP1NR(0x3c, CDDA_ReleaseDrive, CDRIVEPTR, CDrive, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_Request(Req, TagList) \
	LP2(0x84, LONG, CDDA_Request, APTR, Req, a0, struct TagItem *, TagList, a1, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#ifndef NO_PPCINLINE_STDARG
#define CDDA_RequestTags(a0, ...) \
	({ULONG _tags[] = { __VA_ARGS__ }; CDDA_Request((a0), (struct TagItem *)_tags);})
#endif /* !NO_PPCINLINE_STDARG */

#define CDDA_Resume(CDrive) \
	LP1(0x5a, BOOL, CDDA_Resume, CDRIVEPTR, CDrive, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#define CDDA_Stop(CDrive) \
	LP1(0x60, BOOL, CDDA_Stop, CDRIVEPTR, CDrive, a0, \
	, CDDA_BASE_NAME, IF_CACHEFLUSHALL, NULL, 0, IF_CACHEFLUSHALL, NULL, 0)

#endif /* !_PPCINLINE_CDDA_H */
