diff options
Diffstat (limited to 'engines/parallaction')
-rw-r--r-- | engines/parallaction/callables.cpp | 6 | ||||
-rw-r--r-- | engines/parallaction/disk.cpp | 36 | ||||
-rw-r--r-- | engines/parallaction/disk.h | 2 | ||||
-rw-r--r-- | engines/parallaction/graphics.cpp | 41 | ||||
-rw-r--r-- | engines/parallaction/graphics.h | 6 | ||||
-rw-r--r-- | engines/parallaction/location.cpp | 4 | ||||
-rw-r--r-- | engines/parallaction/menu.cpp | 12 | ||||
-rw-r--r-- | engines/parallaction/parallaction.cpp | 2 |
8 files changed, 52 insertions, 57 deletions
diff --git a/engines/parallaction/callables.cpp b/engines/parallaction/callables.cpp index cdbde2367e..1cdf9550b3 100644 --- a/engines/parallaction/callables.cpp +++ b/engines/parallaction/callables.cpp @@ -220,7 +220,7 @@ void _c_frankenstein(void *parm) { byte pal0[PALETTE_SIZE], pal1[PALETTE_SIZE]; for (uint16 i = 0; i <= PALETTE_COLORS; i++) { - pal0[i] = _palette[i]; + pal0[i] = _vm->_gfx->_palette[i]; pal0[i*3+1] = 0; pal0[i*3+2] = 0; } @@ -234,7 +234,7 @@ void _c_frankenstein(void *parm) { _vm->_gfx->setPalette(pal1); } - _vm->_gfx->setPalette(_palette); + _vm->_gfx->setPalette(_vm->_gfx->_palette); return; } @@ -282,7 +282,7 @@ void _c_finito(void *parm) { cleanInventory(); refreshInventory(_vm->_characterName); - _vm->_gfx->palUnk0(_palette); + _vm->_gfx->palUnk0(_vm->_gfx->_palette); if (gameCompleted) { _vm->_gfx->setFont("slide"); diff --git a/engines/parallaction/disk.cpp b/engines/parallaction/disk.cpp index 5a72800b7a..49d80215cc 100644 --- a/engines/parallaction/disk.cpp +++ b/engines/parallaction/disk.cpp @@ -388,13 +388,45 @@ void Disk::unpackBackgroundScanline(byte *src, byte *screen, byte *mask, byte *p return; } +void Disk::parseDepths(Common::SeekableReadStream &stream) { + _vm->_gfx->_bgLayers[0] = stream.readByte(); + _vm->_gfx->_bgLayers[1] = stream.readByte(); + _vm->_gfx->_bgLayers[2] = stream.readByte(); + _vm->_gfx->_bgLayers[3] = stream.readByte(); +} + + +void Disk::parseBackground(Common::SeekableReadStream &stream) { + + stream.read(_vm->_gfx->_palette, PALETTE_SIZE); + + parseDepths(stream); + + for (uint32 _si = 0; _si < 6; _si++) { + _vm->_gfx->_palettefx[_si]._timer = stream.readUint16BE(); + _vm->_gfx->_palettefx[_si]._step = stream.readUint16BE(); + _vm->_gfx->_palettefx[_si]._flags = stream.readUint16BE(); + _vm->_gfx->_palettefx[_si]._first = stream.readByte(); + _vm->_gfx->_palettefx[_si]._last = stream.readByte(); + } + +#if 0 + uint16 v147; + for (v147 = 0; v147 < PALETTE_SIZE; v147++) { + byte _al = _vm->_gfx->_palette[v147]; + _vm->_gfx->_palette[PALETTE_SIZE+v147] = _al / 2; + } +#endif + +} + void Disk::loadBackground(const char *filename) { // printf("Gfx::loadBackground(%s)\n", filename); if (!_archive.openArchivedFile(filename)) errorFileNotFound(filename); - _vm->_gfx->parseBackground(_archive); + parseBackground(_archive); byte *bg = (byte*)calloc(1, SCREEN_WIDTH*SCREEN_HEIGHT); byte *mask = (byte*)calloc(1, SCREENMASK_WIDTH*SCREEN_HEIGHT); @@ -440,7 +472,7 @@ void Disk::loadMaskAndPath(const char *name) { byte *maskBuf = (byte*)calloc(1, SCREENMASK_WIDTH*SCREEN_HEIGHT); byte *pathBuf = (byte*)calloc(1, SCREENPATH_WIDTH*SCREEN_HEIGHT); - _vm->_gfx->parseDepths(_archive); + parseDepths(_archive); _archive.read(pathBuf, SCREENPATH_WIDTH*SCREEN_HEIGHT); _archive.read(maskBuf, SCREENMASK_WIDTH*SCREEN_HEIGHT); diff --git a/engines/parallaction/disk.h b/engines/parallaction/disk.h index ae9e448a3c..d5bac325a1 100644 --- a/engines/parallaction/disk.h +++ b/engines/parallaction/disk.h @@ -86,6 +86,8 @@ private: void loadExternalStaticCnv(const char *filename, StaticCnv *cnv); void loadBackground(const char *filename); void loadMaskAndPath(const char *name); + void parseDepths(Common::SeekableReadStream &stream); + void parseBackground(Common::SeekableReadStream &stream); protected: Archive _archive; diff --git a/engines/parallaction/graphics.cpp b/engines/parallaction/graphics.cpp index 054731cf4a..8411f34883 100644 --- a/engines/parallaction/graphics.cpp +++ b/engines/parallaction/graphics.cpp @@ -34,7 +34,6 @@ extern OSystem *g_system; namespace Parallaction { -uint16 _bgLayers[4]; // // proportional font glyphs width @@ -57,16 +56,6 @@ byte * Gfx::_buffers[]; #define PALETTE_BACKUP PALETTE_SIZE -PaletteFxRange _palettefx[6]; -byte _palette[PALETTE_SIZE] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - byte _black_palette[PALETTE_SIZE] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -874,37 +863,7 @@ void Gfx::freeStaticCnv(StaticCnv *cnv) { return; } -void Gfx::parseDepths(Common::SeekableReadStream &stream) { - _bgLayers[0] = stream.readByte(); - _bgLayers[1] = stream.readByte(); - _bgLayers[2] = stream.readByte(); - _bgLayers[3] = stream.readByte(); -} - -void Gfx::parseBackground(Common::SeekableReadStream &stream) { - - stream.read(_palette, PALETTE_SIZE); - - parseDepths(stream); - - for (uint32 _si = 0; _si < 6; _si++) { - _palettefx[_si]._timer = stream.readUint16BE(); - _palettefx[_si]._step = stream.readUint16BE(); - _palettefx[_si]._flags = stream.readUint16BE(); - _palettefx[_si]._first = stream.readByte(); - _palettefx[_si]._last = stream.readByte(); - } - -#if 0 - uint16 v147; - for (v147 = 0; v147 < PALETTE_SIZE; v147++) { - byte _al = _palette[v147]; - _palette[PALETTE_SIZE+v147] = _al / 2; - } -#endif - -} void Gfx::setBackground(byte *background) { memcpy(_buffers[kBitBack], background, SCREEN_WIDTH*SCREEN_HEIGHT); diff --git a/engines/parallaction/graphics.h b/engines/parallaction/graphics.h index 6b078fb42d..7091aa39a3 100644 --- a/engines/parallaction/graphics.h +++ b/engines/parallaction/graphics.h @@ -97,8 +97,6 @@ public: // location void setBackground(byte *background); void setMask(byte *mask); - void parseDepths(Common::SeekableReadStream &stream); - void parseBackground(Common::SeekableReadStream &stream); int16 queryMask(int16 v); void intGrottaHackMask(); void restoreBackground(const Common::Rect& r); @@ -139,6 +137,10 @@ public: static Point _labelPosition[2]; static bool _proportionalFont; + uint16 _bgLayers[4]; + PaletteFxRange _palettefx[6]; + byte _palette[PALETTE_SIZE]; + protected: Parallaction* _vm; diff --git a/engines/parallaction/location.cpp b/engines/parallaction/location.cpp index e0ee7b4a81..5cec348e80 100644 --- a/engines/parallaction/location.cpp +++ b/engines/parallaction/location.cpp @@ -282,7 +282,7 @@ extern Job *_jEraseLabel; void Parallaction::showSlide(const char *name) { _disk->loadSlide(name); - _gfx->palUnk0(_palette); + _gfx->palUnk0(_vm->_gfx->_palette); _gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront); debugC(1, kDebugLocation, "changeLocation: new background set"); @@ -418,7 +418,7 @@ void Parallaction::changeLocation(char *location) { runJobs(); _gfx->swapBuffers(); - _gfx->palUnk0(_palette); + _gfx->palUnk0(_vm->_gfx->_palette); if (_location._aCommands) { runCommands(_location._aCommands); debugC(1, kDebugLocation, "changeLocation: location acommands run"); diff --git a/engines/parallaction/menu.cpp b/engines/parallaction/menu.cpp index d1b3b96e79..28d5eb1faf 100644 --- a/engines/parallaction/menu.cpp +++ b/engines/parallaction/menu.cpp @@ -106,19 +106,19 @@ void Menu::start() { _vm->_gfx->setFont("slide"); _vm->_disk->loadSlide("intro"); - _vm->_gfx->palUnk0(_palette); + _vm->_gfx->palUnk0(_vm->_gfx->_palette); _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront); g_system->delayMillis(2000); _vm->_disk->loadSlide("minintro"); - _vm->_gfx->palUnk0(_palette); + _vm->_gfx->palUnk0(_vm->_gfx->_palette); _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront); g_system->delayMillis(2000); _vm->_disk->loadSlide("lingua"); - _vm->_gfx->palUnk0(_palette); + _vm->_gfx->palUnk0(_vm->_gfx->_palette); _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront); _vm->_gfx->displayString(60, 30, "SELECT LANGUAGE"); @@ -130,7 +130,7 @@ void Menu::start() { _vm->_disk->setLanguage(_language); _vm->_disk->loadSlide("restore"); - _vm->_gfx->palUnk0(_palette); + _vm->_gfx->palUnk0(_vm->_gfx->_palette); _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront); _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBit2); @@ -147,7 +147,7 @@ void Menu::newGame() { const char **v14 = introMsg3; _vm->_disk->loadScenery("test", NULL); - _vm->_gfx->palUnk0(_palette); + _vm->_gfx->palUnk0(_vm->_gfx->_palette); _vm->_gfx->swapBuffers(); uint16 _ax = (SCREEN_WIDTH - _vm->_gfx->getStringWidth(v14[0])) / 2; @@ -294,7 +294,7 @@ void Menu::selectCharacter() { _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront); // _vm->_gfx->copyScreen(Gfx::kBitBack, Gfx::kBit2); // - _vm->_gfx->palUnk0(_palette); + _vm->_gfx->palUnk0(_vm->_gfx->_palette); while (askPassword == true) { diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index 680f7a83ad..3aecef69ab 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -458,7 +458,7 @@ void Parallaction::runGame() { if ((_engineFlags & kEnginePauseJobs) == 0 || (_engineFlags & kEngineInventory)) { _gfx->swapBuffers(); byte palette[PALETTE_SIZE]; - memcpy(palette, _palette, sizeof(palette)); + memcpy(palette, _vm->_gfx->_palette, sizeof(palette)); _gfx->animatePalette(palette); _gfx->setPalette(palette); } |