cleanup / tweaks (V2 masking, at least in Zakdemo, seems not to work properly, though)

svn-id: r7429
This commit is contained in:
Max Horn 2003-05-11 11:13:24 +00:00
parent 134c32bc98
commit e5f8056d88
2 changed files with 10 additions and 8 deletions

View file

@ -871,7 +871,7 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c
if (_disable_zbuffer) if (_disable_zbuffer)
numzbuf = 0; numzbuf = 0;
else if (_numZBuffer <= 1) else if (_numZBuffer <= 1 || (_vm->_features & GF_AFTER_V2))
numzbuf = _numZBuffer; numzbuf = _numZBuffer;
else { else {
numzbuf = _numZBuffer; numzbuf = _numZBuffer;
@ -949,7 +949,7 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c
else else
bgbak_ptr = vs->screenPtr + (y * _numStrips + x) * 8; bgbak_ptr = vs->screenPtr + (y * _numStrips + x) * 8;
mask_ptr = _vm->getResourceAddress(rtBuffer, 9) + (y * _numStrips + x); mask_ptr = _vm->getResourceAddress(rtBuffer, 9) + (y * _numStrips + x) + _imgBufOffs[1];
const int left = (stripnr << 3); const int left = (stripnr << 3);
const int right = left + (numstrip << 3); const int right = left + (numstrip << 3);
@ -1013,8 +1013,7 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c
theY++; theY++;
if (theY >= height) { if (theY >= height) {
if (left <= theX && theX < right) { if (left <= theX && theX < right) {
mask_ptr -= _numStrips * height; mask_ptr -= _numStrips * height - 1;
mask_ptr++;
} }
theY = 0; theY = 0;
theX += 8; theX += 8;
@ -1033,8 +1032,7 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c
theY++; theY++;
if (theY >= height) { if (theY >= height) {
if (left <= theX && theX < right) { if (left <= theX && theX < right) {
mask_ptr -= _numStrips * height; mask_ptr -= _numStrips * height - 1;
mask_ptr++;
} }
theY = 0; theY = 0;
theX += 8; theX += 8;
@ -1073,8 +1071,6 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c
else else
bgbak_ptr = backbuff_ptr; bgbak_ptr = backbuff_ptr;
mask_ptr = _vm->getResourceAddress(rtBuffer, 9) + (y * _numStrips + x);
if (!(_vm->_features & GF_AFTER_V2)) { if (!(_vm->_features & GF_AFTER_V2)) {
if (_vm->_features & GF_16COLOR) { if (_vm->_features & GF_16COLOR) {
decodeStripEGA(bgbak_ptr, smap_ptr + READ_LE_UINT16(smap_ptr + stripnr * 2 + 2), height); decodeStripEGA(bgbak_ptr, smap_ptr + READ_LE_UINT16(smap_ptr + stripnr * 2 + 2), height);
@ -1085,6 +1081,8 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c
} }
} }
mask_ptr = _vm->getResourceAddress(rtBuffer, 9) + (y * _numStrips + x);
CHECK_HEAP; CHECK_HEAP;
if (vs->alloctwobuffers) { if (vs->alloctwobuffers) {
if (_vm->hasCharsetMask(sx << 3, y, (sx + 1) << 3, bottom)) { if (_vm->hasCharsetMask(sx << 3, y, (sx + 1) << 3, bottom)) {

View file

@ -821,8 +821,12 @@ void Scumm_v2::o2_doSentence() {
// TODO // TODO
switch(fetchScriptByte()) { switch(fetchScriptByte()) {
case 1: case 1:
// TODO - execute the sentence
_sentenceNum--;
break; break;
case 2: case 2:
// TODO - print the sentence
_sentenceNum--;
break; break;
} }
} }