Mesen-SX/Core/Ppu.h

65 lines
824 B
C
Raw Normal View History

#pragma once
#include "stdafx.h"
#include "PpuTypes.h"
class Ppu
{
private:
uint16_t _cycle = 0;
uint16_t _scanline = 0;
uint32_t _frameCount = 0;
bool _nmiFlag = false;
public:
PpuState GetState()
{
return {
_cycle,
_scanline,
_frameCount
};
}
void Exec()
{
if(_cycle == 340) {
_cycle = 0;
_scanline++;
if(_scanline == 225) {
_nmiFlag = true;
}
if(_scanline == 260) {
_nmiFlag = false;
_scanline = 0;
_frameCount++;
}
}
_cycle++;
}
uint8_t Read(uint16_t addr)
{
switch(addr) {
case 0x4210:
return _nmiFlag ? 0x80 : 0;
break;
case 0x4212:
return (
(_scanline >= 225 ? 0x80 : 0) ||
((_cycle >= 0x121 || _cycle <= 0x15) ? 0x40 : 0)
);
break;
}
return 0;
}
void Write(uint32_t addr, uint8_t value)
{
}
};