optimized display update region
This commit is contained in:
@@ -87,9 +87,7 @@ void Interpreter::tick() {
|
||||
case 0x0000: // 0NNN - call machine language routine
|
||||
switch(inst) {
|
||||
case 0x00E0: // clear display
|
||||
for(auto &scanline : *mrDisplay.mpFramebuffer) {
|
||||
scanline.reset();
|
||||
}
|
||||
mrDisplay.clear();
|
||||
break;
|
||||
case 0x00EE: // return from subroutine
|
||||
mvSpecialReg[SR_PC] = mCallStack.top();
|
||||
@@ -292,7 +290,7 @@ void Interpreter::executeDraw(uint8_t x, uint8_t y, uint8_t n) {
|
||||
|
||||
// we draw one scanline per sprite row in high-res mode, but twice in low-res mode
|
||||
for(int j = 0; j < (mIsHighResMode ? 1 : 2); j++) {
|
||||
Scanline &targetScanline = mrDisplay.mpFramebuffer->at(y + i * (mIsHighResMode ? 1 : 2) + j);
|
||||
Scanline &targetScanline = mrDisplay.getModifyableScanline(y + i * (mIsHighResMode ? 1 : 2) + j);
|
||||
if((targetScanline & spriteScanline) != 0) {
|
||||
collisionCount += 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user