mirror of https://github.com/PCSX2/pcsx2.git
214 lines
5.4 KiB
C
214 lines
5.4 KiB
C
/***************************************************************************
|
|
defines.h - description
|
|
-------------------
|
|
begin : Wed Sep 18 2002
|
|
copyright : (C) 2002 by Pete Bernert
|
|
email : BlackDove@addcom.de
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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. See also the license.txt file for *
|
|
* additional informations. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
//*************************************************************************//
|
|
// History of changes:
|
|
//
|
|
// 2002/09/19 - Pete
|
|
// - generic cleanup for the Peops release
|
|
//
|
|
//*************************************************************************//
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
// general buffer for reading several frames
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef struct _FRAMEBUF
|
|
{
|
|
DWORD dwFrame;
|
|
DWORD dwFrameCnt;
|
|
DWORD dwBufLen;
|
|
unsigned char BufData[1024*1024];
|
|
} FRAMEBUF;
|
|
|
|
#pragma pack()
|
|
|
|
// raw ioctl structs:
|
|
|
|
typedef enum _TRACK_MODE_TYPE
|
|
{
|
|
YellowMode2,
|
|
XAForm2,
|
|
CDDA
|
|
} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE;
|
|
|
|
typedef struct _RAW_READ_INFO
|
|
{
|
|
LARGE_INTEGER DiskOffset;
|
|
ULONG SectorCount;
|
|
TRACK_MODE_TYPE TrackMode;
|
|
} RAW_READ_INFO, *PRAW_READ_INFO;
|
|
|
|
// sub cache:
|
|
|
|
typedef struct
|
|
{
|
|
long addr;
|
|
void * pNext;
|
|
unsigned char subq[10];
|
|
} SUB_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
long addr;
|
|
void * pNext;
|
|
} SUB_CACHE;
|
|
|
|
// ppf cache:
|
|
|
|
typedef struct
|
|
{
|
|
long addr;
|
|
void * pNext;
|
|
long pos;
|
|
long anz;
|
|
// memdata
|
|
} PPF_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
long addr;
|
|
void * pNext;
|
|
} PPF_CACHE;
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
#define MODE_BE_1 1
|
|
#define MODE_BE_2 2
|
|
#define MODE_28_1 3
|
|
#define MODE_28_2 4
|
|
#define MODE_28_2048 5
|
|
#define MODE_28_2048_Ex 6
|
|
|
|
u8 __inline itob(u32 i);
|
|
|
|
#define btoi(b) ((b)/16*10 + (b)%16)
|
|
#define itod(i) ((((i)/10)<<4) + ((i)%10))
|
|
#define dtoi(b) ((((b)>>4)&0xf)*10 + (((b)&0xf)%10))
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
void addr2time(unsigned long addr, unsigned char *time);
|
|
void addr2timeB(unsigned long addr, unsigned char *time);
|
|
unsigned long time2addr(unsigned char *time);
|
|
unsigned long time2addrB(unsigned char *time);
|
|
#ifdef _GCC
|
|
#define reOrder i386_reOrder
|
|
#endif
|
|
unsigned long reOrder(unsigned long value);
|
|
|
|
/////////////////////////////////////////////////////////
|
|
// debug helper
|
|
|
|
#ifndef _IN_CDR
|
|
#ifdef DBGOUT
|
|
void auxprintf (LPCTSTR pFormat, ...);
|
|
#endif
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
typedef DWORD (*READFUNC)(BOOL bWait,FRAMEBUF * f);
|
|
typedef DWORD (*DEINITFUNC)(void);
|
|
typedef BOOL (*READTRACKFUNC)(unsigned long addr);
|
|
typedef void (*GETPTRFUNC)(void);
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
#define WAITFOREVER 0xFFFFFFFF
|
|
#define WAITSUB 10000
|
|
#define FRAMEBUFEXTRA 12
|
|
#define CDSECTOR 2352
|
|
#define MAXCACHEBLOCK 26
|
|
#define MAXCDBUFFER (((MAXCACHEBLOCK+1)*(CDSECTOR+16))+240)
|
|
|
|
/////////////////////////////////////////////////////////
|
|
|
|
/* some structs from libcdvd by Hiryu & Sjeep (C) 2002 */
|
|
|
|
#pragma pack(1)
|
|
|
|
struct rootDirTocHeader
|
|
{
|
|
u16 length; //+00
|
|
u32 tocLBA; //+02
|
|
u32 tocLBA_bigend; //+06
|
|
u32 tocSize; //+0A
|
|
u32 tocSize_bigend; //+0E
|
|
u8 dateStamp[8]; //+12
|
|
u8 reserved[6]; //+1A
|
|
u8 reserved2; //+20
|
|
u8 reserved3; //+21
|
|
}; //+22
|
|
|
|
struct asciiDate
|
|
{
|
|
char year[4];
|
|
char month[2];
|
|
char day[2];
|
|
char hours[2];
|
|
char minutes[2];
|
|
char seconds[2];
|
|
char hundreths[2];
|
|
char terminator[1];
|
|
};
|
|
|
|
struct cdVolDesc
|
|
{
|
|
u8 filesystemType; // 0x01 = ISO9660, 0x02 = Joliet, 0xFF = NULL
|
|
u8 volID[5]; // "CD001"
|
|
u8 reserved2;
|
|
u8 reserved3;
|
|
u8 sysIdName[32];
|
|
u8 volName[32]; // The ISO9660 Volume Name
|
|
u8 reserved5[8];
|
|
u32 volSize; // Volume Size
|
|
u32 volSizeBig; // Volume Size Big-Endian
|
|
u8 reserved6[32];
|
|
u32 unknown1;
|
|
u32 unknown1_bigend;
|
|
u16 volDescSize; //+80
|
|
u16 volDescSize_bigend; //+82
|
|
u32 unknown3; //+84
|
|
u32 unknown3_bigend; //+88
|
|
u32 priDirTableLBA; // LBA of Primary Dir Table //+8C
|
|
u32 reserved7; //+90
|
|
u32 secDirTableLBA; // LBA of Secondary Dir Table //+94
|
|
u32 reserved8; //+98
|
|
struct rootDirTocHeader rootToc;
|
|
u8 volSetName[128];
|
|
u8 publisherName[128];
|
|
u8 preparerName[128];
|
|
u8 applicationName[128];
|
|
u8 copyrightFileName[37];
|
|
u8 abstractFileName[37];
|
|
u8 bibliographyFileName[37];
|
|
struct asciiDate creationDate;
|
|
struct asciiDate modificationDate;
|
|
struct asciiDate effectiveDate;
|
|
struct asciiDate expirationDate;
|
|
u8 reserved10;
|
|
u8 reserved11[1166];
|
|
};
|
|
|
|
#pragma pack()
|
|
|
|
|