mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
35 lines
1.2 KiB
C++
35 lines
1.2 KiB
C++
#pragma once
|
|
#include "pch.h"
|
|
#include "NES/NesPpu.h"
|
|
|
|
class DefaultNesPpu final : public NesPpu<DefaultNesPpu>
|
|
{
|
|
public:
|
|
DefaultNesPpu(NesConsole* console) : NesPpu(console)
|
|
{
|
|
}
|
|
|
|
__forceinline void StoreSpriteInformation(bool verticalMirror, uint16_t tileAddr, uint8_t lineOffset) { }
|
|
__forceinline void StoreTileInformation() {}
|
|
__forceinline bool RemoveSpriteLimit() { return _console->GetNesConfig().RemoveSpriteLimit; }
|
|
__forceinline bool UseAdaptiveSpriteLimit() { return _console->GetNesConfig().AdaptiveSpriteLimit; }
|
|
|
|
void* OnBeforeSendFrame() { return nullptr; }
|
|
|
|
__forceinline void ProcessScanline()
|
|
{
|
|
ProcessScanlineImpl();
|
|
}
|
|
|
|
__forceinline void DrawPixel()
|
|
{
|
|
//This is called 3.7 million times per second - needs to be as fast as possible.
|
|
if(IsRenderingEnabled() || ((_videoRamAddr & 0x3F00) != 0x3F00)) {
|
|
uint32_t color = GetPixelColor();
|
|
_currentOutputBuffer[(_scanline << 8) + _cycle - 1] = _paletteRam[color & 0x03 ? color : 0];
|
|
} else {
|
|
//"If the current VRAM address points in the range $3F00-$3FFF during forced blanking, the color indicated by this palette location will be shown on screen instead of the backdrop color."
|
|
_currentOutputBuffer[(_scanline << 8) + _cycle - 1] = _paletteRam[_videoRamAddr & 0x1F];
|
|
}
|
|
}
|
|
};
|