public SoundRecordingViewModel(IGameBoy gameboy)
        {
            _gameboy = gameboy;
            _apu     = gameboy.APU;

            _gameboy.StopRequested += _gameboy_StopRequested;
        }
Example #2
0
 public APUViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
 {
     _gameBoy = gameBoy;
       _dispatcher = dispatcher;
       _gameBoy.FrameCompleted += OnFrameCompleted;
       _spectrogram = new WriteableBitmap(_numberOfFramesPerImage, _fftSize, 96, 96, PixelFormats.Bgr32, null);
 }
Example #3
0
 public APUViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
 {
     _gameBoy                 = gameBoy;
     _dispatcher              = dispatcher;
     _gameBoy.FrameCompleted += OnFrameCompleted;
     _spectrogram             = new WriteableBitmap(_numberOfFramesPerImage, _fftSize, 96, 96, PixelFormats.Bgr32, null);
 }
 public MemoryImageViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
 {
     _gameBoy                 = gameBoy;
     _dispatcher              = dispatcher;
     _gameBoy.FrameCompleted += OnFrameCompleted;
     _memoryImage             = new WriteableBitmap(256, 256, 96, 96, PixelFormats.Gray8, null);
 }
 public MemoryImageViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
 {
     _gameBoy = gameBoy;
       _dispatcher = dispatcher;
       _gameBoy.FrameCompleted += OnFrameCompleted;
       _memoryImage = new WriteableBitmap(256, 256, 96, 96, PixelFormats.Gray8, null);
 }
        public SoundRecordingViewModel(IGameBoy gameboy)
        {
            _gameboy = gameboy;
              _apu = gameboy.APU;

              _gameboy.StopRequested += _gameboy_StopRequested;
        }
        public void AssertAddUshort(ushort value1, ushort value2, byte registerF, ushort expectedSum, byte expectedF)
        {
            _gameboy = new GameBoy();
            _gameboy.Processor.Registers.F = registerF;

            Assert.Equal(expectedSum, _gameboy.Processor.Add(value1, value2));
            Assert.Equal(expectedF, _gameboy.Processor.Registers.F);
        }
Example #8
0
        public AudioManager(IGameBoy gameboy)
        {
            _gameboy = gameboy;
            gameboy.FrameCompleted += gameBoy_FrameCompleted;
            gameboy.PauseRequested += GameBoy_PauseRequested;
            gameboy.StopRequested  += GameBoy_StopRequested;

            ReloadAPU();
        }
Example #9
0
        public DissasembleViewModel(BreakpointsViewModel breakpoints, IGameBoy gameBoy)
        {
            _breakpoints  = breakpoints;
            _gameBoy      = gameBoy;
            _cpu          = gameBoy.CPU;
            _disassembler = gameBoy.Disassembler;

            _breakpoints.BreakpointChanged += _breakpoints_BreakpointChanged;
        }
        public DissasembleViewModel(BreakpointsViewModel breakpoints, IGameBoy gameBoy)
        {
            _breakpoints = breakpoints;
              _gameBoy = gameBoy;
              _cpu = gameBoy.CPU;
              _disassembler = gameBoy.Disassembler;

              _breakpoints.BreakpointChanged += _breakpoints_BreakpointChanged;
        }
Example #11
0
        public CPUViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _gameBoy    = gameBoy;
            _cpu        = _gameBoy.CPU;
            _dispatcher = dispatcher;

            //_gameBoy.Display.FrameCompleted += OnFrameCompleted;
            //_gameBoy.StepCompleted += OnFrameCompleted;
        }
Example #12
0
        public AudioManager(IGameBoy gameboy)
        {
            _gameboy = gameboy;
              gameboy.FrameCompleted += gameBoy_FrameCompleted;
              gameboy.PauseRequested += GameBoy_PauseRequested;
              gameboy.StopRequested += GameBoy_StopRequested;

              ReloadAPU();
        }
        public void AssertAnd(byte value, byte registerA, byte registerF, byte expectedSum, byte expectedF)
        {
            _gameboy = new GameBoy();
            _gameboy.Processor.Registers.A = registerA;
            _gameboy.Processor.Registers.F = registerF;

            Assert.Equal(expectedSum, _gameboy.Processor.And(value));
            Assert.Equal(expectedF, _gameboy.Processor.Registers.F);
        }
Example #14
0
 public Memory(IGameBoy device)
 {
     _device           = device;
     _internalRam      = new byte[0x2000];
     _internalVideoRam = new byte[0x2000];
     _oamMemory        = new byte[0x00A0];
     _ioMemory         = new byte[0x004C];
     _highInternalRam  = new byte[0x007F];
 }
Example #15
0
        public BreakpointViewModel(IGameBoy gameboy, IInstruction inst)
        {
            _gameboy     = gameboy;
            _instruction = inst;

            OriginalAddress = inst.Address;
            Address         = "0x" + inst.Address.ToString("x2");
            Name            = inst.Name;
        }
Example #16
0
        public CPUViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _gameBoy = gameBoy;
              _cpu = _gameBoy.CPU;
              _dispatcher = dispatcher;

              //_gameBoy.Display.FrameCompleted += OnFrameCompleted;
              //_gameBoy.StepCompleted += OnFrameCompleted;
        }
        public BreakpointViewModel(IGameBoy gameboy, IInstruction inst)
        {
            _gameboy = gameboy;
              _instruction = inst;

              OriginalAddress = inst.Address;
              Address = "0x" + inst.Address.ToString("x2");
              Name = inst.Name;
        }
 public InstructionHistogramViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
 {
     _gameBoy = gameBoy;
       _dispatcher = dispatcher;
       _gameBoy.FrameCompleted += OnFrameCompleted;
       _cpu = _gameBoy.CPU;
       _histogram = new WriteableBitmap(16, 16, 96, 96, PixelFormats.Gray16, null);
       _cbHistogram = new WriteableBitmap(16, 16, 96, 96, PixelFormats.Gray16, null);
       _maxHistogramValue = 65535;
 }
Example #19
0
 public InstructionHistogramViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
 {
     _gameBoy                 = gameBoy;
     _dispatcher              = dispatcher;
     _gameBoy.FrameCompleted += OnFrameCompleted;
     _cpu               = _gameBoy.CPU;
     _histogram         = new WriteableBitmap(16, 16, 96, 96, PixelFormats.Gray16, null);
     _cbHistogram       = new WriteableBitmap(16, 16, 96, 96, PixelFormats.Gray16, null);
     _maxHistogramValue = 65535;
 }
Example #20
0
        public void AssertFlags(byte F, byte expectedZ, byte expectedN, byte expectedH, byte expectedC)
        {
            _gameboy = new GameBoy();
            _gameboy.Processor.Registers.F = F;

            Assert.Equal(_gameboy.Processor.Registers.ZFlag, expectedZ);
            Assert.Equal(_gameboy.Processor.Registers.NFlag, expectedN);
            Assert.Equal(_gameboy.Processor.Registers.HFlag, expectedH);
            Assert.Equal(_gameboy.Processor.Registers.CFlag, expectedC);
        }
        public DisplayTimingViewModel(IGameBoy gameboy, IDisplay display, IDispatcher dispatcher)
        {
            _gameBoy = gameboy;
              _display = display;
              //_gameBoy.FrameCompleted += OnFrameCompleted;
              _dispatcher = dispatcher;

              var disDef = _display.GetDisplayDefinition();
              _displayTiming = new WriteableBitmap(disDef.TimingPixelCountX, disDef.TimingPixelCountY,
                                           96, 96, PixelFormats.Bgra32, null);
        }
        public InterruptManagerViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _dispatcher = dispatcher;
              _gameBoy = gameBoy;
              //_gameBoy.FrameCompleted += OnFrameCompleted;

              InterruptList.Add(new InterruptViewModel("Vertical Blank", Interrupts.VerticalBlanking, _gameBoy));
              InterruptList.Add(new InterruptViewModel("Timer Overflow", Interrupts.TimerOverflow, _gameBoy));
              InterruptList.Add(new InterruptViewModel("LCD Status", Interrupts.LCDCStatus, _gameBoy));
              InterruptList.Add(new InterruptViewModel("Button Pressed", Interrupts.P10to13TerminalNegativeEdge, _gameBoy));
              InterruptList.Add(new InterruptViewModel("Serial Transfer Completed", Interrupts.SerialIOTransferCompleted, _gameBoy));
        }
        public IORegistersManagerViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _dispatcher = dispatcher;
              _gameBoy = gameBoy;
              _gameBoy.StepCompleted += _gameBoy_StepCompleted;
              _gameBoy.PauseRequested += _gameBoy_PauseRequested;

              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF00: P1", MMR.P1, _gameBoy));
              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF01: SB", MMR.SB, _gameBoy));
              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF02: SC", MMR.SC, _gameBoy));
              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF04: DIV", MMR.DIV, _gameBoy));
              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF05: TIMA", MMR.TIMA, _gameBoy));
              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF06: TMA", MMR.TMA, _gameBoy));
              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF07: TAC", MMR.TAC, _gameBoy));
              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF0F: IF", MMR.IF, _gameBoy));
              MiscRegisters.Add(new MemoryMappedRegisterViewModel("FFFF: IE", MMR.IE, _gameBoy));

              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF40: LCDC", MMR.LCDC, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF41: STAT", MMR.STAT, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF42: SCY", MMR.SCY, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF43: SCX", MMR.SCX, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF44: LY", MMR.LY, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF45: LYC", MMR.LYC, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF47: BGP", MMR.BGP, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF48: OBP0", MMR.OBP0, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF49: OBP1", MMR.OBP1, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF4A: WY", MMR.WY, _gameBoy));
              DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF4B: WX", MMR.WX, _gameBoy));

              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF10: NR10", MMR.NR10, _gameBoy));
              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF11: NR11", MMR.NR11, _gameBoy));
              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF12: NR12", MMR.NR12, _gameBoy));
              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF13: NR13", MMR.NR13, _gameBoy));
              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF14: NR14", MMR.NR14, _gameBoy));
              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF16: NR21", MMR.NR21, _gameBoy));
              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF17: NR22", MMR.NR22, _gameBoy));
              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF18: NR23", MMR.NR23, _gameBoy));
              SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF19: NR24", MMR.NR24, _gameBoy));

              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1A: NR30", MMR.NR30, _gameBoy));
              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1B: NR31", MMR.NR31, _gameBoy));
              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1C: NR32", MMR.NR32, _gameBoy));
              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1D: NR33", MMR.NR33, _gameBoy));
              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1E: NR34", MMR.NR34, _gameBoy));
              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF20: NR41", MMR.NR41, _gameBoy));
              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF21: NR42", MMR.NR42, _gameBoy));
              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF22: NR43", MMR.NR43, _gameBoy));
              SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF23: NR44", MMR.NR44, _gameBoy));

              SoundRegistersSet3.Add(new MemoryMappedRegisterViewModel("FF24: NR50", MMR.NR50, _gameBoy));
              SoundRegistersSet3.Add(new MemoryMappedRegisterViewModel("FF25: NR51", MMR.NR51, _gameBoy));
              SoundRegistersSet3.Add(new MemoryMappedRegisterViewModel("FF26: NR52", MMR.NR52, _gameBoy));
        }
        public SpriteLayerViewModel(IGameBoy gameboy, IDisplay display, IDispatcher dispatcher)
        {
            _gameBoy = gameboy;
            _display = display;
            //_gameBoy.FrameCompleted += OnFrameCompleted;
            _dispatcher = dispatcher;

            var disDef = _display.GetDisplayDefinition();

            _spriteLayer = new WriteableBitmap(disDef.ScreenPixelCountX, disDef.ScreenPixelCountY,
                                               96, 96, PixelFormats.Bgra32, null);
        }
Example #25
0
 public MainWindow()
 {
     InitializeComponent();
     _gameBoy             = new GameBoy();
     _keyboardHandler     = new KeyboardHandler();
     _mainWindowViewModel = new GameBoyViewModel(_gameBoy,
                                                 new DispatcherAdapter(this),
                                                 new WindowAdapter(this),
                                                 new OpenFileDialogAdapterFactory(),
                                                 _keyboardHandler);
     this.DataContext = _mainWindowViewModel;
 }
        public IORegistersManagerViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _dispatcher              = dispatcher;
            _gameBoy                 = gameBoy;
            _gameBoy.StepCompleted  += _gameBoy_StepCompleted;
            _gameBoy.PauseRequested += _gameBoy_PauseRequested;

            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF00: P1", MMR.P1, _gameBoy));
            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF01: SB", MMR.SB, _gameBoy));
            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF02: SC", MMR.SC, _gameBoy));
            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF04: DIV", MMR.DIV, _gameBoy));
            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF05: TIMA", MMR.TIMA, _gameBoy));
            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF06: TMA", MMR.TMA, _gameBoy));
            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF07: TAC", MMR.TAC, _gameBoy));
            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FF0F: IF", MMR.IF, _gameBoy));
            MiscRegisters.Add(new MemoryMappedRegisterViewModel("FFFF: IE", MMR.IE, _gameBoy));

            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF40: LCDC", MMR.LCDC, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF41: STAT", MMR.STAT, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF42: SCY", MMR.SCY, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF43: SCX", MMR.SCX, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF44: LY", MMR.LY, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF45: LYC", MMR.LYC, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF47: BGP", MMR.BGP, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF48: OBP0", MMR.OBP0, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF49: OBP1", MMR.OBP1, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF4A: WY", MMR.WY, _gameBoy));
            DisplayRegisters.Add(new MemoryMappedRegisterViewModel("FF4B: WX", MMR.WX, _gameBoy));

            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF10: NR10", MMR.NR10, _gameBoy));
            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF11: NR11", MMR.NR11, _gameBoy));
            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF12: NR12", MMR.NR12, _gameBoy));
            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF13: NR13", MMR.NR13, _gameBoy));
            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF14: NR14", MMR.NR14, _gameBoy));
            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF16: NR21", MMR.NR21, _gameBoy));
            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF17: NR22", MMR.NR22, _gameBoy));
            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF18: NR23", MMR.NR23, _gameBoy));
            SoundRegistersSet1.Add(new MemoryMappedRegisterViewModel("FF19: NR24", MMR.NR24, _gameBoy));

            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1A: NR30", MMR.NR30, _gameBoy));
            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1B: NR31", MMR.NR31, _gameBoy));
            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1C: NR32", MMR.NR32, _gameBoy));
            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1D: NR33", MMR.NR33, _gameBoy));
            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF1E: NR34", MMR.NR34, _gameBoy));
            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF20: NR41", MMR.NR41, _gameBoy));
            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF21: NR42", MMR.NR42, _gameBoy));
            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF22: NR43", MMR.NR43, _gameBoy));
            SoundRegistersSet2.Add(new MemoryMappedRegisterViewModel("FF23: NR44", MMR.NR44, _gameBoy));

            SoundRegistersSet3.Add(new MemoryMappedRegisterViewModel("FF24: NR50", MMR.NR50, _gameBoy));
            SoundRegistersSet3.Add(new MemoryMappedRegisterViewModel("FF25: NR51", MMR.NR51, _gameBoy));
            SoundRegistersSet3.Add(new MemoryMappedRegisterViewModel("FF26: NR52", MMR.NR52, _gameBoy));
        }
Example #27
0
        public InterruptManagerViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _dispatcher = dispatcher;
            _gameBoy    = gameBoy;
            //_gameBoy.FrameCompleted += OnFrameCompleted;

            InterruptList.Add(new InterruptViewModel("Vertical Blank", Interrupts.VerticalBlanking, _gameBoy));
            InterruptList.Add(new InterruptViewModel("Timer Overflow", Interrupts.TimerOverflow, _gameBoy));
            InterruptList.Add(new InterruptViewModel("LCD Status", Interrupts.LCDCStatus, _gameBoy));
            InterruptList.Add(new InterruptViewModel("Button Pressed", Interrupts.P10to13TerminalNegativeEdge, _gameBoy));
            InterruptList.Add(new InterruptViewModel("Serial Transfer Completed", Interrupts.SerialIOTransferCompleted, _gameBoy));
        }
Example #28
0
 public void AssertInitialize()
 {
     _gameboy = new GameBoy();
     _gameboy.Processor.Registers.Initialize();
     Assert.Equal(0x01B0, _gameboy.Processor.Registers.AF);
     Assert.Equal(0x0013, _gameboy.Processor.Registers.BC);
     Assert.Equal(0x00D8, _gameboy.Processor.Registers.DE);
     Assert.Equal(0x014D, _gameboy.Processor.Registers.HL);
     Assert.Equal(0x0100, _gameboy.Processor.Registers.PC);
     Assert.Equal(0xFFFE, _gameboy.Processor.Registers.SP);
     Assert.True(_gameboy.Processor.Registers.IME);
 }
 public MainWindow()
 {
     InitializeComponent();
     _gameBoy = new GameBoy();
     _keyboardHandler = new KeyboardHandler();
     _mainWindowViewModel = new GameBoyViewModel(_gameBoy,
                                                 new DispatcherAdapter(this),
                                                 new WindowAdapter(this),
                                                 new OpenFileDialogAdapterFactory(),
                                                 _keyboardHandler);
     this.DataContext = _mainWindowViewModel;
 }
        public GameBoyGamePadViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _dispatcher = dispatcher;
            _gameBoy = gameBoy;
            _display = _gameBoy.Display;
            _gameBoy.FrameCompleted += OnFrameCompleted;

            VideoSpace.DisplayDefinition disDef = _display.GetDisplayDefinition();
            _screen = new WriteableBitmap(disDef.ScreenPixelCountX, disDef.ScreenPixelCountY,
                                          96, 96,
                                          System.Windows.Media.PixelFormats.Bgra32, null);
            _frame = new uint[disDef.ScreenPixelCountX * disDef.ScreenPixelCountY];
        }
        public GameBoyGamePadViewModel(IGameBoy gameBoy, IDispatcher dispatcher)
        {
            _dispatcher              = dispatcher;
            _gameBoy                 = gameBoy;
            _display                 = _gameBoy.Display;
            _gameBoy.FrameCompleted += OnFrameCompleted;

            VideoSpace.DisplayDefinition disDef = _display.GetDisplayDefinition();
            _screen = new WriteableBitmap(disDef.ScreenPixelCountX, disDef.ScreenPixelCountY,
                                          96, 96,
                                          System.Windows.Media.PixelFormats.Bgra32, null);
            _frame = new uint[disDef.ScreenPixelCountX * disDef.ScreenPixelCountY];
        }
Example #32
0
        public void AssertRegisters16to8(ushort value, byte expected1, byte expected2)
        {
            _gameboy = new GameBoy();

            _gameboy.Processor.Registers.AF = value;
            _gameboy.Processor.Registers.BC = value;
            _gameboy.Processor.Registers.DE = value;
            _gameboy.Processor.Registers.HL = value;

            Assert.Equal(expected1 * 0x100 | expected2, _gameboy.Processor.Registers.AF);
            Assert.Equal(expected1 * 0x100 | expected2, _gameboy.Processor.Registers.BC);
            Assert.Equal(expected1 * 0x100 | expected2, _gameboy.Processor.Registers.DE);
            Assert.Equal(expected1 * 0x100 | expected2, _gameboy.Processor.Registers.HL);
        }
        public SpritesViewModel(IGameBoy gameboy, IDisplay display, IMemory memory, IDispatcher dispatcher)
        {
            _gameBoy = gameboy;
              _display = display;
              //_gameBoy.FrameCompleted += OnFrameCompleted;
              _memory = memory;
              _dispatcher = dispatcher;

              for (int i = 0; i < 40; i++)
              {
            Sprites.Add(new SpriteViewModel());
              }
              SelectedSprite = Sprites.First();
        }
        public DisplayViewModel(IGameBoy gameboy, IDisplay display, IMemory memory, IDispatcher dispatcher)
        {
            _gameBoy = gameboy;
              _display = display;
              _gameBoy.FrameCompleted += OnFrameCompleted;
              _memory = memory;
              _dispatcher = dispatcher;

              _background = new BackgroundViewModel(gameboy, display, dispatcher);
              _tileMap = new TileMapViewModel(gameboy, display, dispatcher);
              _window = new WindowViewModel(gameboy, display, dispatcher);
              _sprites = new SpritesViewModel(gameboy, display, memory, dispatcher);
              _spriteLayer = new SpriteLayerViewModel(gameboy, display, dispatcher);
              _displayTiming = new DisplayTimingViewModel(gameboy, display, dispatcher);
        }
        public SpritesViewModel(IGameBoy gameboy, IDisplay display, IMemory memory, IDispatcher dispatcher)
        {
            _gameBoy = gameboy;
            _display = display;
            //_gameBoy.FrameCompleted += OnFrameCompleted;
            _memory     = memory;
            _dispatcher = dispatcher;


            for (int i = 0; i < 40; i++)
            {
                Sprites.Add(new SpriteViewModel());
            }
            SelectedSprite = Sprites.First();
        }
        public DisplayViewModel(IGameBoy gameboy, IDisplay display, IMemory memory, IDispatcher dispatcher)
        {
            _gameBoy = gameboy;
            _display = display;
            _gameBoy.FrameCompleted += OnFrameCompleted;
            _memory     = memory;
            _dispatcher = dispatcher;

            _background    = new BackgroundViewModel(gameboy, display, dispatcher);
            _tileMap       = new TileMapViewModel(gameboy, display, dispatcher);
            _window        = new WindowViewModel(gameboy, display, dispatcher);
            _sprites       = new SpritesViewModel(gameboy, display, memory, dispatcher);
            _spriteLayer   = new SpriteLayerViewModel(gameboy, display, dispatcher);
            _displayTiming = new DisplayTimingViewModel(gameboy, display, dispatcher);
        }
        public GameBoyContollerViewModel(IGameBoy gameBoy, IOpenFileDialogFactory fileDialogFactory,
                                         BreakpointsViewModel breakpoints)
        {
            _gameBoy = gameBoy;
            _fileDialog = fileDialogFactory.Create();
            _fileDialog.OnFileOpened += OnFileOpened;

            audioManager = new AudioManager(gameBoy);

            _breakpoints = breakpoints;
            _gameBoy = gameBoy;
            _cpu = gameBoy.CPU;
            _disassembler = gameBoy.Disassembler;

            _breakpoints.BreakpointChanged += _breakpoints_BreakpointChanged;
        }
Example #38
0
        public GameBoyContollerViewModel(IGameBoy gameBoy, IOpenFileDialogFactory fileDialogFactory,
                                         BreakpointsViewModel breakpoints)
        {
            _gameBoy    = gameBoy;
            _fileDialog = fileDialogFactory.Create();
            _fileDialog.OnFileOpened += OnFileOpened;

            audioManager = new AudioManager(gameBoy);

            _breakpoints  = breakpoints;
            _gameBoy      = gameBoy;
            _cpu          = gameBoy.CPU;
            _disassembler = gameBoy.Disassembler;

            _breakpoints.BreakpointChanged += _breakpoints_BreakpointChanged;
        }
Example #39
0
        public void AssertRegisters16(ushort value, ushort expected)
        {
            _gameboy = new GameBoy();
            _gameboy.Processor.Registers.AF = value;
            _gameboy.Processor.Registers.BC = value;
            _gameboy.Processor.Registers.DE = value;
            _gameboy.Processor.Registers.HL = value;
            _gameboy.Processor.Registers.SP = value;
            _gameboy.Processor.Registers.PC = value;

            Assert.Equal(_gameboy.Processor.Registers.AF, expected);
            Assert.Equal(_gameboy.Processor.Registers.BC, expected);
            Assert.Equal(_gameboy.Processor.Registers.DE, expected);
            Assert.Equal(_gameboy.Processor.Registers.HL, expected);
            Assert.Equal(_gameboy.Processor.Registers.SP, expected);
            Assert.Equal(_gameboy.Processor.Registers.PC, expected);
        }
        public GameBoyViewModel(IGameBoy gameBoy, IDispatcher dispatcher, IWindow window,
                                IOpenFileDialogFactory fileDialogFactory,
                                IKeyboardHandler keyboardHandler)
        {
            _gameBoy                  = gameBoy;
            _dispatcher               = dispatcher;
            _window                   = window;
            _keyboardHandler          = keyboardHandler;
            _keyboardHandler.KeyDown += OnKeyDown;
            _keyboardHandler.KeyUp   += OnKeyUp;
            _window.OnClosing        += HandleClosing;

            _buttonMapping = new ButtonMapping();

            _memory = new MemoryViewModel(_gameBoy.Memory, "Memory View");
            _cpu    = new CPUViewModel(_gameBoy, _dispatcher);

            // TODO(aaecheve): Should this be another function handling this?
            _gameBoy.CPU.BreakpointFound   += BreakpointHandler;
            _gameBoy.CPU.InterruptHappened += InterruptHandler;
            _gameBoy.ErrorEvent            += _gameBoy_ErrorEvent;

            _interrupt             = new InterruptManagerViewModel(_gameBoy, _dispatcher);
            _ioRegisters           = new IORegistersManagerViewModel(_gameBoy, _dispatcher);
            _soundChannelInternals = new SoundChannelInternalsViewModel(_gameBoy);
            _display              = new DisplayViewModel(_gameBoy, _gameBoy.Display, _gameBoy.Memory, _dispatcher);
            _gameBoyGamePad       = new GameBoyGamePadViewModel(_gameBoy, _dispatcher);
            _breakpoints          = new BreakpointsViewModel(_gameBoy);
            _dissasemble          = new DissasembleViewModel(_breakpoints, _gameBoy);
            _instructionHistogram = new InstructionHistogramViewModel(_gameBoy, _dispatcher);
            _apu            = new APUViewModel(_gameBoy, _dispatcher);
            _memoryImage    = new MemoryImageViewModel(_gameBoy, _dispatcher);
            _soundRecording = new SoundRecordingViewModel(_gameBoy);
            _controls       = new ControlsViewModel(this, _buttonMapping);

            // Gameboy Controller events
            _gameBoyController = new GameBoyContollerViewModel(_gameBoy, fileDialogFactory, _breakpoints);
            _gameBoyController.OnFileLoaded += FileLoadedHandler;
            _gameBoyController.OnStep       += StepHandler;
            _gameBoyController.OnRun        += RunHandler;
            _gameBoyController.OnPause      += PauseHandler;
        }
        public GameBoyViewModel(IGameBoy gameBoy, IDispatcher dispatcher, IWindow window, 
                                IOpenFileDialogFactory fileDialogFactory, 
                                IKeyboardHandler keyboardHandler)
        {
            _gameBoy = gameBoy;
            _dispatcher = dispatcher;
            _window = window;
            _keyboardHandler = keyboardHandler;
            _keyboardHandler.KeyDown += OnKeyDown;
            _keyboardHandler.KeyUp += OnKeyUp;
            _window.OnClosing += HandleClosing;

            _buttonMapping = new ButtonMapping();

            _memory = new MemoryViewModel(_gameBoy.Memory, "Memory View");
            _cpu = new CPUViewModel(_gameBoy, _dispatcher);

            // TODO(aaecheve): Should this be another function handling this?
            _gameBoy.CPU.BreakpointFound += BreakpointHandler;
            _gameBoy.CPU.InterruptHappened += InterruptHandler;
            _gameBoy.ErrorEvent += _gameBoy_ErrorEvent;

            _interrupt = new InterruptManagerViewModel(_gameBoy, _dispatcher);
            _ioRegisters = new IORegistersManagerViewModel(_gameBoy, _dispatcher);
            _soundChannelInternals = new SoundChannelInternalsViewModel(_gameBoy);
            _display = new DisplayViewModel(_gameBoy, _gameBoy.Display, _gameBoy.Memory, _dispatcher);
            _gameBoyGamePad = new GameBoyGamePadViewModel(_gameBoy, _dispatcher);
            _breakpoints = new BreakpointsViewModel(_gameBoy);
            _dissasemble = new DissasembleViewModel(_breakpoints, _gameBoy);
            _instructionHistogram = new InstructionHistogramViewModel(_gameBoy, _dispatcher);
            _apu = new APUViewModel(_gameBoy, _dispatcher);
            _memoryImage = new MemoryImageViewModel(_gameBoy, _dispatcher);
            _soundRecording = new SoundRecordingViewModel(_gameBoy);
            _controls = new ControlsViewModel(this, _buttonMapping);

            // Gameboy Controller events
            _gameBoyController = new GameBoyContollerViewModel(_gameBoy, fileDialogFactory, _breakpoints);
            _gameBoyController.OnFileLoaded += FileLoadedHandler;
            _gameBoyController.OnStep += StepHandler;
            _gameBoyController.OnRun += RunHandler;
            _gameBoyController.OnPause += PauseHandler;
        }
Example #42
0
        public void AssertRegisters8to16(byte value1, byte value2, ushort expected)
        {
            _gameboy = new GameBoy();
            _gameboy.Processor.Registers.A = value1;
            _gameboy.Processor.Registers.F = value2;

            _gameboy.Processor.Registers.B = value1;
            _gameboy.Processor.Registers.C = value2;

            _gameboy.Processor.Registers.D = value1;
            _gameboy.Processor.Registers.E = value2;

            _gameboy.Processor.Registers.H = value1;
            _gameboy.Processor.Registers.L = value2;

            Assert.Equal(expected, _gameboy.Processor.Registers.A * 0x100 | _gameboy.Processor.Registers.F);
            Assert.Equal(expected, _gameboy.Processor.Registers.B * 0x100 | _gameboy.Processor.Registers.C);
            Assert.Equal(expected, _gameboy.Processor.Registers.D * 0x100 | _gameboy.Processor.Registers.E);
            Assert.Equal(expected, _gameboy.Processor.Registers.H * 0x100 | _gameboy.Processor.Registers.L);
        }
Example #43
0
        public void AssertRegisters8(byte value, byte expected)
        {
            _gameboy = new GameBoy();
            _gameboy.Processor.Registers.A = value;
            _gameboy.Processor.Registers.B = value;
            _gameboy.Processor.Registers.C = value;
            _gameboy.Processor.Registers.D = value;
            _gameboy.Processor.Registers.E = value;
            _gameboy.Processor.Registers.H = value;
            _gameboy.Processor.Registers.L = value;
            _gameboy.Processor.Registers.F = value;

            Assert.Equal(_gameboy.Processor.Registers.A, expected);
            Assert.Equal(_gameboy.Processor.Registers.B, expected);
            Assert.Equal(_gameboy.Processor.Registers.C, expected);
            Assert.Equal(_gameboy.Processor.Registers.D, expected);
            Assert.Equal(_gameboy.Processor.Registers.E, expected);
            Assert.Equal(_gameboy.Processor.Registers.H, expected);
            Assert.Equal(_gameboy.Processor.Registers.L, expected);
            Assert.Equal(_gameboy.Processor.Registers.F, expected);
        }
Example #44
0
 public Processor(IGameBoy device)
 {
     _device   = device;
     Registers = new Registers();
 }
 public MemoryMappedRegisterViewModel(string name, MMR register, IGameBoy gameBoy)
 {
     _name = name;
       _register = register;
       _gameBoy = gameBoy;
 }
 public InterruptViewModel(string name, Interrupts interrupt, IGameBoy gameBoy)
 {
     _name = name;
       _interrupt = interrupt;
       _gameBoy = gameBoy;
 }
Example #47
0
 public MemoryMappedRegisterViewModel(string name, MMR register, IGameBoy gameBoy)
 {
     _name     = name;
     _register = register;
     _gameBoy  = gameBoy;
 }
Example #48
0
 public SharpBoyBusinessLogic(IGameBoy device)
 {
     Device = device;
 }
 public BreakpointsViewModel(IGameBoy gameboy)
 {
     _gameboy = gameboy;
       _gameboy.CPU.BreakpointFound += CPU_BreakpointFound;
 }
 internal SoundChannelInternalsViewModel(IGameBoy gameboy)
 {
     _gameboy = gameboy;
 }
 public InterruptViewModel(string name, Interrupts interrupt, IGameBoy gameBoy)
 {
     _name      = name;
     _interrupt = interrupt;
     _gameBoy   = gameBoy;
 }