private void ReadMainScript(Block romData, StringCodec codec) { var stream = romData.ToBinaryStream(RomConfig.GetOffset("Text.MainScript", romData)); MainScript = new List <List <string> >(); var offsetTableReader = new WideOffsetTableReader(stream); while (!offsetTableReader.EndOfTable) { MainScript.Add(offsetTableReader.ReadStringOffsetTable(codec, true, false)); } }
public static List <string> ReadStringOffsetTable(this WideOffsetTableReader offsetTableReader, StringCodec codec, bool isScript, bool multiplyByTwo) { int offsetPointer = offsetTableReader.NextPointer(); int dataPointer = offsetTableReader.NextPointer(); var stream = offsetTableReader.Stream; if (offsetPointer != 0 && dataPointer != 0) { stream.Position = offsetPointer; return(stream.ReadStringOffsetTable(codec, isScript, multiplyByTwo, dataPointer)); } else { return(null); } }
private void ReadTextBank(Block romData, StringCodec codec) { var stream = romData.ToBinaryStream(RomConfig.GetOffset("Text.Bank", romData)); var offsetTableReader = new WideOffsetTableReader(stream); RoomDescriptions = offsetTableReader.ReadStringOffsetTable(codec, false, false); ItemNames = offsetTableReader.ReadStringTable(codec); ItemDescriptions = offsetTableReader.ReadStringOffsetTable(codec, false, false); CharNames = offsetTableReader.ReadStringTable(codec); PartyCharNames = offsetTableReader.ReadStringTable(codec); EnemyNames = offsetTableReader.ReadStringTable(codec); PsiNames = offsetTableReader.ReadStringTable(codec); PsiDescriptions = offsetTableReader.ReadStringOffsetTable(codec, false, false); Statuses = offsetTableReader.ReadStringTable(codec); DefaultCharNames = offsetTableReader.ReadStringTable(codec); Skills = offsetTableReader.ReadStringTable(codec); SkillDescriptions = offsetTableReader.ReadStringOffsetTable(codec, false, false); }
public static StringTable ReadStringTable(this WideOffsetTableReader offsetTableReader, StringCodec codec) { offsetTableReader.Next(); return(offsetTableReader.Stream.ReadStringTable(codec)); }