diff options
author | Bertrand Augereau | 2011-08-30 10:56:49 +0200 |
---|---|---|
committer | Bertrand Augereau | 2011-08-30 12:17:18 +0200 |
commit | 6a46429c448aa3899fa93e49dc36cd3617b922c7 (patch) | |
tree | 9ad19ae77145b4258aee64cadd335290ee6603b7 /engines/dreamweb/vgagrafx.cpp | |
parent | b71123ef4f6ecfb8c60fa87d8fb2da0d2f40eded (diff) | |
download | scummvm-rg350-6a46429c448aa3899fa93e49dc36cd3617b922c7.tar.gz scummvm-rg350-6a46429c448aa3899fa93e49dc36cd3617b922c7.tar.bz2 scummvm-rg350-6a46429c448aa3899fa93e49dc36cd3617b922c7.zip |
DREAMWEB: 'transferinv' ported to C++
Diffstat (limited to 'engines/dreamweb/vgagrafx.cpp')
-rw-r--r-- | engines/dreamweb/vgagrafx.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/engines/dreamweb/vgagrafx.cpp b/engines/dreamweb/vgagrafx.cpp index 00fb1715ef..235d28cc01 100644 --- a/engines/dreamweb/vgagrafx.cpp +++ b/engines/dreamweb/vgagrafx.cpp @@ -415,5 +415,22 @@ void DreamGenContext::paneltomap() { multiget(segRef(data.word(kMapstore)).ptr(0, 0), data.word(kMapxstart) + data.word(kMapadx), data.word(kMapystart) + data.word(kMapady), data.byte(kMapxsize), data.byte(kMapysize)); } +void DreamGenContext::transferinv() { + const Frame *freeFrames = (const Frame *)segRef(data.word(kFreeframes)).ptr(kFrframedata, 0); + const Frame *freeFrame = freeFrames + (3 * data.byte(kItemtotran) + 1); + Frame *exFrames = (Frame *)segRef(data.word(kExtras)).ptr(kExframedata, 0); + Frame *exFrame = exFrames + (3 * data.byte(kExpos) + 1); + exFrame->width = freeFrame->width; + exFrame->height = freeFrame->height; + exFrame->x = freeFrame->x; + exFrame->y = freeFrame->y; + uint16 byteCount = freeFrame->width * freeFrame->height; + const uint8 *src = segRef(data.word(kFreeframes)).ptr(kFrframes + freeFrame->ptr(), byteCount); + uint8 *dst = segRef(data.word(kExtras)).ptr(kExframes + data.word(kExframepos), byteCount); + memcpy(dst, src, byteCount); + exFrame->setPtr(data.word(kExframepos)); + data.word(kExframepos) += byteCount; +} + } /*namespace dreamgen */ |