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); }
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; }