public void RemovePatch(NitroROM rom) { List <AddressDataPair> addressDataPairs = null; switch (rom.m_Version) { case NitroROM.Version.EUR: addressDataPairs = m_EURRestoreData; break; case NitroROM.Version.USA_v1: addressDataPairs = m_USv1RestoreData; break; case NitroROM.Version.USA_v2: addressDataPairs = m_USv2RestoreData; break; case NitroROM.Version.JAP: addressDataPairs = m_JAPRestoreData; break; } INitroROMBlock fileToPatch = null; if (m_FileToPatch != null) { fileToPatch = Program.m_ROM.GetFileFromName(m_FileToPatch); } else if (m_OverlayID != null) { fileToPatch = new NitroOverlay(Program.m_ROM, uint.Parse(m_OverlayID)); } foreach (AddressDataPair addressDataPair in addressDataPairs) { for (int i = 0; i < addressDataPair.m_Data.Length; i++) { if (fileToPatch == null) { rom.Write8(addressDataPair.m_Address + (uint)i, addressDataPair.m_Data[i]); } else { fileToPatch.Write8(addressDataPair.m_Address + (uint)i, addressDataPair.m_Data[i]); } } } if (fileToPatch != null) { fileToPatch.SaveChanges(); } }
public void RemovePatch(NitroROM rom) { List<AddressDataPair> addressDataPairs = null; switch (rom.m_Version) { case NitroROM.Version.EUR: addressDataPairs = m_EURRestoreData; break; case NitroROM.Version.USA_v1: addressDataPairs = m_USv1RestoreData; break; case NitroROM.Version.USA_v2: addressDataPairs = m_USv2RestoreData; break; case NitroROM.Version.JAP: addressDataPairs = m_JAPRestoreData; break; } INitroROMBlock fileToPatch = null; if (m_FileToPatch != null) fileToPatch = Program.m_ROM.GetFileFromName(m_FileToPatch); else if (m_OverlayID != null) fileToPatch = new NitroOverlay(Program.m_ROM, uint.Parse(m_OverlayID)); foreach (AddressDataPair addressDataPair in addressDataPairs) { for (int i = 0; i < addressDataPair.m_Data.Length; i++) { if (fileToPatch == null) { rom.Write8(addressDataPair.m_Address + (uint)i, addressDataPair.m_Data[i]); } else { fileToPatch.Write8(addressDataPair.m_Address + (uint)i, addressDataPair.m_Data[i]); } } } if (fileToPatch != null) fileToPatch.SaveChanges(); }
public void ApplyPatch(NitroROM rom) { Program.m_ROM.BeginRW(); List <AddressDataPair> addressDataPairs = null; switch (rom.m_Version) { case NitroROM.Version.EUR: addressDataPairs = m_EURPatch; m_EURRestoreData = GenerateRestoreData(m_EURPatch); break; case NitroROM.Version.USA_v1: addressDataPairs = m_USv1Patch; m_USv1RestoreData = GenerateRestoreData(m_USv1Patch); break; case NitroROM.Version.USA_v2: addressDataPairs = m_USv2Patch; m_USv2RestoreData = GenerateRestoreData(m_USv2Patch); break; case NitroROM.Version.JAP: addressDataPairs = m_JAPPatch; m_JAPRestoreData = GenerateRestoreData(m_JAPPatch); break; } if (m_DecompressAllOverlays) { Helper.DecompressOverlaysWithinGame(); } if (m_FileToPatch != null) { NitroFile myFile = Program.m_ROM.GetFileFromName(m_FileToPatch); foreach (AddressDataPair addressDataPair in addressDataPairs) { for (int i = 0; i < addressDataPair.m_Data.Length; i++) { myFile.Write8(addressDataPair.m_Address + (uint)i, addressDataPair.m_Data[i]); } } Program.m_ROM.EndRW(); myFile.SaveChanges(); return; } INitroROMBlock fileToPatch = null; if (m_FileToPatch != null) { fileToPatch = Program.m_ROM.GetFileFromName(m_FileToPatch); } else if (m_OverlayID != null) { fileToPatch = new NitroOverlay(Program.m_ROM, uint.Parse(m_OverlayID)); } foreach (AddressDataPair addressDataPair in addressDataPairs) { for (int i = 0; i < addressDataPair.m_Data.Length; i++) { if (fileToPatch == null) { if (Program.m_IsROMFolder) { Program.m_ROM.arm9W.BaseStream.Position = addressDataPair.m_Address + (uint)i - Program.m_ROM.headerSize; Program.m_ROM.arm9W.Write(addressDataPair.m_Data[i]); } else { rom.Write8(addressDataPair.m_Address + (uint)i, addressDataPair.m_Data[i]); } } else { fileToPatch.Write8(addressDataPair.m_Address + (uint)i, addressDataPair.m_Data[i]); } } } Program.m_ROM.EndRW(); if (fileToPatch != null) { fileToPatch.SaveChanges(); } }