Alexandria.Platforms.NintendoDS.Rom.ReadIconAndTitle C# (CSharp) 메소드

ReadIconAndTitle() 개인적인 메소드

private ReadIconAndTitle ( int iconAndTitleOffset ) : void
iconAndTitleOffset int
리턴 void
        void ReadIconAndTitle(int iconAndTitleOffset)
        {
            if (iconAndTitleOffset == 0)
                return;

            // Read the palette.
            Reader.BaseStream.Position = iconAndTitleOffset + 0x220;
            Color[] colors = new Color[16];
            for (int index = 0; index < 16; index++)
                Reader.ReadNDSColor(forceTransparent: index == 0);
            PaletteAsset palette = new PaletteAsset(Manager, "Icon palette", colors);

            // Read the icon.
            Reader.BaseStream.Position = iconAndTitleOffset + 0x20;
            Vector2i iconSize = new Vector2i(32, 32);
            Vector2i tileSize = iconSize / 8;
            int[] indices = new int[iconSize.X * iconSize.Y];

            for (Vector2i tile = Vector2i.Zero; tile.Y < tileSize.Y; tile.Y++) {
                for (tile.X = 0; tile.X < tileSize.X; tile.X++) {
                    for (Vector2i pixel = Vector2i.Zero; pixel.Y < 8; pixel.Y++) {
                        for (pixel.X = 0; pixel.X < 4; pixel.X++) {
                            int x = pixel.X + tile.X * 4;
                            int y = pixel.Y + tile.Y * 8;
                            int offset = x + y * iconSize.X;
                            byte pair = Reader.ReadByte();

                            indices[offset + 0] = pair & 0x0F;
                            indices[offset + 1] = pair >> 4;
                        }
                    }
                }
            }

            Icon = new IndexedTextureAsset(Manager, "Icon", palette, iconSize.X, iconSize.Y, indices);

            // Read the title.
            Name = Reader.ReadStringzAt(iconAndTitleOffset + 0x240, Encoding.Unicode);
            TitleEnglish = Reader.ReadStringzAt(iconAndTitleOffset + 0x340, Encoding.Unicode);
            TitleFrench = Reader.ReadStringzAt(iconAndTitleOffset + 0x440, Encoding.Unicode);
            TitleGerman = Reader.ReadStringzAt(iconAndTitleOffset + 0x540, Encoding.Unicode);
            TitleItalian = Reader.ReadStringzAt(iconAndTitleOffset + 0x640, Encoding.Unicode);
            TitleSpanish = Reader.ReadStringzAt(iconAndTitleOffset + 0x740, Encoding.Unicode);
        }