aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2011-12-27 14:09:29 +0100
committerWillem Jan Palenstijn2011-12-27 17:56:50 +0100
commit7bae1022eddc9805bb9163c01676f02f50459c4f (patch)
tree983a261e4dc756b1fc081b8d3db36c4f9ecc80ed /engines
parent39a0153fbf503854011bc1947ef261e06868d971 (diff)
downloadscummvm-rg350-7bae1022eddc9805bb9163c01676f02f50459c4f.tar.gz
scummvm-rg350-7bae1022eddc9805bb9163c01676f02f50459c4f.tar.bz2
scummvm-rg350-7bae1022eddc9805bb9163c01676f02f50459c4f.zip
DREAMWEB: Remove mapData segment
Diffstat (limited to 'engines')
-rw-r--r--engines/dreamweb/backdrop.cpp5
-rw-r--r--engines/dreamweb/dreambase.h6
-rw-r--r--engines/dreamweb/sprite.cpp3
-rw-r--r--engines/dreamweb/stubs.cpp3
4 files changed, 11 insertions, 6 deletions
diff --git a/engines/dreamweb/backdrop.cpp b/engines/dreamweb/backdrop.cpp
index 875e16805e..e85889dae5 100644
--- a/engines/dreamweb/backdrop.cpp
+++ b/engines/dreamweb/backdrop.cpp
@@ -27,7 +27,7 @@ namespace DreamGen {
void DreamBase::doBlocks() {
uint16 dstOffset = data.word(kMapady) * 320 + data.word(kMapadx);
uint16 mapOffset = kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx);
- const uint8 *mapData = getSegment(data.word(kMapdata)).ptr(mapOffset, 0);
+ const uint8 *mapData = _mapData + mapOffset;
const uint8 *blocks = getSegment(data.word(kBackdrop)).ptr(kBlocks, 0);
uint8 *dstBuffer = workspace() + dstOffset;
@@ -242,7 +242,8 @@ void DreamBase::showAllFree() {
void DreamBase::drawFlags() {
uint8 *mapFlags = _mapFlags;
- const uint8 *mapData = getSegment(data.word(kMapdata)).ptr(kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx), 0);
+ uint16 mapOffset = kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx);
+ const uint8 *mapData = _mapData + mapOffset;
const uint8 *backdropFlags = getSegment(data.word(kBackdrop)).ptr(kFlags, 0);
for (size_t i = 0; i < 10; ++i) {
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index ed384fae99..b310bb3b46 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -48,6 +48,9 @@ const unsigned int kUnderTimedTextBufSize = 256 * kUnderTimedTextSizeY_f;
const unsigned int kLengthOfVars = 68;
const unsigned int kNumChanges = 250;
const unsigned int kLenOfMapStore = 22*8*20*8;
+const unsigned int kMapWidth = 66;
+const unsigned int kMapHeight = 60;
+const unsigned int kLengthOfMap = kMapWidth * kMapHeight;
/**
* This class is one of the parent classes of DreamGenContext. Its sole purpose
@@ -62,6 +65,9 @@ class DreamBase : public SegmentManager {
protected:
DreamWeb::DreamWebEngine *engine;
+ // from backdrop.cpp
+ uint8 _mapData[kLengthOfMap + 32];
+
// from keypad.cpp
uint8 _pressList[6];
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 3c1ba6be2f..244f6a32ae 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -1100,8 +1100,7 @@ void DreamBase::clearBeforeLoad() {
clearReels();
//clearRest
- uint8 *dst = (uint8 *)getSegment(data.word(kMapdata)).ptr(0, 0);
- memset(dst, 0, kMaplen);
+ memset(_mapData, 0, kMaplen);
deallocateMem(data.word(kBackdrop));
deallocateMem(data.word(kSetframes));
deallocateMem(data.word(kReels));
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 772509b842..e47e79250f 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1885,7 +1885,7 @@ void DreamBase::zoomOnOff() {
void DreamBase::sortOutMap() {
const uint8 *src = workspace();
- uint8 *dst = (uint8 *)getSegment(data.word(kMapdata)).ptr(0, 0);
+ uint8 *dst = _mapData;
for (uint16 y = 0; y < kMaplength; ++y) {
memcpy(dst, src, kMapwidth);
dst += kMapwidth;
@@ -2461,7 +2461,6 @@ void DreamBase::drawFloor() {
void DreamBase::allocateBuffers() {
data.word(kExtras) = allocateMem(kLengthofextra/16);
- data.word(kMapdata) = allocateMem(kLengthofmap/16);
data.word(kFreedat) = allocateMem(kFreedatlen/16);
data.word(kSetdat) = allocateMem(kSetdatlen/16);
}