Implemented palette animation to Amiga version of Nippon Safes.

svn-id: r26453
This commit is contained in:
Nicola Mettifogo 2007-04-11 20:20:22 +00:00
parent ab85ecdcb7
commit 88b8f94435
2 changed files with 30 additions and 14 deletions

View file

@ -1030,6 +1030,31 @@ void buildMask(byte* buf) {
}
}
class BackgroundDecoder : public Graphics::ILBMDecoder {
PaletteFxRange *_range;
uint32 _i;
protected:
void readCRNG() {
_range[_i]._timer = _chunk.readUint16();
_range[_i]._step = _chunk.readUint16();
_range[_i]._flags = _chunk.readUint16();
_range[_i]._first = _chunk.readByte();
_range[_i]._last = _chunk.readByte();
_i++;
}
public:
BackgroundDecoder(Common::ReadStream &input, PaletteFxRange *range) : ILBMDecoder(input), _range(range), _i(0) {
}
uint32 getNumRanges() {
return _i;
}
};
void AmigaDisk::loadScenery(const char* background, const char* mask) {
debugC(1, kDebugDisk, "AmigaDisk::loadScenery '%s', '%s'", background, mask);
@ -1039,7 +1064,7 @@ void AmigaDisk::loadScenery(const char* background, const char* mask) {
sprintf(path, "%s.bkgnd", background);
Common::SeekableReadStream *s = openArchivedFile(path, true);
Graphics::ILBMDecoder decoder(*s);
BackgroundDecoder decoder(*s, _vm->_gfx->_palettefx);
decoder.decode(surf, pal);
for (uint32 i = 0; i < PALETTE_SIZE; i++)
_vm->_gfx->_palette[i] = pal[i] >> 2;

View file

@ -883,17 +883,6 @@ int16 Gfx::queryMask(int16 v) {
return 3;
}
void Gfx::initBuffers() {
_buffers[kBitFront] = (byte*)malloc(SCREEN_SIZE);
_buffers[kBitBack] = (byte*)malloc(SCREEN_SIZE);
_buffers[kBit2] = (byte*)malloc(SCREEN_SIZE);
_buffers[kMask0] = (byte*)malloc(SCREENMASK_WIDTH * SCREEN_HEIGHT);
return;
}
Gfx::Gfx(Parallaction* vm) :
_vm(vm) {
@ -901,7 +890,10 @@ Gfx::Gfx(Parallaction* vm) :
g_system->initSize(SCREEN_WIDTH, SCREEN_HEIGHT);
g_system->endGFXTransaction();
initBuffers();
_buffers[kBitFront] = (byte*)malloc(SCREEN_SIZE);
_buffers[kBitBack] = (byte*)malloc(SCREEN_SIZE);
_buffers[kBit2] = (byte*)malloc(SCREEN_SIZE);
_buffers[kMask0] = (byte*)malloc(SCREENMASK_WIDTH * SCREEN_HEIGHT);
setBlackPalette();
@ -917,7 +909,6 @@ Gfx::Gfx(Parallaction* vm) :
Gfx::~Gfx() {
free(_buffers[kMask0]);
free(_buffers[kBitFront]);
free(_buffers[kBitBack]);
free(_buffers[kBit2]);