diff options
author | Kari Salminen | 2008-07-27 22:50:36 +0000 |
---|---|---|
committer | Kari Salminen | 2008-07-27 22:50:36 +0000 |
commit | 06a45c49c79056ef6ae81cc9f846ebddf07d03bc (patch) | |
tree | af5e649a4aba22acfb2fd5dcbc5bf6ae9a44c748 /engines/cine/gfx.cpp | |
parent | 2f0a40a6971a73737e16ecd46fda3b78c4c7b04e (diff) | |
download | scummvm-rg350-06a45c49c79056ef6ae81cc9f846ebddf07d03bc.tar.gz scummvm-rg350-06a45c49c79056ef6ae81cc9f846ebddf07d03bc.tar.bz2 scummvm-rg350-06a45c49c79056ef6ae81cc9f846ebddf07d03bc.zip |
Added a preliminary saving routine for Operation Stealth (Disabled by default, needs more work still. WIP!).
Added backgrounds' name saving (8 names in Operation Stealth instead of just 1 like in Future Wars).
Added 256 color palette saving and restoring (One of the palettes isn't properly handled yet though).
svn-id: r33349
Diffstat (limited to 'engines/cine/gfx.cpp')
-rw-r--r-- | engines/cine/gfx.cpp | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/engines/cine/gfx.cpp b/engines/cine/gfx.cpp index f95794a409..dfff47e969 100644 --- a/engines/cine/gfx.cpp +++ b/engines/cine/gfx.cpp @@ -607,7 +607,7 @@ void FWRenderer::removeBg(unsigned int idx) { error("Future Wars renderer doesn't support multiple backgrounds"); } -void FWRenderer::saveBg(Common::OutSaveFile &fHandle) { +void FWRenderer::saveBgNames(Common::OutSaveFile &fHandle) { fHandle.write(_bgName, 13); } @@ -655,6 +655,49 @@ void FWRenderer::savePalette(Common::OutSaveFile &fHandle) { } } +/*! \brief Write active and backup palette to save + * \param fHandle Savefile open for writing + */ +void OSRenderer::savePalette(Common::OutSaveFile &fHandle) { + int i; + + assert(_activeHiPal); + + // Write the active 256 color palette. + for (i = 0; i < _hiPalSize; i++) { + fHandle.writeByte(_activeHiPal[i]); + } + + // Write the active 256 color palette a second time. + // FIXME: The backup 256 color palette should be saved here instead of the active one. + for (i = 0; i < _hiPalSize; i++) { + fHandle.writeByte(_activeHiPal[i]); + } +} + +/*! \brief Restore active and backup palette from save + * \param fHandle Savefile open for reading + */ +void OSRenderer::restorePalette(Common::SeekableReadStream &fHandle) { + int i; + + if (!_activeHiPal) { + _activeHiPal = new byte[_hiPalSize]; + } + + assert(_activeHiPal); + + for (i = 0; i < _hiPalSize; i++) { + _activeHiPal[i] = fHandle.readByte(); + } + + // Jump over the backup 256 color palette. + // FIXME: Load the backup 256 color palette and use it properly. + fHandle.seek(_hiPalSize, SEEK_CUR); + + _changePal = 1; +} + /*! \brief Rotate active palette * \param a First color to rotate * \param b Last color to rotate @@ -1270,6 +1313,12 @@ void OSRenderer::removeBg(unsigned int idx) { memset(_bgTable[idx].name, 0, sizeof (_bgTable[idx].name)); } +void OSRenderer::saveBgNames(Common::OutSaveFile &fHandle) { + for (int i = 0; i < 8; i++) { + fHandle.write(_bgTable[i].name, 13); + } +} + /*! \brief Fade to black * \bug Operation Stealth sometimes seems to fade to black using * transformPalette resulting in double fadeout |