示例#1
0
        private void LoadRom()
        {
            OpenFileDialog ofd = new OpenFileDialog
            {
                Filter = "GBA Save Files|*.sav|All Files|*.*",
                Title  = "Select TMC Save File"
            };

            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            try
            {
                SRAM_ = new SRAM(ofd.FileName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            /*
             * if (SRAM.Instance.version.Equals(RegionVersion.None))
             * {
             *  MessageBox.Show("Invalid TMC save file. Please open a valid save.", "Invalid save", MessageBoxButtons.OK);
             *  statusText.Text = "Unable to determine save file.";
             *  return;
             * }
             */
            currentSaveFile_ = SRAM_.GetSaveFile(0);
            LoadData();
        }
示例#2
0
        public NESMemoryMapSlim(PPURegisters ppuRegisters, InputHandler inputHandler) : base()
        {
            this.ppuRegisters = ppuRegisters;
            this.inputHandler = inputHandler;

            this.sram  = new SRAM(MemoryRanges.SRAM, "SRAM");
            this.stack = new CPU.MOS6502.Stack(MemoryRanges.Stack, "Stack");

            this.prgROMLowerBank = new ExternalFacade(this, MemoryRanges.ProgramRomLowerBank, Constants.ProgramRomLowerBank);
            this.prgROMUpperBank = new ExternalFacade(this, MemoryRanges.ProgramRomUpperBank, Constants.ProgramRomUpperBank);

            this.ppuRegisterLookup = new Dictionary <int, Register8Bit>()
            {
                { PPURegisterAddresses.PPUCTRL, ppuRegisters.PPUCTRL },
                { PPURegisterAddresses.PPUMASK, ppuRegisters.PPUMASK },
                { PPURegisterAddresses.PPUSTATUS, ppuRegisters.PPUSTATUS },
                { PPURegisterAddresses.OAMADDR, ppuRegisters.OAMADDR },
                { PPURegisterAddresses.OAMDATA, ppuRegisters.OAMDATA },
                { PPURegisterAddresses.PPUADDR, ppuRegisters.PPUADDR },
                { PPURegisterAddresses.PPUDATA, ppuRegisters.PPUDATA },
                { PPURegisterAddresses.OAMDMA, ppuRegisters.OAMDMA }
            };

            this.apuRegisterLookup = new Dictionary <int, Register8Bit>()
            {
                { APURegisterAddresses.Pulse1TimerLow, null },
                { APURegisterAddresses.Pulse1TimerHigh, null },
                { APURegisterAddresses.Pulse2TimerLow, null },
                { APURegisterAddresses.Pulse2TimerHigh, null },
                { APURegisterAddresses.DirectLoad, null },
                { APURegisterAddresses.ChannelStatus, null },
                { APURegisterAddresses.TriangleTimerLow, null },
                { APURegisterAddresses.TriangleTimerHigh, null },
            };

            this.inputHandler.ControllerChanged += this.OnControllerChanged;

            this.ScopeMemoryRanges();
        }