[Scummvm-git-logs] scummvm master -> 21778dcb8089dd2e76520dea1fe2edb1097f4402
yuv422
yuv422 at users.noreply.github.com
Fri Mar 20 12:18:07 UTC 2020
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:
21778dcb80 DRAGONS: Added power meters to thumb wrestling mini game
Commit: 21778dcb8089dd2e76520dea1fe2edb1097f4402
https://github.com/scummvm/scummvm/commit/21778dcb8089dd2e76520dea1fe2edb1097f4402
Author: Eric Fry (yuv422 at users.noreply.github.com)
Date: 2020-03-20T23:16:57+11:00
Commit Message:
DRAGONS: Added power meters to thumb wrestling mini game
Changed paths:
engines/dragons/font.cpp
engines/dragons/minigame2.cpp
engines/dragons/specialopcodes.cpp
diff --git a/engines/dragons/font.cpp b/engines/dragons/font.cpp
index 4f42beca0b..3f4f7453f4 100644
--- a/engines/dragons/font.cpp
+++ b/engines/dragons/font.cpp
@@ -231,6 +231,7 @@ void FontManager::drawTextDialogBox(uint32 x1, uint32 y1, uint32 x2, uint32 y2)
drawBoxChar(x2, y1, kTileIndexTopRight);
drawBoxChar(x1, y2, kTileIndexBottomLeft);
drawBoxChar(x2, y2, kTileIndexBottomRight);
+ _numTextEntries++;
}
void FontManager::clearTextDialog(uint32 x1, uint32 y1, uint32 x2, uint32 y2) {
diff --git a/engines/dragons/minigame2.cpp b/engines/dragons/minigame2.cpp
index d992ce6901..26bd63e802 100644
--- a/engines/dragons/minigame2.cpp
+++ b/engines/dragons/minigame2.cpp
@@ -24,6 +24,7 @@
#include "dragons/actorresource.h"
#include "dragons/dragons.h"
#include "dragons/dragonini.h"
+#include "dragons/font.h"
#include "dragons/talk.h"
#include "dragons/inventory.h"
#include "dragons/scene.h"
@@ -40,7 +41,6 @@ static const uint16 unkArray[5] = {
};
void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
- //uint16 uVar1;
short sVar2;
short sVar3;
bool shouldExit;
@@ -56,10 +56,8 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
Actor *loungealotThumb;
Actor *uVar12;
Actor *uVar13;
- Actor *uVar14;
- Actor *uVar15;
- //uint16 uVar16;
- //uint16 uVar17;
+ Actor *flickerPortrait;
+ Actor *loungealotPortrait;
uint uVar18;
//uint uVar19;
//int iVar20;
@@ -189,8 +187,8 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
uVar13 = _vm->_actorManager->loadActor(0x13, (uint)(uint16)actorSequenceIdTbl[(uint)_dat_80093cb8 * 3 + (uint)_dat_80093cc0],
flickerArm->_x_pos,
flickerArm->_y_pos, 4);
- uVar14 = _vm->_actorManager->loadActor(0x27, 0, 0x10, 0xac, 4);
- uVar15 = _vm->_actorManager->loadActor(0x27, 1, 0x10, 0x8c, 4);
+ flickerPortrait = _vm->_actorManager->loadActor(0x27, 0, 0x10, 0xac, 4);
+ loungealotPortrait = _vm->_actorManager->loadActor(0x27, 1, 0x10, 0x8c, 4);
loungealotBigPunchActor->setFlag(ACTOR_FLAG_100);
loungealotHeadActor->setFlag(ACTOR_FLAG_100);
loungealotLeftUpperArm->setFlag(ACTOR_FLAG_100);
@@ -200,8 +198,8 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
loungealotThumb->setFlag(ACTOR_FLAG_100);
uVar12->setFlag(ACTOR_FLAG_100);
uVar13->setFlag(ACTOR_FLAG_100);
- uVar14->setFlag(ACTOR_FLAG_100);
- uVar15->setFlag(ACTOR_FLAG_100);
+ flickerPortrait->setFlag(ACTOR_FLAG_100);
+ loungealotPortrait->setFlag(ACTOR_FLAG_100);
loungealotBigPunchActor->_priorityLayer = 6;
flickerArm->_priorityLayer = 5;
@@ -212,13 +210,13 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
loungealotLeftUpperArm->_priorityLayer = 2;
loungealotHeadActor->_priorityLayer = 2;
loungealotLegActor->_priorityLayer = 1;
- uVar14->_priorityLayer = 0;
- uVar15->_priorityLayer = 0;
- //TODO
-// uVar16 = AddFlatShadedQuad(0x28, 0xa8, 0x67, 0xa8, 0x67, 0xaf, 0x28, 0xaf, 0x1f, 7, 0);
-// uVar17 = AddFlatShadedQuad(0x28, 0x88, 0x67, 0x88, 0x67, 0x8f, 0x28, 0x8f, 0x3e0, 7, 0);
-// (&DAT_80083178)[(uint)uVar16 * 0xb] = (&DAT_80083178)[(uint)uVar16 * 0xb] & 0xfffe;
-// (&DAT_80083178)[(uint)uVar17 * 0xb] = (&DAT_80083178)[(uint)uVar17 * 0xb] & 0xfffe;
+ flickerPortrait->_priorityLayer = 0;
+ loungealotPortrait->_priorityLayer = 0;
+ FlatQuad *flickerPowerMeter = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0x28, 0xa8, 0x67, 0xa8, 0x67, 0xaf, 0x28, 0xaf, 0x1f, 7, 0));
+ FlatQuad *loungealotPowerMeter = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0x28, 0x88, 0x67, 0x88, 0x67, 0x8f, 0x28, 0x8f, 0x3e0, 7, 0));
+ flickerPowerMeter->flags &= ~1u;
+ loungealotPowerMeter->flags &= ~1u;
+
// EnableVSyncEvent();
loungealotHeadActor->setFlag(ACTOR_FLAG_1);
loungealotLeftUpperArm->setFlag(ACTOR_FLAG_1);
@@ -254,7 +252,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
if ((_dat_80093c9c != 0) && !_vm->isFlagSet(ENGINE_FLAG_8000)) {
loungealotHeadActor->updateSequence(0);
- //TODO _vm->_talk->clearTextDialog((uint)_dat_8008e7e8, (uint)_dat_8008e844, (uint)_dat_8008e848, (uint)_dat_8008e874);
+ _vm->_fontManager->clearText();
_dat_80093c9c = 0;
}
if (_dat_80093c94 != 0) {
@@ -289,43 +287,38 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
}
if (local_27a == 0) {
-// TODO (&DAT_80083178)[(uint)uVar16 * 0xb] = (&DAT_80083178)[(uint)uVar16 * 0xb] & 0xfffe;
+ flickerPowerMeter->flags &= ~1u;
} else {
- /* TODO
- (&DAT_8008316c)[(uint)uVar16 * 0xb] = local_27a + 0x27;
- (&DAT_80083168)[(uint)uVar16 * 0xb] = local_27a + 0x27;
- (&DAT_80083176)[(uint)uVar16 * 0xb] =
- (uint16)(((int)((uint)local_27a - 1) >> 1) << 5) |
- (uint16)(((int)(0x40 - (uint)local_27a) >> 1) << 10);
- (&DAT_80083178)[(uint)uVar16 * 0xb] = (&DAT_80083178)[(uint)uVar16 * 0xb] | 1;
- */
+ flickerPowerMeter->points[1].x = local_27a + 0x27;
+ flickerPowerMeter->points[3].x = local_27a + 0x27;
+ flickerPowerMeter->colour = (uint16)(((int)((uint)local_27a - 1) >> 1) << 5) |
+ (uint16)(((int)(0x40 - (uint)local_27a) >> 1) << 10);
+ flickerPowerMeter->flags |= 1;
}
if (local_278 == 0) {
- //TODO (&DAT_80083178)[(uint)uVar17 * 0xb] = (&DAT_80083178)[(uint)uVar17 * 0xb] & 0xfffe;
+ loungealotPowerMeter->flags &= ~1u;
if ((local_27a != 0) || (local_258 != 0)) goto LAB_800907c4;
} else {
- /*TODO
- (&DAT_8008316c)[(uint)uVar17 * 0xb] = local_278 + 0x27;
- (&DAT_80083168)[(uint)uVar17 * 0xb] = local_278 + 0x27;
- (&DAT_80083176)[(uint)uVar17 * 0xb] =
- (uint16)(((int)((uint)local_278 - 1) >> 1) << 5) |
- (uint16)(((int)(0x40 - (uint)local_278) >> 1) << 10);
- (&DAT_80083178)[(uint)uVar17 * 0xb] = (&DAT_80083178)[(uint)uVar17 * 0xb] | 1;
- */
+ loungealotPowerMeter->points[1].x = local_278 + 0x27;
+ loungealotPowerMeter->points[3].x = local_278 + 0x27;
+ loungealotPowerMeter->colour = (uint16)(((int)((uint)local_278 - 1) >> 1) << 5) |
+ (uint16)(((int)(0x40 - (uint)local_278) >> 1) << 10);
+ loungealotPowerMeter->flags |= 1;
+
LAB_800907c4:
if (!bVar4) {
- //TODO drawTextDialogBox(4, 0x14, 0xd, 0x16, 1);
- //TODO drawTextDialogBox(4, 0x10, 0xd, 0x12, 1);
- uVar14->_priorityLayer = 6;
- uVar15->_priorityLayer = 6;
+ _vm->_fontManager->drawTextDialogBox(4, 0x14, 0xd, 0x16);
+ _vm->_fontManager->drawTextDialogBox(4, 0x10, 0xd, 0x12);
+ flickerPortrait->_priorityLayer = 6;
+ loungealotPortrait->_priorityLayer = 6;
bVar4 = true;
}
}
if ((((local_278 == 0) && (local_27a == 0)) && (local_258 == 0)) && (bVar4)) {
- // TODO clearTextDialog(4, 0x14, 0xd, 0x16);
- // TODO clearTextDialog(4, 0x10, 0xd, 0x12);
- uVar14->_priorityLayer = 0;
- uVar15->_priorityLayer = 0;
+ _vm->_fontManager->clearTextDialog(4, 0x14, 0xd, 0x16);
+ _vm->_fontManager->clearTextDialog(4, 0x10, 0xd, 0x12);
+ flickerPortrait->_priorityLayer = 0;
+ loungealotPortrait->_priorityLayer = 0;
bVar4 = false;
}
@@ -418,8 +411,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
_vm->waitForFrames(1);
_vm->_screen->loadPalette(0, paletteData);
_vm->_screen->loadPalette(1, paletteData);
-// TODO clearTextDialog((uint)_dat_8008e7e8, (uint)_dat_8008e844, (uint)_dat_8008e848,
-// (uint)_dat_8008e874);
+ _vm->_fontManager->clearText();
//punched in the face.
break;
}
@@ -687,6 +679,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
} while (true);
// fade_related_calls_with_1f();
+ _vm->_fontManager->clearText();
_vm->_sound->PauseCDMusic();
// DisableVSyncEvent();
_vm->_dragonINIResource->getRecord(0)->x = 0x91;
@@ -695,8 +688,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
_vm->_dragonINIResource->getRecord(0x123)->y = 0x9b;
_vm->_screen->loadPalette(1, _vm->_cursor->getPalette());
_vm->setupPalette1();
- //TODO FUN_80035e74((uint)uVar17);
- //TODO FUN_80035e74((uint)uVar16);
+ _vm->_screen->clearAllFlatQuads();
_vm->_dragonINIResource->setFlickerRecord(flicker);
_vm->_inventory->setState(originalInventoryType);
flicker->objectState = local_258 + -1;
@@ -717,9 +709,9 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
// EnableVSyncEvent();
if (param_3 == 0) {
// fade_related_calls_with_1f();
-// TODO ClearFlatShadedQuads(0);
- uVar14->clearFlag(ACTOR_FLAG_40);
- uVar15->clearFlag(ACTOR_FLAG_40);
+ _vm->_screen->clearAllFlatQuads();
+ flickerPortrait->clearFlag(ACTOR_FLAG_40);
+ loungealotPortrait->clearFlag(ACTOR_FLAG_40);
_vm->reset_screen_maybe();
} else {
_vm->reset_screen_maybe();
@@ -733,12 +725,7 @@ void Minigame2::run(int16 param_1, uint16 param_2, int16 param_3) {
void Minigame2::fun_80093aec_dialog(uint32 textId, int16 x, int16 y) {
uint16 auStack4024 [2000];
-//TODO
-// if ((((_dat_8008e7e8_dialogBox_x1 != 0) || (_dat_8008e848_dialogBox_x2 != 0)) ||
-// (_dat_8008e844_dialogBox_y1 != 0)) || (_dat_8008e874_dialogBox_y2 != 0)) {
-// _vm->_talk->clearTextDialog((uint)_dat_8008e7e8_dialogBox_x1, (uint)_dat_8008e844_dialogBox_y1,
-// (uint)_dat_8008e848_dialogBox_x2, (uint)_dat_8008e874_dialogBox_y2);
-// }
+ _vm->_fontManager->clearText();
_vm->_talk->loadText(textId, auStack4024, 2000);
_vm->_talk->displayDialogAroundPoint(auStack4024, x, y, 0, 0, textId);
_dat_80093c9c = 1;
diff --git a/engines/dragons/specialopcodes.cpp b/engines/dragons/specialopcodes.cpp
index e36ff57481..9ad65bc1e3 100644
--- a/engines/dragons/specialopcodes.cpp
+++ b/engines/dragons/specialopcodes.cpp
@@ -1329,80 +1329,78 @@ void SpecialOpcodes::mapTransition(uint16 mode) {
0x2d, 0x30, 0x31
};
- bool hasDoneFade = false;
- uint16 state = _vm->getINI(0x1e)->objectState;
- if (state == 0) {
- state = 0xc;
+ uint16 targetLocation = _vm->getINI(0x1e)->objectState;
+ if (targetLocation == 0) {
+ targetLocation = 0xc;
for (int i = 1; i < 0xd; i++) {
if (_vm->_scene->_mapTransitionEffectSceneID < mapSceneIdTbl[i]) {
- state = i - 1;
+ targetLocation = i - 1;
break;
}
}
}
- _vm->_cursor->updatePosition(mapLookupTbl[state * 2], mapLookupTbl[state * 2 + 1]);
+ _vm->_cursor->updatePosition(mapLookupTbl[targetLocation * 2], mapLookupTbl[targetLocation * 2 + 1]);
_vm->setFlags(ENGINE_FLAG_20);
- int32 uVar14 = (_vm->_cursor->_y << 0x10) >> 4;
- int32 uVar6 = (DRAGONS_SCREEN_HEIGHT - _vm->_cursor->_y) * 0x10000 >> 4;
- int32 uVar2 = _vm->_cursor->_x;
- int32 uVar3 = (DRAGONS_SCREEN_WIDTH - uVar2) * 0x10000 >> 4;
+ int16 cursorX = _vm->_cursor->_x;
+ int16 cursorY = _vm->_cursor->_y;
+
+ int32 topIncrement = (cursorY << 0x10) >> 4;
+ int32 bottomIncrement = (DRAGONS_SCREEN_HEIGHT - cursorY) * 0x10000 >> 4;
+ int32 rightIncrement = (DRAGONS_SCREEN_WIDTH - cursorX) * 0x10000 >> 4;
if (mode == 0) { //Close map
FlatQuad *topQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,0,0x140,0,0x140,0,0,0,1,4,0));
FlatQuad *bottomQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,200,0x140,200,0x140,200,0,200,1,4,0));
FlatQuad *leftQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,0,0,0,0,200,0,200,1,4,0));
FlatQuad *rightQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0x140,0,0x140,0,0x140,200,0x140,200,1,4,0));
- int32 iVar10 = topQuad->points[3].y << 0x10;
- int32 iVar13 = bottomQuad->points[0].y << 0x10;
- int32 iVar11 = rightQuad->points[0].x << 0x10;
- int32 iVar12 = leftQuad->points[1].x << 0x10;
-
-
-
- while (iVar10 < (_vm->_cursor->_y << 0x10)) {
- iVar10 = iVar10 + uVar14;
- iVar13 = iVar13 - uVar6;
- iVar12 = iVar12 + uVar2 * 0x1000;
- topQuad->points[3].y = iVar10 >> 0x10;
- topQuad->points[2].y = iVar10 >> 0x10;
- bottomQuad->points[0].y = iVar13 >> 0x10;
- bottomQuad->points[1].y = iVar13 >> 0x10;
- leftQuad->points[1].x = iVar12 >> 0x10;
- leftQuad->points[3].x = iVar12 >> 0x10;
- iVar11 = iVar11 - uVar3;
- rightQuad->points[0].x = iVar11 >> 0x10;
- rightQuad->points[2].x = iVar11 >> 0x10;
+ int32 topY = topQuad->points[3].y << 0x10;
+ int32 bottomY = bottomQuad->points[0].y << 0x10;
+ int32 rightX = rightQuad->points[0].x << 0x10;
+ int32 leftX = leftQuad->points[1].x << 0x10;
+
+ while (topY < (cursorY << 0x10)) {
+ topY = topY + topIncrement;
+ bottomY = bottomY - bottomIncrement;
+ leftX = leftX + cursorX * 0x1000;
+ topQuad->points[3].y = topY >> 0x10;
+ topQuad->points[2].y = topY >> 0x10;
+ bottomQuad->points[0].y = bottomY >> 0x10;
+ bottomQuad->points[1].y = bottomY >> 0x10;
+ leftQuad->points[1].x = leftX >> 0x10;
+ leftQuad->points[3].x = leftX >> 0x10;
+ rightX = rightX - rightIncrement;
+ rightQuad->points[0].x = rightX >> 0x10;
+ rightQuad->points[2].x = rightX >> 0x10;
_vm->waitForFrames(1);
}
// fade_related_calls_with_1f();
} else if (mode == 1) { // Open map
- int16 cursorX = _vm->_cursor->_x;
- int16 cursorY = _vm->_cursor->_y;
FlatQuad *topQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,0,0x140,0,0x140,cursorY,0,cursorY,1,4,0));
- FlatQuad *topQuad1 = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,cursorY,0x140,cursorY,0x140,200,0,200,1,4,0));
- FlatQuad *bottomQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0,0,cursorX,0,cursorX,200,0,200,1,4,0));
+ FlatQuad *bottomQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0, cursorY, 0x140, cursorY, 0x140, 200, 0, 200, 1, 4, 0));
+ FlatQuad *leftQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(0, 0, cursorX, 0, cursorX, 200, 0, 200, 1, 4, 0));
FlatQuad *rightQuad = _vm->_screen->getFlatQuad(_vm->_screen->addFlatQuad(cursorX,0,0x140,0,0x140,200,cursorX,200,1,4,0));
- int32 iVar10 = topQuad->points[3].y << 0x10;
- int32 iVar11 = topQuad1->points[0].y << 0x10;
- int32 iVar12 = bottomQuad->points[1].x << 0x10;
- int32 iVar13 = rightQuad->points[0].x << 0x10;
+ int32 topY = topQuad->points[3].y << 0x10;
+ int32 bottomY = bottomQuad->points[0].y << 0x10;
+ int32 leftX = leftQuad->points[1].x << 0x10;
+ int32 rightX = rightQuad->points[0].x << 0x10;
_vm->waitForFrames(2);
- while (0 < iVar10) {
- iVar10 = iVar10 - uVar14;
- iVar11 = iVar11 + uVar6;
- iVar12 = iVar12 + uVar2 * -0x1000;
- topQuad->points[3].y = iVar10 >> 0x10;
- topQuad->points[2].y = iVar10 >> 0x10;
- topQuad1->points[0].y = iVar11 >> 0x10;
- topQuad1->points[1].y = iVar11 >> 0x10;
- bottomQuad->points[1].x = iVar12 >> 0x10;
- bottomQuad->points[3].x = iVar12 >> 0x10;
- iVar13 = iVar13 + uVar3;
- rightQuad->points[0].x = iVar13 >> 0x10;
- rightQuad->points[2].x = iVar13 >> 0x10;
+ bool hasDoneFade = false;
+ while (0 < topY) {
+ topY = topY - topIncrement;
+ bottomY = bottomY + bottomIncrement;
+ leftX = leftX + cursorX * -0x1000;
+ topQuad->points[3].y = topY >> 0x10;
+ topQuad->points[2].y = topY >> 0x10;
+ bottomQuad->points[0].y = bottomY >> 0x10;
+ bottomQuad->points[1].y = bottomY >> 0x10;
+ leftQuad->points[1].x = leftX >> 0x10;
+ leftQuad->points[3].x = leftX >> 0x10;
+ rightX = rightX + rightIncrement;
+ rightQuad->points[0].x = rightX >> 0x10;
+ rightQuad->points[2].x = rightX >> 0x10;
_vm->waitForFrames(1);
if (!hasDoneFade) {
// call_fade_related_1f();
More information about the Scummvm-git-logs
mailing list