public static string GetGamecode( System.IO.FileStream nds ) { long pos = nds.Position; nds.Position = 0x0C; string gamecode = nds.ReadAscii( 4 ); nds.Position = pos; return gamecode; }
public Title( System.IO.Stream stream ) { ID = stream.ReadUInt32().SwapEndian(); NameStringDicID = stream.ReadUInt32().SwapEndian(); DescStringDicID = stream.ReadUInt32().SwapEndian(); Character = stream.ReadUInt32().SwapEndian(); CostumeString = stream.ReadAscii( 0x10 ).TrimNull(); BunnyGuildPointsMaybe = stream.ReadUInt32().SwapEndian(); stream.DiscardBytes( 0xC ); }
public NAME( System.IO.Stream stream ) : base(stream) { stream.ReadAlign( 0x10 ); Filename = stream.ReadAscii( (int)SectionSize ).TrimNull(); }
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; }