diff options
Diffstat (limited to 'scumm/script_v90he.cpp')
| -rw-r--r-- | scumm/script_v90he.cpp | 18 | 
1 files changed, 10 insertions, 8 deletions
| diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index daebf12f56..c261c5e034 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -53,7 +53,7 @@ void ScummEngine_v90he::setupOpcodes() {  		/* 08 */  		OPCODE(o6_invalid),  		OPCODE(o6_invalid), -		OPCODE(o90_dup), +		OPCODE(o90_dup_n),  		OPCODE(o6_wordArrayIndexedRead),  		/* 0C */  		OPCODE(o6_dup), @@ -374,14 +374,16 @@ const char *ScummEngine_v90he::getOpcodeDesc(byte i) {  	return _opcodesV90he[i].desc;  } -void ScummEngine_v90he::o90_dup() { -	int a, num; +void ScummEngine_v90he::o90_dup_n() { +	int num; +	int args[16]; -	num = fetchScriptWord(); -	for (int i = 0; i < num; i++) { -		a = pop(); -		push(a); -		push(a); +	push(fetchScriptWord()); +	num = getStackList(args, ARRAYSIZE(args)); + +	for (int i = 0; i < 2; i++) { +		for (int j = 0; j < num; j++) +			push(args[j]);  	}  } | 
