diff options
-rw-r--r-- | engines/parallaction/disk_br.cpp | 44 | ||||
-rw-r--r-- | engines/parallaction/parallaction.h | 2 | ||||
-rw-r--r-- | engines/parallaction/parallaction_br.cpp | 43 |
3 files changed, 46 insertions, 43 deletions
diff --git a/engines/parallaction/disk_br.cpp b/engines/parallaction/disk_br.cpp index dbdd308ad4..3d8ee015d7 100644 --- a/engines/parallaction/disk_br.cpp +++ b/engines/parallaction/disk_br.cpp @@ -98,6 +98,21 @@ void genSlidePath(char *path, const char* name) { Graphics::Surface* DosDisk_br::loadStatic(const char* name) { debugC(5, kDebugDisk, "DosDisk_br::loadStatic"); + return 0; +} + +Cnv* DosDisk_br::loadFrames(const char* name) { + debugC(5, kDebugDisk, "DosDisk_br::loadFrames"); + return 0; +} + +// Slides in Nippon Safes are basically screen-sized pictures with valid +// palette data used for menu and for location switches. Big Red Adventure +// doesn't need slides in that sense, but it still has some special +// graphics resources with palette data, so those will be named slides. +// +BackgroundInfo* DosDisk_br::loadSlide(const char *name) { + debugC(5, kDebugDisk, "DosDisk_br::loadSlide"); char path[PATH_LEN]; genSlidePath(path, name); @@ -106,37 +121,24 @@ Graphics::Surface* DosDisk_br::loadStatic(const char* name) { if (!stream.open(path)) errorFileNotFound(path); + BackgroundInfo* info = new BackgroundInfo; + stream.skip(4); - uint width = stream.readUint32BE(); - uint height = stream.readUint32BE(); + info->width = stream.readUint32BE(); + info->height = stream.readUint32BE(); stream.skip(20); byte rgb[768]; stream.read(rgb, 768); for (uint i = 0; i < 256; i++) { - _vm->_gfx->_palette.setEntry(i, rgb[i] >> 2, rgb[i+256] >> 2, rgb[i+512] >> 2); + info->palette.setEntry(i, rgb[i] >> 2, rgb[i+256] >> 2, rgb[i+512] >> 2); } - Graphics::Surface *surf = new Graphics::Surface; - surf->create(width, height, 1); - stream.read(surf->pixels, width*height); - - return surf; -} - -Cnv* DosDisk_br::loadFrames(const char* name) { - debugC(5, kDebugDisk, "DosDisk_br::loadFrames"); - return 0; -} + info->bg.create(info->width, info->height, 1); + stream.read(info->bg.pixels, info->width * info->height); - - -// there are no Slide resources in Big Red Adventure -BackgroundInfo* DosDisk_br::loadSlide(const char *name) { - debugC(5, kDebugDisk, "DosDisk_br::loadSlide"); - - return 0; + return info; } BackgroundInfo* DosDisk_br::loadScenery(const char *name, const char *mask, const char* path) { diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h index 72c7e8d68b..21cfb3984f 100644 --- a/engines/parallaction/parallaction.h +++ b/engines/parallaction/parallaction.h @@ -569,6 +569,8 @@ private: void initResources(); void initGame(); + void splash(const char *name); + static const Callable _dosCallables[6]; void _c_blufade(void*); diff --git a/engines/parallaction/parallaction_br.cpp b/engines/parallaction/parallaction_br.cpp index fbf424c41e..0455b50381 100644 --- a/engines/parallaction/parallaction_br.cpp +++ b/engines/parallaction/parallaction_br.cpp @@ -72,39 +72,38 @@ int Parallaction_br::go() { return 0; } -void Parallaction_br::initGame() { +void Parallaction_br::splash(const char *name) { + + BackgroundInfo *info; + + _gfx->clearScreen(Gfx::kBitFront); - Graphics::Surface* surf = _disk->loadStatic("dyna"); - _gfx->setPalette(_gfx->_palette); - _gfx->flatBlitCnv(surf, (640 - surf->w) >> 1, (400 - surf->h) >> 1, Gfx::kBitFront); + info = _disk->loadSlide(name); + _gfx->setPalette(info->palette); + _gfx->flatBlitCnv(&info->bg, (640 - info->width) >> 1, (400 - info->height) >> 1, Gfx::kBitFront); _gfx->updateScreen(); _system->delayMillis(600); Palette pal; for (uint i = 0; i < 64; i++) { - _gfx->_palette.fadeTo(pal, 1); - _gfx->setPalette(_gfx->_palette); + info->palette.fadeTo(pal, 1); + _gfx->setPalette(info->palette); _gfx->updateScreen(); - _system->delayMillis(30); + _system->delayMillis(20); } - surf->free(); - _gfx->clearScreen(Gfx::kBitFront); + info->bg.free(); - surf = _disk->loadStatic("core"); - _gfx->setPalette(_gfx->_palette); - _gfx->flatBlitCnv(surf, (640 - surf->w) >> 1, (400 - surf->h) >> 1, Gfx::kBitFront); - _gfx->updateScreen(); - _system->delayMillis(2000); + delete info; - for (uint i = 0; i < 64; i++) { - _gfx->_palette.fadeTo(pal, 1); - _gfx->setPalette(_gfx->_palette); - _gfx->updateScreen(); - _system->delayMillis(30); - } - surf->free(); - _gfx->clearScreen(Gfx::kBitFront); + return; +} + +void Parallaction_br::initGame() { + + splash("dyna"); + splash("core"); + return; } } // namespace Parallaction |