optimized display update region
This commit is contained in:
@@ -20,11 +20,32 @@ namespace chocochip8 {
|
||||
|
||||
class Display {
|
||||
public:
|
||||
friend class Interpreter;
|
||||
Display(): mpFramebuffer{std::make_unique<Framebuffer>()} {}
|
||||
Display():
|
||||
mpFramebuffer{std::make_unique<Framebuffer>()},
|
||||
miTopDirtyScanline{0},
|
||||
miBottomDirtyScanline{gcHeight - 1} {}
|
||||
|
||||
virtual ~Display() = default;
|
||||
|
||||
virtual void clear() {
|
||||
for(auto &scanline : *mpFramebuffer) {
|
||||
scanline.reset();
|
||||
}
|
||||
miTopDirtyScanline = 0;
|
||||
miBottomDirtyScanline = gcHeight - 1;
|
||||
}
|
||||
|
||||
virtual Scanline& getModifyableScanline(size_t y) {
|
||||
Scanline& res = mpFramebuffer->at(y);
|
||||
miTopDirtyScanline = std::min(miTopDirtyScanline, y);
|
||||
miBottomDirtyScanline = std::max(miBottomDirtyScanline, y);
|
||||
return res;
|
||||
}
|
||||
|
||||
protected:
|
||||
std::unique_ptr<Framebuffer> mpFramebuffer;
|
||||
mutable size_t miTopDirtyScanline;
|
||||
mutable size_t miBottomDirtyScanline;
|
||||
};
|
||||
|
||||
class Buzzer {
|
||||
|
||||
Reference in New Issue
Block a user