예제 #1
0
        private void KeyCode(Keys keys)
        {
            switch (keys)
            {
            case Keys.PageDown:
                Position = Convertir.DecimalToHexa(Convertir.HexaToDecimal(this._CurrentPosition) + (this._ColumnSize * this._TotalLine));
                break;

            case Keys.PageUp:
                if (Position != "0")
                {
                    if (Convertir.HexaToDecimal(this._CurrentPosition) > (this._ColumnSize * this._TotalLine))
                    {
                        Position = Convertir.DecimalToHexa(Convertir.HexaToDecimal(this._CurrentPosition) - (this._ColumnSize * this._TotalLine));
                    }
                    else
                    {
                        Position = "0";
                    }
                }
                break;

            case Keys.Home:
                Position = "0";
                break;

            case Keys.End:
                Position = Convertir.DecimalToHexa(this.sbValue.Maximum);
                break;
            }
        }
예제 #2
0
        private void HexaTextBox_Leave(object sender, System.EventArgs e)
        {
            //Verifie si le total est superieurs ou inferieux au limite du control
            long val = Convertir.HexaToDecimal(HexaBox.Text);

            if (val > this._maxValue)
            {
                HexaBox.Text = Convertir.DecimalToHexa(this._maxValue);
            }

            if (val < this._minValue)
            {
                HexaBox.Text = Convertir.DecimalToHexa(this._minValue);
            }
        }
예제 #3
0
        /// <summary>
        /// Verifie que le fichier Rom est valide
        /// </summary>
        /// <param name="FileName">Chemin vers le fichier (path)</param>
        /// <returns>Retourne true si le fichier rom est un fichier de type Super Nintendo</returns>
        public static bool isValid(string FileName)
        {
            if (File.Exists(FileName))
            {
                //Variable de Verification pour determiner de quel type est la rom a charge
                string CheckLow1     = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81DC", "81DD", FileName, true));
                string CheckLow2     = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81DE", "81DF", FileName, true));
                string CheckLow1b    = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FDC", "7FDD", FileName, true));
                string CheckLow2b    = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FDE", "7FDF", FileName, true));
                string CheckHigh1    = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101DC", "101DD", FileName, true));
                string CheckHigh2    = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101DE", "101DF", FileName, true));
                string CheckHigh1b   = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFDC", "FFDD", FileName, true));
                string CheckHigh2b   = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFDE", "FFDF", FileName, true));
                long   ValCheckLowb  = Convertir.HexaToDecimal(CheckLow1b) + Convertir.HexaToDecimal(CheckLow2b);
                long   ValCheckHigh  = Convertir.HexaToDecimal(CheckHigh1) + Convertir.HexaToDecimal(CheckHigh2);
                long   ValCheckHighb = Convertir.HexaToDecimal(CheckHigh1b) + Convertir.HexaToDecimal(CheckHigh2b);
                long   ValCheckLow   = Convertir.HexaToDecimal(CheckLow1) + Convertir.HexaToDecimal(CheckLow2);

                //Fichier Valide ?
                if (ValCheckLow == 65535)
                {
                    return(true);                                        //LowRom 1
                }
                if (ValCheckLowb == 65535)
                {
                    return(true);                                        //LowRom 2
                }
                if (ValCheckHigh == 65535)
                {
                    return(true);                                        //HighRom
                }
                if (ValCheckHighb == 65535)
                {
                    return(true);             //HighRom
                }
                return(false);                //Fichier non valide
            }
            else
            {
                return(false);                //Fichier non trouver donc pa valide
            }
        }
예제 #4
0
        public static string AspireString(string pStartPos, string pStopPos, string FileName, bool LittleEndian)
        {
            int    startPos      = (int)Convertir.HexaToDecimal(pStartPos);
            int    stopPos       = (int)Convertir.HexaToDecimal(pStopPos);
            string FinalData     = "";
            int    ExtractLenght = stopPos - startPos + 1;

            if (ExtractLenght > 0)
            {
                if (File.Exists(FileName))
                {
                    FileStream   file   = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                    BinaryReader reader = null;

                    if (LittleEndian)
                    {
                        reader = new BinaryReader(file, Encoding.Unicode);
                    }
                    else
                    {
                        reader = new BinaryReader(file);
                    }

                    //Extraction des donner
                    if (reader.BaseStream.CanRead)
                    {
                        //Positione au debut
                        reader.BaseStream.Seek(startPos, SeekOrigin.Begin);

                        char[] data = reader.ReadChars(ExtractLenght);

                        FinalData = Convertir.CharArrayToString(data);
                    }

                    reader.Close();
                    file.Close();
                }
            }

            return(FinalData);
        }
예제 #5
0
 private void Control_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
 {
     if (this._isLoaded)
     {
         if (e.Delta > 0)
         {
             if (Position != "0")
             {
                 if (Convertir.HexaToDecimal(this._CurrentPosition) > this._ColumnSize)
                 {
                     Position = Convertir.DecimalToHexa(Convertir.HexaToDecimal(this._CurrentPosition) - this._ColumnSize);
                 }
                 else
                 {
                     Position = "0";
                 }
             }
         }
         else
         {
             Position = Convertir.DecimalToHexa(Convertir.HexaToDecimal(this._CurrentPosition) + this._ColumnSize);
         }
     }
 }
예제 #6
0
        /// <summary>
        /// Chargé en mémoire le fichier Rom spécifier par this._FileName
        /// </summary>
        /// <returns>Return true si le fichier est bien chargé</returns>
        public bool Load()
        {
            if (File.Exists(this._FileName))
            {
                if (SnesRom.isValid(this._FileName))                   //Verifie si le fichier Rom valide
                //Variable de Verification pour determiner de quel type est la rom a charg
                {
                    string CheckLow1     = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81DC", "81DD", this.FileName, true));
                    string CheckLow2     = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81DE", "81DF", this.FileName, true));
                    string CheckLow1b    = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FDC", "7FDD", this.FileName, true));
                    string CheckLow2b    = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FDE", "7FDF", this.FileName, true));
                    string CheckHigh1    = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101DC", "101DD", this.FileName, true));
                    string CheckHigh2    = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101DE", "101DF", this.FileName, true));
                    string CheckHigh1b   = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFDC", "FFDD", this.FileName, true));
                    string CheckHigh2b   = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFDE", "FFDF", this.FileName, true));
                    long   ValCheckLowb  = Convertir.HexaToDecimal(CheckLow1b) + Convertir.HexaToDecimal(CheckLow2b);
                    long   ValCheckHigh  = Convertir.HexaToDecimal(CheckHigh1) + Convertir.HexaToDecimal(CheckHigh2);
                    long   ValCheckHighb = Convertir.HexaToDecimal(CheckHigh1b) + Convertir.HexaToDecimal(CheckHigh2b);
                    long   ValCheckLow   = Convertir.HexaToDecimal(CheckLow1) + Convertir.HexaToDecimal(CheckLow2);

                    //Extraire les informations sur la rom dependant du type de rom
                    if (ValCheckLow == 65535)                     //LowRom 1
                    {
                        this._RomType       = RomType.LowRom_School_1;
                        this._RomName       = ExtractData.AspireString("81C0", "81D4", this.FileName).TrimEnd(new char[] { ' ' });
                        this._PostitionName = (int)Convertir.HexaToDecimal("81C0");
                        this._InfoCart      = (InformationCartouche)
                                              Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("81D6", "81D6", this.FileName, true)));
                        this._RomSizeMB = (ROMSize)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("81D7", "81D7", this.FileName, true)));
                        this._RamSizeKB = (RAMSize)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("81D8", "81D8", this.FileName, true)));
                        this._Country = (Country)
                                        Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("81D9", "81D9", this.FileName, true)));
                        this._Compagnie = (Compagnie)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("81DA", "81DA", this.FileName, true)));
                        this._Version      = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81DB", "81DB", this.FileName, true));
                        this._CompChecksum = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81DC", "81DD", this.FileName, true));
                        this._Checksum     = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81DE", "81DF", this.FileName, true));
                        this._NmiVblVector = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81EA", "81EB", this.FileName, true));
                        this._ResetVector  = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("81FC", "81FD", this.FileName, true));
                    }
                    else if (ValCheckLowb == 65535)                      //LowRom 2
                    {
                        this._RomType       = RomType.LowRom_School_2;
                        this._RomName       = ExtractData.AspireString("7FC0", "7FD4", this.FileName).TrimEnd(new char[] { ' ' });
                        this._PostitionName = (int)Convertir.HexaToDecimal("7FC0");
                        this._InfoCart      = (InformationCartouche)
                                              Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("7FD6", "7FD6", this.FileName, true)));
                        this._RomSizeMB = (ROMSize)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("7FD7", "7FD7", this.FileName, true)));
                        this._RamSizeKB = (RAMSize)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("7FD8", "7FD8", this.FileName, true)));
                        this._Country = (Country)
                                        Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("7FD9", "7FD9", this.FileName, true)));
                        this._Compagnie = (Compagnie)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("7FDA", "7FDA", this.FileName, true)));
                        this._Version      = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FDB", "7FDB", this.FileName, true));
                        this._CompChecksum = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FDC", "7FDD", this.FileName, true));
                        this._Checksum     = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FDE", "7FDF", this.FileName, true));
                        this._NmiVblVector = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FEA", "7FEB", this.FileName, true));
                        this._ResetVector  = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("7FFC", "7FFD", this.FileName, true));
                    }
                    else if (ValCheckHigh == 65535)                      // HighRom
                    {
                        this._RomType       = RomType.HighRom;
                        this._RomName       = ExtractData.AspireString("101C0", "101D4", this.FileName).TrimEnd(new char[] { ' ' });
                        this._PostitionName = (int)Convertir.HexaToDecimal("101C0");
                        this._InfoCart      = (InformationCartouche)
                                              Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("101D6", "101D6", this.FileName, true)));
                        this._RomSizeMB = (ROMSize)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("101D7", "101D7", this.FileName, true)));
                        this._RamSizeKB = (RAMSize)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("101D8", "101D8", this.FileName, true)));
                        this._Country = (Country)
                                        Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("101D9", "101D9", this.FileName, true)));
                        this._Compagnie = (Compagnie)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("101DA", "101DA", this.FileName, true)));
                        this._Version      = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101DB", "101DB", this.FileName, true));
                        this._CompChecksum = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101DC", "101DD", this.FileName, true));
                        this._Checksum     = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101DE", "101DF", this.FileName, true));
                        this._NmiVblVector = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101EA", "101EB", this.FileName, true));
                        this._ResetVector  = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("101FC", "101FD", this.FileName, true));
                    }
                    else if (ValCheckHighb == 65535)                      // HighRom
                    {
                        this._RomType       = RomType.HighRom;
                        this._RomName       = ExtractData.AspireString("FFC0", "FFD4", this.FileName).TrimEnd(new char[] { ' ' });
                        this._PostitionName = (int)Convertir.HexaToDecimal("FFC0");
                        this._InfoCart      = (InformationCartouche)
                                              Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("FFD6", "FFD6", this.FileName, true)));
                        this._RomSizeMB = (ROMSize)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("FFD7", "FFD7", this.FileName, true)));
                        this._RamSizeKB = (RAMSize)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("FFD8", "FFD8", this.FileName, true)));
                        this._Country = (Country)
                                        Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("FFD9", "FFD9", this.FileName, true)));
                        this._Compagnie = (Compagnie)
                                          Convertir.HexaToDecimal(
                            Convertir.StringHexa_LittleEndian(
                                ExtractData.AspireString("FFDA", "FFDA", this.FileName, true)));
                        this._Version      = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFDB", "FFDB", this.FileName, true));
                        this._CompChecksum = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFDC", "FFDD", this.FileName, true));
                        this._Checksum     = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFDE", "FFDF", this.FileName, true));
                        this._NmiVblVector = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFEA", "FFEB", this.FileName, true));
                        this._ResetVector  = Convertir.StringHexa_LittleEndian(ExtractData.AspireString("FFFC", "FFFD", this.FileName, true));
                    }

                    //Format d'affichage
                    if (this._Country.ToString() == "Japon" ||
                        this._Country.ToString() == "USA")
                    {
                        this._FormatAffichage = FormatAffichage.NTSC;
                    }
                    else
                    {
                        this._FormatAffichage = FormatAffichage.PAL;
                    }

                    //MD5 hashing
                    this._MD5 = HashFile.GetMD5Hexa(this._FileName);

                    #region DEBUG INFOS : Informations sur la Rom
//					#if DEBUG //Informations de debuggage
//						Debug.WriteLine("DEBUG INFOS START : VRS.Library.Console.SuperNintendo.SnesRom.Load()");
//						Debug.WriteLine("CheckLow1        :" + CheckLow1);
//						Debug.WriteLine("CheckLow2        :" + CheckLow2);
//						Debug.WriteLine("CheckLow1b       :" + CheckLow1b);
//						Debug.WriteLine("CheckLow2b       :" + CheckLow2b);
//						Debug.WriteLine("CheckHigh1       :" + CheckHigh1);
//						Debug.WriteLine("CheckHigh2       :" + CheckHigh2);
//						Debug.WriteLine("CheckHigh1b      :" + CheckHigh1b);
//						Debug.WriteLine("CheckHigh2b      :" + CheckHigh2b);
//						Debug.WriteLine("ValCheckLowb     :" + ValCheckLowb);
//						Debug.WriteLine("ValCheckHigh     :" + ValCheckHigh);
//						Debug.WriteLine("ValCheckHighb    :" + ValCheckHighb);
//						Debug.WriteLine("ValCheckLow      :" + ValCheckLow);
//						Debug.WriteLine("this._RomName    :" + this._RomName);
//						Debug.WriteLine("this._InfoCart   :" + this._InfoCart.ToString());
//						Debug.WriteLine("this._RomSizeMB  :" + this._RomSizeMB.ToString());
//						Debug.WriteLine("this._RamSizeKB  :" + this._RamSizeKB.ToString());
//						Debug.WriteLine("this._Country    :" + this._Country.ToString());
//						Debug.WriteLine("this._Compagnie  :" + this._Compagnie.ToString());
//						Debug.WriteLine("this._version    : 1." + this._Version);
//						Debug.WriteLine("this._CompChecksum :" + this._CompChecksum);
//						Debug.WriteLine("this._Checksum :" + this._Checksum);
//						Debug.WriteLine("this._ResetVector :" + this._ResetVector);
//						Debug.WriteLine("this._NmiVblVector :" + this._NmiVblVector);
//						Debug.WriteLine("this._FormatAffichage :" + this._FormatAffichage);
//						Debug.WriteLine("this._MD5 :" + this._MD5);
//						Debug.WriteLine("DEBUG INFOS END : VRS.Library.Console.SuperNintendo.SnesRom.Load()");
//					#endif
                    #endregion

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                throw new FileNotFoundException();
            }
        }
예제 #7
0
        private void LoadPosition(string Position)
        {
            try {
                //Preparation de la fonctions
                long StartPos = Convertir.HexaToDecimal(Position);
                long hauteur  = this.Font.Height;
                this._TotalLine = picAdresse.Height / hauteur; //Total de ligne a charger
                long   DataLenght = this._TotalLine * _ColumnSize;
                string EndPos     = Convertir.DecimalToHexa((StartPos + DataLenght) - 1);

                htbPosition.HexaValue = Position;
                dtbPosition.Valeur    = htbPosition.DecimalValue;
                sbValue.Value         = (int)Convertir.HexaToDecimal(Position);

                //Verifie que l'adresse de fin est bien au maximum de la fin
                if (Convertir.HexaToDecimal(EndPos) > this._FileLen)
                {
                    EndPos = Convertir.DecimalToHexa(this._FileLen);
                }

                //Extraction des données et preparation avant de les dessiners
                string   DataBrut = ExtractData.AspireString(Position, EndPos, this._FileName, true);
                string   DataView = ExtractData.AspireString(Position, EndPos, this._FileName, false);
                string[] Data     = Convertir.StringHexa_LittleEndian(DataBrut, true).Trim().Split(new char[] { ' ' });

                string[] Adresse = new string[this._TotalLine];
                if (!this._DecimalMode)
                {
                    //Creation des chaines de position en hexadecimale

                    long tempPos = StartPos;
                    Adresse[0] = String.Format("{0, 8:0}", Convertir.DecimalToHexa(tempPos));  //Premiere position
                    Adresse[0] = Adresse[0].Replace(' ', '0');
                    for (int i = 1; i < Adresse.Length; i++)
                    {
                        tempPos   += _ColumnSize;
                        Adresse[i] = String.Format("{0, 8:0}", Convertir.DecimalToHexa(tempPos));  //String.Format()
                        Adresse[i] = Adresse[i].Replace(' ', '0');
                    }
                }
                else
                {
                    //Creation des chaines de en decimale
                    long tempPos = StartPos;
                    Adresse[0] = String.Format("{0, 8:0}", tempPos);  //Premiere position
                    Adresse[0] = Adresse[0].Replace(' ', '0');
                    for (int i = 1; i < Adresse.Length; i++)
                    {
                        tempPos   += _ColumnSize;
                        Adresse[i] = String.Format("{0, 8:0}", tempPos);  //String.Format()
                        Adresse[i] = Adresse[i].Replace(' ', '0');
                    }
                }

                //Dessiner les position
                Graphics gfxAdresse = picAdresse.CreateGraphics();
                gfxAdresse.CompositingQuality = CompositingQuality.HighSpeed;
                gfxAdresse.Clear(Color.Gray);
                PointF ptAdr = new PointF(0, 0);
                for (int i = 0; i < Adresse.Length; i++)
                {
                    gfxAdresse.DrawString(Adresse[i], this.Font, Brushes.White, ptAdr, StringFormat.GenericDefault);
                    ptAdr.Y += this.Font.Height;
                }


                //Dessiner le Data
                Graphics gfxData = picData.CreateGraphics();
                gfxData.CompositingQuality = CompositingQuality.HighSpeed;
                gfxData.Clear(Color.White);
                PointF ptData = new PointF(0, 0);
                int    cnt    = 0;
                for (int i = 0; i < Adresse.Length; i++)
                {
                    for (int j = 0; j < _ColumnSize; j++)
                    {
                        if (cnt % 2 == 0)
                        {
                            gfxData.DrawString(Data[cnt] + " ", this.Font, Brushes.Black, ptData, StringFormat.GenericDefault);
                        }
                        else
                        {
                            gfxData.DrawString(Data[cnt] + " ", this.Font, Brushes.Blue, ptData, StringFormat.GenericDefault);
                        }

                        ptData.X += 20;
                        cnt++;
                    }

                    ptData.X  = 0;
                    ptData.Y += this.Font.Height;
                }

                //Affiche le Data en fonction de la TBL ou non
                if (this.UseTBL)
                {
                    if (this._ShowColor)
                    {
                        DrawTBLDataColorDTE(Data, Adresse.Length);
                    }
                    else
                    {
                        DrawTBLData(Data, Adresse.Length);
                    }
                }
                else
                {
                    DrawSimpleData(DataView, Adresse.Length);
                }
            }
            catch { }
        }