void InitializeTextBlock(uint pointer, BinaryReader file, int blockNo, int textBlockNo) { uint commandPointer = (uint)(pointer + blockNo * 12); uint textBlocksPointer = (uint)(pointer + blockNo * 12 + 4); commandPointer = Lib.Tools.GetPointerFromFile(commandPointer, RAMOFFSET, file); commandPointer -= (RAMOFFSET); textBlocksPointer = Lib.Tools.GetPointerFromFile(textBlocksPointer, RAMOFFSET, file); textBlocksPointer -= (RAMOFFSET); //Debug.WriteLine(blockNo.ToString() + " - " + (commandPointer).ToString("X2") + " - " + textBlocksPointer.ToString("X2")); file.BaseStream.Seek(textBlocksPointer, SeekOrigin.Begin); int nameNo; int unknown1; int voiceNo; int unknown2; uint textPointer; string text; textBlockNo = 0; while (true) { file.BaseStream.Seek(textBlocksPointer, SeekOrigin.Begin); if (file.BaseStream.Position == file.BaseStream.Length) break; nameNo = Lib.Tools.GetHalfWordFromFile(file); unknown1 = Lib.Tools.GetHalfWordFromFile(file); voiceNo = Lib.Tools.GetHalfWordFromFile(file); unknown2 = Lib.Tools.GetHalfWordFromFile(file); textPointer = Lib.Tools.GetPointerFromFile(file); textBlocksPointer = (uint)file.BaseStream.Position; if (textPointer < 0x8014B700 || textPointer > 0x80170000) break; text = Lib.Tools.GetTextFromFile(textPointer, RAMOFFSET, file); mainBlocks[blockNo][textBlockNo] = new DialogueEntry(nameNo, voiceNo, unknown1, unknown2, text, textBlocksPointer - 4); textBlockNo += 1; } }