diff options
author | Bertrand Augereau | 2011-08-17 18:57:17 +0200 |
---|---|---|
committer | Bertrand Augereau | 2011-08-17 18:58:05 +0200 |
commit | 1f47b877bd58043e249b61150776b7731e2aa999 (patch) | |
tree | 8582e8fe767f894f98198e334fd2cc4960addcda /engines/dreamweb/backdrop.cpp | |
parent | 3700e04e0f8bdd93ee95fee136d896b5fd836c93 (diff) | |
download | scummvm-rg350-1f47b877bd58043e249b61150776b7731e2aa999.tar.gz scummvm-rg350-1f47b877bd58043e249b61150776b7731e2aa999.tar.bz2 scummvm-rg350-1f47b877bd58043e249b61150776b7731e2aa999.zip |
DREAMWEB: 'doblocks' moves to backdrops.cpp
Diffstat (limited to 'engines/dreamweb/backdrop.cpp')
-rw-r--r-- | engines/dreamweb/backdrop.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/engines/dreamweb/backdrop.cpp b/engines/dreamweb/backdrop.cpp index 010d314b74..708a544dc4 100644 --- a/engines/dreamweb/backdrop.cpp +++ b/engines/dreamweb/backdrop.cpp @@ -26,6 +26,48 @@ namespace DreamGen { +void DreamGenContext::doblocks() { + uint16 dstOffset = data.word(kMapady) * 320 + data.word(kMapadx); + uint16 mapOffset = kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx); + ds = data.word(kMapdata); + const uint8 *mapData = ds.ptr(mapOffset, 0); + ds = data.word(kBackdrop); + const uint8 *blocks = ds.ptr(kBlocks, 0); + es = data.word(kWorkspace); + uint8 *dstBuffer = es.ptr(dstOffset, 0); + + for (size_t i = 0; i < 10; ++i) { + for (size_t j = 0; j < 11; ++j) { + uint16 blockType = mapData[j]; + if (blockType != 0) { + uint8 *dst = dstBuffer + i * 320 * 16 + j * 16; + const uint8 *block = blocks + blockType * 256; + for (size_t k = 0; k < 4; ++k) { + memcpy(dst, block, 16); + block += 16; + dst += 320; + } + for (size_t k = 0; k < 12; ++k) { + memcpy(dst, block, 16); + memset(dst + 16, 0xdf, 4); + block += 16; + dst += 320; + } + dst += 4; + ax = 0x0dfdf; + memset(dst, 0xdf, 16); + dst += 320; + memset(dst, 0xdf, 16); + dst += 320; + memset(dst, 0xdf, 16); + dst += 320; + memset(dst, 0xdf, 16); + } + } + mapData += kMapwidth; + } +} + uint8 DreamGenContext::getxad(const uint8 *setData, uint8 *result) { uint8 v0 = setData[0]; uint8 v1 = setData[1]; |