GB: Performance tweaks

This commit is contained in:
Sour committed 2024-01-23 22:26:01 +09:00
1 parent 1c1a0a9985
commit 36d23cc47d
5 files changed
+13 -8

No files matched your search

+1 -1
View File
@@ -169,7 +169,7 @@ public:
uint64_t GetCycleCount() { return _state.CycleCount; }
void Exec();
void ProcessNextCycleStart();
__forceinline void ProcessNextCycleStart();
void Serialize(Serializer& s) override;
+3 -3
View File
@@ -102,10 +102,10 @@ void GbMemoryManager::ExecMasterCycle()
{
uint64_t& cycleCount = _cpu->GetState().CycleCount;
cycleCount++;
if(!(cycleCount & 1)) {
if(cycleCount & 1) {
ExecTimerDmaSerial();
}
_ppu->Exec(true);
_ppu->Exec<true>();
}
void GbMemoryManager::Exec()
@@ -113,7 +113,7 @@ void GbMemoryManager::Exec()
uint64_t& cycleCount = _cpu->GetState().CycleCount;
cycleCount += 2;
ExecTimerDmaSerial();
_ppu->Exec(false);
_ppu->Exec<false>();
}
void GbMemoryManager::MapRegisters(uint16_t start, uint16_t end, RegisterAccess access)
+1 -1
View File
@@ -39,7 +39,7 @@ private:
GbMemoryManagerState _state = {};
void ExecTimerDmaSerial();
__forceinline void ExecTimerDmaSerial();
public:
virtual ~GbMemoryManager();
+6 -2
View File
@@ -82,7 +82,8 @@ uint16_t* GbPpu::GetPreviousEventViewerBuffer()
return _currentEventViewerBuffer == _eventViewerBuffers[0] ? _eventViewerBuffers[1] : _eventViewerBuffers[0];
}
void GbPpu::Exec(bool singleStep)
template<bool singleStep>
void GbPpu::Exec()
{
if(!_state.LcdEnabled) {
//LCD is disabled, prevent IRQs, etc.
@@ -332,7 +333,7 @@ void GbPpu::ProcessPpuCycle()
{
if(_emu->IsDebugging()) {
_emu->ProcessPpuCycle<CpuType::Gameboy>();
if(_state.Mode <= PpuMode::OamEvaluation) {
if(_state.Mode != PpuMode::Drawing) {
_currentEventViewerBuffer[456 * _state.Scanline + _state.Cycle] = evtColors[(int)_state.Mode];
} else if(_prevDrawnPixels != _drawnPixels && _drawnPixels > 0) {
uint16_t color = _currentBuffer[_state.Scanline * GbConstants::ScreenWidth + (_drawnPixels - 1)];
@@ -1205,3 +1206,6 @@ void GbPpu::Serialize(Serializer& s)
template void GbPpu::ProcessOamCorruption<GbOamCorruptionType::Read>(uint16_t addr);
template void GbPpu::ProcessOamCorruption<GbOamCorruptionType::ReadIncDec>(uint16_t addr);
template void GbPpu::ProcessOamCorruption<GbOamCorruptionType::Write>(uint16_t addr);
template void GbPpu::Exec<true>();
template void GbPpu::Exec<false>();
+2 -1
View File
@@ -99,7 +99,8 @@ public:
bool IsCgbEnabled();
PpuMode GetMode();
void Exec(bool singleStep);
template<bool singleStep>
void Exec();
uint8_t Read(uint16_t addr);
void Write(uint16_t addr, uint8_t value);