mirror of https://github.com/PCSX2/pcsx2.git
Backport the NRG fix to trunk.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5490 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
4a27edc8a3
commit
2fed2964f5
|
@ -31,8 +31,9 @@ public:
|
||||||
|
|
||||||
virtual uint GetBlockCount(void) const=0;
|
virtual uint GetBlockCount(void) const=0;
|
||||||
|
|
||||||
virtual void SetBlockSize(uint bytes) {}
|
virtual void SetBlockSize(uint bytes) {}
|
||||||
|
virtual void SetDataOffset(uint bytes) {}
|
||||||
|
|
||||||
uint GetBlockSize() const { return m_blocksize; }
|
uint GetBlockSize() const { return m_blocksize; }
|
||||||
|
|
||||||
const wxString& GetFilename() const
|
const wxString& GetFilename() const
|
||||||
|
@ -73,8 +74,9 @@ public:
|
||||||
virtual void Close(void);
|
virtual void Close(void);
|
||||||
|
|
||||||
virtual uint GetBlockCount(void) const;
|
virtual uint GetBlockCount(void) const;
|
||||||
|
|
||||||
void SetBlockSize(uint bytes) { m_blocksize = bytes; }
|
virtual void SetBlockSize(uint bytes) { m_blocksize = bytes; }
|
||||||
|
virtual void SetDataOffset(uint bytes) { m_dataoffset = bytes; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class MultipartFileReader : public AsyncFileReader
|
class MultipartFileReader : public AsyncFileReader
|
||||||
|
@ -110,7 +112,7 @@ public:
|
||||||
|
|
||||||
virtual uint GetBlockCount(void) const;
|
virtual uint GetBlockCount(void) const;
|
||||||
|
|
||||||
void SetBlockSize(uint bytes);
|
virtual void SetBlockSize(uint bytes);
|
||||||
|
|
||||||
static AsyncFileReader* DetectMultipart(AsyncFileReader* reader);
|
static AsyncFileReader* DetectMultipart(AsyncFileReader* reader);
|
||||||
};
|
};
|
||||||
|
|
|
@ -234,7 +234,8 @@ bool InputIsoFile::Open( const wxString& srcfile, bool testOnly )
|
||||||
if(!isBlockdump)
|
if(!isBlockdump)
|
||||||
{
|
{
|
||||||
ReadUnit = MaxReadUnit;
|
ReadUnit = MaxReadUnit;
|
||||||
|
|
||||||
|
m_reader->SetDataOffset(m_offset);
|
||||||
m_reader->SetBlockSize(m_blocksize);
|
m_reader->SetBlockSize(m_blocksize);
|
||||||
|
|
||||||
// Returns the original reader if single-part or a Multipart reader otherwise
|
// Returns the original reader if single-part or a Multipart reader otherwise
|
||||||
|
@ -277,7 +278,8 @@ bool InputIsoFile::tryIsoType(u32 _size, s32 _offset, s32 _blockofs)
|
||||||
m_blocksize = _size;
|
m_blocksize = _size;
|
||||||
m_offset = _offset;
|
m_offset = _offset;
|
||||||
m_blockofs = _blockofs;
|
m_blockofs = _blockofs;
|
||||||
|
|
||||||
|
m_reader->SetDataOffset(_offset);
|
||||||
m_reader->SetBlockSize(_size);
|
m_reader->SetBlockSize(_size);
|
||||||
|
|
||||||
if(ReadSync(buf, 16) < 0)
|
if(ReadSync(buf, 16) < 0)
|
||||||
|
@ -331,6 +333,7 @@ bool InputIsoFile::Detect( bool readType )
|
||||||
m_blockofs = 0;
|
m_blockofs = 0;
|
||||||
m_type = ISOTYPE_AUDIO;
|
m_type = ISOTYPE_AUDIO;
|
||||||
|
|
||||||
|
m_reader->SetDataOffset(m_offset);
|
||||||
m_reader->SetBlockSize(m_blocksize);
|
m_reader->SetBlockSize(m_blocksize);
|
||||||
|
|
||||||
//BUG: This also detects a memory-card-file as a valid Audio-CD ISO... -avih
|
//BUG: This also detects a memory-card-file as a valid Audio-CD ISO... -avih
|
||||||
|
|
|
@ -34,7 +34,7 @@ int FlatFileReader::ReadSync(void* pBuffer, uint sector, uint count)
|
||||||
void FlatFileReader::BeginRead(void* pBuffer, uint sector, uint count)
|
void FlatFileReader::BeginRead(void* pBuffer, uint sector, uint count)
|
||||||
{
|
{
|
||||||
u64 offset;
|
u64 offset;
|
||||||
offset = sector * (u64)m_blocksize;
|
offset = sector * (u64)m_blocksize + m_dataoffset;
|
||||||
|
|
||||||
u32 bytesToRead = count * m_blocksize;
|
u32 bytesToRead = count * m_blocksize;
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ int FlatFileReader::ReadSync(void* pBuffer, uint sector, uint count)
|
||||||
void FlatFileReader::BeginRead(void* pBuffer, uint sector, uint count)
|
void FlatFileReader::BeginRead(void* pBuffer, uint sector, uint count)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER offset;
|
LARGE_INTEGER offset;
|
||||||
offset.QuadPart = sector * (__int64)m_blocksize;
|
offset.QuadPart = sector * (s64)m_blocksize + m_dataoffset;
|
||||||
|
|
||||||
DWORD bytesToRead = count * m_blocksize;
|
DWORD bytesToRead = count * m_blocksize;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue