Beispiel #1
0
 public TimerController(IInterruptTrigger interrupt)
 {
     _timerInterrupt = interrupt;
     DIV             = new LambdaRegister <byte>(_ => _div = 0, () => _div);
     // TODO what happens on TIMA write?
     TIMA = new LambdaRegister <byte>(_ => { }, () => _timer);
     TMA  = new Register <byte>();
     TAC  = new LambdaRegister <byte>(WriteTAC, ReadTAC);
 }
Beispiel #2
0
        public LcdController(
            LcdControlRegister lcdc,
            LcdStatusRegister stat,
            IRegister <byte> scx,
            IRegister <byte> scy,
            IRegister <byte> ly,
            IRegister <byte> lyc,
            IRegister <byte> bgp,
            IMemoryBlock vram,
            IMemoryBlock oam,
            IRegister <byte> obp0,
            IRegister <byte> obp1,
            IRegister <byte> wy,
            IRegister <byte> wx,
            IInterruptTrigger vblankInterrupt,
            IInterruptTrigger lcdStatusInterrupt)
        {
            Debug.Assert(vram.Size == 8192);
            Debug.Assert(oam.Size == 160);

            _framebuffer        = new Bitmap(160, 144);
            _lcdc               = lcdc;
            _stat               = stat;
            _scx                = scx;
            _scy                = scy;
            _ly                 = ly;
            _lyc                = lyc;
            _bgp                = bgp;
            _vram               = vram;
            _oam                = oam;
            _obp0               = obp0;
            _obp1               = obp1;
            _vblankInterrupt    = vblankInterrupt;
            _lcdStatusInterrupt = lcdStatusInterrupt;
            _wy                 = wy;
            _wx                 = wx;
        }