/***********************************/ /*** PSX CD BigLump FileIO Stuff ***/ /***********************************/ #include "system\global.h" #include "fileio\fileio.h" #include "fileio\cdfile.h" #include #include "system\vid.h" #include "sound\cdxa.h" /*****************************************************************************/ CCDFileIO::CCDFileIO(u32 FilePos,sBigLump *BigLumpPtr) { // DbgMsg0("CD FILE SYSTEM\n"); while (!CdInit()); #if !defined(__USER_CDBUILD__) CFileIO::FindAllFilePos(); #endif BigLump=BigLumpPtr; FileStart=CFileIO::GetFilePos(FILEPOS_BIGLUMP); CXAStream::SetSector(CFileIO::GetFilePos(FILEPOS_TRACK1)); } /*****************************************************************************/ void CCDFileIO::Open() { } /*****************************************************************************/ void CCDFileIO::Read(u32 Count,void *Dst) { u8 Com=CdlModeSpeed; int Error=0; // seek while (!Error) { CdIntToPos(BigLump->Sector+FileStart,&CdPos); CdControlB(CdlSetloc, (u8*)&CdPos, 0); // Set CD Pos CdControlB(CdlSetmode, &Com, 0); Error=CdRead(Count, (u32*)Dst, CdlModeSpeed); } while (CdReadSync(1,0) > 0); BigLump->Sector+=Count; } /*****************************************************************************/ void CCDFileIO::ReadAsync(sASyncQueue &File) { u8 Com=CdlModeSpeed; static int Error=0; /* switch(File.Status) { case BLStatusReady: CdIntToPos(File.Sector+FileStart,&CdPos); CdControlF(CdlSetloc, (u8*)&CdPos); // Set CD Pos File.Status=BLStatusOpen; break; case BLStatusOpen: if (CdReadSync(1,0) > 0) return; CdControlB(CdlSetmode, &Com,0); CdRead(File.Length, (u32*)File.Dst, CdlModeSpeed); File.Status=BLStatusRead; break; case BLStatusRead: if (CdReadSync(1,0) > 0) return; File.Status=BLStatusOffline; break; } */ CdIntToPos(File.Sector+FileStart,&CdPos); CdControlB(CdlSetloc, (u8*)&CdPos, 0); // Set CD Pos CdControlB(CdlSetmode, &Com, 0); Error=CdRead(File.Length, (u32*)File.Dst, CdlModeSpeed); if (Error!=0) File.Status=BLStatusOffline; } /*****************************************************************************/ void CCDFileIO::Close() { }