aboutsummaryrefslogtreecommitdiff
path: root/scumm/script_v2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/script_v2.cpp')
-rw-r--r--scumm/script_v2.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp
index dcbc1e8429..ca244f0be3 100644
--- a/scumm/script_v2.cpp
+++ b/scumm/script_v2.cpp
@@ -1431,7 +1431,7 @@ void ScummEngine_v2::o2_endCutscene() {
// Reset user state to values before cutscene
setUserState(vm.cutSceneData[0] | 7);
- if (_gameId == GID_MANIAC) {
+ if ((_gameId == GID_MANIAC) && !(_features & GF_NES)) {
camera._mode = (byte) vm.cutSceneData[3];
if (camera._mode == kFollowActorCameraMode) {
actorFollowCamera(VAR(VAR_EGO));
@@ -1453,7 +1453,7 @@ void ScummEngine_v2::o2_beginOverride() {
}
void ScummEngine_v2::o2_chainScript() {
- int data = getVarOrDirectByte(0x80);
+ int data = getVarOrDirectByte(PARAM_1);
stopScript(vm.slot[_currentScript].number);
_currentScript = 0xFF;
runScript(data, 0, 0, 0);
@@ -1479,6 +1479,8 @@ void ScummEngine_v2::o2_pickupObject() {
clearDrawObjectQueue();
runInventoryScript(1);
+ if (_features & GF_NES)
+ _sound->addSoundToQueue(51); // play 'pickup' sound
}
void ScummEngine_v2::o2_cursorCommand() { // TODO: Define the magic numbers
@@ -1494,7 +1496,10 @@ void ScummEngine_v2::o2_cursorCommand() { // TODO: Define the magic numbers
void ScummEngine_v2::setUserState(byte state) {
if (state & 4) { // Userface
- _userState = state & (32 | 64 | 128);
+ if (_features & GF_NES)
+ _userState = (_userState & ~0xE0) | (state & 0xE0);
+ else
+ _userState = state & (32 | 64 | 128);
}
if (state & 1) { // Freeze
@@ -1505,6 +1510,8 @@ void ScummEngine_v2::setUserState(byte state) {
}
if (state & 2) { // Cursor Show/Hide
+ if (_features & GF_NES)
+ _userState = (_userState & ~0x10) | (state & 0x10);
if (state & 16) {
_userPut = 1;
_cursor.state = 1;