diff -ur ScummVM-cvs20021107/scummvm/scumm/akos.cpp ScummVM-cvs20021107+hack/scummvm/scumm/akos.cpp
old
|
new
|
|
923 | 923 | bdd.y = _y + move_y_cur; |
924 | 924 | |
925 | 925 | if (clipping != 0) { |
926 | | _vm->_bompMaskPtr = _vm->getResourceAddress(rtBuffer, 9) + _vm->_screenStartStrip + _vm->gdi._imgBufOffs[clipping]; |
927 | | _vm->_bompMaskPitch = _vm->_realWidth / 8; |
| 926 | _vm->_bompMaskPtr = _vm->getResourceAddress(rtBuffer, 9) + _vm->gdi._imgBufOffs[clipping]; |
928 | 927 | _vm->drawBomp(&bdd, decode_mode, 1); |
929 | 928 | } else { |
930 | 929 | _vm->drawBomp(&bdd, decode_mode, 0); |
diff -ur ScummVM-cvs20021107/scummvm/scumm/gfx.cpp ScummVM-cvs20021107+hack/scummvm/scumm/gfx.cpp
old
|
new
|
|
3260 | 3260 | byte skip_y_new = 0; |
3261 | 3261 | byte bits = 0; |
3262 | 3262 | byte *mask_out = 0; |
| 3263 | byte *charset_mask; |
3263 | 3264 | byte tmp; |
3264 | | int32 clip_left, clip_right, clip_top, clip_bottom, tmp_x, tmp_y; |
| 3265 | int32 clip_left, clip_right, clip_top, clip_bottom, tmp_x, tmp_y, mask_offset, mask_pitch; |
3265 | 3266 | |
3266 | 3267 | if (bd->x < 0) { |
3267 | 3268 | clip_left = -bd->x; |
… |
… |
|
3290 | 3291 | byte * src = bd->dataptr; |
3291 | 3292 | byte * dst = bd->out + bd->y * bd->outwidth + bd->x + clip_left; |
3292 | 3293 | |
| 3294 | mask_pitch = _realWidth / 8; |
| 3295 | mask_offset = _screenStartStrip + (bd->y * mask_pitch) + ((bd->x + clip_left) >> 3); |
| 3296 | |
| 3297 | charset_mask = getResourceAddress(rtBuffer, 9) + mask_offset; |
| 3298 | bits = 128 >> ((bd->x + clip_left) & 7); |
| 3299 | |
3293 | 3300 | if (mask == 1) { |
3294 | | mask_out = _bompMaskPtr + (bd->y * _bompMaskPitch) + ((bd->x + clip_left) >> 3); |
3295 | | bits = 128 >> ((bd->x + clip_left) & 7); |
| 3301 | mask_out = _bompMaskPtr + mask_offset; |
3296 | 3302 | } |
3297 | 3303 | |
3298 | 3304 | if (mask == 3) { |
… |
… |
|
3358 | 3364 | bompApplyMask(line_ptr, mask_out, bits, clip_right); |
3359 | 3365 | } |
3360 | 3366 | |
| 3367 | bompApplyMask(line_ptr, charset_mask, bits, clip_right); |
3361 | 3368 | bompApplyActorPalette(line_ptr, clip_right); |
3362 | 3369 | |
3363 | 3370 | switch(bd->shadowMode) { |
… |
… |
|
3375 | 3382 | } |
3376 | 3383 | |
3377 | 3384 | labelBompSkip: |
3378 | | mask_out += _bompMaskPitch; |
| 3385 | mask_out += mask_pitch; |
| 3386 | charset_mask += mask_pitch; |
3379 | 3387 | pos_y++; |
3380 | 3388 | dst += bd->outwidth; |
3381 | 3389 | if (pos_y >= clip_bottom) |
diff -ur ScummVM-cvs20021107/scummvm/scumm/scumm.h ScummVM-cvs20021107+hack/scummvm/scumm/scumm.h
old
|
new
|
|
816 | 816 | int32 _bompScaleRight, _bompScaleBottom; |
817 | 817 | byte *_bompScallingXPtr, *_bompScallingYPtr; |
818 | 818 | byte *_bompMaskPtr; |
819 | | int32 _bompMaskPitch; |
820 | 819 | byte *_bompActorPalletePtr; |
821 | 820 | |
822 | 821 | |