internal void Sort(FolderAsset parent, string name, int fileNameBaseOffset, byte[] fileNames)
{
int fileNameOffset = FileNameOffset - fileNameBaseOffset;
int fileIndex = FileIndex;
if (Used)
throw new InvalidDataException();
Used = true;
Parent = parent;
Name = name;
while (true) {
byte nameCode = fileNames[fileNameOffset++];
if (nameCode == 0)
break;
byte nameLength = (byte)(nameCode & 0x7F);
bool isFolder = (nameCode & 0x80) != 0;
string childName = Encoding.ASCII.GetString(fileNames, fileNameOffset, nameLength);
fileNameOffset += nameLength;
if (isFolder) {
int folderIndex = fileNames[fileNameOffset++] + (fileNames[fileNameOffset++] << 8);
RomFolder folder = Rom.Folders[folderIndex & 0xFFF];
folder.Unknown2 = (byte)(folderIndex >> 12);
if (folder.Unknown2 != 15) {
}
folder.Sort(this, childName, fileNameBaseOffset, fileNames);
} else {
RomFile file = Rom.Files[fileIndex++];
file.Sort(this, childName);
}
}
}