2013-12-19 17:10:14 +00:00
|
|
|
// nullGDR.cpp : Defines the entry point for the DLL application.
|
|
|
|
//
|
|
|
|
|
|
|
|
#include "ImgReader.h"
|
|
|
|
//Get a copy of the operators for structs ... ugly , but works :)
|
|
|
|
#include "common.h"
|
|
|
|
|
|
|
|
void GetSessionInfo(u8* out,u8 ses);
|
|
|
|
|
|
|
|
void libGDR_ReadSubChannel(u8 * buff, u32 format, u32 len)
|
|
|
|
{
|
|
|
|
if (format==0)
|
|
|
|
{
|
|
|
|
memcpy(buff,q_subchannel,len);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void libGDR_ReadSector(u8 * buff,u32 StartSector,u32 SectorCount,u32 secsz)
|
|
|
|
{
|
|
|
|
GetDriveSector(buff,StartSector,SectorCount,secsz);
|
|
|
|
//if (CurrDrive)
|
|
|
|
// CurrDrive->ReadSector(buff,StartSector,SectorCount,secsz);
|
|
|
|
}
|
|
|
|
|
|
|
|
void libGDR_GetToc(u32* toc,u32 area)
|
|
|
|
{
|
2013-12-24 00:56:44 +00:00
|
|
|
GetDriveToc(toc,(DiskArea)area);
|
2013-12-19 17:10:14 +00:00
|
|
|
}
|
2019-07-30 17:04:51 +00:00
|
|
|
|
|
|
|
u32 libGDR_GetTrackNumber(u32 sector, u32& elapsed)
|
|
|
|
{
|
|
|
|
for (int i = 0; i < disc->tracks.size(); i++)
|
|
|
|
if (disc->tracks[i].StartFAD <= sector && (sector <= disc->tracks[i].EndFAD || disc->tracks[i].EndFAD == 0))
|
|
|
|
{
|
|
|
|
elapsed = sector - disc->tracks[i].StartFAD;
|
|
|
|
return i + 1;
|
|
|
|
}
|
|
|
|
elapsed = 0;
|
|
|
|
return 0xAA;
|
|
|
|
}
|
|
|
|
|
2019-07-31 20:08:56 +00:00
|
|
|
bool libGDR_GetTrack(u32 track_num, u32& start_fad, u32& end_fad)
|
|
|
|
{
|
|
|
|
if (track_num == 0 || track_num > disc->tracks.size())
|
|
|
|
return false;
|
|
|
|
start_fad = disc->tracks[track_num - 1].StartFAD;
|
|
|
|
end_fad = disc->tracks[track_num - 1].EndFAD;
|
|
|
|
if (end_fad == 0)
|
|
|
|
{
|
|
|
|
if (track_num == disc->tracks.size())
|
|
|
|
end_fad = disc->LeadOut.StartFAD - 1;
|
|
|
|
else
|
|
|
|
end_fad = disc->tracks[track_num].StartFAD - 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2013-12-19 17:10:14 +00:00
|
|
|
//TODO : fix up
|
|
|
|
u32 libGDR_GetDiscType()
|
|
|
|
{
|
|
|
|
if (disc)
|
|
|
|
return disc->type;
|
|
|
|
else
|
|
|
|
return NullDriveDiscType;
|
|
|
|
}
|
|
|
|
|
|
|
|
void libGDR_GetSessionInfo(u8* out,u8 ses)
|
|
|
|
{
|
|
|
|
GetDriveSessionInfo(out,ses);
|
|
|
|
}
|
|
|
|
|
2019-07-10 15:25:11 +00:00
|
|
|
//It's supposed to reset everything (if not a soft reset)
|
|
|
|
void libGDR_Reset(bool hard)
|
2013-12-19 17:10:14 +00:00
|
|
|
{
|
|
|
|
libCore_gdrom_disc_change();
|
|
|
|
}
|
|
|
|
|
2013-12-24 00:56:44 +00:00
|
|
|
//called when entering sh4 thread , from the new thread context (for any thread specific init)
|
2013-12-19 17:10:14 +00:00
|
|
|
s32 libGDR_Init()
|
|
|
|
{
|
|
|
|
libCore_gdrom_disc_change();
|
2019-07-09 21:52:19 +00:00
|
|
|
settings.imgread.PatchRegion = true;
|
2013-12-19 17:10:14 +00:00
|
|
|
return rv_ok;
|
|
|
|
}
|
|
|
|
|
2013-12-24 00:56:44 +00:00
|
|
|
//called when exiting from sh4 thread , from the new thread context (for any thread specific init) :P
|
2013-12-19 17:10:14 +00:00
|
|
|
void libGDR_Term()
|
|
|
|
{
|
|
|
|
TermDrive();
|
|
|
|
}
|