public override void Load(ExtendedBinaryReader fileReader, bool keepOpen = false)
        {
            // Read STSC
            base.Load(fileReader);

            StreamBlock block;

            // System text
            block = GetStreamBlockAndJump(0, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                SystemText.Add(fileReader.ReadStringElsewhere());
            }

            // CGs
            block = GetStreamBlockAndJump(1, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                CGs.Add(fileReader.ReadStruct <CGEntry>());
            }

            // Movies
            block = GetStreamBlockAndJump(2, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                Movies.Add(fileReader.ReadStruct <MovieEntry>());
            }

            // Memories
            block = GetStreamBlockAndJump(3, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                Memories.Add(fileReader.ReadStruct <MemoryEntry>());
            }

            // Characters
            block = GetStreamBlockAndJump(4, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                Characters.Add(fileReader.ReadStruct <CharacterEntry>());
            }

            // Unknown2
            block = GetStreamBlockAndJump(5, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                Unknown2.Add(fileReader.ReadStruct <Unknown2Entry>());
            }

            // Unknown3
            block = GetStreamBlockAndJump(6, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                Unknown3.Add(fileReader.ReadStruct <Unknown3Entry>());
            }

            // Voices
            block = GetStreamBlockAndJump(7, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                Voices.Add(fileReader.ReadStruct <VoiceEntry>());
            }

            // Unknown4
            block = GetStreamBlockAndJump(8, fileReader);
            while (!EndOfBlock(fileReader, block))
            {
                Unknown4.Add(fileReader.ReadStruct <Unknown4Entry>());
            }

            // Older versions may not include art books and drama CDs
            if (Version == 7)
            {
                // Art Book Page
                block = GetStreamBlockAndJump(9, fileReader);
                while (!EndOfBlock(fileReader, block))
                {
                    ArtBookPages.Add(fileReader.ReadStruct <ArtBookPageEntry>());
                }

                // DramaCDs
                block = GetStreamBlockAndJump(10, fileReader);
                while (!EndOfBlock(fileReader, block))
                {
                    DramaCDs.Add(fileReader.ReadStruct <DramaCDEntry>());
                }
            }
        }