aboutsummaryrefslogtreecommitdiff
path: root/engines/access/room.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2014-08-07 20:31:42 -0400
committerPaul Gilbert2014-08-07 20:31:42 -0400
commit0183007d0b4f3b951ef2c704894655e894ce4a71 (patch)
tree883c94e6fae6888f1205812650a0508e6adc5f68 /engines/access/room.cpp
parent010ba5b1262f58eabd6e8fbca710309cf7e2c003 (diff)
downloadscummvm-rg350-0183007d0b4f3b951ef2c704894655e894ce4a71.tar.gz
scummvm-rg350-0183007d0b4f3b951ef2c704894655e894ce4a71.tar.bz2
scummvm-rg350-0183007d0b4f3b951ef2c704894655e894ce4a71.zip
ACCESS: Fixes for loading room data
Diffstat (limited to 'engines/access/room.cpp')
-rw-r--r--engines/access/room.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/engines/access/room.cpp b/engines/access/room.cpp
index 9ead04b2ac..afa42c82f0 100644
--- a/engines/access/room.cpp
+++ b/engines/access/room.cpp
@@ -186,10 +186,13 @@ void Room::loadRoomData(const byte *roomData) {
_vm->_scaleI = roomInfo._scaleI;
_vm->_screen->_scrollThreshold = roomInfo._scrollThreshold;
- _vm->_screen->_startColor = roomInfo._startColor;
- _vm->_screen->_numColors = roomInfo._numColors;
- _vm->_screen->loadPalette(roomInfo._paletteFile._fileNum,
- roomInfo._paletteFile._subfile);
+ // Handle loading scene palette data
+ if (roomInfo._paletteFile._fileNum != -1) {
+ _vm->_screen->_startColor = roomInfo._startColor;
+ _vm->_screen->_numColors = roomInfo._numColors;
+ _vm->_screen->loadPalette(roomInfo._paletteFile._fileNum,
+ roomInfo._paletteFile._subfile);
+ }
// Load extra cells
_vm->_extraCells.clear();
@@ -270,7 +273,7 @@ void Room::buildScreen() {
RoomInfo::RoomInfo(const byte *data) {
Common::MemoryReadStream stream(data, 999);
- _roomFlag = stream.readByte() != 0;
+ _roomFlag = stream.readByte();
_estIndex = (int16)stream.readUint16LE();
_musicFile._fileNum = (int16)stream.readUint16LE();
_musicFile._subfile = stream.readUint16LE();
@@ -297,8 +300,12 @@ RoomInfo::RoomInfo(const byte *data) {
_scrollThreshold = stream.readByte();
_paletteFile._fileNum = (int16)stream.readUint16LE();
_paletteFile._subfile = stream.readUint16LE();
- _startColor = stream.readUint16LE();
- _numColors = stream.readUint16LE();
+ if (_paletteFile._fileNum == -1) {
+ _startColor = _numColors = 0;
+ } else {
+ _startColor = stream.readUint16LE();
+ _numColors = stream.readUint16LE();
+ }
for (int16 v = (int16)stream.readUint16LE(); v != -1;
v = (int16)stream.readUint16LE()) {
@@ -309,9 +316,10 @@ RoomInfo::RoomInfo(const byte *data) {
for (int16 fileNum = (int16)stream.readUint16LE(); fileNum != -1;
fileNum = (int16)stream.readUint16LE()) {
- FileIdent fi;
+ SoundIdent fi;
fi._fileNum = fileNum;
fi._subfile = stream.readUint16LE();
+ fi._priority = stream.readUint16LE();
_sounds.push_back(fi);
}