aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/dreamweb.cpp
diff options
context:
space:
mode:
authorVladimir Menshakov2011-06-13 14:20:56 +0400
committerAlyssa Milburn2011-06-15 17:34:42 +0200
commit167d401ad70868479613e3f8a2d66e8667c5f4c4 (patch)
tree8fa03694e23d505830a7491e90fe0985e88f7a84 /engines/dreamweb/dreamweb.cpp
parent93cf9993eaeb26f2dcb8f60a7c74559007f7a014 (diff)
downloadscummvm-rg350-167d401ad70868479613e3f8a2d66e8667c5f4c4.tar.gz
scummvm-rg350-167d401ad70868479613e3f8a2d66e8667c5f4c4.tar.bz2
scummvm-rg350-167d401ad70868479613e3f8a2d66e8667c5f4c4.zip
DREAMWEB: fix registers on exit from stubs
Diffstat (limited to 'engines/dreamweb/dreamweb.cpp')
-rw-r--r--engines/dreamweb/dreamweb.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp
index 3d74570da2..6bf0fff665 100644
--- a/engines/dreamweb/dreamweb.cpp
+++ b/engines/dreamweb/dreamweb.cpp
@@ -275,6 +275,7 @@ void DreamWebEngine::mouseCall() {
unsigned state = eventMan->getButtonState();
_context.bx = state == _oldMouseState? 0: state;
_oldMouseState = state;
+ _context.flags._c = false;
}
void DreamWebEngine::setGraphicsMode() {
@@ -426,7 +427,9 @@ void multidump(Context &context) {
void worktoscreen(Context &context) {
context.ds = context.data.word(kWorkspace);
- context.engine->blit(context.ds.ptr(0, 320 * 200), 320, 0, 0, 320, 200);
+ uint size = 320 * 200;
+ context.engine->blit(context.ds.ptr(0, size), 320, 0, 0, 320, 200);
+ context.di = context.si = size;
context.cx = 0;
}
@@ -450,6 +453,9 @@ void frameoutnm(Context &context) {
uint8 *dst_p = context.es.ptr(dst + pitch * l, w);
memcpy(dst_p, src_p, w);
}
+ context.di += dst + pitch * h;
+ context.si += w * h;
+ context.cx = 0;
}
void seecommandtail(Context &context) {
@@ -528,6 +534,7 @@ void dontloadseg(Context &context) {
unsigned pos = context.engine->skipBytes(context.dx);
context.dx = pos >> 16;
context.ax = pos & 0xffff;
+ context.flags._c = false;
}
void mousecall(Context &context) {