private static List<ScenarioFileEntry> FindText( Stream stream, uint textStart, bool isUtf8 ) { var list = new List<ScenarioFileEntry>(); while ( stream.Position < textStart ) { uint identifyingBytes = stream.ReadUInt32(); if ( identifyingBytes == 0x18000C04 ) { uint pos = (uint)stream.Position; uint pointerToText = stream.ReadUInt32().SwapEndian() + textStart; stream.Position = pointerToText; stream.ReadUInt32().SwapEndian(); stream.ReadUInt32().SwapEndian(); uint jpNamePtr = stream.ReadUInt32().SwapEndian(); uint jpTextPtr = stream.ReadUInt32().SwapEndian(); uint enNamePtr = stream.ReadUInt32().SwapEndian(); uint enTextPtr = stream.ReadUInt32().SwapEndian(); stream.Position = jpNamePtr + textStart; string jpName = isUtf8 ? stream.ReadUTF8Nullterm() : stream.ReadShiftJisNullterm(); stream.Position = jpTextPtr + textStart; string jpText = isUtf8 ? stream.ReadUTF8Nullterm() : stream.ReadShiftJisNullterm(); stream.Position = enNamePtr + textStart; string enName = isUtf8 ? stream.ReadUTF8Nullterm() : stream.ReadShiftJisNullterm(); stream.Position = enTextPtr + textStart; string enText = isUtf8 ? stream.ReadUTF8Nullterm() : stream.ReadShiftJisNullterm(); var entry = new ScenarioFileEntry() { Pointer = pos, JpName = jpName, EnName = enName, JpText = jpText, EnText = enText }; list.Add( entry ); stream.Position = pos + 4; } } return list; }
public ebmEntry( Stream stream, bool isUtf8 = false ) { Ident = stream.ReadUInt32(); Unknown2 = stream.ReadUInt32(); Unknown3 = stream.ReadUInt32(); CharacterId = (int)stream.ReadUInt32(); Unknown5 = stream.ReadUInt32(); Unknown6 = stream.ReadUInt32(); Unknown7 = stream.ReadUInt32(); Unknown8 = stream.ReadUInt32(); TextLength = stream.ReadUInt32(); long pos = stream.Position; if ( isUtf8 ) { Text = stream.ReadUTF8Nullterm(); } else { Text = stream.ReadShiftJisNullterm(); } stream.Position = pos + TextLength; }