Example #1
0
        private MainQuest ReadFile(string file)
        {
            BinaryReader br = new BinaryReader(File.OpenRead(file));
            MainQuest    mq = new MainQuest();

            mq.num_blocks = br.ReadUInt16();
            mq.blocks     = new MainQuest.Block[mq.num_blocks];

            for (int i = 0; i < mq.num_blocks; i++)
            {
                Console.WriteLine("Reading block " + i.ToString());
                mq.blocks[i].size = br.ReadUInt16();
                mq.blocks[i].id   = br.ReadUInt32();

                List <MainQuest.Block.Element> elements = new List <MainQuest.Block.Element>();
                int pos = 4;
                while (pos + 1 != mq.blocks[i].size)
                {
                    Console.WriteLine("\tElement " + (elements.Count + 1).ToString());
                    MainQuest.Block.Element e = new MainQuest.Block.Element();
                    e.size = br.ReadUInt16();
                    e.text = new String(Encoding.GetEncoding(932).GetChars(br.ReadBytes((int)e.size)));
                    e.text = Helper.SJISToLatin(e.text);

                    elements.Add(e);
                    pos += 2 + e.size;
                }
                br.ReadByte();  // 00

                mq.blocks[i].elements = elements.ToArray();
            }

            br.Close();
            return(mq);
        }
Example #2
0
        public static string Read_String(byte[] data)
        {
            string text = new String(Encoding.GetEncoding("shift_jis").GetChars(data));

            text = Helper.SJISToLatin(text.Replace("\0", ""));
            return(text);
        }
        private Scenario Read(string fileIn)
        {
            BinaryReader br = new BinaryReader(File.OpenRead(fileIn));

            Scenario sce = new Scenario();

            sce.type = br.ReadUInt32(); // Must be 0x0006050A

            sce.blocks = new Scenario.Block[3];
            for (int i = 0; i < 3; i++)
            {
                sce.blocks[i].size = br.ReadUInt32();

                List <Scenario.Element> elements = new List <Scenario.Element>();
                for (; ;)
                {
                    Scenario.Element e = new Scenario.Element();
                    e.id = br.ReadUInt32();
                    if (e.id == 0xFFFFFFFF)
                    {
                        break;
                    }
                    e.size = br.ReadByte();

                    if (i == 0)
                    {
                        e.text = Get_Furigana(Encoding.GetEncoding(932).GetChars(br.ReadBytes(e.size)));
                        e.text = Helper.SJISToLatin(e.text);
                    }
                    else if (i == 1)
                    {
                        e.text = Get_Furigana(Encoding.GetEncoding(932).GetChars(br.ReadBytes(e.size)));
                        e.text = Helper.SJISToLatin(e.text);
                        e.unk  = br.ReadUInt16();
                    }
                    else if (i == 2)
                    {
                        e.unk  = br.ReadUInt16();
                        e.text = Get_Furigana(Encoding.GetEncoding(932).GetChars(br.ReadBytes(e.size - 4)));
                        e.text = Helper.SJISToLatin(e.text);
                        e.unk2 = br.ReadUInt16();
                    }

                    elements.Add(e);
                }

                sce.blocks[i].elements = elements.ToArray();
            }

            br.Close();
            return(sce);
        }
Example #4
0
        private Subtitle[] Read(string file)
        {
            List <Subtitle> subs = new List <Subtitle>();
            string          text = File.ReadAllText(file, Encoding.GetEncoding("shift_jis"));
            int             pos  = 0;

            while (pos < text.Length)
            {
                Subtitle sub  = new Subtitle();
                string   line = Read_String(text, ref pos);

                if (line.Length == 0)
                {
                    continue;
                }

                if (line.Length > 0 && line[0] == '#')
                {
                    sub.type = SubType.Comment;
                    sub.data = Helper.SJISToLatin(line.Substring(1));
                }
                else if (line.StartsWith("/stream"))
                {
                    sub.type = SubType.Voice;
                    sub.data = line.Substring(8);
                }
                else if (line.StartsWith("/sync"))
                {
                    sub.type = SubType.SyncTime;
                    sub.data = line.Substring(6);
                }
                else if (line.StartsWith("/clear"))
                {
                    sub.type = SubType.Clear;
                }
                else
                {
                    sub.type = SubType.Text;
                    sub.data = Helper.SJISToLatin(line);
                }

                subs.Add(sub);
                listContent.Items.Add(sub.type);
            }

            return(subs.ToArray());
        }
        private SysText Read(string file)
        {
            BinaryReader br = new BinaryReader(File.OpenRead(file));
            SysText      s  = new SysText();

            s.num_element = br.ReadUInt16();
            s.elements    = new SysText.Element[s.num_element];

            for (int i = 0; i < s.num_element; i++)
            {
                s.elements[i].id   = br.ReadUInt32();
                s.elements[i].size = br.ReadUInt16();
                s.elements[i].text = new String(Encoding.GetEncoding(932).GetChars(br.ReadBytes((int)s.elements[i].size)));
                s.elements[i].text = Helper.SJISToLatin(s.elements[i].text);
            }

            br.Close();
            return(s);
        }
Example #6
0
        public SQ Read(string file)
        {
            BinaryReader br       = new BinaryReader(File.OpenRead(file));
            SQ           original = new SQ();

            original.sblocks = new SQ.Block[4];

            original.id = br.ReadUInt32();    // File ID

            // Read the first 4 blocks
            for (int i = 0; i < 4; i++)
            {
                original.sblocks[i].size = br.ReadUInt16();
                original.sblocks[i].text = new String(enc.GetChars(br.ReadBytes((int)original.sblocks[i].size)));
                original.sblocks[i].text = Helper.SJISToLatin(original.sblocks[i].text);
            }

            original.unknown     = br.ReadBytes(0xD); // Unknown data
            original.num_fblocks = br.ReadByte();

            original.fblocks = new SQ.Block[original.num_fblocks];
            for (int i = 0; i < original.num_fblocks; i++)
            {
                original.fblocks[i].size = br.ReadUInt16();
                original.fblocks[i].text = new String(enc.GetChars(br.ReadBytes((int)original.fblocks[i].size)));
                original.fblocks[i].text = Helper.SJISToLatin(original.fblocks[i].text);
            }

            original.num_final = br.ReadByte();
            original.final     = new byte[original.num_final][];
            for (int i = 0; i < original.num_final; i++)
            {
                byte size = br.ReadByte();
                original.final[i] = br.ReadBytes(size + 4);
            }

            br.Close();
            return(original);
        }