Example #1
0
        internal void LoadRow(DataRow row, CPU cpu, Memory memory, GameBoy gameboy)
        {
            // We load the Registers
              cpu.Registers.A = GetByte(row["Ai"]);
              cpu.Registers.F = GetByte(row["Fi"]);
              cpu.Registers.B = GetByte(row["Bi"]);
              cpu.Registers.C = GetByte(row["Ci"]);
              cpu.Registers.D = GetByte(row["Di"]);
              cpu.Registers.E = GetByte(row["Ei"]);
              cpu.Registers.H = GetByte(row["Hi"]);
              cpu.Registers.L = GetByte(row["Li"]);
              cpu.Registers.PC = GetUShort(row["PCi"]);
              cpu.Registers.SP = GetUShort(row["SPi"]);

              // We load the rom
              ushort memoryAddress = 0x0000;
              int columnCount = row.Table.Columns.Count;
              int romColumnIndex = row.Table.Columns["ROM"].Ordinal;

              // Create a dummy cartridge
              var cartridgeData = new byte[columnCount - romColumnIndex];

              for (int columnIndex = romColumnIndex;
              columnIndex < columnCount;
              columnIndex++, memoryAddress++)
              {
            var element = row[columnIndex];
            if (element is System.DBNull) { break; }
            var value = Convert.ToByte((String)element, 16);
            cartridgeData[memoryAddress] = value;
              }

              gameboy.LoadCartridge("test", cartridgeData);
        }
Example #2
0
        public Disassembler(CPU cpu, MemorySpace.Memory memory)
        {
            _cpu = cpu;
              _memory = memory;

              Reset();
        }
Example #3
0
 internal MemoryHandler(GameBoy gameboy)
 {
     this.gameboy = gameboy;
       this.memory = (Memory)gameboy.Memory;
       this.cartridge = (Cartridge.Cartridge)gameboy.Cartridge;
       this.cpu = (CPU)gameboy.CPU;
       this.display = (Display)gameboy.Display;
       this.apu = (APU)gameboy.APU;
 }
Example #4
0
        /// <summary>
        /// Class constructor.
        /// Initializes cpu and memory.
        /// </summary>
        public GameBoy()
        {
            _state.Run = false;
            _stopwatch = new Stopwatch();

            _memory = new MemorySpace.Memory();
            _cpu    = new CPUSpace.CPU(this._memory);
            _interruptController = this._cpu._interruptController;
            _display             = new Display(this._interruptController, this._memory);
            _apu          = new AudioSpace.APU(this, this._memory, 44000, 2, 2);
            _serial       = new SerialSpace.SerialController(this._interruptController, this._memory);
            _disassembler = new Disassembler(_cpu, _memory);

            // Events
            _cpu.BreakpointFound   += BreakpointHandler;
            _cpu.InterruptHappened += InterruptHandler;
            _display.FrameReady    += FrameReadyHandler;

            InternalReset(false);
        }
Example #5
0
        /// <summary>
        /// Class constructor.
        /// Initializes cpu and memory.
        /// </summary>
        public GameBoy()
        {
            _state.Run = false;
            _stopwatch = new Stopwatch();

            _memory = new MemorySpace.Memory();
            _cpu = new CPUSpace.CPU(this._memory);
            _interruptController = this._cpu._interruptController;
            _display = new Display(this._interruptController, this._memory);
            _apu = new AudioSpace.APU(this, this._memory, 44000, 2, 2);
            _serial = new SerialSpace.SerialController(this._interruptController, this._memory);
            _disassembler = new Disassembler(_cpu, _memory);

            // Events
            _cpu.BreakpointFound += BreakpointHandler;
            _cpu.InterruptHappened += InterruptHandler;
            _display.FrameReady += FrameReadyHandler;

            InternalReset(false);
        }
Example #6
0
        internal void TestFlagsAndMemory(DataRow row, CPU cpu)
        {
            var testName = (String)row["Test"];

              // We test the flags
              Assert.AreEqual<byte>(GetByte(row["Af"]), cpu.Registers.A, testName + " Register A");
              Assert.AreEqual<byte>(GetByte(row["Ff"]), cpu.Registers.F, testName + " Register F");
              Assert.AreEqual<byte>(GetByte(row["Bf"]), cpu.Registers.B, testName + " Replace B");
              Assert.AreEqual<byte>(GetByte(row["Cf"]), cpu.Registers.C, testName + " Replace C");
              Assert.AreEqual<byte>(GetByte(row["Df"]), cpu.Registers.D, testName + " Replace D");
              Assert.AreEqual<byte>(GetByte(row["Ef"]), cpu.Registers.E, testName + " Replace E");
              Assert.AreEqual<byte>(GetByte(row["Hf"]), cpu.Registers.H, testName + " Replace H");
              Assert.AreEqual<byte>(GetByte(row["Lf"]), cpu.Registers.L, testName + " Replace L");
              Assert.AreEqual<ushort>(GetUShort(row["PCf"]), cpu.Registers.PC, testName + " PC");
              Assert.AreEqual<ushort>(GetUShort(row["SPf"]), cpu.Registers.SP, testName + " SP");

              // We test the memory address
              var testMemoryAddress = GetUShort(row["TestAddr"]);
              var testValue = GetByte(row["TestValue"]);
              Assert.AreEqual<byte>(
            cpu._memory.Read(testMemoryAddress),
            testValue,
            testName + " Memory Test");
        }