mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-09 03:10:22 +00:00
SCI: restore: clear screen when restoring
primarily to clear kPortrait graphics in kq6 when restoring during portrait animation
This commit is contained in:
parent
5f53b9255e
commit
031b9b8ced
@ -41,6 +41,7 @@
|
||||
#include "sci/graphics/helpers.h"
|
||||
#include "sci/graphics/palette.h"
|
||||
#include "sci/graphics/ports.h"
|
||||
#include "sci/graphics/screen.h"
|
||||
#include "sci/parser/vocabulary.h"
|
||||
#include "sci/sound/audio.h"
|
||||
#include "sci/sound/music.h"
|
||||
@ -923,11 +924,15 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
|
||||
// We don't need the thumbnail here, so just read it and discard it
|
||||
Graphics::skipThumbnail(*fh);
|
||||
|
||||
// reset ports as one of the first things we do, because that may free() some hunk memory
|
||||
// reset ports is one of the first things we do, because that may free() some hunk memory
|
||||
// and we don't want to do that after we read in the saved game hunk memory
|
||||
if (ser.isLoading()) {
|
||||
// reset ports
|
||||
if (g_sci->_gfxPorts)
|
||||
g_sci->_gfxPorts->reset();
|
||||
// clear screen
|
||||
if (g_sci->_gfxScreen)
|
||||
g_sci->_gfxScreen->clear();
|
||||
}
|
||||
|
||||
s->reset(true);
|
||||
|
@ -251,6 +251,18 @@ GfxScreen::~GfxScreen() {
|
||||
free(_displayScreen);
|
||||
}
|
||||
|
||||
// should not used regulary, only meant for restore game
|
||||
void GfxScreen::clear() {
|
||||
// reset all screen data
|
||||
memset(_visualScreen, 0, _pixels);
|
||||
memset(_priorityScreen, 0, _pixels);
|
||||
memset(_controlScreen, 0, _pixels);
|
||||
memset(_displayScreen, 0, _displayPixels);
|
||||
memset(&_ditheredPicColors, 0, sizeof(_ditheredPicColors));
|
||||
_fontIsUpscaled = false;
|
||||
copyToScreen();
|
||||
}
|
||||
|
||||
void GfxScreen::copyToScreen() {
|
||||
g_system->copyRectToScreen(_activeScreen, _displayWidth, 0, 0, _displayWidth, _displayHeight);
|
||||
}
|
||||
|
@ -76,6 +76,7 @@ public:
|
||||
byte getColorWhite() { return _colorWhite; }
|
||||
byte getColorDefaultVectorData() { return _colorDefaultVectorData; }
|
||||
|
||||
void clear();
|
||||
void copyToScreen();
|
||||
void copyFromScreen(byte *buffer);
|
||||
void kernelSyncWithFramebuffer();
|
||||
|
Loading…
Reference in New Issue
Block a user