[Scummvm-git-logs] scummvm master -> 1079fac665e7d2e7b2eff51d624edf8d836b6d93
fracturehill
76959842+fracturehill at users.noreply.github.com
Mon May 17 21:46:01 UTC 2021
This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
515000eb5e NANCY: Silence uninitialized variable warning
0bab0e8160 NANCY: Clean up sound code
a0600328c1 NANCY: Fix some sounds not playing when changing scene
a82210b2db NANCY: Correctly load first scene in The Vampire Diaries
4d07619a3a NANCY: Add compressed nancy1 variant and improve detection
8760d9b54c NANCY: Better fix for broken text lines in The Vampire Diaries
a921e495bf NANCY: Make Nancy Drew: Stay Tuned for Danger bootable
1079fac665 NANCY: Correctly read The Message in a Haunted Mansion boot summary
Commit: 515000eb5e5b3b9d7ec5e1a2fb0f7a5b26dcdaa2
https://github.com/scummvm/scummvm/commit/515000eb5e5b3b9d7ec5e1a2fb0f7a5b26dcdaa2
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2021-05-18T00:44:17+03:00
Commit Message:
NANCY: Silence uninitialized variable warning
Changed paths:
engines/nancy/nancy.cpp
diff --git a/engines/nancy/nancy.cpp b/engines/nancy/nancy.cpp
index fc1563c8ae..ddc906f775 100644
--- a/engines/nancy/nancy.cpp
+++ b/engines/nancy/nancy.cpp
@@ -431,7 +431,7 @@ void NancyEngine::preloadCals(const IFF &boot) {
}
void NancyEngine::readChunkList(const IFF &boot, Common::Serializer &ser, const Common::String &prefix) {
- byte numChunks;
+ byte numChunks = 0;
ser.syncAsByte(numChunks);
for (byte i = 0; i < numChunks; ++ i) {
Common::String name = Common::String::format("%s%d", prefix.c_str(), i);
Commit: 0bab0e816081ad89c5c3eb073846cb013d34126b
https://github.com/scummvm/scummvm/commit/0bab0e816081ad89c5c3eb073846cb013d34126b
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2021-05-18T00:44:18+03:00
Commit Message:
NANCY: Clean up sound code
Changed paths:
engines/nancy/sound.cpp
diff --git a/engines/nancy/sound.cpp b/engines/nancy/sound.cpp
index 1dfaa9981c..02c91c3ac5 100644
--- a/engines/nancy/sound.cpp
+++ b/engines/nancy/sound.cpp
@@ -313,16 +313,17 @@ void SoundManager::loadSound(const SoundDescription &description, bool panning)
}
void SoundManager::playSound(uint16 channelID) {
- if (channelID > 31 || _channels[channelID].stream == 0)
+ if (channelID > 31 || _channels[channelID].stream == nullptr)
return;
- _channels[channelID].stream->seek(0);
+ Channel &chan = _channels[channelID];
+ chan.stream->seek(0);
- _mixer->playStream( _channels[channelID].type,
- &_channels[channelID].handle,
- Audio::makeLoopingAudioStream(_channels[channelID].stream, _channels[channelID].numLoops),
+ _mixer->playStream( chan.type,
+ &chan.handle,
+ Audio::makeLoopingAudioStream(chan.stream, chan.numLoops),
channelID,
- _channels[channelID].volume * 255 / 100,
+ chan.volume * 255 / 100,
0, DisposeAfterUse::NO);
}
@@ -384,12 +385,14 @@ void SoundManager::stopSound(uint16 channelID) {
if (channelID > 31)
return;
+ Channel &chan = _channels[channelID];
+
if (isSoundPlaying(channelID)) {
- _mixer->stopHandle(_channels[channelID].handle);
+ _mixer->stopHandle(chan.handle);
}
- _channels[channelID].name = Common::String();
- delete _channels[channelID].stream;
- _channels[channelID].stream = nullptr;
+ chan.name = Common::String();
+ delete chan.stream;
+ chan.stream = nullptr;
}
void SoundManager::stopSound(const SoundDescription &description) {
Commit: a0600328c1f0d46d2cd3eeecf0c591f595464e29
https://github.com/scummvm/scummvm/commit/a0600328c1f0d46d2cd3eeecf0c591f595464e29
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2021-05-18T00:44:18+03:00
Commit Message:
NANCY: Fix some sounds not playing when changing scene
Fixed an issue where some sounds would play and immediately get
stopped when changing the scene.
Changed paths:
engines/nancy/state/scene.cpp
diff --git a/engines/nancy/state/scene.cpp b/engines/nancy/state/scene.cpp
index 9e22276132..f8229dc63e 100644
--- a/engines/nancy/state/scene.cpp
+++ b/engines/nancy/state/scene.cpp
@@ -123,7 +123,6 @@ void Scene::process() {
// fall through
case kLoad:
load();
- run(); // Extra run() call to fix the single frame with a wrong palette in TVD
// fall through
case kStartSound:
_state = kRun;
@@ -132,6 +131,7 @@ void Scene::process() {
g_nancy->_sound->loadSound(_sceneState.summary.sound);
g_nancy->_sound->playSound(_sceneState.summary.sound);
}
+ run(); // Extra run() call to fix the single frame with a wrong palette in TVD
// fall through
case kRun:
run();
Commit: a82210b2db4bd793d6f3ac1037158ca23b879039
https://github.com/scummvm/scummvm/commit/a82210b2db4bd793d6f3ac1037158ca23b879039
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2021-05-18T00:44:18+03:00
Commit Message:
NANCY: Correctly load first scene in The Vampire Diaries
readBootSummary() now correctly extracts the first scene data and
the beginning player time from TVD's BSUM chunk.
Changed paths:
engines/nancy/nancy.cpp
engines/nancy/nancy.h
engines/nancy/state/scene.cpp
diff --git a/engines/nancy/nancy.cpp b/engines/nancy/nancy.cpp
index ddc906f775..a6b99674d7 100644
--- a/engines/nancy/nancy.cpp
+++ b/engines/nancy/nancy.cpp
@@ -68,7 +68,6 @@ NancyEngine::NancyEngine(OSystem *syst, const NancyGameDescription *gd) : Engine
_cursorManager = new CursorManager();
_resource = nullptr;
- _firstSceneID = 0;
_startTimeHours = 0;
_overrideMovementTimeDeltas = false;
_cheatTypeIsEventFlag = false;
@@ -449,13 +448,15 @@ void NancyEngine::readBootSummary(const IFF &boot) {
ser.skip(0x71, kGameTypeVampire, kGameTypeVampire);
ser.skip(0xA3, kGameTypeNancy1, kGameTypeNancy2);
- ser.syncAsUint16LE(_firstSceneID);
- ser.skip(4, kGameTypeNancy1, kGameTypeNancy2);
- ser.syncAsUint16LE(_startTimeHours, kGameTypeNancy1, kGameTypeNancy2);
-
- ser.skip(0xB8, kGameTypeVampire, kGameTypeVampire);
- ser.skip(0xA6, kGameTypeNancy1, kGameTypeNancy1);
- ser.skip(0xA0, kGameTypeNancy2, kGameTypeNancy2);
+ ser.syncAsUint16LE(_firstScene.sceneID);
+ ser.skip(12, kGameTypeVampire, kGameTypeVampire); // Palette
+ ser.syncAsUint16LE(_firstScene.frameID);
+ ser.syncAsUint16LE(_firstScene.verticalOffset);
+ ser.syncAsUint16LE(_startTimeHours, kGameTypeVampire, kGameTypeNancy2);
+ ser.syncAsUint16LE(_startTimeMinutes, kGameTypeVampire, kGameTypeNancy2);
+
+ ser.skip(0xA4, kGameTypeVampire, kGameTypeNancy1);
+ ser.skip(0x9E, kGameTypeNancy2, kGameTypeNancy2);
// nancy3 has not been looked into, skip straight to images
ser.skip(0xA7, kGameTypeNancy3, kGameTypeNancy3);
diff --git a/engines/nancy/nancy.h b/engines/nancy/nancy.h
index 5b6ec38eca..3949f8fc09 100644
--- a/engines/nancy/nancy.h
+++ b/engines/nancy/nancy.h
@@ -123,8 +123,10 @@ public:
Common::RandomSource *_randomSource;
// BSUM data
- uint16 _firstSceneID;
+ SceneChangeDescription _firstScene;
+
uint16 _startTimeHours;
+ uint16 _startTimeMinutes;
bool _overrideMovementTimeDeltas;
Time _slowMovementTimeDelta;
diff --git a/engines/nancy/state/scene.cpp b/engines/nancy/state/scene.cpp
index f8229dc63e..e415bb1dde 100644
--- a/engines/nancy/state/scene.cpp
+++ b/engines/nancy/state/scene.cpp
@@ -412,7 +412,7 @@ void Scene::init() {
_timers.pushedPlayTime = 0;
_timers.timeOfDay = Timers::kDay;
- _sceneState.nextScene.sceneID = g_nancy->_firstSceneID;
+ changeScene(g_nancy->_firstScene);
Common::SeekableReadStream *chunk = g_nancy->getBootChunkStream("HINT");
Commit: 4d07619a3ae95fe7b7a9c1fedb0662751fbc9e7f
https://github.com/scummvm/scummvm/commit/4d07619a3ae95fe7b7a9c1fedb0662751fbc9e7f
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2021-05-18T00:44:19+03:00
Commit Message:
NANCY: Add compressed nancy1 variant and improve detection
Added a compressed variant of the Russian translation of Nancy Drew:
Secrets Can Kill. Added a flag to mark compressed game variants and
only load archives when playing one. Removed the 8-bit colors flag.
Changed paths:
engines/nancy/cursor.cpp
engines/nancy/detection.cpp
engines/nancy/detection.h
engines/nancy/graphics.cpp
engines/nancy/nancy.cpp
engines/nancy/nancy.h
engines/nancy/ui/inventorybox.cpp
diff --git a/engines/nancy/cursor.cpp b/engines/nancy/cursor.cpp
index fdd4988bff..4718924b10 100644
--- a/engines/nancy/cursor.cpp
+++ b/engines/nancy/cursor.cpp
@@ -124,7 +124,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
// Convert the trans color from the original format to the screen format
uint transColor;
- if (g_nancy->getGameFlags() & NGF_8BITCOLOR) {
+ if (g_nancy->getGameType() == kGameTypeVampire) {
uint8 r, g, b;
uint32 input = surf->getPalette()[1];
r = input & 0xFF;
diff --git a/engines/nancy/detection.cpp b/engines/nancy/detection.cpp
index 14e8c111ff..e8b4ee5250 100644
--- a/engines/nancy/detection.cpp
+++ b/engines/nancy/detection.cpp
@@ -52,7 +52,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
AD_ENTRY1s("boot.iff", "66d3b6fe9a90d35de7a28950870719ec", 20340),
Common::EN_ANY,
Common::kPlatformWindows,
- Nancy::NGF_8BITCOLOR,
+ ADGF_NO_FLAGS,
GUIO0()
},
Nancy::kGameTypeVampire
@@ -79,6 +79,22 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
},
Nancy::kGameTypeNancy1
},
+ { // MD5 by fracturehill
+ {
+ "nancy1", 0,
+ {
+ {"data1.hdr", 0, "39b33ad649d3e7261508d3c6907f237f", 139814},
+ {"data1.cab", 0, "f900861c47b0cb88191f5c6189db6cb1", 1916153},
+ {"data2.cab", 0, "9c652edb9846a721839cb7e1dcc94a3e", 462008320},
+ AD_LISTEND
+ },
+ Common::RU_RUS,
+ Common::kPlatformWindows,
+ Nancy::GF_COMPRESSED,
+ GUIO0()
+ },
+ Nancy::kGameTypeNancy1
+ },
{ // MD5 by waltervn
{
"nancy2", 0,
@@ -112,7 +128,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformWindows,
- ADGF_NO_FLAGS,
+ Nancy::GF_COMPRESSED,
GUIO0()
},
Nancy::kGameTypeNancy3
@@ -139,7 +155,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformWindows,
- ADGF_NO_FLAGS,
+ Nancy::GF_COMPRESSED,
GUIO0()
},
Nancy::kGameTypeNancy3
@@ -166,7 +182,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformWindows,
- ADGF_NO_FLAGS,
+ Nancy::GF_COMPRESSED,
GUIO0()
},
Nancy::kGameTypeNancy3
@@ -182,7 +198,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
},
Common::EN_ANY,
Common::kPlatformWindows,
- ADGF_NO_FLAGS,
+ Nancy::GF_COMPRESSED,
GUIO0()
},
Nancy::kGameTypeNancy3
diff --git a/engines/nancy/detection.h b/engines/nancy/detection.h
index 65624cee55..b216c38e81 100644
--- a/engines/nancy/detection.h
+++ b/engines/nancy/detection.h
@@ -36,7 +36,7 @@ enum GameType {
};
enum NancyGameFlags {
- NGF_8BITCOLOR = 1 << 0 // Used in The Vampire Diaries
+ GF_COMPRESSED = 1 << 0
};
struct NancyGameDescription {
diff --git a/engines/nancy/graphics.cpp b/engines/nancy/graphics.cpp
index a893bef928..19ab9b3648 100644
--- a/engines/nancy/graphics.cpp
+++ b/engines/nancy/graphics.cpp
@@ -146,7 +146,7 @@ void GraphicsManager::copyToManaged(const Graphics::Surface &src, Graphics::Mana
bool hasTransColor = dst.hasTransparentColor();
dst.create(doubleSize ? src.w * 2 : src.w, doubleSize ? src.h * 2 : src.h, src.format);
- if (palette && g_nancy->getGameFlags() & NGF_8BITCOLOR) {
+ if (palette && g_nancy->getGameType() == kGameTypeVampire) {
// free() clears the _hasPalette flag but doesn't clear the palette itself, so
// we just set it to itself; hopefully this doesn't cause any issues
dst.setPalette(palette, 0, 256);
@@ -234,7 +234,7 @@ void GraphicsManager::debugDrawToScreen(const Graphics::Surface &surf) {
}
const Graphics::PixelFormat &GraphicsManager::getInputPixelFormat() {
- if (g_nancy->getGameFlags() & NGF_8BITCOLOR) {
+ if (g_nancy->getGameType() == kGameTypeVampire) {
return _clut8Format;
} else {
return _inputPixelFormat;
@@ -246,7 +246,7 @@ const Graphics::PixelFormat &GraphicsManager::getScreenPixelFormat() {
}
uint GraphicsManager::getTransColor() {
- if (g_nancy->getGameFlags() & NGF_8BITCOLOR) {
+ if (g_nancy->getGameType() == kGameTypeVampire) {
return 1; // If this isn't correct, try picking the pixel at [0, 0] inside the palette bitmap
} else {
return _inputPixelFormat.ARGBToColor(0, 0, 255, 0);
diff --git a/engines/nancy/nancy.cpp b/engines/nancy/nancy.cpp
index a6b99674d7..518491f41f 100644
--- a/engines/nancy/nancy.cpp
+++ b/engines/nancy/nancy.cpp
@@ -313,10 +313,12 @@ void NancyEngine::bootGameEngine() {
ConfMan.registerDefault("original_menus", false);
ConfMan.registerDefault("second_chance", false);
- // Load archive
- Common::Archive *cabinet = Common::makeInstallShieldArchive("data");
- if (cabinet) {
- SearchMan.add("data1.cab", cabinet);
+ // Load archive if running a compressed variant
+ if (isCompressed()) {
+ Common::Archive *cabinet = Common::makeInstallShieldArchive("data");
+ if (cabinet) {
+ SearchMan.add("data1.cab", cabinet);
+ }
}
_resource = new ResourceManager();
@@ -508,4 +510,8 @@ Common::Error NancyEngine::synchronize(Common::Serializer &ser) {
return Common::kNoError;
}
+bool NancyEngine::isCompressed() {
+ return getGameFlags() & GF_COMPRESSED;
+}
+
} // End of namespace Nancy
diff --git a/engines/nancy/nancy.h b/engines/nancy/nancy.h
index 3949f8fc09..e7c9da002b 100644
--- a/engines/nancy/nancy.h
+++ b/engines/nancy/nancy.h
@@ -160,6 +160,8 @@ private:
Common::Error synchronize(Common::Serializer &serializer);
+ bool isCompressed();
+
bool _cheatTypeIsEventFlag;
GameFlow _gameFlow;
diff --git a/engines/nancy/ui/inventorybox.cpp b/engines/nancy/ui/inventorybox.cpp
index 7ad045da7a..e4c7d4b418 100644
--- a/engines/nancy/ui/inventorybox.cpp
+++ b/engines/nancy/ui/inventorybox.cpp
@@ -232,7 +232,7 @@ void InventoryBox::Curtains::init() {
Common::Rect bounds = _parent->getBounds();
_drawSurface.create(bounds.width(), bounds.height(), g_nancy->_graphicsManager->getInputPixelFormat());
- if (g_nancy->getGameFlags() & NGF_8BITCOLOR) {
+ if (g_nancy->getGameType() == kGameTypeVampire) {
_drawSurface.setPalette(g_nancy->_graphicsManager->_object0.getPalette(), 0, 256);
}
Commit: 8760d9b54c92f6ee27c25cc517d016477a0e48db
https://github.com/scummvm/scummvm/commit/8760d9b54c92f6ee27c25cc517d016477a0e48db
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2021-05-18T00:44:19+03:00
Commit Message:
NANCY: Better fix for broken text lines in The Vampire Diaries
The check for broken text lines has been improved and now fixes at least one more bad string in The Vampire Diaries.
Changed paths:
engines/nancy/ui/textbox.cpp
diff --git a/engines/nancy/ui/textbox.cpp b/engines/nancy/ui/textbox.cpp
index ce668ba299..7223e1aef5 100644
--- a/engines/nancy/ui/textbox.cpp
+++ b/engines/nancy/ui/textbox.cpp
@@ -290,9 +290,10 @@ void Textbox::assembleTextLine(char *rawCaption, Common::String &output, uint si
// Fix spaces at the end of the string in nancy1
output.trim();
- // Fix at least one broken string in TVD
- if (output.hasSuffix(">>")) {
- output.deleteLastChar();
+ // Scan the text line for doubly-closed tokens; happens in some strings in The Vampire Diaries
+ uint pos = Common::String::npos;
+ while (pos = output.find(">>"), pos != Common::String::npos) {
+ output.replace(pos, 2, ">");
}
}
Commit: a921e495bfa6ae39f3381baef17d02ea6b9d2eb4
https://github.com/scummvm/scummvm/commit/a921e495bfa6ae39f3381baef17d02ea6b9d2eb4
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2021-05-18T00:44:20+03:00
Commit Message:
NANCY: Make Nancy Drew: Stay Tuned for Danger bootable
Nancy2's BSUM chunk is now read correctly and the game boots
without crashing.
Changed paths:
engines/nancy/nancy.cpp
diff --git a/engines/nancy/nancy.cpp b/engines/nancy/nancy.cpp
index 518491f41f..0b4b4598d8 100644
--- a/engines/nancy/nancy.cpp
+++ b/engines/nancy/nancy.cpp
@@ -449,7 +449,8 @@ void NancyEngine::readBootSummary(const IFF &boot) {
ser.setVersion(_gameDescription->gameType);
ser.skip(0x71, kGameTypeVampire, kGameTypeVampire);
- ser.skip(0xA3, kGameTypeNancy1, kGameTypeNancy2);
+ ser.skip(0xA3, kGameTypeNancy1, kGameTypeNancy1);
+ ser.skip(0x9D, kGameTypeNancy2, kGameTypeNancy2);
ser.syncAsUint16LE(_firstScene.sceneID);
ser.skip(12, kGameTypeVampire, kGameTypeVampire); // Palette
ser.syncAsUint16LE(_firstScene.frameID);
@@ -457,8 +458,7 @@ void NancyEngine::readBootSummary(const IFF &boot) {
ser.syncAsUint16LE(_startTimeHours, kGameTypeVampire, kGameTypeNancy2);
ser.syncAsUint16LE(_startTimeMinutes, kGameTypeVampire, kGameTypeNancy2);
- ser.skip(0xA4, kGameTypeVampire, kGameTypeNancy1);
- ser.skip(0x9E, kGameTypeNancy2, kGameTypeNancy2);
+ ser.skip(0xA4, kGameTypeVampire, kGameTypeNancy2);
// nancy3 has not been looked into, skip straight to images
ser.skip(0xA7, kGameTypeNancy3, kGameTypeNancy3);
@@ -472,23 +472,25 @@ void NancyEngine::readBootSummary(const IFF &boot) {
ser.skip(0x28, kGameTypeVampire, kGameTypeVampire);
ser.skip(0x10, kGameTypeNancy1, kGameTypeNancy1);
+ ser.skip(0x20, kGameTypeNancy2, kGameTypeNancy2);
readRect(*bsum, _textboxScreenPosition);
ser.skip(0x5E, kGameTypeVampire, kGameTypeVampire);
ser.skip(0x59, kGameTypeNancy1, kGameTypeNancy1);
- ser.syncAsUint16LE(_horizontalEdgesSize, kGameTypeVampire, kGameTypeNancy1);
- ser.syncAsUint16LE(_verticalEdgesSize, kGameTypeVampire, kGameTypeNancy1);
- ser.skip(0x1C, kGameTypeVampire, kGameTypeNancy1);
+ ser.skip(0x89, kGameTypeNancy2, kGameTypeNancy2);
+ ser.syncAsUint16LE(_horizontalEdgesSize, kGameTypeVampire, kGameTypeNancy2);
+ ser.syncAsUint16LE(_verticalEdgesSize, kGameTypeVampire, kGameTypeNancy2);
+ ser.skip(0x1C, kGameTypeVampire, kGameTypeNancy2);
int16 time = 0;
- ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy1);
+ ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy2);
_playerTimeMinuteLength = time;
- ser.skip(2, kGameTypeNancy1, kGameTypeNancy1);
- ser.syncAsByte(_overrideMovementTimeDeltas, kGameTypeVampire, kGameTypeNancy1);
+ ser.skip(2, kGameTypeNancy1, kGameTypeNancy2);
+ ser.syncAsByte(_overrideMovementTimeDeltas, kGameTypeVampire, kGameTypeNancy2);
if (_overrideMovementTimeDeltas) {
- ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy1);
+ ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy2);
_slowMovementTimeDelta = time;
- ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy1);
+ ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy2);
_fastMovementTimeDelta = time;
}
}
Commit: 1079fac665e7d2e7b2eff51d624edf8d836b6d93
https://github.com/scummvm/scummvm/commit/1079fac665e7d2e7b2eff51d624edf8d836b6d93
Author: Kaloyan Chehlarski (strahy at outlook.com)
Date: 2021-05-18T00:44:20+03:00
Commit Message:
NANCY: Correctly read The Message in a Haunted Mansion boot summary
Nancy 3's BSUM chunk is now read correctly, although the game still
crashes at launch due to other issues.
Changed paths:
engines/nancy/nancy.cpp
diff --git a/engines/nancy/nancy.cpp b/engines/nancy/nancy.cpp
index 0b4b4598d8..002424d5f7 100644
--- a/engines/nancy/nancy.cpp
+++ b/engines/nancy/nancy.cpp
@@ -450,47 +450,46 @@ void NancyEngine::readBootSummary(const IFF &boot) {
ser.skip(0x71, kGameTypeVampire, kGameTypeVampire);
ser.skip(0xA3, kGameTypeNancy1, kGameTypeNancy1);
- ser.skip(0x9D, kGameTypeNancy2, kGameTypeNancy2);
+ ser.skip(0x9D, kGameTypeNancy2, kGameTypeNancy3);
ser.syncAsUint16LE(_firstScene.sceneID);
ser.skip(12, kGameTypeVampire, kGameTypeVampire); // Palette
ser.syncAsUint16LE(_firstScene.frameID);
ser.syncAsUint16LE(_firstScene.verticalOffset);
- ser.syncAsUint16LE(_startTimeHours, kGameTypeVampire, kGameTypeNancy2);
- ser.syncAsUint16LE(_startTimeMinutes, kGameTypeVampire, kGameTypeNancy2);
+ ser.syncAsUint16LE(_startTimeHours);
+ ser.syncAsUint16LE(_startTimeMinutes);
ser.skip(0xA4, kGameTypeVampire, kGameTypeNancy2);
- // nancy3 has not been looked into, skip straight to images
- ser.skip(0xA7, kGameTypeNancy3, kGameTypeNancy3);
+ readChunkList(boot, ser, "FR"); // frames
+ readChunkList(boot, ser, "LG"); // logos
- readChunkList(boot, ser, "FR");
- readChunkList(boot, ser, "LG");
-
- if (ser.getVersion() < kGameTypeNancy3) {
- readChunkList(boot, ser, "OB");
+ if (ser.getVersion() == kGameTypeNancy3) {
+ readChunkList(boot, ser, "PLG"); // partner logos
}
+
+ readChunkList(boot, ser, "OB"); // objects
ser.skip(0x28, kGameTypeVampire, kGameTypeVampire);
ser.skip(0x10, kGameTypeNancy1, kGameTypeNancy1);
- ser.skip(0x20, kGameTypeNancy2, kGameTypeNancy2);
+ ser.skip(0x20, kGameTypeNancy2, kGameTypeNancy3);
readRect(*bsum, _textboxScreenPosition);
ser.skip(0x5E, kGameTypeVampire, kGameTypeVampire);
ser.skip(0x59, kGameTypeNancy1, kGameTypeNancy1);
- ser.skip(0x89, kGameTypeNancy2, kGameTypeNancy2);
- ser.syncAsUint16LE(_horizontalEdgesSize, kGameTypeVampire, kGameTypeNancy2);
- ser.syncAsUint16LE(_verticalEdgesSize, kGameTypeVampire, kGameTypeNancy2);
- ser.skip(0x1C, kGameTypeVampire, kGameTypeNancy2);
+ ser.skip(0x89, kGameTypeNancy2, kGameTypeNancy3);
+ ser.syncAsUint16LE(_horizontalEdgesSize);
+ ser.syncAsUint16LE(_verticalEdgesSize);
+ ser.skip(0x1C);
int16 time = 0;
- ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy2);
+ ser.syncAsSint16LE(time);
_playerTimeMinuteLength = time;
- ser.skip(2, kGameTypeNancy1, kGameTypeNancy2);
- ser.syncAsByte(_overrideMovementTimeDeltas, kGameTypeVampire, kGameTypeNancy2);
+ ser.skip(2, kGameTypeNancy1, kGameTypeNancy3);
+ ser.syncAsByte(_overrideMovementTimeDeltas);
if (_overrideMovementTimeDeltas) {
- ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy2);
+ ser.syncAsSint16LE(time);
_slowMovementTimeDelta = time;
- ser.syncAsSint16LE(time, kGameTypeVampire, kGameTypeNancy2);
+ ser.syncAsSint16LE(time);
_fastMovementTimeDelta = time;
}
}
More information about the Scummvm-git-logs
mailing list