#pragma once #include "stdafx.h" #include "PpuTypes.h" class Console; class Ppu { private: shared_ptr _console; uint16_t _cycle = 0; uint16_t _scanline = 0; uint32_t _frameCount = 0; bool _nmiFlag = false; bool _enableNmi = false; uint8_t *_vram; uint16_t _vramAddress; uint8_t _vramIncrementValue; uint8_t _vramAddressRemapping; bool _vramAddrIncrementOnSecondReg; uint16_t _cgramAddress; uint8_t _cgram[512]; uint16_t *_outputBuffers[2]; uint16_t *_currentBuffer; LayerConfig _layerConfig[4]; uint8_t _dmaDest = 0; uint32_t _dmaSource = 0; uint16_t _dmaSize = 0; public: Ppu(shared_ptr console); PpuState GetState(); void Exec(); void SendFrame(); uint8_t Read(uint16_t addr); void Write(uint32_t addr, uint8_t value); };