mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-16 06:39:17 +00:00
ACCESS: Fixes for drawing scrolling scenes
This commit is contained in:
parent
e5130bcc6c
commit
b4d2484633
@ -152,7 +152,7 @@ bool ASurface::clip(Common::Rect &r) {
|
|||||||
_leftSkip = _rightSkip = 0;
|
_leftSkip = _rightSkip = 0;
|
||||||
_topSkip = _bottomSkip = 0;
|
_topSkip = _bottomSkip = 0;
|
||||||
|
|
||||||
if (r.left > _clipWidth) {
|
if (r.left > _clipWidth || r.left < 0) {
|
||||||
if (r.left >= 0)
|
if (r.left >= 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ bool ASurface::clip(Common::Rect &r) {
|
|||||||
_rightSkip = skip;
|
_rightSkip = skip;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r.top > _clipHeight) {
|
if (r.top > _clipHeight || r.top < 0) {
|
||||||
if (r.top >= 0)
|
if (r.top >= 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@ -285,10 +285,7 @@ void ASurface::sPlotB(SpriteFrame *frame, const Common::Rect &bounds) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ASurface::copyBlock(ASurface *src, const Common::Rect &bounds) {
|
void ASurface::copyBlock(ASurface *src, const Common::Rect &bounds) {
|
||||||
Common::Rect destBounds = bounds;
|
copyRectToSurface(*src, bounds.left, bounds.top, bounds);
|
||||||
//destBounds.translate(src->_scrollX, src->_scrollY);
|
|
||||||
|
|
||||||
copyRectToSurface(*src, destBounds.left, destBounds.top, bounds);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ASurface::saveBlock(const Common::Rect &bounds) {
|
void ASurface::saveBlock(const Common::Rect &bounds) {
|
||||||
|
@ -86,7 +86,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
void plotB(SpriteFrame *frame, const Common::Point &pt);
|
void plotB(SpriteFrame *frame, const Common::Point &pt);
|
||||||
|
|
||||||
void copyBlock(ASurface *src, const Common::Rect &bounds);
|
virtual void copyBlock(ASurface *src, const Common::Rect &bounds);
|
||||||
|
|
||||||
void copyTo(ASurface *dest, const Common::Point &destPos);
|
void copyTo(ASurface *dest, const Common::Point &destPos);
|
||||||
|
|
||||||
|
@ -296,6 +296,10 @@ void Room::buildScreen() {
|
|||||||
int cnt = _vm->_screen->_vWindowWidth + 1;
|
int cnt = _vm->_screen->_vWindowWidth + 1;
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
|
|
||||||
|
// Clear current background buffer
|
||||||
|
_vm->_buffer1.clearBuffer();
|
||||||
|
|
||||||
|
// Loop through drawing each column of tiles forming the background
|
||||||
for (int idx = 0; idx < cnt; offset += TILE_WIDTH, ++idx) {
|
for (int idx = 0; idx < cnt; offset += TILE_WIDTH, ++idx) {
|
||||||
buildColumn(_vm->_screen->_scrollCol, offset);
|
buildColumn(_vm->_screen->_scrollCol, offset);
|
||||||
++_vm->_screen->_scrollCol;
|
++_vm->_screen->_scrollCol;
|
||||||
|
@ -236,4 +236,11 @@ void Screen::moveBufferUp() {
|
|||||||
error("TODO: UP");
|
error("TODO: UP");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Screen::copyBlock(ASurface *src, const Common::Rect &bounds) {
|
||||||
|
Common::Rect destBounds = bounds;
|
||||||
|
destBounds.translate(_windowXAdd, _windowYAdd + _screenYOff);
|
||||||
|
|
||||||
|
copyRectToSurface(*src, destBounds.left, destBounds.top, bounds);
|
||||||
|
}
|
||||||
|
|
||||||
} // End of namespace Access
|
} // End of namespace Access
|
||||||
|
@ -79,6 +79,8 @@ public:
|
|||||||
int _bufferBytesWide;
|
int _bufferBytesWide;
|
||||||
int _vWindowLinesTall;
|
int _vWindowLinesTall;
|
||||||
bool _screenChangeFlag;
|
bool _screenChangeFlag;
|
||||||
|
public:
|
||||||
|
virtual void copyBlock(ASurface *src, const Common::Rect &bounds);
|
||||||
public:
|
public:
|
||||||
Screen(AccessEngine *vm);
|
Screen(AccessEngine *vm);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user