aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/vgagrafx.cpp
diff options
context:
space:
mode:
authorBertrand Augereau2011-08-03 12:24:06 +0200
committerBertrand Augereau2011-08-03 13:50:24 +0200
commit4e39a41e6218c7206e706734eb608e9706e2678a (patch)
treebd76120904a7f1d685e51b6d91a2ed9b5d61a68b /engines/dreamweb/vgagrafx.cpp
parent7fd8895de62ad0421d8038cdb0618b493aecec1c (diff)
downloadscummvm-rg350-4e39a41e6218c7206e706734eb608e9706e2678a.tar.gz
scummvm-rg350-4e39a41e6218c7206e706734eb608e9706e2678a.tar.bz2
scummvm-rg350-4e39a41e6218c7206e706734eb608e9706e2678a.zip
DREAWMEB: Ported 'zoom' to C++
Diffstat (limited to 'engines/dreamweb/vgagrafx.cpp')
-rw-r--r--engines/dreamweb/vgagrafx.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/engines/dreamweb/vgagrafx.cpp b/engines/dreamweb/vgagrafx.cpp
index e61532fdb9..5acd2ec01f 100644
--- a/engines/dreamweb/vgagrafx.cpp
+++ b/engines/dreamweb/vgagrafx.cpp
@@ -387,5 +387,33 @@ void DreamGenContext::clearwork() {
memset(workspace(), 0, 320*200);
}
+void DreamGenContext::zoom() {
+ if (data.word(kWatchingtime) != 0)
+ return;
+ if (data.byte(kZoomon) != 1)
+ return;
+ if (data.byte(kCommandtype) >= 199) {
+ putunderzoom();
+ return;
+ }
+ uint16 srcOffset = (data.word(kOldpointery) - 9) * 320 + (data.word(kOldpointerx) - 11);
+ uint16 dstOffset = (kZoomy + 4) * 320 + (kZoomx + 5);
+ const uint8 *src = workspace() + srcOffset;
+ uint8 *dst = workspace() + dstOffset;
+ for(size_t i=0; i<20; ++i) {
+ for(size_t j=0; j<23; ++j) {
+ uint8 v = src[j];
+ dst[2*j+0] = v;
+ dst[2*j+1] = v;
+ dst[2*j+320] = v;
+ dst[2*j+321] = v;
+ }
+ src += 320;
+ dst += 320*2;
+ }
+ crosshair();
+ data.byte(kDidzoom) = 1;
+}
+
} /*namespace dreamgen */