From 55cda3aa258e2c214e0442ad726d964bb787cd0e Mon Sep 17 00:00:00 2001 From: Max Lingua Date: Sun, 12 Jul 2009 05:38:08 +0000 Subject: ScummVM/PS2 bugs fixed by this commit: - general file write corruption (eg. ScummVM.ini, etc.) - COMI specific save crash / corruption (added option in engines/scumm/saveload.cpp to disable thumbnails on PS2, as emergency fallback in case the fix should prove to be insufficient) - implemented _screenChange logic (fixes grabOverlay & COMI popup menu) - fixed higher pitch (chipmunk fx) - made NET IRXs optional to allow it to work on fat PS2 without net+hd - fixed cursor restore on RTL - added "." as R2 to skip single lines of dialog - added write cache svn-id: r42404 --- backends/platform/ps2/Gs2dScreen.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'backends/platform/ps2/Gs2dScreen.cpp') diff --git a/backends/platform/ps2/Gs2dScreen.cpp b/backends/platform/ps2/Gs2dScreen.cpp index e9a846f659..a9f1d7c51d 100644 --- a/backends/platform/ps2/Gs2dScreen.cpp +++ b/backends/platform/ps2/Gs2dScreen.cpp @@ -337,6 +337,7 @@ void Gs2dScreen::newScreenSize(uint16 width, uint16 height) { memset(_screenBuf, 0, _width * height); memset(_overlayBuf, 0, _width * height * 2); memset(_clut, 0, 256 * sizeof(uint32)); + _clut[1] = GS_RGBA(0xC0, 0xC0, 0xC0, 0); // clear video ram _dmaPipe->uploadTex(_clutPtrs[MOUSE], 64, 0, 0, GS_PSMCT32, _clut, 16, 16); @@ -345,7 +346,8 @@ void Gs2dScreen::newScreenSize(uint16 width, uint16 height) { _dmaPipe->flush(); _dmaPipe->waitForDma(); - _clutChanged = _screenChanged = _overlayChanged = false; + /*_clutChanged = */ _screenChanged = _overlayChanged = false; + _clutChanged = true; // reload palette on scr change _texCoords[1].u = SCALE(_width); _texCoords[1].v = SCALE(_height); @@ -396,6 +398,13 @@ void Gs2dScreen::clearScreen(void) { SignalSema(g_DmacSema); } +void Gs2dScreen::fillScreen(uint32 col) { + WaitSema(g_DmacSema); + memset(_screenBuf, col, _width * _height); + _screenChanged = true; + SignalSema(g_DmacSema); +} + Graphics::Surface *Gs2dScreen::lockScreen() { WaitSema(g_DmacSema); @@ -541,11 +550,11 @@ Graphics::PixelFormat Gs2dScreen::getOverlayFormat(void) { } int16 Gs2dScreen::getOverlayWidth(void) { - return _videoMode.overlayWidth; + return _width; // _videoMode.overlayWidth; } int16 Gs2dScreen::getOverlayHeight(void) { - return _videoMode.overlayHeight; + return _height; // _videoMode.overlayHeight; } void Gs2dScreen::setShakePos(int shake) { -- cgit v1.2.3