CSPspEmu.Core.NandReader.Read C# (CSharp) Method

Read() public method

public Read ( byte buffer, int offset, int count ) : int
buffer byte
offset int
count int
return int
        public override int Read(byte[] buffer, int offset, int count)
        {
            if (Position >= Length)
            {
                return 0;
            }

            var PageOffset = (int)(Position % BytesPerPage);
            var ToRead = (BytesPerPage - PageOffset);

            if (count > ToRead)
            {
                int Read1 = Read(buffer, offset, ToRead);
                int Read2 = Read(buffer, offset + ToRead, count - ToRead);
                return Read1 + Read2;
            }

            var PageIndex = (int)(Position / BytesPerPage);

            if (PageIndex != LastPageIndex)
            {
                LastPageIndex = PageIndex;
                LastPageData = ReadPage(PageIndex);
            }

            byte[] PageData = LastPageData;

            Array.Copy(PageData, PageOffset, buffer, offset, count);

            Position += count;

            return count;
        }