Mesen-X/Core/PPU.h

48 lines
781 B
C
Raw Normal View History

2014-06-14 11:27:55 -04:00
#pragma once
2014-06-14 10:12:10 -04:00
#include "stdafx.h"
2014-06-14 11:27:55 -04:00
#include "IMemoryHandler.h"
2014-06-14 10:12:10 -04:00
enum PPURegisters
{
Control = 0x00,
Control2 = 0x01,
Status = 0x02,
SpriteAddr = 0x03,
SpriteData = 0x04,
ScrollOffsets = 0x05,
VideoMemoryAddr = 0x06,
VideoMemoryData = 0x07
};
struct PPUState
{
uint16_t Control;
uint8_t Status;
uint8_t SpriteRamAddr;
uint16_t VideoRamAddr;
};
class PPU : public IMemoryHandler
{
2014-06-14 11:27:55 -04:00
private:
PPUState _state;
uint8_t _spriteRAM[256];
uint8_t _videoRAM[16*1024];
PPURegisters GetRegisterID(uint16_t addr)
{
return (PPURegisters)(addr & 0x07);
2014-06-14 10:12:10 -04:00
}
2014-06-14 11:27:55 -04:00
public:
PPU();
std::array<int, 2> GetIOAddresses()
{
return std::array<int, 2> {{ 0x2000, 0x3FFF }};
}
2014-06-14 10:12:10 -04:00
2014-06-14 11:27:55 -04:00
uint8_t MemoryRead(uint16_t addr);
void MemoryWrite(uint16_t addr, uint8_t value);
2014-06-14 10:12:10 -04:00
};