[Scummvm-git-logs] scummvm master -> 23a06b1ab5d557bc102f37d2b464abd2917fbb23

mgerhardy martin.gerhardy at gmail.com
Wed Dec 23 14:51:10 UTC 2020


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
676e48fcf1 TWINE: less indirect casting in matrix operations
725f75d4af TWINE: allow to use a higher resolution for rendering images
23a06b1ab5 TWINE: replaced magic number for text bank id


Commit: 676e48fcf1df22f6f9a2211a8aa711508c2ba2e9
    https://github.com/scummvm/scummvm/commit/676e48fcf1df22f6f9a2211a8aa711508c2ba2e9
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-12-23T15:50:48+01:00

Commit Message:
TWINE: less indirect casting in matrix operations

Changed paths:
    engines/twine/renderer/renderer.cpp


diff --git a/engines/twine/renderer/renderer.cpp b/engines/twine/renderer/renderer.cpp
index 77767ca3d8..8a79dd5ef1 100644
--- a/engines/twine/renderer/renderer.cpp
+++ b/engines/twine/renderer/renderer.cpp
@@ -226,9 +226,9 @@ void Renderer::applyPointsRotation(const pointTab *pointsPtr, int32 numPoints, p
 	int32 numOfPoints2 = numPoints;
 
 	do {
-		const int16 tmpX = pointsPtr->x;
-		const int16 tmpY = pointsPtr->y;
-		const int16 tmpZ = pointsPtr->z;
+		const int32 tmpX = pointsPtr->x;
+		const int32 tmpY = pointsPtr->y;
+		const int32 tmpZ = pointsPtr->z;
 
 		destPoints->x = ((rotationMatrix->row1[0] * tmpX + rotationMatrix->row1[1] * tmpY + rotationMatrix->row1[2] * tmpZ) >> 14) + destX;
 		destPoints->y = ((rotationMatrix->row2[0] * tmpX + rotationMatrix->row2[1] * tmpY + rotationMatrix->row2[2] * tmpZ) >> 14) + destY;
@@ -279,9 +279,9 @@ void Renderer::applyPointsTranslation(const pointTab *pointsPtr, int32 numPoints
 	int32 numOfPoints2 = numPoints;
 
 	do {
-		const int16 tmpX = pointsPtr->x + renderAngleZ;
-		const int16 tmpY = pointsPtr->y + renderAngleY;
-		const int16 tmpZ = pointsPtr->z + renderAngleX;
+		const int32 tmpX = pointsPtr->x + renderAngleZ;
+		const int32 tmpY = pointsPtr->y + renderAngleY;
+		const int32 tmpZ = pointsPtr->z + renderAngleX;
 
 		destPoints->x = ((translationMatrix->row1[0] * tmpX + translationMatrix->row1[1] * tmpY + translationMatrix->row1[2] * tmpZ) >> 14) + destX;
 		destPoints->y = ((translationMatrix->row2[0] * tmpX + translationMatrix->row2[1] * tmpY + translationMatrix->row2[2] * tmpZ) >> 14) + destY;


Commit: 725f75d4afb77831ba4ba5d75cb8ea0dd4c91174
    https://github.com/scummvm/scummvm/commit/725f75d4afb77831ba4ba5d75cb8ea0dd4c91174
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-12-23T15:50:48+01:00

Commit Message:
TWINE: allow to use a higher resolution for rendering images

Changed paths:
    engines/twine/renderer/screens.cpp
    engines/twine/twine.cpp
    engines/twine/twine.h


diff --git a/engines/twine/renderer/screens.cpp b/engines/twine/renderer/screens.cpp
index bf3e95371f..30a5faaa87 100644
--- a/engines/twine/renderer/screens.cpp
+++ b/engines/twine/renderer/screens.cpp
@@ -22,6 +22,7 @@
 
 #include "twine/renderer/screens.h"
 #include "common/system.h"
+#include "graphics/managed_surface.h"
 #include "graphics/surface.h"
 #include "twine/audio/music.h"
 #include "twine/resources/hqr.h"
@@ -41,11 +42,13 @@ bool Screens::adelineLogo() {
 }
 
 void Screens::loadMenuImage(bool fade_in) {
-	if (HQR::getEntry((uint8 *)_engine->workVideoBuffer.getPixels(), Resources::HQR_RESS_FILE, RESSHQR_MENUIMG) == 0) {
+	Graphics::ManagedSurface& src = _engine->imageBuffer;
+	if (HQR::getEntry((uint8 *)src.getPixels(), Resources::HQR_RESS_FILE, RESSHQR_MENUIMG) == 0) {
 		warning("Failed to load menu image");
 		return;
 	}
-	copyScreen(_engine->workVideoBuffer, _engine->frontVideoBuffer);
+	Graphics::ManagedSurface& target = _engine->frontVideoBuffer;
+	target.transBlitFrom(src, src.getBounds(), target.getBounds());
 	if (fade_in) {
 		fadeToPal(paletteRGBA);
 	} else {
@@ -75,12 +78,14 @@ void Screens::convertPalToRGBA(const uint8 *in, uint32 *out) {
 }
 
 void Screens::loadImage(int32 index, int32 paletteIndex, bool fade_in) {
-	if (HQR::getEntry((uint8 *)_engine->workVideoBuffer.getPixels(), Resources::HQR_RESS_FILE, index) == 0) {
+	Graphics::ManagedSurface& src = _engine->imageBuffer;
+	if (HQR::getEntry((uint8 *)src.getPixels(), Resources::HQR_RESS_FILE, index) == 0) {
 		warning("Failed to load image with index %i", index);
 		return;
 	}
 	debug(0, "Load image: %i", index);
-	copyScreen(_engine->workVideoBuffer, _engine->frontVideoBuffer);
+	Graphics::ManagedSurface& target = _engine->frontVideoBuffer;
+	target.transBlitFrom(src, src.getBounds(), target.getBounds());
 	loadCustomPalette(paletteIndex);
 	if (fade_in) {
 		fadeToPal(paletteRGBACustom);
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index d4ae4eaadf..61f3393703 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -305,10 +305,11 @@ void TwinEEngine::autoSave() {
 
 void TwinEEngine::allocVideoMemory() {
 	const Graphics::PixelFormat format = Graphics::PixelFormat::createFormatCLUT8();
+
+	imageBuffer.create(640, 480, format); // original lba1 resolution for a lot of images.
+
 	workVideoBuffer.create(SCREEN_WIDTH, SCREEN_HEIGHT, format);
 	frontVideoBuffer.create(SCREEN_WIDTH, SCREEN_HEIGHT, format);
-
-	// initVideoVar1 = -1;
 }
 
 static int getLanguageTypeIndex(const char *languageName) {
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index bf2abd5a78..a58816dba5 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -270,6 +270,7 @@ public:
 	int32 quitGame = 0;
 	int32 lbaTime = 0;
 
+	Graphics::ManagedSurface imageBuffer;
 	/** Work video buffer */
 	Graphics::ManagedSurface workVideoBuffer;
 	/** Main game video buffer */


Commit: 23a06b1ab5d557bc102f37d2b464abd2917fbb23
    https://github.com/scummvm/scummvm/commit/23a06b1ab5d557bc102f37d2b464abd2917fbb23
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-12-23T15:50:48+01:00

Commit Message:
TWINE: replaced magic number for text bank id

Changed paths:
    engines/twine/holomap.cpp
    engines/twine/menu/menu.cpp
    engines/twine/scene/gamestate.cpp
    engines/twine/scene/scene.cpp
    engines/twine/text.cpp
    engines/twine/text.h
    engines/twine/twine.cpp


diff --git a/engines/twine/holomap.cpp b/engines/twine/holomap.cpp
index 312c46dda5..8ae117972b 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -222,7 +222,7 @@ void Holomap::processHolomap() {
 	_engine->_gameState->initEngineProjections();
 	_engine->_interface->loadClip();
 
-	_engine->_text->initTextBank(_engine->_scene->sceneTextBank + 3);
+	_engine->_text->initSceneTextBank();
 }
 
 } // namespace TwinE
diff --git a/engines/twine/menu/menu.cpp b/engines/twine/menu/menu.cpp
index 5e6eb5e2a4..bd7df2f497 100644
--- a/engines/twine/menu/menu.cpp
+++ b/engines/twine/menu/menu.cpp
@@ -649,7 +649,7 @@ void Menu::inGameOptionsMenu() {
 	optionsMenuState.setButtonTextId(0, TextId::kReturnGame);
 	_engine->_screens->copyScreen(_engine->frontVideoBuffer, _engine->workVideoBuffer);
 	optionsMenu();
-	_engine->_text->initTextBank(_engine->_scene->sceneTextBank + 3);
+	_engine->_text->initSceneTextBank();
 	optionsMenuState.setButtonTextId(0, TextId::kReturnMenu);
 }
 
@@ -788,7 +788,7 @@ int32 Menu::giveupMenu() {
 		default:
 			warning("Unknown menu button handled: %i", menuId);
 		}
-		_engine->_text->initTextBank(_engine->_scene->sceneTextBank + 3);
+		_engine->_text->initSceneTextBank();
 	} while (menuId != TextId::kGiveUp && menuId != TextId::kContinue && menuId != TextId::kCreateSaveGame);
 
 	return 0;
@@ -1036,7 +1036,7 @@ void Menu::processBehaviourMenu() {
 	_engine->_gameState->initEngineProjections();
 
 	_engine->_scene->sceneTextBank = tmpTextBank;
-	_engine->_text->initTextBank(_engine->_scene->sceneTextBank + 3);
+	_engine->_text->initSceneTextBank();
 }
 
 void Menu::drawMagicItemsBox(int32 left, int32 top, int32 right, int32 bottom, int32 color) { // Rect
@@ -1203,7 +1203,7 @@ void Menu::processInventoryMenu() {
 
 	_engine->_gameState->initEngineProjections();
 
-	_engine->_text->initTextBank(_engine->_scene->sceneTextBank + 3);
+	_engine->_text->initSceneTextBank();
 }
 
 } // namespace TwinE
diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index 6a82e60250..824e0a5a12 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -395,7 +395,7 @@ void GameState::processFoundItem(int32 item) {
 	}
 
 	initEngineProjections();
-	_engine->_text->initTextBank(_engine->_scene->sceneTextBank + 3);
+	_engine->_text->initSceneTextBank();
 	_engine->_text->stopVox(_engine->_text->currDialTextEntry);
 
 	_engine->_scene->sceneHero->animTimerData = tmpAnimTimer;
@@ -405,7 +405,7 @@ void GameState::processGameChoices(int32 choiceIdx) {
 	_engine->_screens->copyScreen(_engine->frontVideoBuffer, _engine->workVideoBuffer);
 
 	gameChoicesSettings.reset();
-	gameChoicesSettings.setTextBankId(_engine->_scene->sceneTextBank + 3);
+	gameChoicesSettings.setTextBankId(_engine->_scene->sceneTextBank + TextBankId::Citadel_Island);
 
 	// filled via script
 	for (int32 i = 0; i < numChoices; i++) {
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 7ebc704551..5ac3644812 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -317,7 +317,7 @@ void Scene::changeScene() {
 		sceneTextBank = TextBankId::Tippet_Island;
 	}
 
-	_engine->_text->initTextBank(sceneTextBank + 3);
+	_engine->_text->initSceneTextBank();
 	_engine->_grid->initGrid(needChangeScene);
 
 	if (heroPositionType == ScenePositionType::kZone) {
diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index dbefed455d..c6fcd33d69 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -159,6 +159,10 @@ void Text::initTextBank(int32 bankIdx) {
 	initVoxBank(bankIdx);
 }
 
+void Text::initSceneTextBank() {
+	initTextBank(_engine->_scene->sceneTextBank + TextBankId::Citadel_Island);
+}
+
 void Text::drawCharacter(int32 x, int32 y, uint8 character) { // drawCharacter
 	uint8 sizeY = getCharHeight(character);
 	Common::MemoryReadStream stream(_engine->_resources->fontPtr, _engine->_resources->fontBufSize);
diff --git a/engines/twine/text.h b/engines/twine/text.h
index 53c9b91fcf..7e7a36f1fd 100644
--- a/engines/twine/text.h
+++ b/engines/twine/text.h
@@ -241,6 +241,7 @@ public:
 	 * @param bankIdx Text bank index
 	 */
 	void initTextBank(int32 bankIdx);
+	void initSceneTextBank();
 
 	/**
 	 * Display a certain dialogue text in the screen
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 61f3393703..1b3f9b7337 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -526,7 +526,7 @@ void TwinEEngine::processInventoryAction() {
 		cfgfile.FlagDisplayText = tmpFlagDisplayText;
 		_text->textClipSmall();
 		_text->drawTextBoxBackground = true;
-		_text->initTextBank(_scene->sceneTextBank + 3);
+		_text->initSceneTextBank();
 		_screens->fadeToBlack(_screens->paletteRGBACustom);
 		_screens->clearScreen();
 		flip();
@@ -578,7 +578,7 @@ void TwinEEngine::processInventoryAction() {
 		_text->setFontCrossColor(15);
 		_text->drawTextFullscreen(162);
 		_text->textClipSmall();
-		_text->initTextBank(_scene->sceneTextBank + 3);
+		_text->initSceneTextBank();
 		break;
 	}
 	case kiCloverLeaf:




More information about the Scummvm-git-logs mailing list