public Map(BinaryReader reader, byte mapGroup) { RomOffset = reader.BaseStream.Position; ParentGroup = mapGroup; RomBank = reader.ReadByte(); Tileset = reader.ReadByte(); Type = reader.ReadByte(); HeaderPointer = reader.ReadUInt16(); TownMapLocation = reader.ReadByte(); Unknown1 = reader.ReadByte(); Unknown2 = reader.ReadByte(); if (!IsValid) { return; } long positionBackup = reader.BaseStream.Position; reader.BaseStream.Position = GameHelpers.CalculateOffset(RomBank, HeaderPointer); PrimaryHeader = new PrimaryMapHeader(reader); reader.BaseStream.Position = GameHelpers.CalculateOffset((byte)(reader.BaseStream.Position >> 14), PrimaryHeader.SecondaryHeaderPointer); SecondaryHeader = new SecondaryMapHeader(reader); reader.BaseStream.Position = GameHelpers.CalculateOffset((byte)(reader.BaseStream.Position >> 14), PrimaryHeader.MapDataPointer); MapData = reader.ReadBytes(PrimaryHeader.Width * PrimaryHeader.Height); reader.BaseStream.Position = positionBackup; }
public Tileset(BinaryReader reader) { Bank = reader.ReadByte(); BlockDataPointer = reader.ReadUInt16(); TileDataPointer = reader.ReadUInt16(); CollisionDataPointer = reader.ReadUInt16(); AnimationDataPointer = reader.ReadUInt16(); Unknown0x09 = reader.ReadByte(); Unknown0x0A = reader.ReadByte(); long positionBackup = reader.BaseStream.Position; reader.BaseStream.Position = GameHelpers.CalculateOffset(Bank, BlockDataPointer); BlockData = reader.ReadBytes(BlockDataSize); reader.BaseStream.Position = GameHelpers.CalculateOffset(Bank, TileDataPointer); TileData = reader.ReadBytes(TileDataSize); reader.BaseStream.Position = GameHelpers.CalculateOffset(Bank, CollisionDataPointer); CollisionData = reader.ReadBytes(CollisionDataSize); reader.BaseStream.Position = positionBackup; }