[Scummvm-cvs-logs] scummvm master -> 09cd35b724fa4c7266ba9ad886972348e341ea1d
m-kiewitz
m_kiewitz at users.sourceforge.net
Thu Jun 11 22:43:02 CEST 2015
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
09cd35b724 SHERLOCK: 3DO: support to load background image
Commit: 09cd35b724fa4c7266ba9ad886972348e341ea1d
https://github.com/scummvm/scummvm/commit/09cd35b724fa4c7266ba9ad886972348e341ea1d
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2015-06-11T22:42:05+02:00
Commit Message:
SHERLOCK: 3DO: support to load background image
Changed paths:
engines/sherlock/scene.cpp
diff --git a/engines/sherlock/scene.cpp b/engines/sherlock/scene.cpp
index e480773..441862c 100644
--- a/engines/sherlock/scene.cpp
+++ b/engines/sherlock/scene.cpp
@@ -579,7 +579,7 @@ bool Scene::loadScene(const Common::String &filename) {
Common::String roomFile = "rooms/" + filename + ".rrm";
flag = _vm->_res->exists(roomFile);
if (!flag)
- error("loadScene: 3DO room file not found");
+ error("loadScene: 3DO room data file not found");
Common::SeekableReadStream *roomStream = _vm->_res->load(roomFile);
@@ -742,15 +742,53 @@ bool Scene::loadScene(const Common::String &filename) {
for (int idx = 0; idx < header3DO_soundList_count; ++idx)
_sounds[idx].load3DO(*roomStream);
+ delete roomStream;
+
// === BACKGROUND PICTURE ===
// load from file rooms\[filename].bg
// it's uncompressed 15-bit RGB555 data
+ Common::String roomBackgroundFilename = "rooms/" + filename + ".bg";
+ flag = _vm->_res->exists(roomBackgroundFilename);
+ if (!flag)
+ error("loadScene: 3DO room background file not found (%s)", roomBackgroundFilename.c_str());
+
+ Common::File roomBackgroundStream;
+ if (!roomBackgroundStream.open(roomBackgroundFilename))
+ error("Could not load file - %s", roomBackgroundFilename.c_str());
+
+ int totalPixelCount = SHERLOCK_SCREEN_WIDTH * SHERLOCK_SCENE_HEIGHT;
+ uint16 *roomBackgroundDataPtr = NULL;
+ uint16 *pixelSourcePtr = NULL;
+ uint16 *pixelDestPtr = (uint16 *)screen._backBuffer1.getPixels();
+ uint16 curPixel = 0;
+
+ roomBackgroundDataPtr = new uint16[totalPixelCount];
+ roomBackgroundStream.read(roomBackgroundDataPtr, totalPixelCount * 2);
+ roomBackgroundStream.close();
+
+ // Convert data from RGB555 to RGB565
+ pixelSourcePtr = roomBackgroundDataPtr;
+ for (int pixels = 0; pixels < totalPixelCount; pixels++) {
+ curPixel = READ_BE_UINT16(pixelSourcePtr++);
+
+ byte curPixelRed = (curPixel >> 10) & 0x1F;
+ byte curPixelGreen = (curPixel >> 5) & 0x1F;
+ byte curPixelBlue = curPixel & 0x1F;
+ *pixelDestPtr = ((curPixelRed << 11) | (curPixelGreen << 6) | (curPixelBlue));
+ pixelDestPtr++;
+ }
+ delete[] roomBackgroundDataPtr;
+#if 0
+ // code to show the background
+ screen.blitFrom(screen._backBuffer1);
+ _vm->_events->wait(10000);
+#endif
-
-
+ // Backup the image
+ screen._backBuffer2.blitFrom(screen._backBuffer1);
}
// Handle drawing any on-screen interface
More information about the Scummvm-git-logs
mailing list