/* Pcsx2 - Pc Ps2 Emulator * Copyright (C) 2002-2009 Pcsx2 Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __CDVDAPI_H__ #define __CDVDAPI_H__ // Note; this header is experimental, and will be a shifting target. Only use this if you are willing to repeatedly fix breakage. /* * Based on PS2E Definitions by linuzappz@hotmail.com, * shadowpcsx2@yahoo.gr, * and florinsasu@hotmail.com */ #include "Pcsx2Api.h" /* CDVD plugin API */ // Basic functions. EXPORT_C_(s32) CDVDinit(); EXPORT_C_(s32) CDVDopen(void *pDisplay, const char* pTitleFilename); EXPORT_C_(void) CDVDclose(); EXPORT_C_(void) CDVDshutdown(); EXPORT_C_(s32) CDVDreadTrack(u32 lsn, int mode); // return can be NULL (for async modes) EXPORT_C_(u8*) CDVDgetBuffer(); EXPORT_C_(s32) CDVDreadSubQ(u32 lsn, cdvdSubQ* subq);//read subq from disc (only cds have subq data) EXPORT_C_(s32) CDVDgetTN(cdvdTN *Buffer); //disk information EXPORT_C_(s32) CDVDgetTD(u8 Track, cdvdTD *Buffer); //track info: min,sec,frame,type EXPORT_C_(s32) CDVDgetTOC(void* toc); //gets ps2 style toc from disc EXPORT_C_(s32) CDVDgetDiskType(); //CDVD_TYPE_xxxx EXPORT_C_(s32) CDVDgetTrayStatus(); //CDVD_TRAY_xxxx EXPORT_C_(s32) CDVDctrlTrayOpen(); //open disc tray EXPORT_C_(s32) CDVDctrlTrayClose(); //close disc tray // Extended functions EXPORT_C_(void) CDVDkeyEvent(keyEvent *ev); EXPORT_C_(void) CDVDconfigure(); EXPORT_C_(s32) CDVDfreeze(u8 mode, freezeData *data); EXPORT_C_(void) CDVDabout(); EXPORT_C_(s32) CDVDtest(); EXPORT_C_(void) CDVDnewDiskCB(void (*callback)()); typedef struct _cdvdSubQ { u8 ctrl:4; // control and mode bits u8 mode:4; // control and mode bits u8 trackNum; // current track number (1 to 99) u8 trackIndex; // current index within track (0 to 99) u8 trackM; // current minute location on the disc (BCD encoded) u8 trackS; // current sector location on the disc (BCD encoded) u8 trackF; // current frame location on the disc (BCD encoded) u8 pad; // unused u8 discM; // current minute offset from first track (BCD encoded) u8 discS; // current sector offset from first track (BCD encoded) u8 discF; // current frame offset from first track (BCD encoded) } cdvdSubQ; typedef struct _cdvdTD { // NOT bcd coded u32 lsn; u8 type; } cdvdTD; typedef struct _cdvdTN { u8 strack; //number of the first track (usually 1) u8 etrack; //number of the last track } cdvdTN; // CDVDreadTrack mode values: enum { CDVD_MODE_2352 0, // full 2352 bytes CDVD_MODE_2340 1, // skip sync (12) bytes CDVD_MODE_2328 2, // skip sync+head+sub (24) bytes CDVD_MODE_2048 3, // skip sync+head+sub (24) bytes CDVD_MODE_2368 4 // full 2352 bytes + 16 subq } TrackModes // CDVDgetDiskType returns: enum { CDVD_TYPE_ILLEGAL = 0xff, // Illegal Disc CDVD_TYPE_DVDV = 0xfe, // DVD Video CDVD_TYPE_CDDA = 0xfd, // Audio CD CDVD_TYPE_PS2DVD = 0x14, // PS2 DVD CDVD_TYPE_PS2CDDA = 0x13, // PS2 CD (with audio) CDVD_TYPE_PS2CD = 0x12, // PS2 CD CDVD_TYPE_PSCDDA = 0x11, // PS CD (with audio) CDVD_TYPE_PSCD = 0x10, // PS CD CDVD_TYPE_UNKNOWN = 0x05, // Unknown CDVD_TYPE_DETCTDVDD = 0x04, // Detecting Dvd Dual Sided CDVD_TYPE_DETCTDVDS = 0x03, // Detecting Dvd Single Sided CDVD_TYPE_DETCTCD = 0x02, // Detecting Cd CDVD_TYPE_DETCT = 0x01, // Detecting CDVD_TYPE_NODISC = 0x00 // No Disc } DiskType; // CDVDgetTrayStatus returns: enum { CDVD_TRAY_CLOSE = 0x00, CDVD_TRAY_OPEN = 0x01 } TrayStatus; // cdvdTD.type (track types for cds) enum { CDVD_AUDIO_TRACK = 0x01, CDVD_MODE1_TRACK = 0x41, CDVD_MODE2_TRACK = 0x61 } CDVDTDType; enum { CDVD_AUDIO_MASK = 0x00, CDVD_DATA_MASK = 0x40 // CDROM_DATA_TRACK 0x04 //do not enable this! (from linux kernel) } CDVD_Masks; #endif // __CDVDAPI_H__