This commit is contained in:
parent
ff52a51a9d
commit
6c32ee7a11
@ -46,6 +46,42 @@ int Error=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()
|
||||
{
|
||||
|
@ -16,6 +16,7 @@ public:
|
||||
|
||||
void Open();
|
||||
void Read(u32 Length,void *Buffer);
|
||||
void ReadAsync(sASyncQueue &File);
|
||||
void Close();
|
||||
|
||||
private:
|
||||
|
@ -23,6 +23,8 @@ CLOFileIO *CFileIO::FileIO;
|
||||
int CFileIO::FilePosList[FILEPOS_MAX];
|
||||
|
||||
sFAT *CFileIO::MainFAT=0;
|
||||
sASyncQueue CFileIO::ASyncQueue;
|
||||
bool CFileIO::ASyncFlag;
|
||||
|
||||
/*****************************************************************************/
|
||||
sDataBank CFileIO::DataBank[DATABANK_MAX]=
|
||||
@ -77,6 +79,8 @@ int FATSize=FileEquate_MAX*sizeof(sFAT);
|
||||
for (int Bank=0;Bank<DATABANK_MAX; Bank++) DataBank[Bank].Data=0;
|
||||
// loadDataBank(DATABANK_SYSTEM);
|
||||
// CurrentDataBank=DATABANK_MAX;
|
||||
ASyncQueue.Status=BLStatusOffline;
|
||||
ASyncFlag=false;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -335,6 +339,25 @@ int CFileIO::GetReadLeft()
|
||||
{
|
||||
return(BigLump.LengthLeft);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CFileIO::AddASyncFile(FileEquate file,u8 *Dst)
|
||||
{
|
||||
ASyncQueue.Sector = getFileSector(file);
|
||||
ASyncQueue.Length = getFileSize(file )/2048;
|
||||
ASyncQueue.Dst=Dst;
|
||||
ASyncQueue.Status=BLStatusReady;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CFileIO::LoadASyncFiles()
|
||||
{
|
||||
if (ASyncQueue.Status!=BLStatusOffline && ASyncFlag)
|
||||
{
|
||||
FileIO->ReadAsync(ASyncQueue);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*** Data Banks **************************************************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -76,6 +76,15 @@ struct sDataBank
|
||||
sFAT *Data;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
struct sASyncQueue
|
||||
{
|
||||
int Sector;
|
||||
int Length;
|
||||
u8 *Dst;
|
||||
int Status;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
class CLOFileIO;
|
||||
class CFileIO
|
||||
@ -110,6 +119,11 @@ static void FindAllFilePos();
|
||||
static void GetAllFilePos();
|
||||
static int GetReadLeft();
|
||||
|
||||
// Fake ASync Que Stuff
|
||||
static void EnableASync(bool f) {ASyncFlag=f;}
|
||||
static void AddASyncFile(FileEquate file,u8 *Dst);
|
||||
static void LoadASyncFiles();
|
||||
|
||||
private:
|
||||
static void CheckChunk();
|
||||
|
||||
@ -121,6 +135,8 @@ static sDataBank DataBank[DATABANK_MAX];
|
||||
static DataBankEquate CurrentDataBank;
|
||||
|
||||
static sFAT *MainFAT;
|
||||
static sASyncQueue ASyncQueue;
|
||||
static bool ASyncFlag;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -129,6 +145,7 @@ class CLOFileIO
|
||||
public:
|
||||
virtual void Open()=0;
|
||||
virtual void Read(u32 Length,void *Buffer)=0;
|
||||
virtual void ReadAsync(sASyncQueue &File){};
|
||||
virtual void Close()=0;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user