public bool ReadRom() { bool valid = false; try { FileInfo fInfo = new FileInfo(Filename); RomSize = fInfo.Length; if (!(fInfo.Extension.ToLower() == ".smc") && !(fInfo.Extension.ToLower() == ".sfc")) { Console.Error.WriteLine("Invalid ROM extension: " + fInfo.Extension); } else if (RomSize < 0x300000 || RomSize > 0x600000) { Console.Error.WriteLine("Invalid ROM size: $" + RomSize.ToString("X8")); } else { FileStream fStream = new FileStream(Filename, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fStream); Content = br.ReadBytes((int)fInfo.Length); br.Close(); fStream.Close(); RemoveHeader(); valid = true; } } catch (Exception e) { Console.Error.WriteLine("Unable to read ROM " + Filename, "Error: " + e.Message); } return(valid); }
public void WriteToIni(IniData iniData, int romIndex) { string sectionName = "ROM" + romIndex.ToString(); iniData.Sections.AddSection(sectionName); iniData[sectionName].AddKey("FULL_ID", FullId); iniData[sectionName].AddKey("ID", Id); iniData[sectionName].AddKey("NAME", Name); iniData[sectionName].AddKey("TV", GetTvString()); iniData[sectionName].AddKey("CIC", GetCicString()); iniData[sectionName].AddKey("SAVE", GetSaveString()); iniData[sectionName].AddKey("SAVE_OFFSET", SaveOffset.ToString()); iniData[sectionName].AddKey("ROM_SIZE", RomSize.ToString()); iniData[sectionName].AddKey("ROM_CRC", RomCrc.ToString("X08")); for (int i = 0; i < 32; i++) { string mappingKey = "MAPPING" + i.ToString(); byte mapping = 0; if (FlashPartitions.Length > i) { mapping = FlashPartitions[i].Offset; } iniData[sectionName].AddKey(mappingKey, mapping.ToString()); } }