public Sir0 ToSir0() { var sir0 = new Sir0Builder(8); void align(int length) { var paddingLength = length - (sir0.Length % length); if (paddingLength != length) { sir0.WritePadding(sir0.Length, paddingLength); } } var floorInfoPointer = sir0.Length; foreach (var floor in FloorInfos) { sir0.Write(sir0.Length, floor.ToByteArray()); } align(16); var wildPokemonPointer = sir0.Length; if (WildPokemon != null) { sir0.Write(sir0.Length, WildPokemon.ToSir0().Data.ReadArray()); } align(16); var data3Pointer = sir0.Length; if (Data3 != null) { sir0.Write(sir0.Length, Data3.ToSir0().Data.ReadArray()); } align(16); var data4Pointer = sir0.Length; if (Data4 != null) { sir0.Write(sir0.Length, Data4.ToSir0().Data.ReadArray()); } // Write the content header align(16); sir0.SubHeaderOffset = sir0.Length; sir0.WritePointer(sir0.Length, floorInfoPointer); sir0.WritePointer(sir0.Length, wildPokemonPointer); sir0.WritePointer(sir0.Length, data3Pointer); sir0.WritePointer(sir0.Length, data4Pointer); return(sir0.Build()); }