Instead of drawing the mouse cursor as a sprite, let the backend handle it
svn-id: r23464
This commit is contained in:
parent
75e64b91de
commit
dcbbfa01c0
11 changed files with 78 additions and 97 deletions
|
@ -117,10 +117,11 @@ Draw::Draw(GobEngine *vm) : _vm(vm) {
|
||||||
_cursorAnimDelays[i] = 0;
|
_cursorAnimDelays[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_showCursor = 0;
|
||||||
_cursorIndex = 0;
|
_cursorIndex = 0;
|
||||||
_transparentCursor = 0;
|
_transparentCursor = 0;
|
||||||
_cursorSprites = 0;
|
_cursorSprites = 0;
|
||||||
_cursorBack = 0;
|
_scummvmCursor = 0;
|
||||||
_cursorAnim = 0;
|
_cursorAnim = 0;
|
||||||
|
|
||||||
_palLoadData1[0] = 0;
|
_palLoadData1[0] = 0;
|
||||||
|
@ -261,6 +262,7 @@ void Draw::blitInvalidated(void) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_showCursor = (_showCursor & ~2) | ((_showCursor & 1) << 1);
|
||||||
if (_applyPal) {
|
if (_applyPal) {
|
||||||
clearPalette();
|
clearPalette();
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,12 @@ public:
|
||||||
Video::Color _vgaPalette[256];
|
Video::Color _vgaPalette[256];
|
||||||
Video::Color _vgaSmallPalette[16];
|
Video::Color _vgaSmallPalette[16];
|
||||||
|
|
||||||
|
// 0 (00b): No cursor
|
||||||
|
// 1 (01b): Cursor would be on _backSurface
|
||||||
|
// 2 (10b): Cursor would be on _frontSurface
|
||||||
|
// 3 (11b): Cursor would be on _backSurface and _frontSurface
|
||||||
|
uint8 _showCursor;
|
||||||
|
|
||||||
int16 _cursorX;
|
int16 _cursorX;
|
||||||
int16 _cursorY;
|
int16 _cursorY;
|
||||||
int16 _cursorWidth;
|
int16 _cursorWidth;
|
||||||
|
@ -97,7 +103,8 @@ public:
|
||||||
|
|
||||||
Video::SurfaceDesc *_cursorSprites;
|
Video::SurfaceDesc *_cursorSprites;
|
||||||
Video::SurfaceDesc *_cursorSpritesBack;
|
Video::SurfaceDesc *_cursorSpritesBack;
|
||||||
Video::SurfaceDesc *_cursorBack;
|
Video::SurfaceDesc *_scummvmCursor;
|
||||||
|
|
||||||
int16 _cursorAnim;
|
int16 _cursorAnim;
|
||||||
int8 _cursorAnimLow[40];
|
int8 _cursorAnimLow[40];
|
||||||
int8 _cursorAnimHigh[40];
|
int8 _cursorAnimHigh[40];
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include "common/stdafx.h"
|
#include "common/stdafx.h"
|
||||||
#include "common/endian.h"
|
#include "common/endian.h"
|
||||||
|
#include "graphics/cursorman.h"
|
||||||
|
|
||||||
#include "gob/gob.h"
|
#include "gob/gob.h"
|
||||||
#include "gob/draw.h"
|
#include "gob/draw.h"
|
||||||
|
@ -493,19 +494,8 @@ void Draw_v1::blitCursor(void) {
|
||||||
if (_cursorIndex == -1)
|
if (_cursorIndex == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_cursorIndex = -1;
|
if (_showCursor == 2)
|
||||||
|
_showCursor = 0;
|
||||||
if (_noInvalidated) {
|
|
||||||
_vm->_video->drawSprite(_backSurface, _frontSurface,
|
|
||||||
_cursorX, _cursorY,
|
|
||||||
_cursorX + _cursorWidth - 1,
|
|
||||||
_cursorY + _cursorHeight - 1, _cursorX,
|
|
||||||
_cursorY, 0);
|
|
||||||
} else {
|
|
||||||
invalidateRect(_cursorX, _cursorY,
|
|
||||||
_cursorX + _cursorWidth - 1,
|
|
||||||
_cursorY + _cursorHeight - 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Draw_v1::animateCursor(int16 cursor) {
|
void Draw_v1::animateCursor(int16 cursor) {
|
||||||
|
@ -518,6 +508,7 @@ void Draw_v1::animateCursor(int16 cursor) {
|
||||||
int16 maxY;
|
int16 maxY;
|
||||||
int16 cursorIndex;
|
int16 cursorIndex;
|
||||||
|
|
||||||
|
_showCursor = 2;
|
||||||
cursorIndex = cursor;
|
cursorIndex = cursor;
|
||||||
|
|
||||||
if (cursorIndex == -1) {
|
if (cursorIndex == -1) {
|
||||||
|
@ -556,9 +547,11 @@ void Draw_v1::animateCursor(int16 cursor) {
|
||||||
_cursorAnim++;
|
_cursorAnim++;
|
||||||
_cursorTimeKey = _vm->_util->getTimeKey();
|
_cursorTimeKey = _vm->_util->getTimeKey();
|
||||||
} else {
|
} else {
|
||||||
/* if (_noInvalidated &&
|
if ((_noInvalidated != 0) && (_vm->_global->_inter_mouseX == _cursorX) &&
|
||||||
inter_mouseX == _cursorX && inter_mouseY == _cursorY)
|
(_vm->_global->_inter_mouseY == _cursorY)) {
|
||||||
return;*/
|
_vm->_video->waitRetrace(_vm->_global->_videoMode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_cursorIndex = cursorIndex;
|
_cursorIndex = cursorIndex;
|
||||||
|
@ -589,33 +582,27 @@ void Draw_v1::animateCursor(int16 cursor) {
|
||||||
minY = MIN(newY, _cursorY);
|
minY = MIN(newY, _cursorY);
|
||||||
maxX = MAX(_cursorX, newX) + _cursorWidth - 1;
|
maxX = MAX(_cursorX, newX) + _cursorWidth - 1;
|
||||||
maxY = MAX(_cursorY, newY) + _cursorHeight - 1;
|
maxY = MAX(_cursorY, newY) + _cursorHeight - 1;
|
||||||
_vm->_video->drawSprite(_backSurface, _cursorBack,
|
|
||||||
newX, newY, newX + _cursorWidth - 1,
|
|
||||||
newY + _cursorHeight - 1, 0, 0, 0);
|
|
||||||
|
|
||||||
_vm->_video->drawSprite(_cursorSprites, _backSurface,
|
_vm->_video->drawSprite(_cursorSprites, _scummvmCursor, _cursorWidth * _cursorAnim,
|
||||||
_cursorWidth * _cursorAnim, 0,
|
0, _cursorWidth * (_cursorAnim + 1) - 1, _cursorHeight - 1, 0, 0, 0);
|
||||||
_cursorWidth * (_cursorAnim + 1) - 1,
|
CursorMan.replaceCursor(_scummvmCursor->vidPtr, _cursorWidth, _cursorHeight, 0, 0, 0);
|
||||||
_cursorHeight - 1, newX, newY, _transparentCursor);
|
|
||||||
|
|
||||||
|
if (_frontSurface != _backSurface) {
|
||||||
|
_showCursor = 3;
|
||||||
if (_noInvalidated == 0) {
|
if (_noInvalidated == 0) {
|
||||||
cursorIndex = _cursorIndex;
|
int16 tmp = _cursorIndex;
|
||||||
_cursorIndex = -1;
|
_cursorIndex = -1;
|
||||||
blitInvalidated();
|
blitInvalidated();
|
||||||
_cursorIndex = cursorIndex;
|
_cursorIndex = tmp;
|
||||||
} else {
|
} else {
|
||||||
_vm->_video->waitRetrace(_vm->_global->_videoMode);
|
_vm->_video->waitRetrace(_vm->_global->_videoMode);
|
||||||
|
if (minY < 50)
|
||||||
|
_vm->_util->delay(5);
|
||||||
|
_showCursor = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
_vm->_video->drawSprite(_backSurface, _frontSurface,
|
} else
|
||||||
minX, minY, maxX, maxY, minX, minY, 0);
|
|
||||||
|
|
||||||
_vm->_video->drawSprite(_cursorBack, _backSurface,
|
|
||||||
0, 0, _cursorWidth - 1, _cursorHeight - 1,
|
|
||||||
newX, newY, 0);
|
|
||||||
} else {
|
|
||||||
blitCursor();
|
blitCursor();
|
||||||
}
|
|
||||||
|
|
||||||
_cursorX = newX;
|
_cursorX = newX;
|
||||||
_cursorY = newY;
|
_cursorY = newY;
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include "common/stdafx.h"
|
#include "common/stdafx.h"
|
||||||
#include "common/endian.h"
|
#include "common/endian.h"
|
||||||
|
#include "graphics/cursorman.h"
|
||||||
|
|
||||||
#include "gob/gob.h"
|
#include "gob/gob.h"
|
||||||
#include "gob/draw.h"
|
#include "gob/draw.h"
|
||||||
|
@ -877,27 +878,11 @@ void Draw_v2::spriteOperation(int16 operation) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Draw_v2::blitCursor(void) {
|
void Draw_v2::blitCursor(void) {
|
||||||
int16 width;
|
|
||||||
int16 height;
|
|
||||||
|
|
||||||
if (_cursorIndex == -1)
|
if (_cursorIndex == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_cursorIndex = -1;
|
if (_showCursor == 2)
|
||||||
width = _cursorWidth;
|
_showCursor = 0;
|
||||||
height = _cursorHeight;
|
|
||||||
if(_backSurface->width < (_cursorX + _cursorWidth))
|
|
||||||
width -= _cursorX;
|
|
||||||
if(_backSurface->height < (_cursorY + _cursorHeight))
|
|
||||||
height -= _cursorY;
|
|
||||||
if (_frontSurface == _backSurface)
|
|
||||||
_vm->_video->drawSprite(_cursorBack, _frontSurface, 0, 0, width - 1, height - 1,
|
|
||||||
_cursorX, _cursorY, 0);
|
|
||||||
else if (_noInvalidated == 0)
|
|
||||||
invalidateRect(_cursorX, _cursorY, _cursorX + width - 1, _cursorY + height - 1);
|
|
||||||
else
|
|
||||||
_vm->_video->drawSprite(_backSurface, _frontSurface, _cursorX, _cursorY,
|
|
||||||
_cursorX + width - 1, _cursorY + height - 1, _cursorX, _cursorY, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Draw_v2::animateCursor(int16 cursor) {
|
void Draw_v2::animateCursor(int16 cursor) {
|
||||||
|
@ -909,9 +894,8 @@ void Draw_v2::animateCursor(int16 cursor) {
|
||||||
int16 maxX;
|
int16 maxX;
|
||||||
int16 maxY;
|
int16 maxY;
|
||||||
int16 cursorIndex;
|
int16 cursorIndex;
|
||||||
bool oldCursor;
|
|
||||||
|
|
||||||
oldCursor = _cursorIndex != -1;
|
_showCursor |= 2;
|
||||||
|
|
||||||
if (((_backSurface->width - 9) < _vm->_global->_inter_mouseX) ||
|
if (((_backSurface->width - 9) < _vm->_global->_inter_mouseX) ||
|
||||||
((_backSurface->height - 4) < _vm->_global->_inter_mouseY)) {
|
((_backSurface->height - 4) < _vm->_global->_inter_mouseY)) {
|
||||||
|
@ -968,6 +952,8 @@ void Draw_v2::animateCursor(int16 cursor) {
|
||||||
} else {
|
} else {
|
||||||
if ((_noInvalidated != 0) && (_vm->_global->_inter_mouseX == _cursorX) &&
|
if ((_noInvalidated != 0) && (_vm->_global->_inter_mouseX == _cursorX) &&
|
||||||
(_vm->_global->_inter_mouseY == _cursorY)) {
|
(_vm->_global->_inter_mouseY == _cursorY)) {
|
||||||
|
if (!CursorMan.isVisible())
|
||||||
|
_showCursor = 0;
|
||||||
_vm->_video->waitRetrace(_vm->_global->_videoMode);
|
_vm->_video->waitRetrace(_vm->_global->_videoMode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1000,26 +986,16 @@ void Draw_v2::animateCursor(int16 cursor) {
|
||||||
minY = MIN(newY, _cursorY);
|
minY = MIN(newY, _cursorY);
|
||||||
maxX = MAX(_cursorX, newX) + _cursorWidth - 1;
|
maxX = MAX(_cursorX, newX) + _cursorWidth - 1;
|
||||||
maxY = MAX(_cursorY, newY) + _cursorHeight - 1;
|
maxY = MAX(_cursorY, newY) + _cursorHeight - 1;
|
||||||
if (_frontSurface == _backSurface) { // loc_177C2
|
|
||||||
if ((newX != _cursorX) || (newY != _cursorY)) {
|
_vm->_video->clearSurf(_scummvmCursor);
|
||||||
if (oldCursor)
|
_vm->_video->drawSprite(_cursorSprites, _scummvmCursor, cursorIndex * _cursorWidth,
|
||||||
_vm->_video->drawSprite(_cursorBack, _frontSurface, 0, 0,
|
0, (cursorIndex * _cursorWidth) + _cursorWidth - 1, _cursorHeight - 1, 0, 0, 0);
|
||||||
_cursorWidth - 1, _cursorHeight - 1, _cursorX, _cursorY, 0);
|
CursorMan.replaceCursor(_scummvmCursor->vidPtr, _cursorWidth, _cursorHeight, 0, 0, 0);
|
||||||
_vm->_video->drawSprite(_frontSurface, _cursorBack, newX, newY,
|
|
||||||
newX + _cursorWidth - 1, newY + _cursorHeight - 1, 0, 0, 0);
|
if (_frontSurface != _backSurface) {
|
||||||
_vm->_video->drawSprite(_cursorSprites, _frontSurface,
|
_showCursor |= 1;
|
||||||
cursorIndex * _cursorWidth, 0,
|
|
||||||
(cursorIndex * _cursorWidth) + _cursorWidth - 1, _cursorHeight - 1,
|
|
||||||
newX, newY, _transparentCursor);
|
|
||||||
}
|
|
||||||
} else { // loc_1787D
|
|
||||||
_vm->_video->drawSprite(_backSurface, _cursorBack, newX, newY,
|
|
||||||
newX + _cursorWidth - 1, newY + _cursorHeight - 1, 0, 0, 0);
|
|
||||||
_vm->_video->drawSprite(_cursorSprites, _backSurface,
|
|
||||||
cursorIndex * _cursorWidth, 0,
|
|
||||||
(cursorIndex * _cursorWidth) + _cursorWidth - 1, _cursorHeight - 1,
|
|
||||||
newX, newY, _transparentCursor);
|
|
||||||
if (_noInvalidated == 0) {
|
if (_noInvalidated == 0) {
|
||||||
|
_showCursor = CursorMan.isVisible() ? 2 : 0;
|
||||||
int16 tmp = _cursorIndex;
|
int16 tmp = _cursorIndex;
|
||||||
_cursorIndex = -1;
|
_cursorIndex = -1;
|
||||||
blitInvalidated();
|
blitInvalidated();
|
||||||
|
@ -1028,15 +1004,15 @@ void Draw_v2::animateCursor(int16 cursor) {
|
||||||
_vm->_video->waitRetrace(_vm->_global->_videoMode);
|
_vm->_video->waitRetrace(_vm->_global->_videoMode);
|
||||||
if (minY < 50)
|
if (minY < 50)
|
||||||
_vm->_util->delay(5);
|
_vm->_util->delay(5);
|
||||||
|
_showCursor = (_showCursor & ~2) | ((_showCursor & 1) << 1);
|
||||||
}
|
}
|
||||||
_vm->_video->drawSprite(_backSurface, _frontSurface,
|
_showCursor &= ~1;
|
||||||
minX, minY, maxX, maxY, minX, minY, 0);
|
|
||||||
_vm->_video->drawSprite(_cursorBack, _backSurface, 0, 0,
|
|
||||||
_cursorWidth - 1, _cursorHeight - 1, newX, newY, 0);
|
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
blitCursor();
|
blitCursor();
|
||||||
|
|
||||||
|
if (CursorMan.isVisible())
|
||||||
|
_showCursor = 2;
|
||||||
_cursorX = newX;
|
_cursorX = newX;
|
||||||
_cursorY = newY;
|
_cursorY = newY;
|
||||||
}
|
}
|
||||||
|
|
|
@ -675,7 +675,7 @@ void Game::start(void) {
|
||||||
delete[] _collisionAreas;
|
delete[] _collisionAreas;
|
||||||
|
|
||||||
_vm->_video->freeSurfDesc(_vm->_draw->_cursorSprites);
|
_vm->_video->freeSurfDesc(_vm->_draw->_cursorSprites);
|
||||||
_vm->_video->freeSurfDesc(_vm->_draw->_cursorBack);
|
_vm->_video->freeSurfDesc(_vm->_draw->_scummvmCursor);
|
||||||
_vm->_video->freeSurfDesc(_vm->_draw->_backSurface);
|
_vm->_video->freeSurfDesc(_vm->_draw->_backSurface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -985,7 +985,8 @@ void Game::sub_ADD2(void) {
|
||||||
// TODO: That assignment is not in the original assembly, why?
|
// TODO: That assignment is not in the original assembly, why?
|
||||||
_vm->_draw->_cursorSpritesBack = _vm->_draw->_spritesArray[23];
|
_vm->_draw->_cursorSpritesBack = _vm->_draw->_spritesArray[23];
|
||||||
_vm->_draw->_cursorSprites = _vm->_draw->_cursorSpritesBack;
|
_vm->_draw->_cursorSprites = _vm->_draw->_cursorSpritesBack;
|
||||||
_vm->_draw->_cursorBack = _vm->_video->initSurfDesc(_vm->_global->_videoMode, 16, 16, 0);
|
_vm->_draw->_scummvmCursor =
|
||||||
|
_vm->_video->initSurfDesc(_vm->_global->_videoMode, 16, 16, SCUMMVM_CURSOR);
|
||||||
|
|
||||||
_vm->_draw->_spritesArray[20] = _vm->_draw->_frontSurface;
|
_vm->_draw->_spritesArray[20] = _vm->_draw->_frontSurface;
|
||||||
_vm->_draw->_spritesArray[21] = _vm->_draw->_backSurface;
|
_vm->_draw->_spritesArray[21] = _vm->_draw->_backSurface;
|
||||||
|
@ -999,7 +1000,7 @@ void Game::sub_ADD2(void) {
|
||||||
// "DEVclosescreen"
|
// "DEVclosescreen"
|
||||||
void Game::sub_BB28(void) {
|
void Game::sub_BB28(void) {
|
||||||
_vm->_draw->freeSprite(23);
|
_vm->_draw->freeSprite(23);
|
||||||
_vm->_video->freeSurfDesc(_vm->_draw->_cursorBack);
|
_vm->_video->freeSurfDesc(_vm->_draw->_scummvmCursor);
|
||||||
if (_off_2E51B != 0) {
|
if (_off_2E51B != 0) {
|
||||||
memcpy(_vm->_draw->_frontSurface, _off_2E51B, sizeof(Video::SurfaceDesc));
|
memcpy(_vm->_draw->_frontSurface, _off_2E51B, sizeof(Video::SurfaceDesc));
|
||||||
_vm->_draw->_frontSurface->width = 320;
|
_vm->_draw->_frontSurface->width = 320;
|
||||||
|
|
|
@ -622,7 +622,8 @@ void Game_v1::prepareStart(void) {
|
||||||
|
|
||||||
_vm->_draw->_cursorAnimLow[1] = 0;
|
_vm->_draw->_cursorAnimLow[1] = 0;
|
||||||
_vm->_draw->_cursorSprites = _vm->_video->initSurfDesc(_vm->_global->_videoMode, 32, 16, 2);
|
_vm->_draw->_cursorSprites = _vm->_video->initSurfDesc(_vm->_global->_videoMode, 32, 16, 2);
|
||||||
_vm->_draw->_cursorBack = _vm->_video->initSurfDesc(_vm->_global->_videoMode, 16, 16, 0);
|
_vm->_draw->_scummvmCursor =
|
||||||
|
_vm->_video->initSurfDesc(_vm->_global->_videoMode, 16, 16, SCUMMVM_CURSOR);
|
||||||
_vm->_draw->_renderFlags = 0;
|
_vm->_draw->_renderFlags = 0;
|
||||||
_vm->_draw->_backDeltaX = 0;
|
_vm->_draw->_backDeltaX = 0;
|
||||||
_vm->_draw->_backDeltaY = 0;
|
_vm->_draw->_backDeltaY = 0;
|
||||||
|
|
|
@ -804,7 +804,7 @@ void Inter_v1::o1_initCursor(void) {
|
||||||
_vm->_draw->_cursorSprites->width != width * count) {
|
_vm->_draw->_cursorSprites->width != width * count) {
|
||||||
|
|
||||||
_vm->_video->freeSurfDesc(_vm->_draw->_cursorSprites);
|
_vm->_video->freeSurfDesc(_vm->_draw->_cursorSprites);
|
||||||
_vm->_video->freeSurfDesc(_vm->_draw->_cursorBack);
|
_vm->_video->freeSurfDesc(_vm->_draw->_scummvmCursor);
|
||||||
|
|
||||||
_vm->_draw->_cursorWidth = width;
|
_vm->_draw->_cursorWidth = width;
|
||||||
_vm->_draw->_cursorHeight = height;
|
_vm->_draw->_cursorHeight = height;
|
||||||
|
@ -822,9 +822,9 @@ void Inter_v1::o1_initCursor(void) {
|
||||||
_vm->_draw->_cursorHeight, 2);
|
_vm->_draw->_cursorHeight, 2);
|
||||||
_vm->_draw->_spritesArray[23] = _vm->_draw->_cursorSprites;
|
_vm->_draw->_spritesArray[23] = _vm->_draw->_cursorSprites;
|
||||||
|
|
||||||
_vm->_draw->_cursorBack =
|
_vm->_draw->_scummvmCursor =
|
||||||
_vm->_video->initSurfDesc(_vm->_global->_videoMode, _vm->_draw->_cursorWidth,
|
_vm->_video->initSurfDesc(_vm->_global->_videoMode, _vm->_draw->_cursorWidth,
|
||||||
_vm->_draw->_cursorHeight, 0);
|
_vm->_draw->_cursorHeight, SCUMMVM_CURSOR);
|
||||||
for (i = 0; i < 40; i++) {
|
for (i = 0; i < 40; i++) {
|
||||||
_vm->_draw->_cursorAnimLow[i] = -1;
|
_vm->_draw->_cursorAnimLow[i] = -1;
|
||||||
_vm->_draw->_cursorAnimDelays[i] = 0;
|
_vm->_draw->_cursorAnimDelays[i] = 0;
|
||||||
|
|
|
@ -1812,7 +1812,7 @@ void Inter_v2::o2_initCursor(void) {
|
||||||
_vm->_draw->_cursorSprites->width != width * count) {
|
_vm->_draw->_cursorSprites->width != width * count) {
|
||||||
|
|
||||||
_vm->_video->freeSurfDesc(_vm->_draw->_cursorSprites);
|
_vm->_video->freeSurfDesc(_vm->_draw->_cursorSprites);
|
||||||
_vm->_video->freeSurfDesc(_vm->_draw->_cursorBack);
|
_vm->_video->freeSurfDesc(_vm->_draw->_scummvmCursor);
|
||||||
|
|
||||||
_vm->_draw->_cursorWidth = width;
|
_vm->_draw->_cursorWidth = width;
|
||||||
_vm->_draw->_cursorHeight = height;
|
_vm->_draw->_cursorHeight = height;
|
||||||
|
@ -1830,9 +1830,9 @@ void Inter_v2::o2_initCursor(void) {
|
||||||
_vm->_draw->_cursorSpritesBack = _vm->_draw->_spritesArray[23];
|
_vm->_draw->_cursorSpritesBack = _vm->_draw->_spritesArray[23];
|
||||||
_vm->_draw->_cursorSprites = _vm->_draw->_cursorSpritesBack;
|
_vm->_draw->_cursorSprites = _vm->_draw->_cursorSpritesBack;
|
||||||
|
|
||||||
_vm->_draw->_cursorBack =
|
_vm->_draw->_scummvmCursor =
|
||||||
_vm->_video->initSurfDesc(_vm->_global->_videoMode, _vm->_draw->_cursorWidth,
|
_vm->_video->initSurfDesc(_vm->_global->_videoMode, _vm->_draw->_cursorWidth,
|
||||||
_vm->_draw->_cursorHeight, 0);
|
_vm->_draw->_cursorHeight, SCUMMVM_CURSOR);
|
||||||
for (i = 0; i < 40; i++) {
|
for (i = 0; i < 40; i++) {
|
||||||
_vm->_draw->_cursorAnimLow[i] = -1;
|
_vm->_draw->_cursorAnimLow[i] = -1;
|
||||||
_vm->_draw->_cursorAnimDelays[i] = 0;
|
_vm->_draw->_cursorAnimDelays[i] = 0;
|
||||||
|
|
|
@ -71,6 +71,7 @@ public:
|
||||||
#define PRIMARY_SURFACE 0x80
|
#define PRIMARY_SURFACE 0x80
|
||||||
#define RETURN_PRIMARY 0x01
|
#define RETURN_PRIMARY 0x01
|
||||||
#define DISABLE_SPR_ALLOC 0x20
|
#define DISABLE_SPR_ALLOC 0x20
|
||||||
|
#define SCUMMVM_CURSOR 0x100
|
||||||
|
|
||||||
#if defined(START_PACK_STRUCTS)
|
#if defined(START_PACK_STRUCTS)
|
||||||
#pragma START_PACK_STRUCTS
|
#pragma START_PACK_STRUCTS
|
||||||
|
|
|
@ -23,10 +23,12 @@
|
||||||
|
|
||||||
#include "common/stdafx.h"
|
#include "common/stdafx.h"
|
||||||
#include "common/endian.h"
|
#include "common/endian.h"
|
||||||
|
#include "graphics/cursorman.h"
|
||||||
|
|
||||||
#include "gob/gob.h"
|
#include "gob/gob.h"
|
||||||
#include "gob/global.h"
|
#include "gob/global.h"
|
||||||
#include "gob/video.h"
|
#include "gob/video.h"
|
||||||
|
#include "gob/draw.h"
|
||||||
|
|
||||||
namespace Gob {
|
namespace Gob {
|
||||||
|
|
||||||
|
@ -36,6 +38,7 @@ Video_v1::Video_v1(GobEngine *vm) : Video(vm) {
|
||||||
//XXX: Use this function to update the screen for now.
|
//XXX: Use this function to update the screen for now.
|
||||||
// This should be moved to a better location later on.
|
// This should be moved to a better location later on.
|
||||||
void Video_v1::waitRetrace(int16) {
|
void Video_v1::waitRetrace(int16) {
|
||||||
|
CursorMan.showMouse((bool) (_vm->_draw->_showCursor & 2));
|
||||||
if (_vm->_global->_pPrimarySurfDesc) {
|
if (_vm->_global->_pPrimarySurfDesc) {
|
||||||
g_system->copyRectToScreen(_vm->_global->_pPrimarySurfDesc->vidPtr, 320, 0, 0, 320, 200);
|
g_system->copyRectToScreen(_vm->_global->_pPrimarySurfDesc->vidPtr, 320, 0, 0, 320, 200);
|
||||||
g_system->updateScreen();
|
g_system->updateScreen();
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include "common/stdafx.h"
|
#include "common/stdafx.h"
|
||||||
#include "common/endian.h"
|
#include "common/endian.h"
|
||||||
|
#include "graphics/cursorman.h"
|
||||||
|
|
||||||
#include "gob/gob.h"
|
#include "gob/gob.h"
|
||||||
#include "gob/global.h"
|
#include "gob/global.h"
|
||||||
|
@ -37,6 +38,7 @@ Video_v2::Video_v2(GobEngine *vm) : Video_v1(vm) {
|
||||||
//XXX: Use this function to update the screen for now.
|
//XXX: Use this function to update the screen for now.
|
||||||
// This should be moved to a better location later on.
|
// This should be moved to a better location later on.
|
||||||
void Video_v2::waitRetrace(int16) {
|
void Video_v2::waitRetrace(int16) {
|
||||||
|
CursorMan.showMouse((bool) (_vm->_draw->_showCursor & 2));
|
||||||
if (_vm->_draw->_frontSurface) {
|
if (_vm->_draw->_frontSurface) {
|
||||||
g_system->copyRectToScreen(_vm->_draw->_frontSurface->vidPtr, 320, 0, 0, 320, 200);
|
g_system->copyRectToScreen(_vm->_draw->_frontSurface->vidPtr, 320, 0, 0, 320, 200);
|
||||||
g_system->updateScreen();
|
g_system->updateScreen();
|
||||||
|
@ -106,6 +108,7 @@ Video::SurfaceDesc *Video_v2::initSurfDesc(int16 vidMode, int16 width, int16 hei
|
||||||
else
|
else
|
||||||
flagsAnd2 = 0;
|
flagsAnd2 = 0;
|
||||||
|
|
||||||
|
if ((flags & SCUMMVM_CURSOR) == 0)
|
||||||
width = (width + 7) & 0xFFF8;
|
width = (width + 7) & 0xFFF8;
|
||||||
|
|
||||||
if (flags & PRIMARY_SURFACE) {
|
if (flags & PRIMARY_SURFACE) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue