diff options
author | Bertrand Augereau | 2011-08-03 12:24:06 +0200 |
---|---|---|
committer | Bertrand Augereau | 2011-08-03 13:50:24 +0200 |
commit | 4e39a41e6218c7206e706734eb608e9706e2678a (patch) | |
tree | bd76120904a7f1d685e51b6d91a2ed9b5d61a68b /engines/dreamweb/vgagrafx.cpp | |
parent | 7fd8895de62ad0421d8038cdb0618b493aecec1c (diff) | |
download | scummvm-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.cpp | 28 |
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 */ |