public static void EscribirBanner(string salida, Estructuras.Banner banner) { BinaryWriter bw = new BinaryWriter(new FileStream(salida, FileMode.Create)); Console.Write("Banner..."); bw.Write(banner.version); bw.Write(banner.CRC16); bw.Write(banner.reserved); bw.Write(banner.tileData); bw.Write(banner.palette); bw.Write(StringToTitle(banner.japaneseTitle)); bw.Write(StringToTitle(banner.englishTitle)); bw.Write(StringToTitle(banner.frenchTitle)); bw.Write(StringToTitle(banner.germanTitle)); bw.Write(StringToTitle(banner.italianTitle)); bw.Write(StringToTitle(banner.spanishTitle)); bw.Flush(); int rem = (int)bw.BaseStream.Position % 0x200; if (rem != 0) { while (rem < 0x200) { bw.Write((byte)0xFF); rem++; } } bw.Flush(); Console.WriteLine(Tools.Helper.GetTranslation("Messages", "S09"), bw.BaseStream.Length); bw.Close(); }
public static Estructuras.Banner LeerBanner(string file, UInt32 offset) { Estructuras.Banner bn = new Estructuras.Banner(); BinaryReader br = new BinaryReader(File.OpenRead(file)); br.BaseStream.Position = offset; bn.version = br.ReadUInt16(); bn.CRC16 = br.ReadUInt16(); bn.reserved = br.ReadBytes(0x1C); bn.tileData = br.ReadBytes(0x200); bn.palette = br.ReadBytes(0x20); bn.japaneseTitle = TitleToString(br.ReadBytes(0x100)); bn.englishTitle = TitleToString(br.ReadBytes(0x100)); bn.frenchTitle = TitleToString(br.ReadBytes(0x100)); bn.germanTitle = TitleToString(br.ReadBytes(0x100)); bn.italianTitle = TitleToString(br.ReadBytes(0x100)); bn.spanishTitle = TitleToString(br.ReadBytes(0x100)); br.BaseStream.Position = offset + 0x20; bn.checkCRC = (CRC16.Calculate(br.ReadBytes(0x820)) == bn.CRC16) ? true : false; br.Close(); Console.WriteLine(bn.englishTitle.Replace("\0", "")); return(bn); }
public EditRomInfo(Nitro.Estructuras.ROMHeader header, Nitro.Estructuras.Banner banner) { InitializeComponent(); ReadLanguage(); this.header = header; this.banner = banner; LoadValues(); comboBanTitles.SelectedIndex = 0; }
public EditRomInfo(Nitro.Estructuras.ROMHeader header, Nitro.Estructuras.Banner banner) { InitializeComponent(); ReadLanguage(); this.header = header; this.banner = banner; LoadValues(); comboBanTitles.SelectedIndex = 0; }
void editor_FormClosed(object sender, FormClosedEventArgs e) { EditRomInfo editor = (EditRomInfo)sender; if (editor.DialogResult != System.Windows.Forms.DialogResult.OK) { return; } cabecera = editor.Header; banner = editor.Banner; Mostrar_Informacion(cabecera, banner); }
public RomInfo(string archivo) { InitializeComponent(); this.btnBannerGuardar.Image = Properties.Resources.picture_save; try { Nitro.Estructuras.ROMHeader cabecera = Nitro.NDS.LeerCabecera(archivo); Nitro.Estructuras.Banner banner = Nitro.NDS.LeerBanner(archivo, cabecera.bannerOffset); Mostrar_Informacion(cabecera, banner); this.checkTrans.Checked = true; } catch { MessageBox.Show(Tools.Helper.GetTranslation("Messages", "S02"), Tools.Helper.GetTranslation("Messages", "S01"), MessageBoxButtons.OK, MessageBoxIcon.Error); Console.WriteLine(Tools.Helper.GetTranslation("Messages", "S02") + ": " + archivo); return; } LeerIdioma(); }
private void Mostrar_Informacion(Nitro.Estructuras.ROMHeader cabecera, Nitro.Estructuras.Banner banner) { this.cabecera = cabecera; this.banner = banner; // Remove older values if (listInfo.Items[0].SubItems.Count == 3) for (int i = 0; i < listInfo.Items.Count; i++) listInfo.Items[i].SubItems.RemoveAt(2); #region Muestra la información de la cabecera listInfo.Items[0].SubItems.Add(new String(cabecera.gameTitle)); listInfo.Items[1].SubItems.Add(new string(cabecera.gameCode)); try { listInfo.Items[2].SubItems.Add(new String(cabecera.makerCode) + " (" + Nitro.Estructuras.makerCode[new String(cabecera.makerCode)] + ')'); } catch { listInfo.Items[2].SubItems.Add(new String(cabecera.makerCode) + " (Desconocido)"); } try { listInfo.Items[3].SubItems.Add("0x" + String.Format("{0:X}", cabecera.unitCode) + " (" + Nitro.Estructuras.unitCode[cabecera.unitCode] + ')'); } catch { listInfo.Items[3].SubItems.Add("0x" + String.Format("{0:X}", cabecera.unitCode) + " (Desconocido)"); } listInfo.Items[4].SubItems.Add(Convert.ToString(cabecera.encryptionSeed)); listInfo.Items[5].SubItems.Add((cabecera.tamaño / Math.Pow(2, 20)).ToString() + " MB"); listInfo.Items[6].SubItems.Add(BitsConverter.BytesToHexString(cabecera.reserved)); listInfo.Items[7].SubItems.Add(Convert.ToString(cabecera.ROMversion)); listInfo.Items[8].SubItems.Add(Convert.ToString(cabecera.internalFlags)); listInfo.Items[9].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9romOffset)); listInfo.Items[10].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9entryAddress)); listInfo.Items[11].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9ramAddress)); listInfo.Items[12].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9size) + " bytes"); listInfo.Items[13].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7romOffset)); listInfo.Items[14].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7entryAddress)); listInfo.Items[15].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7ramAddress)); listInfo.Items[16].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7size) + " bytes"); listInfo.Items[17].SubItems.Add("0x" + String.Format("{0:X}", cabecera.fileNameTableOffset)); listInfo.Items[18].SubItems.Add("0x" + String.Format("{0:X}", cabecera.fileNameTableSize) + " bytes"); listInfo.Items[19].SubItems.Add("0x" + String.Format("{0:X}", cabecera.FAToffset)); listInfo.Items[20].SubItems.Add("0x" + String.Format("{0:X}", cabecera.FATsize) + " bytes"); listInfo.Items[21].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9overlayOffset)); listInfo.Items[22].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9overlaySize) + " bytes"); listInfo.Items[23].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7overlayOffset)); listInfo.Items[24].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7overlaySize) + " bytes"); listInfo.Items[25].SubItems.Add(Convert.ToString(cabecera.flagsRead, 2)); listInfo.Items[26].SubItems.Add(Convert.ToString(cabecera.flagsInit, 2)); listInfo.Items[27].SubItems.Add("0x" + String.Format("{0:X}", cabecera.bannerOffset)); listInfo.Items[28].SubItems.Add(cabecera.secureCRC16.ToString() + " (" + Convert.ToString(cabecera.secureCRC) + ")"); listInfo.Items[29].SubItems.Add(cabecera.ROMtimeout.ToString()); listInfo.Items[30].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9autoload)); listInfo.Items[31].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7autoload)); listInfo.Items[32].SubItems.Add(cabecera.secureDisable.ToString()); listInfo.Items[33].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ROMsize) + " bytes"); listInfo.Items[34].SubItems.Add("0x" + String.Format("{0:X}", cabecera.headerSize) + " bytes"); listInfo.Items[35].SubItems.Add(BitsConverter.BytesToHexString(cabecera.reserved2)); listInfo.Items[36].SubItems.Add(cabecera.logoCRC16.ToString() + " (" + Convert.ToString(cabecera.logoCRC) + ")"); listInfo.Items[37].SubItems.Add(cabecera.headerCRC16.ToString() + " (" + Convert.ToString(cabecera.headerCRC) + ")"); listInfo.Items[38].SubItems.Add("0x" + String.Format("{0:X}", cabecera.debug_romOffset)); listInfo.Items[39].SubItems.Add("0x" + String.Format("{0:X}", cabecera.debug_size) + " bytes"); listInfo.Items[40].SubItems.Add("0x" + String.Format("{0:X}", cabecera.debug_ramAddress)); listInfo.Items[41].SubItems.Add("0x" + String.Format("{0:X}", cabecera.reserved3)); #endregion #region Muestra la información del banner picIcon.BorderStyle = BorderStyle.None; picBanner = Nitro.NDS.IconoToBitmap(banner.tileData, banner.palette); picIcon.Image = picBanner; txtBannerVer.Text = banner.version.ToString(); txtBannerCRC.Text = String.Format("{0:X}", banner.CRC16) + " (" + (banner.checkCRC ? "OK)" : Tools.Helper.GetTranslation("RomInfo", "S39") + ')'); txtBannerReserved.Text = BitsConverter.BytesToHexString(banner.reserved); titulos = new string[] { banner.japaneseTitle, banner.englishTitle, banner.frenchTitle, banner.germanTitle, banner.italianTitle, banner.spanishTitle }; txtBannerTitle.Text = titulos[0]; comboBannerLang.SelectedIndex = 0; #endregion }
void editor_FormClosed(object sender, FormClosedEventArgs e) { EditRomInfo editor = (EditRomInfo)sender; if (editor.DialogResult != System.Windows.Forms.DialogResult.OK) return; cabecera = editor.Header; banner = editor.Banner; Mostrar_Informacion(cabecera, banner); }
private void Mostrar_Informacion(Nitro.Estructuras.ROMHeader cabecera, Nitro.Estructuras.Banner banner) { this.cabecera = cabecera; this.banner = banner; // Remove older values if (listInfo.Items[0].SubItems.Count == 3) { for (int i = 0; i < listInfo.Items.Count; i++) { listInfo.Items[i].SubItems.RemoveAt(2); } } #region Muestra la información de la cabecera listInfo.Items[0].SubItems.Add(new String(cabecera.gameTitle)); listInfo.Items[1].SubItems.Add(new string(cabecera.gameCode)); try { listInfo.Items[2].SubItems.Add(new String(cabecera.makerCode) + " (" + Nitro.Estructuras.makerCode[new String(cabecera.makerCode)] + ')'); } catch { listInfo.Items[2].SubItems.Add(new String(cabecera.makerCode) + " (Desconocido)"); } try { listInfo.Items[3].SubItems.Add("0x" + String.Format("{0:X}", cabecera.unitCode) + " (" + Nitro.Estructuras.unitCode[cabecera.unitCode] + ')'); } catch { listInfo.Items[3].SubItems.Add("0x" + String.Format("{0:X}", cabecera.unitCode) + " (Desconocido)"); } listInfo.Items[4].SubItems.Add(Convert.ToString(cabecera.encryptionSeed)); listInfo.Items[5].SubItems.Add((cabecera.tamaño / Math.Pow(2, 20)).ToString() + " MB"); listInfo.Items[6].SubItems.Add(BitsConverter.BytesToHexString(cabecera.reserved)); listInfo.Items[7].SubItems.Add(Convert.ToString(cabecera.ROMversion)); listInfo.Items[8].SubItems.Add(Convert.ToString(cabecera.internalFlags)); listInfo.Items[9].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9romOffset)); listInfo.Items[10].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9entryAddress)); listInfo.Items[11].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9ramAddress)); listInfo.Items[12].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9size) + " bytes"); listInfo.Items[13].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7romOffset)); listInfo.Items[14].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7entryAddress)); listInfo.Items[15].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7ramAddress)); listInfo.Items[16].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7size) + " bytes"); listInfo.Items[17].SubItems.Add("0x" + String.Format("{0:X}", cabecera.fileNameTableOffset)); listInfo.Items[18].SubItems.Add("0x" + String.Format("{0:X}", cabecera.fileNameTableSize) + " bytes"); listInfo.Items[19].SubItems.Add("0x" + String.Format("{0:X}", cabecera.FAToffset)); listInfo.Items[20].SubItems.Add("0x" + String.Format("{0:X}", cabecera.FATsize) + " bytes"); listInfo.Items[21].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9overlayOffset)); listInfo.Items[22].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9overlaySize) + " bytes"); listInfo.Items[23].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7overlayOffset)); listInfo.Items[24].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7overlaySize) + " bytes"); listInfo.Items[25].SubItems.Add(Convert.ToString(cabecera.flagsRead, 2)); listInfo.Items[26].SubItems.Add(Convert.ToString(cabecera.flagsInit, 2)); listInfo.Items[27].SubItems.Add("0x" + String.Format("{0:X}", cabecera.bannerOffset)); listInfo.Items[28].SubItems.Add(cabecera.secureCRC16.ToString() + " (" + Convert.ToString(cabecera.secureCRC) + ")"); listInfo.Items[29].SubItems.Add(cabecera.ROMtimeout.ToString()); listInfo.Items[30].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM9autoload)); listInfo.Items[31].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ARM7autoload)); listInfo.Items[32].SubItems.Add(cabecera.secureDisable.ToString()); listInfo.Items[33].SubItems.Add("0x" + String.Format("{0:X}", cabecera.ROMsize) + " bytes"); listInfo.Items[34].SubItems.Add("0x" + String.Format("{0:X}", cabecera.headerSize) + " bytes"); listInfo.Items[35].SubItems.Add(BitsConverter.BytesToHexString(cabecera.reserved2)); listInfo.Items[36].SubItems.Add(cabecera.logoCRC16.ToString() + " (" + Convert.ToString(cabecera.logoCRC) + ")"); listInfo.Items[37].SubItems.Add(cabecera.headerCRC16.ToString() + " (" + Convert.ToString(cabecera.headerCRC) + ")"); listInfo.Items[38].SubItems.Add("0x" + String.Format("{0:X}", cabecera.debug_romOffset)); listInfo.Items[39].SubItems.Add("0x" + String.Format("{0:X}", cabecera.debug_size) + " bytes"); listInfo.Items[40].SubItems.Add("0x" + String.Format("{0:X}", cabecera.debug_ramAddress)); listInfo.Items[41].SubItems.Add("0x" + String.Format("{0:X}", cabecera.reserved3)); #endregion #region Muestra la información del banner picIcon.BorderStyle = BorderStyle.None; picBanner = Nitro.NDS.IconoToBitmap(banner.tileData, banner.palette); picIcon.Image = picBanner; txtBannerVer.Text = banner.version.ToString(); txtBannerCRC.Text = String.Format("{0:X}", banner.CRC16) + " (" + (banner.checkCRC ? "OK)" : Tools.Helper.GetTranslation("RomInfo", "S39") + ')'); txtBannerReserved.Text = BitsConverter.BytesToHexString(banner.reserved); titulos = new string[] { banner.japaneseTitle, banner.englishTitle, banner.frenchTitle, banner.germanTitle, banner.italianTitle, banner.spanishTitle }; txtBannerTitle.Text = titulos[0]; comboBannerLang.SelectedIndex = 0; #endregion }
public static Estructuras.Banner LeerBanner(string file, UInt32 offset) { Estructuras.Banner bn = new Estructuras.Banner(); BinaryReader br = new BinaryReader(File.OpenRead(file)); br.BaseStream.Position = offset; bn.version = br.ReadUInt16(); bn.CRC16 = br.ReadUInt16(); bn.reserved = br.ReadBytes(0x1C); bn.tileData = br.ReadBytes(0x200); bn.palette = br.ReadBytes(0x20); bn.japaneseTitle = TitleToString(br.ReadBytes(0x100)); bn.englishTitle = TitleToString(br.ReadBytes(0x100)); bn.frenchTitle = TitleToString(br.ReadBytes(0x100)); bn.germanTitle = TitleToString(br.ReadBytes(0x100)); bn.italianTitle = TitleToString(br.ReadBytes(0x100)); bn.spanishTitle = TitleToString(br.ReadBytes(0x100)); br.BaseStream.Position = offset + 0x20; bn.checkCRC = (CRC16.Calculate(br.ReadBytes(0x820)) == bn.CRC16) ? true : false; br.Close(); Console.WriteLine(bn.englishTitle.Replace("\0", "")); return bn; }