diff options
author | Max Horn | 2010-11-19 17:03:07 +0000 |
---|---|---|
committer | Max Horn | 2010-11-19 17:03:07 +0000 |
commit | 2180b2d6b534d3786f89d02fe508c60c68b7ff89 (patch) | |
tree | ac7af0e5f5049537f4c81c401d5685bebbb47068 /engines/sword2 | |
parent | 111384473bb65741f7f2b945e1c00e6aeccc805c (diff) | |
download | scummvm-rg350-2180b2d6b534d3786f89d02fe508c60c68b7ff89.tar.gz scummvm-rg350-2180b2d6b534d3786f89d02fe508c60c68b7ff89.tar.bz2 scummvm-rg350-2180b2d6b534d3786f89d02fe508c60c68b7ff89.zip |
COMMON: Split common/stream.h into several headers
svn-id: r54385
Diffstat (limited to 'engines/sword2')
-rw-r--r-- | engines/sword2/console.cpp | 1 | ||||
-rw-r--r-- | engines/sword2/header.cpp | 293 | ||||
-rw-r--r-- | engines/sword2/header.h | 255 | ||||
-rw-r--r-- | engines/sword2/icons.cpp | 2 | ||||
-rw-r--r-- | engines/sword2/module.mk | 1 | ||||
-rw-r--r-- | engines/sword2/music.cpp | 2 | ||||
-rw-r--r-- | engines/sword2/object.h | 2 | ||||
-rw-r--r-- | engines/sword2/screen.h | 15 | ||||
-rw-r--r-- | engines/sword2/sound.cpp | 1 |
9 files changed, 323 insertions, 249 deletions
diff --git a/engines/sword2/console.cpp b/engines/sword2/console.cpp index 20fd79bc38..6f4665a34c 100644 --- a/engines/sword2/console.cpp +++ b/engines/sword2/console.cpp @@ -26,6 +26,7 @@ */ +#include "common/memstream.h" #include "common/rect.h" #include "common/system.h" diff --git a/engines/sword2/header.cpp b/engines/sword2/header.cpp new file mode 100644 index 0000000000..c930b0c8e7 --- /dev/null +++ b/engines/sword2/header.cpp @@ -0,0 +1,293 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + * + */ + +#include "sword2/header.h" +#include "sword2/screen.h" +#include "sword2/sword2.h" + +#include "common/memstream.h" +#include "common/endian.h" + +namespace Sword2 { + +void ResHeader::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + fileType = readS.readByte(); + compType = readS.readByte(); + compSize = readS.readUint32LE(); + decompSize = readS.readUint32LE(); + readS.read(name, NAME_LEN); +} + +void ResHeader::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeByte(fileType); + writeS.writeByte(compType); + writeS.writeUint32LE(compSize); + writeS.writeUint32LE(decompSize); + writeS.write(name, NAME_LEN); +} + +void AnimHeader::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + if (Sword2Engine::isPsx()) { + noAnimFrames = readS.readUint16LE(); + feetStartX = readS.readUint16LE(); + feetStartY = readS.readUint16LE(); + feetEndX = readS.readUint16LE(); + feetEndY = readS.readUint16LE(); + blend = readS.readUint16LE(); + runTimeComp = readS.readByte(); + feetStartDir = readS.readByte(); + feetEndDir = readS.readByte(); + } else { + runTimeComp = readS.readByte(); + noAnimFrames = readS.readUint16LE(); + feetStartX = readS.readUint16LE(); + feetStartY = readS.readUint16LE(); + feetStartDir = readS.readByte(); + feetEndX = readS.readUint16LE(); + feetEndY = readS.readUint16LE(); + feetEndDir = readS.readByte(); + blend = readS.readUint16LE(); + } +} + +void AnimHeader::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeByte(runTimeComp); + writeS.writeUint16LE(noAnimFrames); + writeS.writeUint16LE(feetStartX); + writeS.writeUint16LE(feetStartY); + writeS.writeByte(feetStartDir); + writeS.writeUint16LE(feetEndX); + writeS.writeUint16LE(feetEndY); + writeS.writeByte(feetEndDir); + writeS.writeUint16LE(blend); +} + +int CdtEntry::size() { + if (Sword2Engine::isPsx()) + return 12; + else + return 9; +} + +void CdtEntry::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + if (Sword2Engine::isPsx()) { + readS.readByte(); // Skip a byte in psx version + x = readS.readUint16LE(); + y = readS.readUint16LE(); + frameOffset = readS.readUint32LE(); + frameType = readS.readByte(); + } else { + x = readS.readUint16LE(); + y = readS.readUint16LE(); + frameOffset = readS.readUint32LE(); + frameType = readS.readByte(); + } +} + +void CdtEntry::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint16LE(x); + writeS.writeUint16LE(y); + writeS.writeUint32LE(frameOffset); + writeS.writeByte(frameType); +} + +void FrameHeader::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + compSize = readS.readUint32LE(); + width = readS.readUint16LE(); + height = readS.readUint16LE(); + + if (Sword2Engine::isPsx()) { // In PSX version, frames are half height + height *= 2; + width = (width % 2) ? width + 1 : width; + } +} + +void FrameHeader::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint32LE(compSize); + writeS.writeUint16LE(width); + writeS.writeUint16LE(height); +} + +void MultiScreenHeader::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + palette = readS.readUint32LE(); + bg_parallax[0] = readS.readUint32LE(); + bg_parallax[1] = readS.readUint32LE(); + screen = readS.readUint32LE(); + fg_parallax[0] = readS.readUint32LE(); + fg_parallax[1] = readS.readUint32LE(); + layers = readS.readUint32LE(); + paletteTable = readS.readUint32LE(); + maskOffset = readS.readUint32LE(); +} + +void MultiScreenHeader::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint32LE(palette); + writeS.writeUint32LE(bg_parallax[0]); + writeS.writeUint32LE(bg_parallax[1]); + writeS.writeUint32LE(screen); + writeS.writeUint32LE(fg_parallax[0]); + writeS.writeUint32LE(fg_parallax[1]); + writeS.writeUint32LE(layers); + writeS.writeUint32LE(paletteTable); + writeS.writeUint32LE(maskOffset); +} + +void ScreenHeader::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + width = readS.readUint16LE(); + height = readS.readUint16LE(); + noLayers = readS.readUint16LE(); +} + +void ScreenHeader::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint16LE(width); + writeS.writeUint16LE(height); + writeS.writeUint16LE(noLayers); +} + +void LayerHeader::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + x = readS.readUint16LE(); + y = readS.readUint16LE(); + width = readS.readUint16LE(); + height = readS.readUint16LE(); + maskSize = readS.readUint32LE(); + offset = readS.readUint32LE(); +} + +void LayerHeader::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint16LE(x); + writeS.writeUint16LE(y); + writeS.writeUint16LE(width); + writeS.writeUint16LE(height); + writeS.writeUint32LE(maskSize); + writeS.writeUint32LE(offset); +} + +void TextHeader::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + noOfLines = readS.readUint32LE(); +} + +void TextHeader::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint32LE(noOfLines); +} + +void PSXScreensEntry::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + bgPlxXres = readS.readUint16LE(); + bgPlxYres = readS.readUint16LE(); + bgPlxOffset = readS.readUint32LE(); + bgPlxSize = readS.readUint32LE(); + bgXres = readS.readUint16LE(); + bgYres = readS.readUint16LE(); + bgOffset = readS.readUint32LE(); + bgSize = readS.readUint32LE(); + fgPlxXres = readS.readUint16LE(); + fgPlxYres = readS.readUint16LE(); + fgPlxOffset = readS.readUint32LE(); + fgPlxSize = readS.readUint32LE(); +} + +void PSXScreensEntry::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint16LE(bgPlxXres); + writeS.writeUint16LE(bgPlxYres); + writeS.writeUint32LE(bgPlxOffset); + writeS.writeUint32LE(bgPlxSize); + writeS.writeUint16LE(bgXres); + writeS.writeUint16LE(bgYres); + writeS.writeUint32LE(bgOffset); + writeS.writeUint32LE(bgSize); + writeS.writeUint16LE(fgPlxXres); + writeS.writeUint16LE(fgPlxYres); + writeS.writeUint32LE(fgPlxOffset); + writeS.writeUint32LE(fgPlxSize); +} + +void PSXFontEntry::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + offset = readS.readUint16LE() / 2; + skipLines = readS.readUint16LE(); + charWidth = readS.readUint16LE() / 2; + charHeight = readS.readUint16LE(); +} + +void PSXFontEntry::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint16LE(offset); + writeS.writeUint16LE(skipLines); + writeS.writeUint16LE(charWidth); + writeS.writeUint16LE(charHeight); +} + +void Parallax::read(byte *addr) { + Common::MemoryReadStream readS(addr, size()); + + w = readS.readUint16LE(); + h = readS.readUint16LE(); +} + +void Parallax::write(byte *addr) { + Common::MemoryWriteStream writeS(addr, size()); + + writeS.writeUint16LE(w); + writeS.writeUint16LE(h); +} + +} // End of namespace Sword2 diff --git a/engines/sword2/header.h b/engines/sword2/header.h index 67cbba35af..3f64152bb9 100644 --- a/engines/sword2/header.h +++ b/engines/sword2/header.h @@ -28,7 +28,6 @@ #ifndef SWORD2_HEADER_H #define SWORD2_HEADER_H -#include "common/stream.h" #include "common/endian.h" namespace Sword2 { @@ -60,25 +59,8 @@ struct ResHeader { return 44; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - fileType = readS.readByte(); - compType = readS.readByte(); - compSize = readS.readUint32LE(); - decompSize = readS.readUint32LE(); - readS.read(name, NAME_LEN); - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeByte(fileType); - writeS.writeByte(compType); - writeS.writeUint32LE(compSize); - writeS.writeUint32LE(decompSize); - writeS.write(name, NAME_LEN); - } + void read(byte *addr); + void write(byte *addr); }; // fileType @@ -156,45 +138,8 @@ struct AnimHeader { return 15; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - if (Sword2Engine::isPsx()) { - noAnimFrames = readS.readUint16LE(); - feetStartX = readS.readUint16LE(); - feetStartY = readS.readUint16LE(); - feetEndX = readS.readUint16LE(); - feetEndY = readS.readUint16LE(); - blend = readS.readUint16LE(); - runTimeComp = readS.readByte(); - feetStartDir = readS.readByte(); - feetEndDir = readS.readByte(); - } else { - runTimeComp = readS.readByte(); - noAnimFrames = readS.readUint16LE(); - feetStartX = readS.readUint16LE(); - feetStartY = readS.readUint16LE(); - feetStartDir = readS.readByte(); - feetEndX = readS.readUint16LE(); - feetEndY = readS.readUint16LE(); - feetEndDir = readS.readByte(); - blend = readS.readUint16LE(); - } - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeByte(runTimeComp); - writeS.writeUint16LE(noAnimFrames); - writeS.writeUint16LE(feetStartX); - writeS.writeUint16LE(feetStartY); - writeS.writeByte(feetStartDir); - writeS.writeUint16LE(feetEndX); - writeS.writeUint16LE(feetEndY); - writeS.writeByte(feetEndDir); - writeS.writeUint16LE(blend); - } + void read(byte *addr); + void write(byte *addr); }; @@ -221,38 +166,10 @@ struct CdtEntry { uint8 frameType; // 0 = print sprite normally with top-left // corner at (x,y), otherwise see below... - static int size() { - if (Sword2Engine::isPsx()) - return 12; - else - return 9; - } - - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - if (Sword2Engine::isPsx()) { - readS.readByte(); // Skip a byte in psx version - x = readS.readUint16LE(); - y = readS.readUint16LE(); - frameOffset = readS.readUint32LE(); - frameType = readS.readByte(); - } else { - x = readS.readUint16LE(); - y = readS.readUint16LE(); - frameOffset = readS.readUint32LE(); - frameType = readS.readByte(); - } - } + static int size(); - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint16LE(x); - writeS.writeUint16LE(y); - writeS.writeUint32LE(frameOffset); - writeS.writeByte(frameType); - } + void read(byte *addr); + void write(byte *addr); }; // 'frameType' bit values @@ -277,26 +194,8 @@ struct FrameHeader { return 8; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - compSize = readS.readUint32LE(); - width = readS.readUint16LE(); - height = readS.readUint16LE(); - - if (Sword2Engine::isPsx()) { // In PSX version, frames are half height - height *= 2; - width = (width % 2) ? width + 1 : width; - } - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint32LE(compSize); - writeS.writeUint16LE(width); - writeS.writeUint16LE(height); - } + void read(byte *addr); + void write(byte *addr); }; //---------------------------------------------------------- @@ -331,33 +230,8 @@ struct MultiScreenHeader { return 36; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - palette = readS.readUint32LE(); - bg_parallax[0] = readS.readUint32LE(); - bg_parallax[1] = readS.readUint32LE(); - screen = readS.readUint32LE(); - fg_parallax[0] = readS.readUint32LE(); - fg_parallax[1] = readS.readUint32LE(); - layers = readS.readUint32LE(); - paletteTable = readS.readUint32LE(); - maskOffset = readS.readUint32LE(); - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint32LE(palette); - writeS.writeUint32LE(bg_parallax[0]); - writeS.writeUint32LE(bg_parallax[1]); - writeS.writeUint32LE(screen); - writeS.writeUint32LE(fg_parallax[0]); - writeS.writeUint32LE(fg_parallax[1]); - writeS.writeUint32LE(layers); - writeS.writeUint32LE(paletteTable); - writeS.writeUint32LE(maskOffset); - } + void read(byte *addr); + void write(byte *addr); }; // Screen Header @@ -371,21 +245,8 @@ struct ScreenHeader { return 6; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - width = readS.readUint16LE(); - height = readS.readUint16LE(); - noLayers = readS.readUint16LE(); - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint16LE(width); - writeS.writeUint16LE(height); - writeS.writeUint16LE(noLayers); - } + void read(byte *addr); + void write(byte *addr); }; // Layer Header @@ -406,27 +267,8 @@ struct LayerHeader { return 16; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - x = readS.readUint16LE(); - y = readS.readUint16LE(); - width = readS.readUint16LE(); - height = readS.readUint16LE(); - maskSize = readS.readUint32LE(); - offset = readS.readUint32LE(); - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint16LE(x); - writeS.writeUint16LE(y); - writeS.writeUint16LE(width); - writeS.writeUint16LE(height); - writeS.writeUint32LE(maskSize); - writeS.writeUint32LE(offset); - } + void read(byte *addr); + void write(byte *addr); }; //---------------------------------------------------------- @@ -511,17 +353,8 @@ struct TextHeader { return 4; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - noOfLines = readS.readUint32LE(); - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint32LE(noOfLines); - } + void read(byte *addr); + void write(byte *addr); }; // a text file has: @@ -567,39 +400,8 @@ struct PSXScreensEntry { return 36; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - bgPlxXres = readS.readUint16LE(); - bgPlxYres = readS.readUint16LE(); - bgPlxOffset = readS.readUint32LE(); - bgPlxSize = readS.readUint32LE(); - bgXres = readS.readUint16LE(); - bgYres = readS.readUint16LE(); - bgOffset = readS.readUint32LE(); - bgSize = readS.readUint32LE(); - fgPlxXres = readS.readUint16LE(); - fgPlxYres = readS.readUint16LE(); - fgPlxOffset = readS.readUint32LE(); - fgPlxSize = readS.readUint32LE(); - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint16LE(bgPlxXres); - writeS.writeUint16LE(bgPlxYres); - writeS.writeUint32LE(bgPlxOffset); - writeS.writeUint32LE(bgPlxSize); - writeS.writeUint16LE(bgXres); - writeS.writeUint16LE(bgYres); - writeS.writeUint32LE(bgOffset); - writeS.writeUint32LE(bgSize); - writeS.writeUint16LE(fgPlxXres); - writeS.writeUint16LE(fgPlxYres); - writeS.writeUint32LE(fgPlxOffset); - writeS.writeUint32LE(fgPlxSize); - } + void read(byte *addr); + void write(byte *addr); }; // PSXFontEntry is present in font resource file, it is used @@ -615,23 +417,8 @@ struct PSXFontEntry { return 8; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - offset = readS.readUint16LE() / 2; - skipLines = readS.readUint16LE(); - charWidth = readS.readUint16LE() / 2; - charHeight = readS.readUint16LE(); - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint16LE(offset); - writeS.writeUint16LE(skipLines); - writeS.writeUint16LE(charWidth); - writeS.writeUint16LE(charHeight); - } + void read(byte *addr); + void write(byte *addr); }; } // End of namespace Sword2 diff --git a/engines/sword2/icons.cpp b/engines/sword2/icons.cpp index 4652fc0bc1..b115eb373b 100644 --- a/engines/sword2/icons.cpp +++ b/engines/sword2/icons.cpp @@ -26,7 +26,7 @@ */ -#include "common/stream.h" +#include "common/memstream.h" #include "common/rect.h" #include "sword2/sword2.h" diff --git a/engines/sword2/module.mk b/engines/sword2/module.mk index c675b9561e..bf586aefff 100644 --- a/engines/sword2/module.mk +++ b/engines/sword2/module.mk @@ -8,6 +8,7 @@ MODULE_OBJS := \ debug.o \ events.o \ function.o \ + header.o \ icons.o \ interpreter.o \ layers.o \ diff --git a/engines/sword2/music.cpp b/engines/sword2/music.cpp index 89073fef8e..1519c5d73f 100644 --- a/engines/sword2/music.cpp +++ b/engines/sword2/music.cpp @@ -33,6 +33,8 @@ #include "common/file.h" +#include "common/memstream.h" +#include "common/substream.h" #include "common/system.h" #include "sound/decoders/mp3.h" diff --git a/engines/sword2/object.h b/engines/sword2/object.h index b6b6ca5174..98c9f6863b 100644 --- a/engines/sword2/object.h +++ b/engines/sword2/object.h @@ -28,7 +28,7 @@ #ifndef SWORD2_OBJECT_H #define SWORD2_OBJECT_H -#include "common/stream.h" +#include "common/memstream.h" #include "common/endian.h" namespace Sword2 { diff --git a/engines/sword2/screen.h b/engines/sword2/screen.h index afad64011d..0abaebc5af 100644 --- a/engines/sword2/screen.h +++ b/engines/sword2/screen.h @@ -192,19 +192,8 @@ struct Parallax { return 4; } - void read(byte *addr) { - Common::MemoryReadStream readS(addr, size()); - - w = readS.readUint16LE(); - h = readS.readUint16LE(); - } - - void write(byte *addr) { - Common::MemoryWriteStream writeS(addr, size()); - - writeS.writeUint16LE(w); - writeS.writeUint16LE(h); - } + void read(byte *addr); + void write(byte *addr); }; class Screen { diff --git a/engines/sword2/sound.cpp b/engines/sword2/sound.cpp index b1d0dee81b..abacbd16f0 100644 --- a/engines/sword2/sound.cpp +++ b/engines/sword2/sound.cpp @@ -37,6 +37,7 @@ #include "common/file.h" +#include "common/memstream.h" #include "common/system.h" #include "sword2/sword2.h" |