/// <summary> /// Converts a ROM file to a headerless, de-interleaved ROM image if it is not already. The returned /// array will be the orginial byte array if unmodified, otherwise a new byte array will be /// created to hold the ROM image. /// </summary> /// <param name="rom">ROM file to get the ROM image for</param> /// <returns>The returned /// array will be the orginial byte array if unmodified, otherwise a new byte array will be /// created to hold the ROM image.</returns> public static byte[] GetBinFormat(byte[] rom) { // Todo: move this function to ConsoleTools.Gen bool eHeader, iHeader, interleaved, s32X; iHeader = Gen.HasInternalHeader(rom, out interleaved, out eHeader, out s32X); byte[] romImage = rom; // Remove external header, if present if (eHeader) { romImage = new byte[rom.Length - Gen.ExternalHeaderSize]; Array.Copy(rom, Gen.ExternalHeaderSize, romImage, 0, rom.Length - Gen.ExternalHeaderSize); } // De-interleave ROM, if necessary if (interleaved) { // Make sure we aren't modifying the ROM passed in as a parameter bool recycleRomImageBuffer = (rom != romImage); romImage = Gen.DeInterleaveRom(romImage, false, recycleRomImageBuffer); } return(romImage); }