1
0
Fork 0
2019-nes-emulator/Source/PPU/PPU.hpp

55 lines
931 B
C++

#pragma once
#include "Registers.hpp"
#include <cstdint>
class NES;
const unsigned int VRAM_SIZE = 2048u;
const unsigned int VIDEO_WIDTH = 256u;
const unsigned int VIDEO_HEIGHT = 240u;
class PPU
{
public:
void Cycle(uint8_t cpuCyclesElapsed);
void WriteRegister(PpuRegister reg, uint8_t value);
uint8_t ReadRegister(PpuRegister reg);
void WriteMemory(uint16_t address, uint8_t value);
uint8_t ReadMemory(uint16_t address);
private:
friend class NES;
PpuRegisterCTRL ppuCtrl{};
PpuRegisterMask ppuMask{};
PpuRegisterStatus ppuStatus{};
uint8_t oamAddr{};
uint8_t oamData{};
uint8_t oam[256]{};
uint8_t ppuScroll{};
uint16_t ppuAddr{};
uint8_t ppuData{};
bool ppuAddrW{};
uint8_t regV{};
uint8_t regT{};
uint8_t regX{};
uint8_t regW{};
uint16_t cycles{};
uint16_t scanline{};
uint8_t ram[VRAM_SIZE]{};
uint8_t paletteIndexes[32]{};
uint32_t video[VIDEO_WIDTH * VIDEO_HEIGHT]{};
NES* nes;
};