GB: PPU - Removed unnecessary sort operation
This commit is contained in:
parent
faf4d62ef4
commit
eceb8d790b
2 changed files with 4 additions and 14 deletions
|
@ -111,7 +111,6 @@ void GbPpu::ExecCycle()
|
|||
case 4: {
|
||||
if(_state.Scanline < 144) {
|
||||
_spriteCount = 0;
|
||||
_prevSprite = 0;
|
||||
ChangeMode(PpuMode::OamEvaluation);
|
||||
} else if(_state.Scanline == 144) {
|
||||
ChangeMode(PpuMode::VBlank);
|
||||
|
@ -123,14 +122,6 @@ void GbPpu::ExecCycle()
|
|||
|
||||
case 84: {
|
||||
if(_state.Scanline < 144) {
|
||||
std::sort(_spriteIndexes, _spriteIndexes + _spriteCount, [=](uint8_t a, uint8_t b) {
|
||||
if(_oam[a + 1] == _oam[b + 1]) {
|
||||
return a < b;
|
||||
} else {
|
||||
return _oam[a + 1] < _oam[b + 1];
|
||||
}
|
||||
});
|
||||
std::sort(_spriteX, _spriteX + _spriteCount);
|
||||
ChangeMode(PpuMode::Drawing);
|
||||
ResetRenderer();
|
||||
}
|
||||
|
@ -319,11 +310,11 @@ void GbPpu::ClockSpriteFetcher()
|
|||
|
||||
void GbPpu::FindNextSprite()
|
||||
{
|
||||
if(_prevSprite < _spriteCount && _fetchSprite < 0 && (_state.SpritesEnabled || _state.CgbEnabled)) {
|
||||
for(int i = _prevSprite; i < _spriteCount; i++) {
|
||||
if(_fetchSprite < 0 && (_state.SpritesEnabled || _state.CgbEnabled)) {
|
||||
for(int i = 0; i < _spriteCount; i++) {
|
||||
if((int)_spriteX[i] - 8 == _drawnPixels) {
|
||||
_fetchSprite = _spriteIndexes[i];
|
||||
_prevSprite++;
|
||||
_spriteX[i] = 0xFF; //Prevent processing the same sprite again
|
||||
_oamFetcher.Step = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -729,7 +720,7 @@ void GbPpu::Serialize(Serializer& s)
|
|||
s.Stream(
|
||||
_bgFetcher.Attributes, _bgFetcher.Step, _bgFetcher.Addr, _bgFetcher.LowByte, _bgFetcher.HighByte,
|
||||
_oamFetcher.Attributes, _oamFetcher.Step, _oamFetcher.Addr, _oamFetcher.LowByte, _oamFetcher.HighByte,
|
||||
_drawnPixels, _fetchColumn, _fetchWindow, _fetchSprite, _spriteCount, _prevSprite,
|
||||
_drawnPixels, _fetchColumn, _fetchWindow, _fetchSprite, _spriteCount,
|
||||
_bgFifo.Position, _bgFifo.Size, _oamFifo.Position, _oamFifo.Size
|
||||
);
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ private:
|
|||
bool _fetchWindow = false;
|
||||
|
||||
int16_t _fetchSprite = -1;
|
||||
uint8_t _prevSprite = 0;
|
||||
uint8_t _spriteCount = 0;
|
||||
uint8_t _spriteX[10] = {};
|
||||
uint8_t _spriteIndexes[10] = {};
|
||||
|
|
Loading…
Add table
Reference in a new issue