aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2004-06-27 15:41:01 +0000
committerTravis Howell2004-06-27 15:41:01 +0000
commitc026a0a5e18d1d4089b5f6e42bfde90b73feb2e1 (patch)
tree0327b62202d77e0b35e642efc95f6f71aca71f91 /scumm
parent9ef85b62813b90c6c4d6a41e4c7f025b0354801a (diff)
downloadscummvm-rg350-c026a0a5e18d1d4089b5f6e42bfde90b73feb2e1.tar.gz
scummvm-rg350-c026a0a5e18d1d4089b5f6e42bfde90b73feb2e1.tar.bz2
scummvm-rg350-c026a0a5e18d1d4089b5f6e42bfde90b73feb2e1.zip
Another palette change needed for HE 7.0 games.
Rename a few HE sound vars svn-id: r14084
Diffstat (limited to 'scumm')
-rw-r--r--scumm/actor.cpp2
-rw-r--r--scumm/akos.cpp3
-rw-r--r--scumm/bomp.cpp13
-rw-r--r--scumm/bomp.h2
-rw-r--r--scumm/script_v7he.cpp16
-rw-r--r--scumm/scumm.h2
6 files changed, 22 insertions, 16 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp
index f30327ccde..197504af5c 100644
--- a/scumm/actor.cpp
+++ b/scumm/actor.cpp
@@ -981,6 +981,8 @@ void Actor::drawActorCostume() {
bcr->_shadow_mode = shadow_mode;
if (_vm->_features & GF_SMALL_HEADER)
bcr->_shadow_table = NULL;
+ else if (_vm->_heversion == 70)
+ bcr->_shadow_table = _vm->_he_actor_palette;
else
bcr->_shadow_table = _vm->_shadowPalette;
diff --git a/scumm/akos.cpp b/scumm/akos.cpp
index 66c9e84f96..c5aaf2967d 100644
--- a/scumm/akos.cpp
+++ b/scumm/akos.cpp
@@ -959,7 +959,8 @@ void AkosRenderer::akos16Decompress(byte *dest, int32 pitch, const byte *src, in
bompApplyMask(akos16.buffer, maskptr, maskbit, t_width, transparency);
maskptr += maskpitch;
}
- bompApplyShadow(_shadow_mode, _shadow_table, akos16.buffer, dest, t_width, transparency);
+ bool humongous = (_vm->_features & GF_HUMONGOUS);
+ bompApplyShadow(_shadow_mode, _shadow_table, akos16.buffer, dest, t_width, transparency, humongous);
if (numskip_after != 0) {
akos16SkipData(numskip_after);
diff --git a/scumm/bomp.cpp b/scumm/bomp.cpp
index 016ce4abbe..36e9cfc2a7 100644
--- a/scumm/bomp.cpp
+++ b/scumm/bomp.cpp
@@ -29,7 +29,7 @@ namespace Scumm {
static void bompScaleFuncX(byte *line_buffer, byte *scaling_x_ptr, byte skip, int32 size);
-static void bompApplyShadow0(const byte *line_buffer, byte *dst, int32 size, byte transparency);
+static void bompApplyShadow0(const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency, byte humongous);
static void bompApplyShadow1(const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency);
static void bompApplyShadow3(const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency);
static void bompApplyActorPalette(byte *actorPalette, byte *line_buffer, int32 size);
@@ -111,11 +111,11 @@ void bompApplyMask(byte *line_buffer, byte *mask, byte maskbit, int32 size, byte
}
}
-void bompApplyShadow(int shadowMode, const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency) {
+void bompApplyShadow(int shadowMode, const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency, byte humongous) {
assert(size > 0);
switch(shadowMode) {
case 0:
- bompApplyShadow0(line_buffer, dst, size, transparency);
+ bompApplyShadow0(shadowPalette, line_buffer, dst, size, transparency, humongous);
break;
case 1:
bompApplyShadow1(shadowPalette, line_buffer, dst, size, transparency);
@@ -127,11 +127,14 @@ void bompApplyShadow(int shadowMode, const byte *shadowPalette, const byte *line
error("Unknown shadow mode %d", shadowMode);
}
}
-void bompApplyShadow0(const byte *line_buffer, byte *dst, int32 size, byte transparency) {
+void bompApplyShadow0(const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency, byte humongous = false) {
while (size-- > 0) {
byte tmp = *line_buffer++;
if (tmp != transparency) {
- *dst = tmp;
+ if (humongous)
+ *dst = shadowPalette[tmp];
+ else
+ *dst = tmp;
}
dst++;
}
diff --git a/scumm/bomp.h b/scumm/bomp.h
index d32296f371..5a287893a2 100644
--- a/scumm/bomp.h
+++ b/scumm/bomp.h
@@ -29,7 +29,7 @@ namespace Scumm {
int32 setupBompScale(byte *scaling, int32 size, byte scale);
void bompApplyMask(byte *line_buffer, byte *mask, byte maskbit, int32 size, byte transparency);
-void bompApplyShadow(int shadowMode, const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency);
+void bompApplyShadow(int shadowMode, const byte *shadowPalette, const byte *line_buffer, byte *dst, int32 size, byte transparency, byte humongous = false);
void decompressBomp(byte *dst, const byte *src, int w, int h);
void bompDecodeLine(byte *dst, const byte *src, int size);
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp
index 639fa462d1..af72a58fea 100644
--- a/scumm/script_v7he.cpp
+++ b/scumm/script_v7he.cpp
@@ -665,32 +665,32 @@ void ScummEngine_v7he::o7_startSound() {
break;
case 230:
- _heSndVar2 = pop();
+ _heSndTimer = pop();
break;
case 231:
- _heSndVar3 = pop();
+ _heSndOffset = pop();
break;
case 232:
_heSndSoundId = pop();
- _heSndVar3 = 0;
+ _heSndTimer = 0;
_heSndSoundFreq = 11025;
- _heSndVar2 = VAR(VAR_MUSIC_TIMER);
+ _heSndTimer = VAR(VAR_MUSIC_TIMER);
break;
case 245:
- _heSndVar5 |= 1;
+ _heSndLoop |= 1;
break;
case 255:
- // _sound->addSoundToQueue(_heSndSoundId, _heSndVar3, _heSndVar2, _heSndVar5);
+ // _sound->addSoundToQueue(_heSndSoundId, _heSndOffset, _heSndTimer, _heSndLoop);
// FIXME: Music resources (Id 4000+?) are currently unsupported,
// so don't attempt to play them.
if (_heSndSoundId < 4000)
_sound->addSoundToQueue(_heSndSoundId);
- debug(1, "o7_startSound stub (%d, %d, %d, %d)", _heSndSoundId, _heSndVar3, _heSndVar2, _heSndVar5);
- _heSndVar5 = 0;
+ debug(1, "o7_startSound stub (%d, %d, %d, %d)", _heSndSoundId, _heSndOffset, _heSndTimer, _heSndLoop);
+ _heSndLoop = 0;
break;
default:
diff --git a/scumm/scumm.h b/scumm/scumm.h
index be150b4049..42597009f1 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -1012,7 +1012,7 @@ public:
byte _proc_special_palette[256];
byte _roomPalette[256];
byte *_shadowPalette;
- int _heSndSoundFreq, _heSndVar2, _heSndVar3, _heSndSoundId, _heSndVar5;
+ int _heSndSoundFreq, _heSndOffset, _heSndTimer, _heSndSoundId, _heSndLoop;
protected:
int _shadowPaletteSize;