diff options
Diffstat (limited to 'scumm/script_v90he.cpp')
-rw-r--r-- | scumm/script_v90he.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index 047f245f2c..9cbc371623 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -2479,23 +2479,30 @@ void ScummEngine_v90he::o90_getActorAnimProgress() { void ScummEngine_v90he::o90_kernelGetFunctions() { int args[29]; - int num; + int num, tmp; + Actor *a; num = getStackList(args, ARRAYSIZE(args)); switch (args[0]) { case 1001: { - double a = args[1] * PI / 180.; - push((int)(sin(a) * 100000)); + double b = args[1] * PI / 180.; + push((int)(sin(b) * 100000)); } break; case 1002: { - double a = args[1] * PI / 180.; - push((int)(cos(a) * 100000)); + double b = args[1] * PI / 180.; + push((int)(cos(b) * 100000)); } break; + case 1969: + a = derefActor(args[1], "o90_kernelGetFunctions: 1969"); + tmp = a->_heCondMask; + tmp &= 0x7FFF0000; + push(tmp); + break; case 2001: // Used in football debug(0, "o90_kernelGetFunctions: U32 code %d (args %d)", args[1], num - 2); @@ -2508,7 +2515,7 @@ void ScummEngine_v90he::o90_kernelGetFunctions() { void ScummEngine_v90he::o90_kernelSetFunctions() { int args[29]; - int num; + int num, tmp; Actor *a; num = getStackList(args, ARRAYSIZE(args)); @@ -2555,6 +2562,13 @@ void ScummEngine_v90he::o90_kernelSetFunctions() { case 1492: spriteInfoSet_flagDoubleBuffered(args[1], args[2]); break; + case 1969: + a = derefActor(args[1], "o90_kernelSetFunctions: 1969"); + tmp = a->_heCondMask; + tmp ^= args[2]; + tmp &= 0x7FFF0000; + a->_heCondMask ^= tmp; + break; case 2001: // Used in SoccerMLS/Soccer2004 debug(0, "o90_kernelSetFunctions: U32 code %d (args %d)", args[1], num - 2); |