public override object Deserialize(System.IO.BinaryReader binaryReader) { bool hasValue = binaryReader.ReadBoolean (); if (!hasValue) return null; int typeID = binaryReader.ReadByte (); switch (typeID) { case 1: return binaryReader.ReadBoolean (); case 2: return binaryReader.ReadByte (); case 128: return binaryReader.ReadSByte (); case 3: return binaryReader.ReadInt16 (); case 129: return binaryReader.ReadUInt16 (); case 4: return binaryReader.ReadInt32 (); case 130: return binaryReader.ReadUInt32 (); case 5: return binaryReader.ReadInt64 (); case 131: return binaryReader.ReadUInt64 (); case 9: return binaryReader.ReadDouble (); case 16: return binaryReader.ReadString (); case 144: return binaryReader.ReadChar (); case 24: return new DateTime (binaryReader.ReadInt64 ()); case 32: return new Guid (binaryReader.ReadBytes (16)); case 36: return binaryReader.ReadBytes (binaryReader.ReadInt32 ()); case 37: { int count = binaryReader.ReadInt32 (); string[] r = new string[count]; for (int n = 0; n != count; n++) r [n] = binaryReader.ReadString (); return r; } case 38: { int count = binaryReader.ReadInt32 (); long[] r = new long[count]; for (int n = 0; n != count; n++) r [n] = binaryReader.ReadInt64 (); return r; } default: throw new Exception (string.Format ("Serialization for type <{0}> is not supported", typeID)); } }
public void LoadStateBinary(System.IO.BinaryReader reader) { int length = reader.ReadInt32(); if (length != savebuff.Length) throw new InvalidOperationException("Savestate buffer size mismatch!"); reader.Read(savebuff, 0, savebuff.Length); if (!LibGambatte.gambatte_newstateload(GambatteState, savebuff, savebuff.Length)) throw new Exception("gambatte_newstateload() returned false"); // other variables IsLagFrame = reader.ReadBoolean(); LagCount = reader.ReadInt32(); Frame = reader.ReadInt32(); frameOverflow = reader.ReadUInt32(); _cycleCount = reader.ReadUInt64(); }
public override void Deserialize(System.IO.BinaryReader br) { MaskValue = br.ReadUInt64(); }
public override void Deserialize(System.IO.BinaryReader br) { arraySize = br.ReadInt32(); array = new ulong[arraySize]; for (int i = 0; i < arraySize; i++) { array[i] = br.ReadUInt64(); } }
public static UOPFileIndexDef FromBinary(System.IO.BinaryReader bStream) { UOPFileIndexDef toReturn = new UOPFileIndexDef(); toReturn.m_OffsetOfDataBlock = bStream.ReadUInt64(); toReturn.m_SizeofDataHeaders = bStream.ReadUInt32(); toReturn.m_LenghtCompressed = bStream.ReadUInt32(); toReturn.m_LenghtUncompressed = bStream.ReadUInt32(); toReturn.m_Unknown1 = bStream.ReadUInt32(); toReturn.m_Unknown2 = bStream.ReadUInt32(); toReturn.m_Unknown3 = bStream.ReadUInt32(); toReturn.m_CompressedFlag = bStream.ReadUInt16(); return toReturn; }
public static UOPFileData FromBinary(System.IO.BinaryReader bStream, uint length) { UOPFileData toReturn = new UOPFileData(); toReturn.m_DataFlag = bStream.ReadUInt16(); toReturn.m_LocalOffsetToData = bStream.ReadUInt16(); toReturn.m_Unknown = bStream.ReadUInt64(); toReturn.m_CompressedData = new byte[length]; toReturn.m_CompressedData = bStream.ReadBytes(toReturn.m_CompressedData.Length); return toReturn; }
public void Read(System.IO.BinaryReader reader) { id0 = reader.ReadUInt64(); id1 = reader.ReadUInt64(); type = (DockType)reader.ReadByte(); }
public static UOPIndexBlockHeader FromBinary(System.IO.BinaryReader bStream) { UOPIndexBlockHeader toReturn = new UOPIndexBlockHeader(); toReturn.m_Files = bStream.ReadUInt32(); toReturn.m_OffsetNextIndex = bStream.ReadUInt64(); for (uint iData = 0; iData < toReturn.m_Files; iData++) { UOPFileIndexDef uopIndextemp = UOPFileIndexDef.FromBinary(bStream); long oldPos = bStream.BaseStream.Position; bStream.BaseStream.Seek((long)(uopIndextemp.m_OffsetOfDataBlock), System.IO.SeekOrigin.Begin); UOPFileData uopDatatemp = UOPFileData.FromBinary(bStream, uopIndextemp.m_LenghtCompressed); toReturn.m_ListData.Add(new UOPPairData(uopIndextemp, uopDatatemp)); bStream.BaseStream.Seek(oldPos, System.IO.SeekOrigin.Begin); } return toReturn; }
public static string ReadToNulltermAndDecode( System.IO.Stream s ) { StringBuilder sb = new StringBuilder(); byte[] buffer = new byte[2]; int b = s.ReadByte(); while ( b != 0 && b != -1 ) { if ( ( b >= 0 && b <= 0x80 ) || ( b >= 0xA0 && b <= 0xDF ) ) { // is a single byte buffer[0] = (byte)b; sb.Append( Util.ShiftJISEncoding.GetString( buffer, 0, 1 ) ); } else { if ( b != 0xFF ) { // is two bytes buffer[0] = (byte)b; buffer[1] = (byte)s.ReadByte(); sb.Append( Util.ShiftJISEncoding.GetString( buffer ) ); } else { // is a FFCC command b = s.ReadByte(); switch ( b ) { case 0xA0: // newline sb.AppendLine(); break; case 0xA1: // end of textbox sb.AppendLine(); sb.AppendLine(); break; case 0xA2: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xA3: // wait before printing more sb.Append( "<Wait: " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xA4: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xA5: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xA6: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xA7: // multiple choice sb.Append( "<Choice: " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xA8: sb.Append( "<Player Name: " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xA9: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xAA: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt48().ToString( "X12" ) + ">" ); break; case 0xAB: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xAC: sb.Append( "<Color: Black>" ); break; case 0xAD: sb.Append( "<Color: Blue>" ); break; case 0xAE: sb.Append( "<Color: Red>" ); break; case 0xAF: sb.Append( "<Color: Pink>" ); break; case 0xB0: sb.Append( "<Color: Green>" ); break; case 0xB1: sb.Append( "<" + b.ToString( "X2" ) + ">" ); // color? break; case 0xB2: sb.Append( "<Color: Yellow>" ); break; case 0xB3: sb.Append( "<Color: Default>" ); break; case 0xB4: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xB5: sb.Append( "<Color: Orange>" ); break; case 0xB6: sb.Append( "<" + b.ToString( "X2" ) + ">" ); // color? break; case 0xBA: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xBD: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xC2: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt64().ToString( "X16" ) + ">" ); break; case 0xC4: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xC5: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xC6: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xC7: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xC8: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xC9: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xCA: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xCB: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xCC: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xCD: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt48().ToString( "X12" ) + ">" ); break; case 0xCE: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xCF: sb.Append( "<Hometown>" ); break; case 0xD0: // print numeric variable sb.Append( "<Numeric Variable " + s.ReadUInt24().ToString( "X6" ) + ">" ); break; case 0xD1: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt64().ToString( "X16" ) + ">" ); break; case 0xD2: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xD3: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xD4: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xD5: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xD6: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt24().ToString( "X6" ) + ">" ); break; case 0xD7: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xD8: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xD9: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xDA: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt40().ToString( "X10" ) + ">" ); break; case 0xDB: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt32().ToString( "X8" ) + ">" ); break; case 0xDC: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt40().ToString( "X10" ) + ">" ); break; case 0xDD: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt48().ToString( "X12" ) + ">" ); break; case 0xDE: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt56().ToString( "X14" ) + ">" ); break; case 0xDF: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt64().ToString( "X16" ) + ">" ); break; case 0xE0: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt56().ToString( "X14" ) + ">" ); break; case 0xE1: sb.Append( "<" + b.ToString( "X2" ) + ": " + s.ReadUInt16().ToString( "X4" ) + ">" ); break; case 0xE2: // start of a singular/plural either/or checking a variable; singular follows sb.Append( "<If Variable " + s.ReadUInt16().ToString( "X4" ) + " == 1 Then: " ); break; case 0xE3: // start of a singular/plural either/or checking the single/multiplayer status; singular follows sb.Append( "<If Player Count == 1 Then: " ); break; case 0xE4: // start of a male/female either/or checking the current player character; male follows sb.Append( "<If Player is Male Then: " ); break; case 0xE5: // start of a male/female either/or checking a different player character; male follows sb.Append( "<If Character is Male Then: " ); break; case 0xE6: // middle of an either/or; else case follows sb.Append( " / Else: " ); break; case 0xE8: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xE9: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xEB: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xED: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xEE: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xEF: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xF0: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xF2: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xF3: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xF4: sb.Append( "<" + b.ToString( "X2" ) + ">" ); break; case 0xE7: // end of an either/or sb.Append( ">" ); break; default: string unknownCommandString = "Unknown FFCC text command 0x" + b.ToString( "X2" ); sb.Append( "<" + unknownCommandString + ">" ); break; } } } b = s.ReadByte(); } return sb.ToString(); }
private bool Load( System.IO.FileStream stream ) { CreationTime = stream.ReadUInt64(); FileHashArrayOffset = stream.ReadUInt32(); // This should always be 0x20, so we can use it to detect endianness if ( FileHashArrayOffset <= 0xFFFF ) { Endian = Util.Endianness.LittleEndian; } else { Endian = Util.Endianness.BigEndian; CreationTime = CreationTime.SwapEndian(); FileHashArrayOffset = FileHashArrayOffset.SwapEndian(); } // We adjust the offsets to be from file start rather than from position, makes them easier to seek to. FileHashArrayOffset += (uint)stream.Position - 4; FileHashArraySize = stream.ReadUInt32().FromEndian( Endian ); VirtualHashArrayOffset = (uint)stream.Position; VirtualHashArrayOffset += stream.ReadUInt32().FromEndian( Endian ); VirtualHashArraySize = stream.ReadUInt32().FromEndian( Endian ); FileArrayOffset = (uint)stream.Position; FileArrayOffset += stream.ReadUInt32().FromEndian( Endian ); FileArraySize = stream.ReadUInt32().FromEndian( Endian ); VirtualPackArrayOffset = (uint)stream.Position; VirtualPackArrayOffset += stream.ReadUInt32().FromEndian( Endian ); VirtualPackArraySize = stream.ReadUInt32().FromEndian( Endian ); // Hashes stream.Position = FileHashArrayOffset; FileHashArray = new List<TOFHDBhash>( (int)FileHashArraySize ); for ( UInt32 i = 0; i < FileHashArraySize; i++ ) { FileHashArray.Add( new TOFHDBhash() { Key = stream.ReadUInt32().FromEndian( Endian ), Value = stream.ReadUInt32().FromEndian( Endian ), } ); } // Files stream.Position = FileArrayOffset; FileArray = new List<TOFHDBfile>( (int)FileArraySize ); for ( UInt32 i = 0; i < FileArraySize; i++ ) { FileArray.Add( new TOFHDBfile() { Filesize = stream.ReadUInt64().FromEndian( Endian ), CompressedSize = stream.ReadUInt64().FromEndian( Endian ), Offset = stream.ReadUInt64().FromEndian( Endian ), Hash = stream.ReadUInt32().FromEndian( Endian ), Extension = stream.ReadAscii( 0x0A ).TrimNull(), Unknown = stream.ReadUInt16().FromEndian( Endian ), } ); } return true; }
private SectionHeader ReadElf64SectionHeader(System.IO.BinaryReader r) { SectionHeader sh = new SectionHeader(); sh.sh_name = r.ReadInt32(); sh.sh_type = r.ReadUInt32(); sh.sh_flags = r.ReadUInt64(); sh.sh_addr = r.ReadUInt64(); sh.sh_offset = r.ReadInt64(); sh.sh_size = r.ReadInt64(); sh.sh_link = r.ReadInt32(); sh.sh_info = r.ReadInt32(); sh.sh_addralign = r.ReadInt64(); sh.sh_entsize = r.ReadInt64(); return sh; }
private void ReadElf64FileHeader(System.IO.BinaryReader r) { e_type = r.ReadUInt16(); e_machine = r.ReadUInt16(); r.ReadUInt32(); // e_version e_entry = r.ReadUInt64(); e_phoff = r.ReadInt64(); e_shoff = r.ReadInt64(); e_flags = r.ReadUInt32(); e_ehsize = r.ReadInt16(); e_phentsize = r.ReadInt16(); e_phnum = r.ReadInt16(); e_shentsize = r.ReadInt16(); e_shnum = r.ReadInt16(); e_shstrndx = r.ReadInt16(); }
public static byte[] GetBits(int width, int length, int height, System.IO.BinaryReader rdr) { int xoffset = 0; int yoffset = 0; int rowLength = width * 4; byte[] b = new byte[length]; ulong alpha; ushort c0, c1; uint[] colors = new uint[4]; uint lu; for (int y = 0; y < height / 4; y++) { yoffset = y * 4; for (int x = 0; x < width / 4; x++) { xoffset = x * 4; alpha = rdr.ReadUInt64 (); c0 = rdr.ReadUInt16 (); c1 = rdr.ReadUInt16 (); ColorsFromPacked (colors, c0, c1, true); lu = rdr.ReadUInt32 (); for (int i = 0; i < 16; i++) { int idx = GetBits (lu, 30 - i * 2, 2, 0); uint ci = colors[idx]; int ii = 15 - i; byte a = (byte)(GetBits64 (alpha, ii * 4, 4, 0)); a += (byte)(a << 4); int yy = yoffset + (ii / 4); int xx = xoffset + (ii % 4); int offset = yy * rowLength + xx * 4; SetColorFromPacked (b, offset, a, ci); } } } return b; }
/// <summary> /// Reads a 64-bit unsigned integer /// </summary> public static void Read( System.IO.BinaryReader reader, out ulong val ) { val = reader.ReadUInt64( ); }
public void LoadStateBinary(System.IO.BinaryReader reader) { int length = reader.ReadInt32(); byte[] data = reader.ReadBytes(length); //LoadCoreBinary(data); NewLoadCoreBinary(data); // other variables IsLagFrame = reader.ReadBoolean(); LagCount = reader.ReadInt32(); Frame = reader.ReadInt32(); frameOverflow = reader.ReadUInt32(); _cycleCount = reader.ReadUInt64(); }