public static int ByteswapROM(string filename) { using (BinaryReader ROM = new BinaryReader(File.Open(filename, FileMode.Open))) { if (ROM.BaseStream.Length % 4 != 0) { return(-1); } byte[] buffer = new byte[4]; ROM.Read(buffer, 0, 4); // very hacky ROM.BaseStream.Seek(0, 0); if (buffer[0] == 0x80) { return(1); } else if (buffer[1] == 0x80) { using (BinaryWriter newROM = new BinaryWriter(File.Open(filename + ".z64", FileMode.Create))) { while (ROM.BaseStream.Position < ROM.BaseStream.Length) { newROM.Write(ReadWriteUtils.Byteswap16(ReadWriteUtils.ReadU16(ROM))); } } return(0); } else if (buffer[3] == 0x80) { using (BinaryWriter newROM = new BinaryWriter(File.Open(filename + ".z64", FileMode.Create))) { while (ROM.BaseStream.Position < ROM.BaseStream.Length) { newROM.Write(ReadWriteUtils.Byteswap32(ReadWriteUtils.ReadU32(ROM))); } } return(0); } } return(-1); }