aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure71
-rw-r--r--engines/agos/input.cpp4
-rw-r--r--engines/cge/cge.cpp2
-rw-r--r--engines/cge/fileio.cpp8
-rw-r--r--engines/cge/fileio.h4
-rw-r--r--engines/fullpipe/constants.h10
-rw-r--r--engines/fullpipe/scenes/scene18and19.cpp164
-rw-r--r--engines/voyeur/data.cpp2
-rw-r--r--engines/voyeur/debugger.cpp35
9 files changed, 246 insertions, 54 deletions
diff --git a/configure b/configure
index 5f5013535b..de9c7d0f19 100755
--- a/configure
+++ b/configure
@@ -850,7 +850,9 @@ Fine tuning of the installation directories:
Special configuration feature:
--host=HOST cross-compile to target HOST (arm-linux, ...)
- special targets: android for Android
+ special targets: android-arm for Android ARM
+ android-mips for Android MIPS
+ android-x86 for Android x86
tizen for Samsung Tizen
caanoo for Caanoo
dingux for Dingux
@@ -1271,11 +1273,21 @@ get_system_exe_extension $guessed_host
NATIVEEXEEXT=$_exeext
case $_host in
-android | android-v7a | ouya)
+android | android-arm | android-v7a | android-arm-v7a | ouya)
_host_os=android
_host_cpu=arm
_host_alias=arm-linux-androideabi
;;
+android-mips)
+ _host_os=android
+ _host_cpu=mipsel
+ _host_alias=mipsel-linux-android
+ ;;
+android-x86)
+ _host_os=android
+ _host_cpu=i686
+ _host_alias=i686-linux-android
+ ;;
arm-riscos)
_host_os=riscos
_host_cpu=arm
@@ -2042,18 +2054,34 @@ case $_host_os in
;;
android)
case $_host in
- android)
+ android | android-arm)
CXXFLAGS="$CXXFLAGS -march=armv5te"
CXXFLAGS="$CXXFLAGS -mtune=xscale"
CXXFLAGS="$CXXFLAGS -msoft-float"
ABI="armeabi"
+ ANDROID_PLATFORM=4
;;
- android-v7a)
+ android-v7a | android-arm-v7a)
CXXFLAGS="$CXXFLAGS -march=armv7-a"
CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp"
CXXFLAGS="$CXXFLAGS -mfpu=vfp"
LDFLAGS="$LDFLAGS -Wl,--fix-cortex-a8"
ABI="armeabi-v7a"
+ ANDROID_PLATFORM=4
+ ;;
+ android-mips)
+ CXXFLAGS="$CXXFLAGS -march=mips32"
+ CXXFLAGS="$CXXFLAGS -mtune=mips32"
+ ABI="mips"
+ # Platform version 9 is needed as earlier versions of platform do not support this arch.
+ ANDROID_PLATFORM=9
+ ;;
+ android-x86)
+ CXXFLAGS="$CXXFLAGS -march=i686"
+ CXXFLAGS="$CXXFLAGS -mtune=i686"
+ ABI="x86"
+ # Platform version 9 is needed as earlier versions of platform do not support this arch.
+ ANDROID_PLATFORM=9
;;
ouya)
CXXFLAGS="$CXXFLAGS -march=armv7-a"
@@ -2061,9 +2089,15 @@ case $_host_os in
CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp"
CXXFLAGS="$CXXFLAGS -mfpu=neon"
ABI="armeabi-v7a"
+ ANDROID_PLATFORM=4
;;
esac
- CXXFLAGS="$CXXFLAGS --sysroot=$ANDROID_NDK/platforms/android-4/arch-arm"
+
+ # Setup platform version and arch
+ ABI_SHORT=`echo $ABI | cut -c1-3`
+ CXXFLAGS="$CXXFLAGS --sysroot=$ANDROID_NDK/platforms/android-$ANDROID_PLATFORM/arch-$ABI_SHORT"
+ LDFLAGS="$LDFLAGS --sysroot=$ANDROID_NDK/platforms/android-$ANDROID_PLATFORM/arch-$ABI_SHORT"
+
CXXFLAGS="$CXXFLAGS -fpic"
CXXFLAGS="$CXXFLAGS -ffunction-sections"
CXXFLAGS="$CXXFLAGS -funwind-tables"
@@ -2076,16 +2110,23 @@ case $_host_os in
fi
CXXFLAGS="$CXXFLAGS -finline-limit=300"
_optimization_level=-Os
- CXXFLAGS="$CXXFLAGS -mthumb-interwork"
- # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this.
- CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5__"
- CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5T__"
- CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5E__"
- CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5TE__"
- # supress 'mangling of 'va_list' has changed in GCC 4.4'
+
+ if test "$_host" = android -o "$_host" = android-arm; then
+ CXXFLAGS="$CXXFLAGS -mthumb-interwork"
+ # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this.
+ CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5__"
+ CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5T__"
+ CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5E__"
+ CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5TE__"
+ fi
+
+ # surpress 'mangling of 'va_list' has changed in GCC 4.4' warning
CXXFLAGS="$CXXFLAGS -Wno-psabi"
- LDFLAGS="$LDFLAGS --sysroot=$ANDROID_NDK/platforms/android-4/arch-arm"
- LDFLAGS="$LDFLAGS -mthumb-interwork"
+
+ if test "$_host" = android -o "$_host" = android-arm; then
+ LDFLAGS="$LDFLAGS -mthumb-interwork"
+ fi
+
LDFLAGS="$LDFLAGS -L$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/`$CXX -dumpversion`/libs/$ABI/"
LIBS="$LIBS -lsupc++"
add_line_to_config_mk "ANDROID_SDK = $ANDROID_SDK"
@@ -2352,7 +2393,7 @@ if test -n "$_host"; then
# Cross-compiling mode - add your target here if needed
echo "Cross-compiling to $_host"
case "$_host" in
- android | android-v7a | ouya)
+ android | android-arm | android-v7a | android-arm-v7a | android-mips | android-x86 | ouya)
# we link a .so as default
LDFLAGS="$LDFLAGS -shared"
LDFLAGS="$LDFLAGS -Wl,-Bsymbolic,--no-undefined"
diff --git a/engines/agos/input.cpp b/engines/agos/input.cpp
index 35779323e3..8a4e87017a 100644
--- a/engines/agos/input.cpp
+++ b/engines/agos/input.cpp
@@ -450,7 +450,7 @@ void AGOSEngine_Feeble::handleMouseWheelDown() {
void AGOSEngine_Simon1::handleMouseWheelUp() {
HitArea *ha = findBox(206);
- if (ha != NULL && (ha->flags & kBFBoxInUse)) {
+ if (ha != NULL && (ha->flags & kBFBoxInUse) && !(ha->flags & kBFBoxDead)) {
if (_saveLoadRowCurPos != 1) {
if (_saveLoadRowCurPos < 7)
_saveLoadRowCurPos = 1;
@@ -467,7 +467,7 @@ void AGOSEngine_Simon1::handleMouseWheelUp() {
void AGOSEngine_Simon1::handleMouseWheelDown() {
HitArea *ha = findBox(207);
- if (ha != NULL && (ha->flags & kBFBoxInUse)) {
+ if (ha != NULL && (ha->flags & kBFBoxInUse) && !(ha->flags & kBFBoxDead)) {
if (_saveDialogFlag) {
_saveLoadRowCurPos += 1;
if (_saveLoadRowCurPos >= _numSaveGameRows)
diff --git a/engines/cge/cge.cpp b/engines/cge/cge.cpp
index a409d765b4..49297b06ec 100644
--- a/engines/cge/cge.cpp
+++ b/engines/cge/cge.cpp
@@ -98,7 +98,7 @@ void CGEEngine::initSceneValues() {
}
void CGEEngine::init() {
- debugC(1, kCGEDebugEngine, "CGEEngine::setup()");
+ debugC(1, kCGEDebugEngine, "CGEEngine::init()");
// Initialize fields
_lastFrame = 0;
diff --git a/engines/cge/fileio.cpp b/engines/cge/fileio.cpp
index 4fcf9f8ad8..2b1f74db02 100644
--- a/engines/cge/fileio.cpp
+++ b/engines/cge/fileio.cpp
@@ -93,13 +93,11 @@ ResourceManager::~ResourceManager() {
delete _buff[i]._page;
}
-uint16 ResourceManager::XCrypt(byte *buf, uint16 length) {
+void ResourceManager::XCrypt(byte *buf, uint16 length) {
byte *b = buf;
for (uint16 i = 0; i < length; i++)
*b++ ^= kCryptSeed;
-
- return kCryptSeed;
}
bool ResourceManager::seek(int32 offs, int whence) {
@@ -118,7 +116,7 @@ uint16 ResourceManager::read(byte *buf, uint16 length) {
}
BtPage *ResourceManager::getPage(int level, uint16 pageId) {
- debugC(1, kCGEDebugFile, "IoHand::getPage(%d, %d)", level, pageId);
+ debugC(1, kCGEDebugFile, "ResourceManager::getPage(%d, %d)", level, pageId);
if (_buff[level]._pageNo != pageId) {
int32 pos = pageId * kBtSize;
@@ -142,7 +140,7 @@ BtPage *ResourceManager::getPage(int level, uint16 pageId) {
}
BtKeypack *ResourceManager::find(const char *key) {
- debugC(1, kCGEDebugFile, "IoHand::find(%s)", key);
+ debugC(1, kCGEDebugFile, "ResourceManager::find(%s)", key);
int lev = 0;
uint16 nxt = kBtValRoot;
diff --git a/engines/cge/fileio.h b/engines/cge/fileio.h
index 803d6b2d58..059d2c9a44 100644
--- a/engines/cge/fileio.h
+++ b/engines/cge/fileio.h
@@ -86,13 +86,13 @@ class ResourceManager {
uint16 catRead(byte *buf, uint16 length);
Common::File *_catFile;
Common::File *_datFile;
- uint16 XCrypt(byte *buf, uint16 length);
+ void XCrypt(byte *buf, uint16 length);
public:
ResourceManager();
~ResourceManager();
uint16 read(byte *buf, uint16 length);
- bool seek(int32 offs, int whence = 0);
+ bool seek(int32 offs, int whence = SEEK_SET);
BtKeypack *find(const char *key);
bool exist(const char *name);
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index 64f528a667..9062fe949d 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -887,7 +887,11 @@ namespace Fullpipe {
#define MSG_SC18_SHOWGIRLJUMPTO 1499
#define MSG_SC18_SHOWMANJUMP 1510
#define MSG_SC18_SHOWMANJUMPTO 1508
+#define MV_BOY18_JUMPFROM 1478
#define MV_BOY18_JUMPTO 1481
+#define MV_GRL18_JUMPFROM 1485
+#define MV_GRL18_JUMPTO 1488
+#define MV_KSL_CALMDOWN 1476
#define MV_KSL_INBOY 1491
#define MV_KSL_INGIRL 1493
#define MV_KSL_INMAN 1504
@@ -898,12 +902,17 @@ namespace Fullpipe {
#define MV_KSL_SWINGBOY 1462
#define MV_KSL_SWINGGIRL 1464
#define MV_KSL_SWINGMAN 1502
+#define MV_MAN18_JUMPTOTRUBA 1511
+#define MV_MAN18_STANDKRESLO 1500
#define MV_WHR18_SPIN 1300
#define PIC_SC18_DOMIN 5184
#define PIC_SC18_LADDER1 1471
#define PIC_SC18_LADDER2 1472
#define PIC_SC18_LADDER3 3299
#define PIC_SC18_RTRUBA 1520
+#define QU_SC19_MANJUMP1 1516
+#define QU_SC19_MANJUMP2 1517
+#define QU_SC19_MANJUMP3 1518
#define SND_18_006 3906
#define SND_18_010 4994
#define ST_KSL_BOY 1463
@@ -912,6 +921,7 @@ namespace Fullpipe {
#define ST_KSL_JUMPGIRL 1494
#define ST_KSL_JUMPMAN 1505
#define ST_KSL_MAN 1503
+#define ST_KSL_REACT 1474
// Scene 19
#define ANI_CORDIE 1529
diff --git a/engines/fullpipe/scenes/scene18and19.cpp b/engines/fullpipe/scenes/scene18and19.cpp
index 29ee8ba211..30ae8aa1d6 100644
--- a/engines/fullpipe/scenes/scene18and19.cpp
+++ b/engines/fullpipe/scenes/scene18and19.cpp
@@ -48,6 +48,9 @@ struct Swinger {
int sfield_24;
};
+
+#define ANGLE(x) ((x) * M_PI / 180)
+
void scene18_preload() {
g_fp->_scene3 = 0;
@@ -145,7 +148,7 @@ void scene18_setupSwingers(StaticANIObject *ani, Scene *sc) {
for (int i = 0; i < 8; i++) {
swinger = new Swinger;
- swinger->angle = (double)i * M_PI / 4.0;
+ swinger->angle = (double)i * ANGLE(45);
swinger->sx = g_vars->scene18_var20 - (int)(cos(swinger->angle) * -575.0);
swinger->sy = g_vars->scene18_var04 - (int)(sin(swinger->angle) * -575.0) + 87;
swinger->ix = swinger->sx;
@@ -385,7 +388,18 @@ int scene19_updateCursor() {
}
void sceneHandler18_clickBoard() {
- warning("STUB: sceneHandler18_clickBoard()");
+ if (ABS(967 - g_fp->_aniMan->_ox) > 1 || ABS(379 - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+ MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, 967, 379, 1, ST_MAN_RIGHT);
+ ExCommand *ex = new ExCommand(0, 17, MSG_SC18_MANREADY, 0, 0, 0, 1, 0, 0, 0);
+
+ ex->_excFlags = 2;
+
+ mq->addExCommandToEnd(ex);
+
+ postExCommand(g_fp->_aniMan->_id, 2, 967, 379, 0, -1);
+ } else {
+ g_vars->scene18_var28 = 1;
+ }
}
void sceneHandler18and19_showManJump() {
@@ -405,7 +419,43 @@ void sceneHandler18and19_showManJump() {
}
void sceneHandler18_showManJumpTo() {
- warning("STUB: sceneHandler18_showManJumpTo()");
+ int x, y;
+
+ if (g_vars->scene18_var07[g_vars->scene18_var31]->ani->_movement) {
+ x = g_vars->scene18_var07[g_vars->scene18_var31]->ani->_movement->_ox;
+ y = g_vars->scene18_var07[g_vars->scene18_var31]->ani->_movement->_oy;
+ } else {
+ x = g_vars->scene18_var07[g_vars->scene18_var31]->ani->_ox;
+ y = g_vars->scene18_var07[g_vars->scene18_var31]->ani->_oy;
+ }
+
+ g_fp->_aniMan->show1(x + 62, y + 5, MV_MAN18_JUMPTOTRUBA, 0);
+ g_fp->_aniMan->_priority = 35;
+
+ int mqid = 0;
+
+ if (g_vars->scene18_var13 == 1) {
+ mqid = QU_SC19_MANJUMP1;
+ } else if (g_vars->scene18_var13 == 2) {
+ mqid = QU_SC19_MANJUMP2;
+ } else if (g_vars->scene18_var13 == 3) {
+ mqid = QU_SC19_MANJUMP3;
+ }
+
+ if (mqid) {
+ MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(mqid), 0, 0);
+
+ g_fp->_aniMan2 = g_fp->_aniMan;
+ g_vars->scene18_var15 = 0;
+
+ mq->setFlags(mq->getFlags() | 1);
+ mq->chain(0);
+ }
+
+ g_vars->scene18_var07[g_vars->scene18_var31]->sflags = 1;
+
+ g_vars->scene18_var07[g_vars->scene18_var31]->ani->changeStatics2(ST_KSL_NORM);
+ g_vars->scene18_var07[g_vars->scene18_var31]->ani->_priority = 30;
}
void sceneHandler18and19_showGirlJumpTo() {
@@ -422,7 +472,28 @@ void sceneHandler18and19_showGirlJumpTo() {
}
void sceneHandler18and19_showGirlJump() {
- warning("STUB: sceneHandler18and19_showGirlJump()");
+ StaticANIObject *ani = g_vars->scene18_var07[g_vars->scene18_var32]->ani;
+ int x, y;
+
+ if (ani->_movement) {
+ x = ani->_movement->_ox;
+ y = ani->_movement->_oy;
+ } else {
+ x = ani->_ox;
+ y = ani->_oy;
+ }
+
+ g_vars->scene18_girl->show1(x - 62, y - 10, MV_GRL18_JUMPFROM, 0);
+ g_vars->scene18_girl->_priority = 50;
+ g_vars->scene18_girl->startAnim(MV_GRL18_JUMPFROM, 0, -1);
+
+ g_vars->scene18_var07[g_vars->scene18_var32]->sflags = 1;
+
+ g_vars->scene18_var07[g_vars->scene18_var32]->ani->changeStatics2(ST_KSL_REACT);
+ g_vars->scene18_var07[g_vars->scene18_var32]->ani->startAnim(MV_KSL_CALMDOWN, 0, -1);
+
+ g_vars->scene18_var23 = 1;
+ g_vars->scene18_var25++;
}
void sceneHandler18and19_showBoyJumpTo() {
@@ -438,7 +509,27 @@ void sceneHandler18and19_showBoyJumpTo() {
}
void sceneHandler18and19_showBoyJump() {
- warning("STUB: sceneHandler18and19_showBoyJump()");
+ StaticANIObject *ani = g_vars->scene18_var07[g_vars->scene18_var32]->ani;
+ int x, y;
+
+ if (ani->_movement) {
+ x = ani->_movement->_ox;
+ y = ani->_movement->_oy;
+ } else {
+ x = ani->_ox;
+ y = ani->_oy;
+ }
+
+ g_vars->scene18_boy->show1(x - 48, y + 8, MV_BOY18_JUMPFROM, 0);
+ g_vars->scene18_boy->_priority = 50;
+ g_vars->scene18_boy->startAnim(MV_BOY18_JUMPFROM, 0, -1);
+
+ g_vars->scene18_var07[g_vars->scene18_var32]->sflags = 1;
+
+ g_vars->scene18_var07[g_vars->scene18_var32]->ani->changeStatics2(ST_KSL_REACT);
+ g_vars->scene18_var07[g_vars->scene18_var32]->ani->startAnim(MV_KSL_CALMDOWN, 0, -1);
+
+ g_vars->scene18_var26 = 1;
}
void sceneHandler18and19_boyJumpTo() {
@@ -449,11 +540,17 @@ void sceneHandler18and19_boyJumpTo() {
}
void sceneHandler18and19_girlJumpTo() {
- warning("STUB: sceneHandler18and19_girlJumpTo()");
+ g_vars->scene18_girl->stopAnim_maybe();
+ g_vars->scene18_girl->show1(g_vars->scene18_var05, g_vars->scene18_var06, MV_GRL18_JUMPTO, 0);
+ g_vars->scene18_girl->_priority = 50;
+ g_vars->scene18_girl->startAnim(MV_GRL18_JUMPTO, 0, -1);
}
void sceneHandler18and19_manStandArmchair() {
- warning("STUB: sceneHandler18and19_manStandArmchair()");
+ g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
+ g_fp->_aniMan->_flags |= 1;
+ g_fp->_aniMan->_priority = 35;
+ g_fp->_aniMan->startAnim(MV_MAN18_STANDKRESLO, 0, -1);
}
void sceneHandler18and19_drawRiders() {
@@ -462,16 +559,16 @@ void sceneHandler18and19_drawRiders() {
if (g_vars->scene18_var21 >= 359)
g_vars->scene18_var21 = 0;
- for (int i = 0; i < g_vars->scene18_var07.size(); i++) {
+ for (uint i = 0; i < g_vars->scene18_var07.size(); i++) {
Swinger *swinger = g_vars->scene18_var07[i];
double oldangle = swinger->angle;
- swinger->angle += M_PI / 180;
+ swinger->angle += ANGLE(1);
- if (swinger->angle > 2 * M_PI) {
- swinger->angle -= 2 * M_PI;
- oldangle -= 2 * M_PI;
+ if (swinger->angle > ANGLE(360)) {
+ swinger->angle -= ANGLE(360);
+ oldangle -= ANGLE(360);
}
int ix = g_vars->scene18_var20 - (int)(cos(swinger->angle) * -575.0);
@@ -480,7 +577,7 @@ void sceneHandler18and19_drawRiders() {
if (!g_vars->scene18_var21) {
ix = swinger->sx;
iy = swinger->sy;
- swinger->angle = (double)i * M_PI / 4;
+ swinger->angle = (double)i * ANGLE(45);
}
if (swinger->ani->_movement)
@@ -512,27 +609,27 @@ void sceneHandler18and19_drawRiders() {
}
if (g_vars->scene18_var22) {
- if ((swinger->sflags & 2) && swinger->angle >= 2.792526803190933 && oldangle < 2.792526803190933) { // 8 pi / 9
+ if ((swinger->sflags & 2) && swinger->angle >= ANGLE(160) && oldangle < ANGLE(160)) {
swinger->sflags = 8;
swinger->ani->changeStatics2(ST_KSL_BOY);
swinger->ani->startAnim(MV_KSL_JUMPBOY, 0, -1);
g_vars->scene18_var32 = i;
- } else if ((swinger->sflags & 4) && swinger->angle >= 2.82743338823082 && oldangle < 2.82743338823082) { // 9 pi / 10
+ } else if ((swinger->sflags & 4) && swinger->angle >= ANGLE(162) && oldangle < ANGLE(162)) {
swinger->sflags = 16;
swinger->ani->changeStatics2(ST_KSL_GIRL);
swinger->ani->startAnim(MV_KSL_JUMPGIRL, 0, -1);
g_vars->scene18_var32 = i;
} else if (g_vars->scene18_var23) {
- if (g_vars->scene18_var24 > 0 && (swinger->sflags & 1) && swinger->angle >= 3.228859116189517 && oldangle < 3.228859116189517) { // 37 pi / 36
+ if (g_vars->scene18_var24 > 0 && (swinger->sflags & 1) && swinger->angle >= ANGLE(185) && oldangle < ANGLE(185)) {
g_vars->scene18_var33 = i;
sceneHandler18and19_boyJumpTo();
}
- } else if (g_vars->scene18_var25 > 0 && (swinger->sflags & 1) && swinger->angle >= 3.263765701229403 && oldangle < 3.263765701229403) { // 187 pi / 180
+ } else if (g_vars->scene18_var25 > 0 && (swinger->sflags & 1) && swinger->angle >= ANGLE(187) && oldangle < ANGLE(187)) {
g_vars->scene18_var33 = i;
sceneHandler18and19_girlJumpTo();
}
- if (swinger->angle >= 3.490658503988667 && oldangle < 3.490658503988667) { // 10 pi / 9
+ if (swinger->angle >= ANGLE(200) && oldangle < ANGLE(200)) {
if (g_vars->scene18_var26)
g_vars->scene18_var24++;
@@ -540,7 +637,7 @@ void sceneHandler18and19_drawRiders() {
}
}
- if (g_vars->scene18_var28 && (swinger->sflags & 1) && swinger->angle >= 1.448623279155297 && oldangle < 1.448623279155297) { // 83 pi / 180
+ if (g_vars->scene18_var28 && (swinger->sflags & 1) && swinger->angle >= ANGLE(83) && oldangle < ANGLE(83)) {
g_vars->scene18_var27 = i;
sceneHandler18and19_manStandArmchair();
}
@@ -549,18 +646,18 @@ void sceneHandler18and19_drawRiders() {
continue;
if (i == g_vars->scene18_var27) {
- if (swinger->angle >= 2.967059728390367 && oldangle < 2.967059728390367) { // 17 pi / 18
+ if (swinger->angle >= ANGLE(170) && oldangle < ANGLE(170)) {
g_fp->_gameLoader->preloadScene(SC_18, TrubaRight);
- } else if (swinger->angle >= 0.4363323129985833 && oldangle < 0.4363323129985833) { // 5 pi / 36
+ } else if (swinger->angle >= ANGLE(25) && oldangle < ANGLE(25)) {
g_fp->_gameLoader->preloadScene(SC_19, TrubaRight);
- } else if (swinger->angle >= 4.1887902047864 && oldangle < 4.1887902047864) { // 4 pi / 3
+ } else if (swinger->angle >= ANGLE(270) && oldangle < ANGLE(270)) {
g_fp->_sceneRect.translate(1200, 0);
}
}
if (g_vars->scene18_var13 > 0) {
if (swinger->sflags & 0x20) {
- double newa = (double)g_vars->scene18_var14 * 0.01745329251994333;// pi / 180
+ double newa = (double)g_vars->scene18_var14 * ANGLE(1);
if (newa <= swinger->angle && oldangle < newa) {
swinger->ani->changeStatics2(ST_KSL_MAN);
@@ -575,7 +672,26 @@ void sceneHandler18and19_drawRiders() {
}
void sceneHandler18and19_animateRiders() {
- warning("STUB: sceneHandler18and19_animateRiders()");
+ for (uint i = 0; i < g_vars->scene18_var07.size(); i++) {
+ Swinger *swinger = g_vars->scene18_var07[i];
+
+ if (!swinger->ani->_movement) {
+ int mv = 0;
+
+ if (swinger->sflags & 2)
+ mv = MV_KSL_SWINGBOY;
+ else if (swinger->sflags & 4)
+ mv = MV_KSL_SWINGGIRL;
+ else if (swinger->sflags & 0x20)
+ mv = MV_KSL_SWINGMAN;
+
+ if (mv)
+ swinger->ani->startAnim(mv, 0, -1);
+
+ if (swinger->ani->_movement)
+ swinger->ani->_movement->_counter = 0;
+ }
+ }
}
int sceneHandler18(ExCommand *cmd) {
diff --git a/engines/voyeur/data.cpp b/engines/voyeur/data.cpp
index 3ab5716991..ec5170cd32 100644
--- a/engines/voyeur/data.cpp
+++ b/engines/voyeur/data.cpp
@@ -49,7 +49,7 @@ SVoy::SVoy(VoyeurEngine *vm):_vm(vm) {
_audioVisualStartTime = 0;
_audioVisualDuration = 0;
_boltGroupId2 = 0;
- _computerTextId = 0;
+ _computerTextId = -1;
_computerTimeMin = _computerTimeMax = 0;
_eventCount = 0;
_fadingStep1 = 0;
diff --git a/engines/voyeur/debugger.cpp b/engines/voyeur/debugger.cpp
index fdd0825181..234300bce5 100644
--- a/engines/voyeur/debugger.cpp
+++ b/engines/voyeur/debugger.cpp
@@ -92,10 +92,37 @@ bool Debugger::Cmd_Time(int argc, const char **argv) {
}
bool Debugger::Cmd_Hotspots(int argc, const char **argv) {
+ if (_vm->_voy->_computerTextId >= 0) {
+ DebugPrintf("Hotspot Computer Screen %d - %d,%d->%d,%d\n",
+ _vm->_voy->_computerTextId,
+ _vm->_voy->_computerScreenRect.left,
+ _vm->_voy->_computerScreenRect.top,
+ _vm->_voy->_computerScreenRect.right,
+ _vm->_voy->_computerScreenRect.bottom);
+ }
+
+#if 0
+ // Room hotspots
+ BoltEntry &boltEntry = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 4);
+ if (boltEntry._rectResource) {
+ Common::Array<RectEntry> &hotspots = boltEntry._rectResource->_entries;
+ for (uint hotspotIdx = 0; hotspotIdx < hotspots.size(); ++hotspotIdx) {
+ Common::String pos = Common::String::format("(%d,%d->%d,%d)",
+ hotspots[hotspotIdx].left, hotspots[hotspotIdx].top,
+ hotspots[hotspotIdx].right, hotspots[hotspotIdx].bottom);
+ int arrIndex = hotspots[hotspotIdx]._arrIndex;
+ if (_vm->_voy->_roomHotspotsEnabled[arrIndex - 1]) {
+ DebugPrintf("Hotspot Room %d - %s - Enabled\n", arrIndex, pos);
+ } else {
+ DebugPrintf("Hotspot Room - %s - Disabled\n", pos);
+ }
+ }
+ }
+#endif
+
+ // Outside view hotspots
BoltEntry &boltEntry = _vm->_bVoy->boltEntry(_vm->_playStampGroupId + 1);
- if (!boltEntry._rectResource) {
- DebugPrintf("No hotspots available\n");
- } else {
+ if (boltEntry._rectResource) {
Common::Array<RectEntry> &hotspots = boltEntry._rectResource->_entries;
for (uint hotspotIdx = 0; hotspotIdx < hotspots.size(); ++hotspotIdx) {
@@ -130,7 +157,7 @@ bool Debugger::Cmd_Hotspots(int argc, const char **argv) {
}
}
- DebugPrintf("\n");
+ DebugPrintf("\nEnd of list\n");
return true;
}