예제 #1
0
        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();
        }
예제 #2
0
        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);
        }
예제 #3
0
        public EditRomInfo(Nitro.Estructuras.ROMHeader header, Nitro.Estructuras.Banner banner)
        {
            InitializeComponent();
            ReadLanguage();

            this.header = header;
            this.banner = banner;
            LoadValues();
            comboBanTitles.SelectedIndex = 0;
        }
예제 #4
0
파일: EditRomInfo.cs 프로젝트: MetLob/tinke
        public EditRomInfo(Nitro.Estructuras.ROMHeader header, Nitro.Estructuras.Banner banner)
        {
            InitializeComponent();
            ReadLanguage();

            this.header = header;
            this.banner = banner;
            LoadValues();
            comboBanTitles.SelectedIndex = 0;
        }
예제 #5
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);
        }
예제 #6
0
        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();
        }
예제 #7
0
파일: RomInfo.cs 프로젝트: MetLob/tinke
        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
        }
예제 #8
0
파일: RomInfo.cs 프로젝트: MetLob/tinke
        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);
        }
예제 #9
0
        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
        }
예제 #10
0
파일: NDS.cs 프로젝트: MetLob/tinke
        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;
        }