mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-06 02:10:28 +00:00
cleanup
svn-id: r5921
This commit is contained in:
parent
f4d78cd330
commit
4ca8f4cc48
@ -199,13 +199,10 @@ protected:
|
||||
byte _bpp;
|
||||
uint32 _charOffs;
|
||||
byte *_charPtr;
|
||||
int _width, _height;
|
||||
int _offsX, _offsY;
|
||||
int _bottom;
|
||||
int _virtScreenHeight;
|
||||
|
||||
|
||||
void drawBits(byte *dst, byte *mask, int drawTop);
|
||||
void drawBits(byte *dst, byte *mask, int drawTop, int width, int height);
|
||||
|
||||
public:
|
||||
byte _colorMap[16];
|
||||
|
@ -229,7 +229,8 @@ void CharsetRenderer::printCharOld(int chr)
|
||||
|
||||
void CharsetRenderer::printChar(int chr)
|
||||
{
|
||||
int d, right;
|
||||
int width, height;
|
||||
int d;
|
||||
VirtScreen *vs;
|
||||
|
||||
_vm->checkRange(_vm->_maxCharsets - 1, 1, _curId, "Printing with bad charset %d");
|
||||
@ -252,8 +253,8 @@ void CharsetRenderer::printChar(int chr)
|
||||
|
||||
_charPtr = _fontPtr + _charOffs;
|
||||
|
||||
_width = _charPtr[0];
|
||||
_height = _charPtr[1];
|
||||
width = _charPtr[0];
|
||||
height = _charPtr[1];
|
||||
if (_firstChar) {
|
||||
_strLeft = 0;
|
||||
_strTop = 0;
|
||||
@ -278,10 +279,8 @@ void CharsetRenderer::printChar(int chr)
|
||||
_top += _offsY;
|
||||
_left += _offsX;
|
||||
|
||||
right = _left + _width;
|
||||
|
||||
if (right > _right + 1 || _left < 0) {
|
||||
_left = right;
|
||||
if (_left + width > _right + 1 || _left < 0) {
|
||||
_left += width;
|
||||
_top -= _offsY;
|
||||
return;
|
||||
}
|
||||
@ -305,14 +304,13 @@ void CharsetRenderer::printChar(int chr)
|
||||
int drawTop = _top - vs->topline;
|
||||
if (drawTop < 0)
|
||||
drawTop = 0;
|
||||
int bottom = drawTop + height + _offsY;
|
||||
|
||||
_bottom = drawTop + _height + _offsY;
|
||||
|
||||
_vm->updateDirtyRect(vs->number, _left, right, drawTop, _bottom, 0);
|
||||
_vm->updateDirtyRect(vs->number, _left, _left + width, drawTop, bottom, 0);
|
||||
|
||||
if (vs->number != 0)
|
||||
_blitAlso = false;
|
||||
if (vs->number == 0 && _blitAlso == 0)
|
||||
if (vs->number == 0 && !_blitAlso)
|
||||
_hasMask = true;
|
||||
|
||||
_virtScreenHeight = vs->height;
|
||||
@ -328,24 +326,24 @@ void CharsetRenderer::printChar(int chr)
|
||||
dst = _vm->getResourceAddress(rtBuffer, vs->number + 5)
|
||||
+ vs->xstart + drawTop * _vm->_realWidth + _left;
|
||||
|
||||
drawBits(dst, mask, drawTop);
|
||||
drawBits(dst, mask, drawTop, width, height);
|
||||
|
||||
_vm->blit(back, dst, _width, _height);
|
||||
_vm->blit(back, dst, width, height);
|
||||
} else {
|
||||
drawBits(dst, mask, drawTop);
|
||||
drawBits(dst, mask, drawTop, width, height);
|
||||
}
|
||||
|
||||
_left += _width;
|
||||
_left += width;
|
||||
if (_left > _strRight)
|
||||
_strRight = _left;
|
||||
|
||||
if (_top + _height > _strBottom)
|
||||
_strBottom = _top + _height;
|
||||
if (_top + height > _strBottom)
|
||||
_strBottom = _top + height;
|
||||
|
||||
_top -= _offsY;
|
||||
}
|
||||
|
||||
void CharsetRenderer::drawBits(byte *dst, byte *mask, int drawTop)
|
||||
void CharsetRenderer::drawBits(byte *dst, byte *mask, int drawTop, int width, int height)
|
||||
{
|
||||
bool usemask;
|
||||
byte maskmask;
|
||||
@ -361,12 +359,16 @@ void CharsetRenderer::drawBits(byte *dst, byte *mask, int drawTop)
|
||||
|
||||
y = 0;
|
||||
|
||||
for (y = 0; y < _height && y + drawTop < _virtScreenHeight;) {
|
||||
for (y = 0; y < height && y + drawTop < _virtScreenHeight; y++) {
|
||||
maskmask = revBitMask[_left & 7];
|
||||
maskpos = 0;
|
||||
|
||||
for (x = 0; x < _width; x++) {
|
||||
for (x = 0; x < width; x++) {
|
||||
int myMask = (0xFF << (8 - _bpp)) & 0xFF;
|
||||
int myColor = (bits & myMask) >> (8 - _bpp);
|
||||
color = (bits >> (8 - _bpp)) & 0xFF;
|
||||
assert(color == myColor);
|
||||
|
||||
if (color) {
|
||||
if (usemask) {
|
||||
mask[maskpos] |= maskmask;
|
||||
@ -375,18 +377,19 @@ void CharsetRenderer::drawBits(byte *dst, byte *mask, int drawTop)
|
||||
}
|
||||
dst++;
|
||||
bits <<= _bpp;
|
||||
if ((numbits -= _bpp) == 0) {
|
||||
numbits -= _bpp;
|
||||
if (numbits == 0) {
|
||||
bits = *_charPtr++;
|
||||
numbits = 8;
|
||||
}
|
||||
if ((maskmask >>= 1) == 0) {
|
||||
maskmask >>= 1;
|
||||
if (maskmask == 0) {
|
||||
maskmask = 0x80;
|
||||
maskpos++;
|
||||
}
|
||||
}
|
||||
dst += _vm->_realWidth - _width;
|
||||
dst += _vm->_realWidth - width;
|
||||
mask += _vm->gdi._numStrips;
|
||||
y++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -856,9 +859,7 @@ void Scumm::drawString(int a)
|
||||
}
|
||||
|
||||
for (i = 0; (chr = buf[i++]) != 0;) {
|
||||
if (chr == 254)
|
||||
chr = 255;
|
||||
if (chr == 255) {
|
||||
if (chr == 254 || chr == 255) {
|
||||
chr = buf[i++];
|
||||
switch (chr) {
|
||||
case 9:
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "object.h"
|
||||
#include "resource.h"
|
||||
#include "verbs.h"
|
||||
#include "common/util.h"
|
||||
|
||||
void Scumm::redrawVerbs()
|
||||
{
|
||||
@ -115,22 +116,22 @@ int Scumm::checkMouseOver(int x, int y)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Scumm::drawVerb(int vrb, int mode)
|
||||
void Scumm::drawVerb(int verb, int mode)
|
||||
{
|
||||
VerbSlot *vs;
|
||||
byte tmp;
|
||||
|
||||
if (!vrb)
|
||||
if (!verb)
|
||||
return;
|
||||
|
||||
vs = &_verbs[vrb];
|
||||
vs = &_verbs[verb];
|
||||
|
||||
if (!vs->saveid && vs->curmode && vs->verbid) {
|
||||
if (vs->type == kImageVerbType) {
|
||||
drawVerbBitmap(vrb, vs->x, vs->y);
|
||||
drawVerbBitmap(verb, vs->x, vs->y);
|
||||
return;
|
||||
}
|
||||
restoreVerbBG(vrb);
|
||||
restoreVerbBG(verb);
|
||||
|
||||
_string[4].charset = vs->charset_nr;
|
||||
_string[4].xpos = vs->x;
|
||||
@ -147,15 +148,19 @@ void Scumm::drawVerb(int vrb, int mode)
|
||||
|
||||
// FIXME For the future: Indy3 and under inv scrolling
|
||||
/*
|
||||
if (vrb >= 31 && vrb <= 36)
|
||||
vrb += _inventoryOffset;
|
||||
if (verb >= 31 && verb <= 36)
|
||||
verb += _inventoryOffset;
|
||||
*/
|
||||
|
||||
_messagePtr = getResourceAddress(rtVerb, vrb);
|
||||
_messagePtr = getResourceAddress(rtVerb, verb);
|
||||
if (!_messagePtr)
|
||||
return;
|
||||
assert(_messagePtr);
|
||||
|
||||
if ((verb == 49 || verb == 48) && mode == 0) {
|
||||
hexdump(_messagePtr, 32);
|
||||
}
|
||||
|
||||
tmp = charset._center;
|
||||
charset._center = 0;
|
||||
drawString(4);
|
||||
@ -169,7 +174,7 @@ void Scumm::drawVerb(int vrb, int mode)
|
||||
vs->oldbottom = charset._strBottom;
|
||||
charset._strLeft = charset._strRight;
|
||||
} else {
|
||||
restoreVerbBG(vrb);
|
||||
restoreVerbBG(verb);
|
||||
}
|
||||
}
|
||||
|
||||
@ -185,7 +190,7 @@ void Scumm::restoreVerbBG(int verb)
|
||||
}
|
||||
}
|
||||
|
||||
void Scumm::drawVerbBitmap(int vrb, int x, int y)
|
||||
void Scumm::drawVerbBitmap(int verb, int x, int y)
|
||||
{
|
||||
VirtScreen *vs;
|
||||
VerbSlot *vst;
|
||||
@ -208,7 +213,7 @@ void Scumm::drawVerbBitmap(int vrb, int x, int y)
|
||||
xstrip = x >> 3;
|
||||
ydiff = y - vs->topline;
|
||||
|
||||
obim = getResourceAddress(rtVerb, vrb);
|
||||
obim = getResourceAddress(rtVerb, verb);
|
||||
if (_features & GF_SMALL_HEADER) {
|
||||
int obj;
|
||||
obj = READ_LE_UINT16(obim + 6);
|
||||
@ -229,7 +234,7 @@ void Scumm::drawVerbBitmap(int vrb, int x, int y)
|
||||
|
||||
imptr = findResource(MKID('IM01'), obim);
|
||||
if (!imptr)
|
||||
error("No image for verb %d", vrb);
|
||||
error("No image for verb %d", verb);
|
||||
}
|
||||
for (i = 0; i < imgw; i++) {
|
||||
tmp = xstrip + i;
|
||||
@ -237,7 +242,7 @@ void Scumm::drawVerbBitmap(int vrb, int x, int y)
|
||||
gdi.drawBitmap(imptr, vs, tmp, ydiff, imgh << 3, i, 1, true);
|
||||
}
|
||||
|
||||
vst = &_verbs[vrb];
|
||||
vst = &_verbs[verb];
|
||||
vst->right = vst->x + imgw * 8 - 1;
|
||||
vst->bottom = vst->y + imgh * 8 - 1;
|
||||
vst->oldleft = vst->x;
|
||||
|
Loading…
x
Reference in New Issue
Block a user