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); }
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); }
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); }
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); }