[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