diff options
| -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); | 
