Esempio n. 1
0
            public static NesHeader FromBytes(byte[] bytes)
            {
                BinaryHeader binHeader = new BinaryHeader(bytes);

                NesHeader header = new NesHeader();

                header.IsNes20    = binHeader.GetRomHeaderVersion() == RomHeaderVersion.Nes2_0;
                header.PrgRom     = (uint)(binHeader.GetPrgSize());
                header.ChrRom     = (uint)(binHeader.GetChrSize());
                header.HasTrainer = binHeader.HasTrainer();
                header.HasBattery = binHeader.HasBattery();

                header.System = binHeader.GetTvSystem();
                header.Timing = binHeader.GetFrameTiming();

                header.Mirroring     = binHeader.GetMirroringType();
                header.MapperId      = (uint)binHeader.GetMapperID();
                header.SubmapperId   = (uint)binHeader.GetSubMapper();
                header.WorkRam       = (MemorySizes)binHeader.GetWorkRamSize();
                header.SaveRam       = (MemorySizes)binHeader.GetSaveRamSize();
                header.ChrRam        = (MemorySizes)binHeader.GetChrRamSize();
                header.ChrRamBattery = (MemorySizes)binHeader.GetSaveChrRamSize();
                header.InputType     = binHeader.GetInputType();
                header.VsPpu         = (VsPpuType)bytes[13];
                header.VsSystem      = binHeader.GetVsSystemType();

                return(header);
            }
Esempio n. 2
0
        public frmEditHeader()
        {
            InitializeComponent();

            this.hexBox.Font = new Font(BaseControl.MonospaceFontFamily, 10, FontStyle.Regular);

            NesHeader header = NesHeader.FromBytes(InteropEmu.DebugGetNesHeader());

            Entity = header;

            AddBinding("MapperId", txtMapperId, eNumberFormat.Decimal);
            AddBinding("SubmapperId", txtSubmapperId, eNumberFormat.Decimal);

            AddBinding("Mirroring", cboMirroringType);
            AddBinding("System", cboSystem);
            AddBinding("VsPpu", cboVsPpuType);

            AddBinding("HasBattery", chkBattery);
            AddBinding("HasTrainer", chkTrainer);

            AddBinding("PrgRom", txtPrgRomSize, eNumberFormat.Decimal);
            AddBinding("ChrRom", txtChrRomSize, eNumberFormat.Decimal);

            AddBinding("WorkRam", cboWorkRam);
            AddBinding("SaveRam", cboSaveRam);
            AddBinding("ChrRam", cboChrRam);
            AddBinding("ChrRamBattery", cboChrRamBattery);

            AddBinding("IsNes20", radNes2, radiNes);

            UpdateUI();
            UpdateVsDropdown();
        }
Esempio n. 3
0
        public frmEditHeader()
        {
            InitializeComponent();

            this.hexBox.Font = new Font(BaseControl.MonospaceFontFamily, 10, FontStyle.Regular);

            NesHeader header = NesHeader.FromBytes(InteropEmu.DebugGetNesHeader());

            Entity = header;

            AddBinding("MapperId", txtMapperId, eNumberFormat.Decimal);
            AddBinding("SubmapperId", txtSubmapperId, eNumberFormat.Decimal);

            AddBinding("Mirroring", cboMirroringType);
            AddBinding("Timing", cboFrameTiming);
            AddBinding("System", cboSystem);
            AddBinding("VsPpu", cboVsPpuType);
            AddBinding("VsSystem", cboVsSystemType);
            AddBinding("InputType", cboInputType);

            AddBinding("HasBattery", chkBattery);
            AddBinding("HasTrainer", chkTrainer);

            AddBinding("PrgRom", txtPrgRomSize, eNumberFormat.Decimal);
            AddBinding("ChrRom", txtChrRomSize, eNumberFormat.Decimal);

            AddBinding("WorkRam", cboWorkRam);
            AddBinding("SaveRam", cboSaveRam);
            AddBinding("ChrRam", cboChrRam);
            AddBinding("ChrRamBattery", cboChrRamBattery);

            AddBinding("IsNes20", radNes2, radiNes);

            UpdateUI();
            UpdateVsDropdown();

            _validSizeValues = new Dictionary <UInt64, int>();
            for (int i = 0; i < 256; i++)
            {
                int    multiplier = (i & 0x03) * 2 + 1;
                UInt64 value      = ((UInt64)1 << (i >> 2)) / 1024;
                _validSizeValues[(UInt64)multiplier * value] = i;
            }
        }
Esempio n. 4
0
            public static NesHeader FromBytes(byte[] bytes)
            {
                BinaryHeader binHeader = new BinaryHeader(bytes);

                NesHeader header = new NesHeader();

                header.IsNes20    = binHeader.GetRomHeaderVersion() == RomHeaderVersion.Nes2_0;
                header.PrgRom     = (uint)(binHeader.GetPrgSize() * 16);
                header.ChrRom     = (uint)(binHeader.GetChrSize() * 8);
                header.HasTrainer = binHeader.HasTrainer();
                header.HasBattery = binHeader.HasBattery();
                if (binHeader.IsVsSystem())
                {
                    header.System = TvSystem.VsSystem;
                }
                else if (binHeader.IsPlaychoice())
                {
                    header.System = TvSystem.Playchoice;
                }
                else if (binHeader.IsPalRom())
                {
                    header.System = TvSystem.Pal;
                }
                else
                {
                    header.System = TvSystem.Ntsc;
                }

                header.Mirroring     = binHeader.GetMirroringType();
                header.MapperId      = (uint)binHeader.GetMapperID();
                header.SubmapperId   = (uint)binHeader.GetSubMapper();
                header.WorkRam       = (MemorySizes)binHeader.GetWorkRamSize();
                header.SaveRam       = (MemorySizes)binHeader.GetSaveRamSize();
                header.ChrRam        = (MemorySizes)binHeader.GetChrRamSize();
                header.ChrRamBattery = (MemorySizes)binHeader.GetSaveChrRamSize();
                header.VsPpu         = (VsPpuType)bytes[13];

                return(header);
            }
Esempio n. 5
0
        protected override bool ValidateInput()
        {
            UpdateObject();

            NesHeader header = Entity as NesHeader;

            if ((header.PrgRom % 16) != 0)
            {
                lblError.Text    = "Error: PRG ROM size must be a multiple of 16 KB";
                lblError.Visible = true;
                return(false);
            }
            if ((header.ChrRom % 8) != 0)
            {
                lblError.Text    = "Error: CHR ROM size must be a multiple of 8 KB";
                lblError.Visible = true;
                return(false);
            }

            if (header.IsNes20)
            {
                if (header.MapperId >= 4096)
                {
                    lblError.Text    = "Error: Mapper ID must be lower than 4096";
                    lblError.Visible = true;
                    return(false);
                }
                if (header.SubmapperId >= 16)
                {
                    lblError.Text    = "Error: Submapper ID must be lower than 16";
                    lblError.Visible = true;
                    return(false);
                }
                if (header.ChrRom >= 32768)
                {
                    lblError.Text    = "Error: CHR ROM size must be lower than 32768 KB";
                    lblError.Visible = true;
                    return(false);
                }
                if (header.PrgRom >= 65536)
                {
                    lblError.Text    = "Error: PRG ROM size must be lower than 65536 KB";
                    lblError.Visible = true;
                    return(false);
                }
            }
            else
            {
                if (header.MapperId >= 256)
                {
                    lblError.Text    = "Error: Mapper ID must be lower than 256 ";
                    lblError.Visible = true;
                    return(false);
                }
                if (header.ChrRom >= 2048)
                {
                    lblError.Text    = "Error: CHR ROM size must be lower than 2048 KB";
                    lblError.Visible = true;
                    return(false);
                }
                if (header.PrgRom >= 4096)
                {
                    lblError.Text    = "Error: PRG ROM size must be lower than 4096 KB";
                    lblError.Visible = true;
                    return(false);
                }
            }
            lblError.Visible = false;

            hexBox.ByteProvider = new StaticByteProvider(header.ToBytes());

            return(base.ValidateInput());
        }