Пример #1
0
        internal SaveFiles(Reader reader)
        {
            SaveFile = 1;
            for (int i = 0; i < FileSize / 4; i++)
            {
                SaveRAM[i] = reader.ReadInt32();
            }

            for (int i = 48; i < 173; i++)
            {
                int mins  = SaveRAM[i] / 6000;
                int secs  = SaveRAM[i] / 100 % 60;
                int msecs = SaveRAM[i] % 100;

                i++;
                Console.WriteLine(mins + "'" + secs + "\"" + msecs);
            }

            reader.Close();
        }
Пример #2
0
            public DirInfo(Reader reader)
            {
                byte ss = reader.ReadByte();

                char   buf             = ',';
                string DecryptedString = "";

                for (int i = 0; i < ss; i++)
                {
                    byte b      = reader.ReadByte();
                    int  bufInt = (int)b;

                    bufInt ^= 0xFF - ss;

                    buf             = (char)bufInt;
                    DecryptedString = DecryptedString + buf;
                }
                Directory = DecryptedString;
                //Console.WriteLine(Directory);
                Address = reader.ReadInt32();
            }
Пример #3
0
        public DataFile(Reader reader)
        {
            headerSize = reader.ReadInt32();
            //Console.WriteLine("Header Size = " + headerSize);

            int dircount = reader.ReadUInt16();

            //Console.WriteLine("Directory Count = " + dircount);

            Directories = new List <DirInfo>();

            for (int d = 0; d < dircount; d++)
            {
                Directories.Add(new DirInfo(reader));
            }

            for (int d = 0; d < dircount; d++)
            {
                if ((d + 1) < Directories.Count())
                {
                    while (reader.Position - headerSize < Directories[d + 1].Address && !reader.IsEof)
                    {
                        FileInfo f = new FileInfo(reader);
                        f.FullFileName = Directories[d].Directory + f.FileName;
                        Files.Add(f);
                    }
                }
                else
                {
                    while (!reader.IsEof)
                    {
                        FileInfo f = new FileInfo(reader);
                        f.FullFileName = Directories[d].Directory + f.FileName;
                        Files.Add(f);
                    }
                }
            }
            reader.Close();
        }
Пример #4
0
 public GlobalVariable(Reader reader)
 {
     Name = reader.ReadString();
     Console.WriteLine(Name);
     Value = reader.ReadInt32();
 }
Пример #5
0
            internal TileConfig(Reader reader)
            {
                v3 = reader.ReadInt32();
                Console.WriteLine(Convert.ToString(v3, 2));
                v4 = (byte)v3 >> 4;
                Console.WriteLine(Convert.ToString(v4, 2));
                int UnknownByte1; //Likley the config bytes
                int UnknownDWORD1;

                //int UnknownDWORD2;
                //int UnknownDWORD3;
                //int UnknownDWORD4;

                UnknownByte1 = v3 & 0xF;
                //Console.WriteLine(Convert.ToString(UnknownByte1, 2));
                v3            = reader.ReadInt32();
                UnknownDWORD1 = v3;
                //Console.WriteLine(Convert.ToString(UnknownDWORD1, 2));
                v3             = reader.ReadByte();
                UnknownDWORD1 += v3 << 8;
                //Console.WriteLine(Convert.ToString(UnknownDWORD1, 2));
                v3             = reader.ReadByte();
                UnknownDWORD1 += v3 << 16;
                //Console.WriteLine(Convert.ToString(UnknownDWORD1, 2));
                v3             = reader.ReadByte();
                UnknownDWORD1 += v3 << 24;
                //Console.WriteLine(Convert.ToString(UnknownDWORD1, 2));
                if (v4 != 0)
                {
                    for (k = 0; k < 16; k += 2)
                    {
                        v3 = reader.ReadByte();
                        int b  = v3 >> 4;
                        int b2 = v3 & 0xF;
                        Console.WriteLine(Convert.ToString(b, 2) + " " + Convert.ToString(b2, 2));
                    }

                    v3 = reader.ReadByte();
                    v2 = 1;
                    int Unknown1;
                    int Unknown2;
                    for (k = 0; k < 8; k++)
                    {
                        if ((byte)(v2 & v3) >= 1)
                        {
                            Unknown1 = 0;
                        }
                        else
                        {
                            Unknown1 = 64;
                            Unknown2 = -64;
                        }
                        v2 = ExtensionMethods.LowByte(v2);
                        v2 = 2 * v2;
                    }

                    v3 = reader.ReadByte();
                    v2 = 1;
                    int Unknown3;
                    int Unknown4 = 0;
                    for (k = 0; k < 8; k++)
                    {
                        if ((byte)(v2 & v3) >= 1)
                        {
                            Unknown3 = 0;
                        }
                        else
                        {
                            Unknown3 = 64;
                            Unknown4 = -64;
                        }
                        v2 = ExtensionMethods.LowByte(v2);
                        v2 = 2 * v2;
                    }

                    v3 = 0;
                    byte Unknown5;
                    int  Unknown6;
                    while ((byte)v3 < 16)
                    {
                        k = 0;
                        while (k > -1)
                        {
                            if (k == 16)
                            {
                                Unknown5 = 64;
                                k        = -1;
                            }
                            else if ((byte)v3 > (int)Unknown4)
                            {
                                ++k;
                            }
                            else
                            {
                                Unknown5 = (byte)k;
                                k        = -1;
                            }
                        }
                        v3 = ExtensionMethods.LowByte(v3);
                        v3 = v3 + 1;
                    }
                    v3 = 0;
                    while ((byte)v3 < 16)
                    {
                        k = 15;
                        while (k < 16)
                        {
                            if (k == -1)
                            {
                                Unknown6 = -64;
                                k        = 16;
                            }
                            else if ((byte)v3 > Unknown4)
                            {
                                --k;
                            }
                            else
                            {
                                Unknown6 = (byte)k;
                                k        = 16;
                            }
                        }
                        v3 = ExtensionMethods.LowByte(v3);
                        v3 = v3 + 1;
                    }
                }
            }
Пример #6
0
        public void read(Reader reader)
        {
            reader.ReadInt16(); // "BM"
            reader.ReadInt32(); // totalFileSize
            reader.ReadInt32(); // Unused
            int pixelPos = reader.ReadInt32();

            reader.seek(14 + 4, System.IO.SeekOrigin.Begin);

            width  = reader.ReadByte();
            width |= reader.ReadByte() << 8;
            width |= reader.ReadByte() << 16;
            width |= reader.ReadByte() << 24;

            height  = reader.ReadByte();
            height |= reader.ReadByte() << 8;
            height |= reader.ReadByte() << 16;
            height |= reader.ReadByte() << 24;

            reader.BaseStream.Position += sizeof(ushort);
            bool indexed = reader.ReadUInt16() <= 8; //bpp

            if (!indexed)
            {
                throw new Exception("RSDK-Formatted Bitmap files must be indexed!");
            }

            reader.BaseStream.Position += 4 * sizeof(int);
            int clrCount = reader.ReadInt32(); // how many colours used

            reader.seek(14 + 40, System.IO.SeekOrigin.Begin);

            for (int c = 0; c < clrCount; c++)
            {
                palette[c].B = reader.ReadByte();
                palette[c].G = reader.ReadByte();
                palette[c].R = reader.ReadByte();
                reader.ReadByte(); // unused
            }

            long expectedPixelPos = (reader.BaseStream.Length - height * width);

            if (pixelPos != expectedPixelPos)
            {
                throw new Exception("RSDK-Formatted Bitmap files must end with the pixel data!");
            }

            // This is how RSDK does it but there's a small chance it could maybe be wrong
            reader.seek(expectedPixelPos, System.IO.SeekOrigin.Begin);

            pixels = new byte[width * height];
            int gfxPos = width * (height - 1);

            for (int y = 0; y < height; ++y)
            {
                for (int x = 0; x < width; ++x)
                {
                    pixels[gfxPos++] = reader.ReadByte();
                }
                gfxPos -= 2 * width;
            }

            reader.Close();
        }
Пример #7
0
            public void read(Reader reader, ushort width, ushort height)
            {
                int frameSize = reader.ReadInt32();

                byte[] gifData = new byte[frameSize + 13];

                // Write Header
                gifData[0] = (byte)'G';
                gifData[1] = (byte)'I';
                gifData[2] = (byte)'F';
                gifData[3] = (byte)'8';
                gifData[4] = (byte)'9';
                gifData[5] = (byte)'a';

                byte[] bytes = BitConverter.GetBytes(width);
                gifData[6] = bytes[0];
                gifData[7] = bytes[1];

                bytes      = BitConverter.GetBytes(height);
                gifData[8] = bytes[0];
                gifData[9] = bytes[1];

                // 1 == hasColours, 6 == paletteSize of 128, 7 == 8bpp
                gifData[10] = (1 << 7) | (6 << 4) | 6;
                gifData[11] = 0;
                gifData[12] = 0;

                // Read Data
                reader.Read(gifData, 13, (int)frameSize);

                List <Color> globalPalette = new List <Color>();
                List <Color> localPalette  = new List <Color>();

                using (var gifStream = new System.IO.MemoryStream(gifData))
                {
                    using (var gifReader = new Reader(gifStream))
                    {
                        reader.BaseStream.Position = 13;
                        for (int i = 0; i < 0x80; ++i)
                        {
                            byte r = reader.ReadByte();
                            byte g = reader.ReadByte();
                            byte b = reader.ReadByte();
                            globalPalette.Add(Color.FromArgb(r, g, b));
                        }

                        byte buffer = reader.ReadByte();
                        while (buffer != (byte)',')
                        {
                            buffer = reader.ReadByte();
                        }
                        reader.ReadUInt16();
                        reader.ReadUInt16();
                        reader.ReadUInt16();
                        reader.ReadUInt16();
                        byte info = reader.ReadByte();
                        if (info >> 7 == 1)
                        {
                            for (int i = 0; i < 0x80; ++i)
                            {
                                byte r = reader.ReadByte();
                                byte g = reader.ReadByte();
                                byte b = reader.ReadByte();
                                localPalette.Add(Color.FromArgb(r, g, b));
                            }
                        }
                    }
                }

                using (var gifStream = new System.IO.MemoryStream(gifData))
                    image = Image.FromStream(gifStream);

                // ColorPalette pal = new ColorPalette();
                // pal.Entries[0]]

                // image.Palette = pal;

                videoFilePos += frameSize;
                reader.BaseStream.Position = videoFilePos;
            }
Пример #8
0
 public void read(Reader reader)
 {
     directory   = reader.readRSDKString();
     startOffset = reader.ReadInt32();
 }